libpod: Detect whether we have a private UTS namespace on FreeBSD

Right now, we always use a private UTS namespace on FreeBSD. This should
be made optional but implementing that cleanly needs a FreeBSD extension
to the OCI runtime config. The process for that is starting
(https://github.com/opencontainers/tob/pull/133) but in the meantime,
assume that the UTS namespace is private on FreeBSD.

This moves the Linux-specific namespace logic to
container_internal_linux.go and adds a FreeBSD stub.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
This commit is contained in:
Doug Rabson 2023-12-01 11:37:27 +00:00
parent d3d9293b2a
commit 45e53ed7b0
3 changed files with 21 additions and 9 deletions

View File

@ -688,15 +688,7 @@ func (c *Container) Hostname() string {
// if the container is not running in a private UTS namespace,
// return the host's hostname.
privateUTS := false
if c.config.Spec.Linux != nil {
for _, ns := range c.config.Spec.Linux.Namespaces {
if ns.Type == spec.UTSNamespace {
privateUTS = true
break
}
}
}
privateUTS := c.hasPrivateUTS()
if !privateUTS {
hostname, err := os.Hostname()
if err == nil {

View File

@ -392,3 +392,10 @@ func (c *Container) getPlatformRunPath() (string, error) {
func (c *Container) addMaskedPaths(g *generate.Generator) {
// There are currently no FreeBSD-specific masked paths
}
func (c *Container) hasPrivateUTS() bool {
// Currently we always use a private UTS namespace on FreeBSD. This
// should be optional but needs a FreeBSD section in the OCI runtime
// specification.
return true
}

View File

@ -811,3 +811,16 @@ func (c *Container) addMaskedPaths(g *generate.Generator) {
g.AddLinuxMaskedPaths("/sys/devices/virtual/powercap")
}
}
func (c *Container) hasPrivateUTS() bool {
privateUTS := false
if c.config.Spec.Linux != nil {
for _, ns := range c.config.Spec.Linux.Namespaces {
if ns.Type == spec.UTSNamespace {
privateUTS = true
break
}
}
}
return privateUTS
}