summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Holzinger <pholzing@redhat.com>2021-06-15 13:26:02 +0200
committerPaul Holzinger <pholzing@redhat.com>2021-06-15 13:41:14 +0200
commit9c81b8cf7219e7e7507e41e867295ff158028a0a (patch)
treeaa8793d31a9dbdb9dfdf0f16c08f00500cc44314
parente2f51eeb0693eda026fa509a9decfbdd7e0b74a8 (diff)
downloadpodman-9c81b8cf7219e7e7507e41e867295ff158028a0a.tar.gz
podman-9c81b8cf7219e7e7507e41e867295ff158028a0a.tar.bz2
podman-9c81b8cf7219e7e7507e41e867295ff158028a0a.zip
add correct slirp ip to /etc/hosts
The container name should have the slirp interface ip set in /etc/hosts and not the gateway ip. Commit c8dfcce6db0a introduced this regression. Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1972073 Signed-off-by: Paul Holzinger <pholzing@redhat.com>
-rw-r--r--libpod/container_internal_linux.go2
-rw-r--r--test/system/500-networking.bats14
2 files changed, 9 insertions, 7 deletions
diff --git a/libpod/container_internal_linux.go b/libpod/container_internal_linux.go
index ddfccb999..564c81373 100644
--- a/libpod/container_internal_linux.go
+++ b/libpod/container_internal_linux.go
@@ -1816,7 +1816,7 @@ func (c *Container) getHosts() string {
if c.Hostname() != "" {
if c.config.NetMode.IsSlirp4netns() {
// When using slirp4netns, the interface gets a static IP
- slirp4netnsIP, err := GetSlirp4netnsGateway(c.slirp4netnsSubnet)
+ slirp4netnsIP, err := GetSlirp4netnsIP(c.slirp4netnsSubnet)
if err != nil {
logrus.Warn("failed to determine slirp4netnsIP: ", err.Error())
} else {
diff --git a/test/system/500-networking.bats b/test/system/500-networking.bats
index 55ec80bb2..d55a786f7 100644
--- a/test/system/500-networking.bats
+++ b/test/system/500-networking.bats
@@ -162,23 +162,25 @@ load helpers
done
}
-@test "podman run with slirp4ns assigns correct gateway address to host.containers.internal" {
+@test "podman run with slirp4ns assigns correct addresses to /etc/hosts" {
CIDR="$(random_rfc1918_subnet)"
- run_podman run --network slirp4netns:cidr="${CIDR}.0/24" \
- $IMAGE grep 'host.containers.internal' /etc/hosts
- is "$output" "${CIDR}.2 host.containers.internal" "host.containers.internal should be the cidr+2 address"
+ local conname=con-$(random_string 10)
+ run_podman run --rm --network slirp4netns:cidr="${CIDR}.0/24" \
+ --name $conname --hostname $conname $IMAGE cat /etc/hosts
+ is "$output" ".*${CIDR}.2 host.containers.internal" "host.containers.internal should be the cidr+2 address"
+ is "$output" ".*${CIDR}.100 $conname $conname" "$conname should be the cidr+100 address"
}
@test "podman run with slirp4ns adds correct dns address to resolv.conf" {
CIDR="$(random_rfc1918_subnet)"
- run_podman run --network slirp4netns:cidr="${CIDR}.0/24" \
+ run_podman run --rm --network slirp4netns:cidr="${CIDR}.0/24" \
$IMAGE grep "${CIDR}" /etc/resolv.conf
is "$output" "nameserver ${CIDR}.3" "resolv.conf should have slirp4netns cidr+3 as a nameserver"
}
@test "podman run with slirp4ns assigns correct ip address container" {
CIDR="$(random_rfc1918_subnet)"
- run_podman run --network slirp4netns:cidr="${CIDR}.0/24" \
+ run_podman run --rm --network slirp4netns:cidr="${CIDR}.0/24" \
$IMAGE sh -c "ip address | grep ${CIDR}"
is "$output" ".*inet ${CIDR}.100/24 \+" "container should have slirp4netns cidr+100 assigned to interface"
}