summaryrefslogtreecommitdiff
path: root/libpod
diff options
context:
space:
mode:
authorGiuseppe Scrivano <gscrivan@redhat.com>2021-01-22 13:54:24 +0100
committerGiuseppe Scrivano <gscrivan@redhat.com>2021-01-23 18:28:56 +0100
commit0ba1942f261158b9526310aac7ee5f183a109440 (patch)
tree10a6160c5eb7a2cd29b6bc86e006b8ce5a881eac /libpod
parent6cef7c78dd5f8e2e8e1fe91bd2c7d1298f7e4df9 (diff)
downloadpodman-0ba1942f261158b9526310aac7ee5f183a109440.tar.gz
podman-0ba1942f261158b9526310aac7ee5f183a109440.tar.bz2
podman-0ba1942f261158b9526310aac7ee5f183a109440.zip
networking: lookup child IP in networks
if a CNI network is added to the container, use the IP address in that network instead of hard-coding the slirp4netns default. commit 5e65f0ba30f3fca73f8c207825632afef08378c1 introduced this regression. Closes: https://github.com/containers/podman/issues/9065 Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Diffstat (limited to 'libpod')
-rw-r--r--libpod/networking_linux.go14
1 files changed, 13 insertions, 1 deletions
diff --git a/libpod/networking_linux.go b/libpod/networking_linux.go
index 09fdea496..ef2f034ab 100644
--- a/libpod/networking_linux.go
+++ b/libpod/networking_linux.go
@@ -550,13 +550,25 @@ func (r *Runtime) setupRootlessPortMappingViaRLK(ctr *Container, netnsPath strin
}
}
+ childIP := slirp4netnsIP
+outer:
+ for _, r := range ctr.state.NetworkStatus {
+ for _, i := range r.IPs {
+ ipv4 := i.Address.IP.To4()
+ if ipv4 != nil {
+ childIP = ipv4.String()
+ break outer
+ }
+ }
+ }
+
cfg := rootlessport.Config{
Mappings: ctr.config.PortMappings,
NetNSPath: netnsPath,
ExitFD: 3,
ReadyFD: 4,
TmpDir: ctr.runtime.config.Engine.TmpDir,
- ChildIP: slirp4netnsIP,
+ ChildIP: childIP,
}
cfgJSON, err := json.Marshal(cfg)
if err != nil {