aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2021-11-11 15:52:42 +0100
committerGitHub <noreply@github.com>2021-11-11 15:52:42 +0100
commitfd010adfdcb6f578623b77281f2ae012bcd1ac85 (patch)
treedfb7681ce86eed1dbef58f3d024650550d15c4a0
parent8de9950038b5a0582bfecfbe3a11427e6cfbfcfe (diff)
parent9c94530bbe575544d3dceeb591bc3c836a367e22 (diff)
downloadpodman-fd010adfdcb6f578623b77281f2ae012bcd1ac85.tar.gz
podman-fd010adfdcb6f578623b77281f2ae012bcd1ac85.tar.bz2
podman-fd010adfdcb6f578623b77281f2ae012bcd1ac85.zip
Merge pull request #12269 from Luap99/backport3.4
[v3.4] backport networking fixes
-rw-r--r--cmd/podman/pods/create.go4
-rw-r--r--libpod/networking_slirp4netns.go3
-rw-r--r--test/e2e/config/containers-netns.conf3
-rw-r--r--test/e2e/network_connect_disconnect_test.go2
-rw-r--r--test/e2e/pod_create_test.go18
-rw-r--r--test/system/500-networking.bats9
6 files changed, 37 insertions, 2 deletions
diff --git a/cmd/podman/pods/create.go b/cmd/podman/pods/create.go
index b3f84dcd8..58bb799a3 100644
--- a/cmd/podman/pods/create.go
+++ b/cmd/podman/pods/create.go
@@ -116,7 +116,7 @@ func create(cmd *cobra.Command, args []string) error {
return fmt.Errorf("cannot specify no-hosts without an infra container")
}
flags := cmd.Flags()
- createOptions.Net, err = common.NetFlagsToNetOptions(nil, *flags, false)
+ createOptions.Net, err = common.NetFlagsToNetOptions(nil, *flags, createOptions.Infra)
if err != nil {
return err
}
@@ -139,7 +139,7 @@ func create(cmd *cobra.Command, args []string) error {
createOptions.CpusetCpus = infraOptions.CPUSetCPUs
createOptions.Pid = infraOptions.PID
flags := cmd.Flags()
- infraOptions.Net, err = common.NetFlagsToNetOptions(nil, *flags, false)
+ infraOptions.Net, err = common.NetFlagsToNetOptions(nil, *flags, createOptions.Infra)
if err != nil {
return err
}
diff --git a/libpod/networking_slirp4netns.go b/libpod/networking_slirp4netns.go
index 07c3aae3c..c06d215e1 100644
--- a/libpod/networking_slirp4netns.go
+++ b/libpod/networking_slirp4netns.go
@@ -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)
diff --git a/test/e2e/config/containers-netns.conf b/test/e2e/config/containers-netns.conf
new file mode 100644
index 000000000..3f796f25d
--- /dev/null
+++ b/test/e2e/config/containers-netns.conf
@@ -0,0 +1,3 @@
+[containers]
+
+netns = "host"
diff --git a/test/e2e/network_connect_disconnect_test.go b/test/e2e/network_connect_disconnect_test.go
index 217efdeec..6f05a9c2b 100644
--- a/test/e2e/network_connect_disconnect_test.go
+++ b/test/e2e/network_connect_disconnect_test.go
@@ -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()
@@ -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()
diff --git a/test/e2e/pod_create_test.go b/test/e2e/pod_create_test.go
index 2ccca28d3..bfdf9fe3b 100644
--- a/test/e2e/pod_create_test.go
+++ b/test/e2e/pod_create_test.go
@@ -806,4 +806,22 @@ ENTRYPOINT ["sleep","99999"]
Expect(ok).To(BeTrue())
})
+ It("podman pod create read network mode from config", func() {
+ confPath, err := filepath.Abs("config/containers-netns.conf")
+ Expect(err).ToNot(HaveOccurred())
+ os.Setenv("CONTAINERS_CONF", confPath)
+ defer os.Unsetenv("CONTAINERS_CONF")
+ if IsRemote() {
+ podmanTest.RestartRemoteService()
+ }
+
+ pod := podmanTest.Podman([]string{"pod", "create", "--name", "test", "--infra-name", "test-infra"})
+ pod.WaitWithDefaultTimeout()
+ Expect(pod).Should(Exit(0))
+
+ inspect := podmanTest.Podman([]string{"inspect", "--format", "{{.HostConfig.NetworkMode}}", "test-infra"})
+ inspect.WaitWithDefaultTimeout()
+ Expect(inspect).Should(Exit(0))
+ Expect(inspect.OutputToString()).Should(Equal("host"))
+ })
})
diff --git a/test/system/500-networking.bats b/test/system/500-networking.bats
index bdedfae19..fc1a7c9f0 100644
--- a/test/system/500-networking.bats
+++ b/test/system/500-networking.bats
@@ -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
@@ -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
@@ -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