Documentation
¶
Overview ¶
Package linuxcalls contains wrappers over Netlink & OS APIs related to Linux namespaces.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type FileSystemAPI ¶
type FileSystemAPI interface {
// FileExists checks whether the file exists.
FileExists(name string) (bool, error)
// OpenFile opens a file.
OpenFile(name string, flag int, perm os.FileMode) (*os.File, error)
// MkDirAll creates a directory with all parent directories.
MkDirAll(path string, perm os.FileMode) error
// Remove removes named file or directory.
Remove(name string) error
// Mount makes resources available.
Mount(source string, target string, fsType string, flags uintptr, data string) error
// Unmount resources.
Unmount(target string, flags int) (err error)
}
FileSystemAPI defines all methods used to access file system.
type NamedNetNsAPI ¶
type NamedNetNsAPI interface {
// CreateNamedNetNs creates a new named Linux network namespace.
// It does exactly the same thing as the command "ip netns add NAMESPACE".
CreateNamedNetNs(ctx NamespaceMgmtCtx, nsName string) (netns.NsHandle, error)
// DeleteNamedNetNs deletes an existing named Linux network namespace.
// It does exactly the same thing as the command "ip netns del NAMESPACE".
DeleteNamedNetNs(nsName string) error
// NamedNetNsExists checks whether named namespace exists.
NamedNetNsExists(nsName string) (bool, error)
}
NamedNetNsAPI defines methods related to management of named network namespaces.
func NewNamedNetNsHandler ¶
func NewNamedNetNsHandler(sysHandler SystemAPI, log logging.Logger) NamedNetNsAPI
NewNamedNetNsHandler creates new instance of namespace handler
type NamespaceMgmtCtx ¶
type NamespaceMgmtCtx interface {
// LockOSThread wires the calling goroutine to its current operating system thread.
// The method should implement re-entrant lock always called from a single go routine.
LockOSThread()
// UnlockOSThread unwires the calling goroutine from its fixed operating system thread.
// The method should implement re-entrant lock always called from a single go routine.
UnlockOSThread()
}
NamespaceMgmtCtx represents context of an ongoing management of Linux namespaces. The same context should not be used concurrently.
func NewNamespaceMgmtCtx ¶
func NewNamespaceMgmtCtx() NamespaceMgmtCtx
NewNamespaceMgmtCtx creates and returns a new context for management of Linux namespaces.
type NetworkNamespaceAPI ¶
type NetworkNamespaceAPI interface {
// NewNetworkNamespace creates a new namespace and returns a handle to manage it further.
NewNetworkNamespace() (ns netns.NsHandle, err error)
// DuplicateNamespaceHandle duplicates network namespace handle.
DuplicateNamespaceHandle(ns netns.NsHandle) (netns.NsHandle, error)
// GetCurrentNamespace gets a handle to the current threads network namespace.
GetCurrentNamespace() (ns netns.NsHandle, err error)
// GetNamespaceFromPath gets a handle to a network namespace identified
// by the path.
GetNamespaceFromPath(path string) (ns netns.NsHandle, err error)
// GetNamespaceFromPid gets a handle to the network namespace of a given pid.
GetNamespaceFromPid(pid int) (ns netns.NsHandle, err error)
// GetNamespaceFromName gets a handle to a named network namespace such as one
// created by `ip netns add`.
GetNamespaceFromName(name string) (ns netns.NsHandle, err error)
// SetNamespace sets the current namespace to the namespace represented by the handle.
SetNamespace(ns netns.NsHandle) (err error)
}
NetworkNamespaceAPI defines methods for low-level handling of network namespaces.
type SystemAPI ¶
type SystemAPI interface {
FileSystemAPI
NetworkNamespaceAPI
}
SystemAPI defines all methods required for managing network namespaces on the system level.
Source Files
¶
- doc.go
- namespace_api.go
- namespace_linuxcalls.go
- system_api.go
- system_linuxcalls.go