Documentation ¶
Overview ¶
Package netns allows ultra-simple network namespace handling. NsHandles can be retrieved and set. Note that the current namespace is thread local so actions that set and reset namespaces should use LockOSThread to make sure the namespace doesn't change due to a goroutine switch. It is best to close NsHandles when you are done with them. This can be accomplished via a `defer ns.Close()` on the handle. Changing namespaces requires elevated privileges, so in most cases this code needs to be run as root.
Index ¶
- Constants
- func Set(ns NsHandle) (err error)
- func Setns(ns NsHandle, nstype int) (err error)
- type NsHandle
- func Get() (NsHandle, error)
- func GetFromDocker(id string) (NsHandle, error)
- func GetFromName(name string) (NsHandle, error)
- func GetFromPath(path string) (NsHandle, error)
- func GetFromPid(pid int) (NsHandle, error)
- func GetFromThread(pid, tid int) (NsHandle, error)
- func New() (ns NsHandle, err error)
- func None() NsHandle
Constants ¶
const ( // These constants belong in the syscall library but have not been // added yet. CLONE_NEWUTS = 0x04000000 /* New utsname group? */ CLONE_NEWIPC = 0x08000000 /* New ipcs */ CLONE_NEWUSER = 0x10000000 /* New user namespace */ CLONE_NEWPID = 0x20000000 /* New pid namespace */ CLONE_NEWNET = 0x40000000 /* New network namespace */ CLONE_IO = 0x80000000 /* Get io context */ )
const (
SYS_SETNS = 308
)
Variables ¶
This section is empty.
Functions ¶
Types ¶
type NsHandle ¶
type NsHandle int
NsHandle is a handle to a network namespace. It can be cast directly to an int and used as a file descriptor.
func GetFromDocker ¶
GetFromDocker gets a handle to the network namespace of a docker container. Id is prefixed matched against the running docker containers, so a short identifier can be used as long as it isn't ambiguous.
func GetFromName ¶
GetFromName gets a handle to a named network namespace such as one created by `ip netns add`.
func GetFromPath ¶
GetFromPath gets a handle to a network namespace identified by the path
func GetFromPid ¶
GetFromPid gets a handle to the network namespace of a given pid.
func GetFromThread ¶
GetFromThread gets a handle to the network namespace of a given pid and tid.
func (*NsHandle) Close ¶
Close closes the NsHandle and resets its file descriptor to -1. It is not safe to use an NsHandle after Close() is called.
func (NsHandle) Equal ¶
Equal determines if two network handles refer to the same network namespace. This is done by comparing the device and inode that the file descripors point to.