diff options
author | Doug Rabson <dfr@rabson.org> | 2022-08-26 11:17:32 +0100 |
---|---|---|
committer | Doug Rabson <dfr@rabson.org> | 2022-08-30 11:24:57 +0100 |
commit | 4781bc7fe7ef33c5d1f1892b2da274ed3d4bd6c8 (patch) | |
tree | f25dc3adcf4dea182787792d6046f18460b87f6d /pkg/specgen/generate/namespaces_freebsd.go | |
parent | 68f4dcf00ab8520bfd89e118700f3fe3b4b0304d (diff) | |
download | podman-4781bc7fe7ef33c5d1f1892b2da274ed3d4bd6c8.tar.gz podman-4781bc7fe7ef33c5d1f1892b2da274ed3d4bd6c8.tar.bz2 podman-4781bc7fe7ef33c5d1f1892b2da274ed3d4bd6c8.zip |
specgen/generate: Add support for FreeBSD
[NO NEW TESTS NEEDED]
Signed-off-by: Doug Rabson <dfr@rabson.org>
Diffstat (limited to 'pkg/specgen/generate/namespaces_freebsd.go')
-rw-r--r-- | pkg/specgen/generate/namespaces_freebsd.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/pkg/specgen/generate/namespaces_freebsd.go b/pkg/specgen/generate/namespaces_freebsd.go new file mode 100644 index 000000000..d821d9daa --- /dev/null +++ b/pkg/specgen/generate/namespaces_freebsd.go @@ -0,0 +1,51 @@ +package generate + +import ( + "fmt" + "os" + + "github.com/containers/podman/v4/libpod" + "github.com/containers/podman/v4/pkg/specgen" + "github.com/opencontainers/runtime-tools/generate" + "github.com/sirupsen/logrus" +) + +func specConfigureNamespaces(s *specgen.SpecGenerator, g *generate.Generator, rt *libpod.Runtime, pod *libpod.Pod) error { + // UTS + + hostname := s.Hostname + if hostname == "" { + switch { + case s.UtsNS.NSMode == specgen.FromPod: + hostname = pod.Hostname() + case s.UtsNS.NSMode == specgen.FromContainer: + utsCtr, err := rt.LookupContainer(s.UtsNS.Value) + if err != nil { + return fmt.Errorf("error looking up container to share uts namespace with: %w", err) + } + hostname = utsCtr.Hostname() + case (s.NetNS.NSMode == specgen.Host && hostname == "") || s.UtsNS.NSMode == specgen.Host: + tmpHostname, err := os.Hostname() + if err != nil { + return fmt.Errorf("unable to retrieve hostname of the host: %w", err) + } + hostname = tmpHostname + default: + logrus.Debug("No hostname set; container's hostname will default to runtime default") + } + } + + g.RemoveHostname() + if s.Hostname != "" || s.UtsNS.NSMode != specgen.Host { + // Set the hostname in the OCI configuration only if specified by + // the user or if we are creating a new UTS namespace. + // TODO: Should we be doing this for pod or container shared + // namespaces? + g.SetHostname(hostname) + } + if _, ok := s.Env["HOSTNAME"]; !ok && s.Hostname != "" { + g.AddProcessEnv("HOSTNAME", hostname) + } + + return nil +} |