Skip to content

Commit

Permalink
network reload without ports should not reload ports
Browse files Browse the repository at this point in the history
When run as rootless the podman network reload command tries to reload
the rootlessport ports because the childIP could have changed.
However if the containers has no ports we should skip this instead of
printing a warning.

Signed-off-by: Paul Holzinger <[email protected]>
  • Loading branch information
Luap99 committed Nov 11, 2021
1 parent eca1b6c commit 9c94530
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 0 deletions.
3 changes: 3 additions & 0 deletions libpod/networking_slirp4netns.go
Original file line number Diff line number Diff line change
Expand Up @@ -629,6 +629,9 @@ func getRootlessPortChildIP(c *Container) string {
// reloadRootlessRLKPortMapping will trigger a reload for the port mappings in the rootlessport process.
// This should only be called by network connect/disconnect and only as rootless.
func (c *Container) reloadRootlessRLKPortMapping() error {
if len(c.config.PortMappings) == 0 {
return nil
}
childIP := getRootlessPortChildIP(c)
logrus.Debugf("reloading rootless ports for container %s, childIP is %s", c.config.ID, childIP)

Expand Down
2 changes: 2 additions & 0 deletions test/e2e/network_connect_disconnect_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ var _ = Describe("Podman network connect and disconnect", func() {
dis := podmanTest.Podman([]string{"network", "disconnect", netName, "test"})
dis.WaitWithDefaultTimeout()
Expect(dis).Should(Exit(0))
Expect(dis.ErrorToString()).Should(Equal(""))

inspect := podmanTest.Podman([]string{"container", "inspect", "test", "--format", "{{len .NetworkSettings.Networks}}"})
inspect.WaitWithDefaultTimeout()
Expand Down Expand Up @@ -178,6 +179,7 @@ var _ = Describe("Podman network connect and disconnect", func() {
connect := podmanTest.Podman([]string{"network", "connect", newNetName, "test"})
connect.WaitWithDefaultTimeout()
Expect(connect).Should(Exit(0))
Expect(connect.ErrorToString()).Should(Equal(""))

inspect := podmanTest.Podman([]string{"container", "inspect", "test", "--format", "{{len .NetworkSettings.Networks}}"})
inspect.WaitWithDefaultTimeout()
Expand Down
9 changes: 9 additions & 0 deletions test/system/500-networking.bats
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,7 @@ load helpers
mac="$output"

run_podman network disconnect $netname $cid
is "$output" "" "Output should be empty (no errors)"

# check that we cannot curl (timeout after 3 sec)
run curl --max-time 3 -s $SERVER/index.txt
Expand All @@ -399,6 +400,7 @@ load helpers
fi

run_podman network connect $netname $cid
is "$output" "" "Output should be empty (no errors)"

# curl should work again
run curl --max-time 3 -s $SERVER/index.txt
Expand All @@ -415,8 +417,15 @@ load helpers
die "MAC address did not change after podman network disconnect/connect"
fi

# Disconnect/reconnect of a container *with no ports* should succeed quietly
run_podman network disconnect $netname $background_cid
is "$output" "" "disconnect of container with no open ports"
run_podman network connect $netname $background_cid
is "$output" "" "(re)connect of container with no open ports"

# connect a second network
run_podman network connect $netname2 $cid
is "$output" "" "Output should be empty (no errors)"

# curl should work
run curl --max-time 3 -s $SERVER/index.txt
Expand Down

0 comments on commit 9c94530

Please sign in to comment.