Documentation ¶
Overview ¶
Package ns On Linux each OS thread can have a different network namespace. Go's thread scheduling model switches goroutines between OS threads based on OS thread load and whether the goroutine would block other goroutines. This can result in a goroutine switching network namespaces without notice and lead to errors in your code.
Index ¶
Constants ¶
View Source
const (
// SoMark mark packets sent from a specific socket.
SoMark = 0x24
)
Variables ¶
This section is empty.
Functions ¶
Types ¶
type NetNS ¶
type NetNS interface { // Do execute the passed closure in this object's network namespace, // attempting to restore the original namespace before returning. // However, since each OS thread can have a different network namespace, // and Go's thread scheduling is highly variable, callers cannot // guarantee any specific namespace is set unless operations that // require that namespace are wrapped with Do(). Also, no code called // from Do() should call runtime.UnlockOSThread(), or the risk // of executing code in an incorrect namespace will be greater. See // https://github.com/golang/go/wiki/LockOSThread for further details. Do(toRun func(NetNS) error) error // Set the current network namespace to this object's network namespace. // Note that since Go's thread scheduling is highly variable, callers // cannot guarantee the requested namespace will be the current namespace // after this function is called; to ensure this wrap operations that // require the namespace with Do() instead. Set() error // Path returns the filesystem path representing this object's network namespace Path() string // Fd returns a file descriptor representing this object's network namespace Fd() uintptr // Close cleans up this instance of the network namespace; if this instance // is the last user the namespace will be destroyed Close() error }
NetNS define netns ops
func GetCurrentNS ¶
GetCurrentNS returns an object representing the current OS thread's network namespace
Click to show internal directories.
Click to hide internal directories.