summaryrefslogtreecommitdiff
path: root/libpod/container.go
diff options
context:
space:
mode:
authoropenshift-ci[bot] <75433959+openshift-ci[bot]@users.noreply.github.com>2021-07-30 15:48:14 +0000
committerGitHub <noreply@github.com>2021-07-30 15:48:14 +0000
commitaaf02cfbd41e7d7fbd009a4f01a0fa45b3e49f61 (patch)
tree997bf585beb9bbfa97878a425b693a40cbc64568 /libpod/container.go
parent4429c7c713677a304a5ea62eec3cd1524bd2ce3f (diff)
parent2a484e782a23ad67c98e22121fde2b83b4072d1a (diff)
downloadpodman-aaf02cfbd41e7d7fbd009a4f01a0fa45b3e49f61.tar.gz
podman-aaf02cfbd41e7d7fbd009a4f01a0fa45b3e49f61.tar.bz2
podman-aaf02cfbd41e7d7fbd009a4f01a0fa45b3e49f61.zip
Merge pull request #11075 from flouthoc/ps-filter-network-by-container
ps: support the `container...` notation for `ps --filter network=...`
Diffstat (limited to 'libpod/container.go')
-rw-r--r--libpod/container.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/libpod/container.go b/libpod/container.go
index 4b9bea5fc..f3f4b27b7 100644
--- a/libpod/container.go
+++ b/libpod/container.go
@@ -1173,6 +1173,46 @@ func (c *Container) Networks() ([]string, bool, error) {
return c.networks()
}
+// NetworkMode gets the configured network mode for the container.
+// Get actual value from the database
+func (c *Container) NetworkMode() string {
+ networkMode := ""
+ ctrSpec := c.config.Spec
+
+ switch {
+ case c.config.CreateNetNS:
+ // We actually store the network
+ // mode for Slirp and Bridge, so
+ // we can just use that
+ networkMode = string(c.config.NetMode)
+ case c.config.NetNsCtr != "":
+ networkMode = fmt.Sprintf("container:%s", c.config.NetNsCtr)
+ default:
+ // Find the spec's network namespace.
+ // If there is none, it's host networking.
+ // If there is one and it has a path, it's "ns:".
+ foundNetNS := false
+ for _, ns := range ctrSpec.Linux.Namespaces {
+ if ns.Type == spec.NetworkNamespace {
+ foundNetNS = true
+ if ns.Path != "" {
+ networkMode = fmt.Sprintf("ns:%s", ns.Path)
+ } else {
+ // We're making a network ns, but not
+ // configuring with Slirp or CNI. That
+ // means it's --net=none
+ networkMode = "none"
+ }
+ break
+ }
+ }
+ if !foundNetNS {
+ networkMode = "host"
+ }
+ }
+ return networkMode
+}
+
// Unlocked accessor for networks
func (c *Container) networks() ([]string, bool, error) {
networks, err := c.runtime.state.GetNetworks(c)