From 7f28fd938607df64e8844f3125838fc659753843 Mon Sep 17 00:00:00 2001 From: Daniel J Walsh Date: Wed, 27 Apr 2022 17:06:30 -0400 Subject: [PATCH] Report properly whether pod shares host network Fixes: https://github.com/containers/podman/issues/14028 Signed-off-by: Daniel J Walsh --- libpod/pod.go | 9 +++++++++ libpod/pod_api.go | 2 +- test/system/200-pod.bats | 28 ++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/libpod/pod.go b/libpod/pod.go index ed2d97b374..6cfe76a18c 100644 --- a/libpod/pod.go +++ b/libpod/pod.go @@ -159,6 +159,15 @@ func (p *Pod) CPUQuota() int64 { return 0 } +// NetworkMode returns the Network mode given by the user ex: pod, private... +func (p *Pod) NetworkMode() string { + infra, err := p.runtime.GetContainer(p.state.InfraContainerID) + if err != nil { + return "" + } + return infra.NetworkMode() +} + // PidMode returns the PID mode given by the user ex: pod, private... func (p *Pod) PidMode() string { infra, err := p.runtime.GetContainer(p.state.InfraContainerID) diff --git a/libpod/pod_api.go b/libpod/pod_api.go index 48049798b3..ba30d878ec 100644 --- a/libpod/pod_api.go +++ b/libpod/pod_api.go @@ -593,7 +593,7 @@ func (p *Pod) Inspect() (*define.InspectPodData, error) { return nil, err } infraConfig = new(define.InspectPodInfraConfig) - infraConfig.HostNetwork = !infra.config.ContainerNetworkConfig.UseImageHosts + infraConfig.HostNetwork = p.NetworkMode() == "host" infraConfig.StaticIP = infra.config.ContainerNetworkConfig.StaticIP infraConfig.NoManageResolvConf = infra.config.UseImageResolvConf infraConfig.NoManageHosts = infra.config.UseImageHosts diff --git a/test/system/200-pod.bats b/test/system/200-pod.bats index ef4bf1a6c6..64f95f7232 100644 --- a/test/system/200-pod.bats +++ b/test/system/200-pod.bats @@ -381,4 +381,32 @@ EOF is "$output" ".*$container_3_ID.*" } +@test "podman pod create share net" { + run_podman pod create --name test + run_podman pod inspect test --format {{.InfraConfig.HostNetwork}} + is "$output" "false" "Default network sharing should be false" + run_podman pod rm test + + run_podman pod create --name test --share ipc --network private + run_podman pod inspect test --format {{.InfraConfig.HostNetwork}} + is "$output" "false" "Private network sharing with only ipc should be false" + run_podman pod rm test + + run_podman pod create --name test --share net --network private + run_podman pod inspect test --format {{.InfraConfig.HostNetwork}} + is "$output" "false" "Private network sharing with only net should be false" + run_podman pod rm test + + run_podman pod create --name test --share net --network host + run_podman pod inspect test --format {{.InfraConfig.HostNetwork}} + is "$output" "true" "Host network sharing with only net should be true" + run_podman pod rm test + + run_podman pod create --name test --share ipc --network host + run_podman pod inspect test --format {{.InfraConfig.HostNetwork}} + is "$output" "true" "Host network sharing with only ipc should be true" + run_podman pod rm test + +} + # vim: filetype=sh