docker: Index | Files | Directories

package osl

import ""

Package osl describes structures and interfaces which abstract os entities


Package Files

interface_linux.go namespace_linux.go neigh_linux.go options_linux.go route_linux.go sandbox.go


const (
    // SandboxTypeIngress indicates that the sandbox is for the ingress
    SandboxTypeIngress = iota
    // SandboxTypeLoadBalancer indicates that the sandbox is a load balancer
    SandboxTypeLoadBalancer = iota

func GC Uses

func GC()

GC triggers garbage collection of namespace path right away and waits for it.

func GenerateKey Uses

func GenerateKey(containerID string) string

GenerateKey generates a sandbox key based on the passed container id.

func InitOSContext Uses

func InitOSContext() func()

InitOSContext initializes OS context while configuring network resources

func SetBasePath Uses

func SetBasePath(path string)

SetBasePath sets the base url prefix for the ns path

type IfaceOption Uses

type IfaceOption func(i *nwIface)

IfaceOption is a function option type to set interface options

type IfaceOptionSetter Uses

type IfaceOptionSetter interface {
    // Bridge returns an option setter to set if the interface is a bridge.
    Bridge(bool) IfaceOption

    // MacAddress returns an option setter to set the MAC address.
    MacAddress(net.HardwareAddr) IfaceOption

    // Address returns an option setter to set IPv4 address.
    Address(*net.IPNet) IfaceOption

    // Address returns an option setter to set IPv6 address.
    AddressIPv6(*net.IPNet) IfaceOption

    // LinkLocalAddresses returns an option setter to set the link-local IP addresses.
    LinkLocalAddresses([]*net.IPNet) IfaceOption

    // Master returns an option setter to set the master interface if any for this
    // interface. The master interface name should refer to the srcname of a
    // previously added interface of type bridge.
    Master(string) IfaceOption

    // Address returns an option setter to set interface routes.
    Routes([]*net.IPNet) IfaceOption

IfaceOptionSetter interface defines the option setter methods for interface options.

type Info Uses

type Info interface {
    // The collection of Interface previously added with the AddInterface
    // method. Note that this doesn't include network interfaces added in any
    // other way (such as the default loopback interface which is automatically
    // created on creation of a sandbox).
    Interfaces() []Interface

    // IPv4 gateway for the sandbox.
    Gateway() net.IP

    // IPv6 gateway for the sandbox.
    GatewayIPv6() net.IP

    // Additional static routes for the sandbox.  (Note that directly
    // connected routes are stored on the particular interface they refer to.)
    StaticRoutes() []*types.StaticRoute

Info represents all possible information that the driver wants to place in the sandbox which includes interfaces, routes and gateway

type Interface Uses

type Interface interface {
    // The name of the interface in the origin network namespace.
    SrcName() string

    // The name that will be assigned to the interface once moves inside a
    // network namespace. When the caller passes in a DstName, it is only
    // expected to pass a prefix. The name will modified with an appropriately
    // auto-generated suffix.
    DstName() string

    // IPv4 address for the interface.
    Address() *net.IPNet

    // IPv6 address for the interface.
    AddressIPv6() *net.IPNet

    // LinkLocalAddresses returns the link-local IP addresses assigned to the interface.
    LinkLocalAddresses() []*net.IPNet

    // IP routes for the interface.
    Routes() []*net.IPNet

    // Bridge returns true if the interface is a bridge
    Bridge() bool

    // Master returns the srcname of the master interface for this interface.
    Master() string

    // Remove an interface from the sandbox by renaming to original name
    // and moving it out of the sandbox.
    Remove() error

    // Statistics returns the statistics for this interface
    Statistics() (*types.InterfaceStatistics, error)

Interface represents the settings and identity of a network device. It is used as a return type for Network.Link, and it is common practice for the caller to use this information when moving interface SrcName from host namespace to DstName in a different net namespace with the appropriate network settings.

type NeighOption Uses

type NeighOption func(nh *neigh)

NeighOption is a function option type to set interface options

type NeighborOptionSetter Uses

type NeighborOptionSetter interface {
    // LinkName returns an option setter to set the srcName of the link that should
    // be used in the neighbor entry
    LinkName(string) NeighOption

    // Family returns an option setter to set the address family for the neighbor
    // entry. eg. AF_BRIDGE
    Family(int) NeighOption

NeighborOptionSetter interface defines the option setter methods for interface options

type NeighborSearchError Uses

type NeighborSearchError struct {
    // contains filtered or unexported fields

NeighborSearchError indicates that the neighbor is already present

func (NeighborSearchError) Error Uses

func (n NeighborSearchError) Error() string

type Sandbox Uses

type Sandbox interface {
    // The path where the network namespace is mounted.
    Key() string

    // Add an existing Interface to this sandbox. The operation will rename
    // from the Interface SrcName to DstName as it moves, and reconfigure the
    // interface according to the specified settings. The caller is expected
    // to only provide a prefix for DstName. The AddInterface api will auto-generate
    // an appropriate suffix for the DstName to disambiguate.
    AddInterface(SrcName string, DstPrefix string, options ...IfaceOption) error

    // Set default IPv4 gateway for the sandbox
    SetGateway(gw net.IP) error

    // Set default IPv6 gateway for the sandbox
    SetGatewayIPv6(gw net.IP) error

    // Unset the previously set default IPv4 gateway in the sandbox
    UnsetGateway() error

    // Unset the previously set default IPv6 gateway in the sandbox
    UnsetGatewayIPv6() error

    // GetLoopbackIfaceName returns the name of the loopback interface
    GetLoopbackIfaceName() string

    // AddAliasIP adds the passed IP address to the named interface
    AddAliasIP(ifName string, ip *net.IPNet) error

    // RemoveAliasIP removes the passed IP address from the named interface
    RemoveAliasIP(ifName string, ip *net.IPNet) error

    // DisableARPForVIP disables ARP replies and requests for VIP addresses
    // on a particular interface
    DisableARPForVIP(ifName string) error

    // Add a static route to the sandbox.
    AddStaticRoute(*types.StaticRoute) error

    // Remove a static route from the sandbox.
    RemoveStaticRoute(*types.StaticRoute) error

    // AddNeighbor adds a neighbor entry into the sandbox.
    AddNeighbor(dstIP net.IP, dstMac net.HardwareAddr, force bool, option ...NeighOption) error

    // DeleteNeighbor deletes neighbor entry from the sandbox.
    DeleteNeighbor(dstIP net.IP, dstMac net.HardwareAddr, osDelete bool) error

    // Returns an interface with methods to set neighbor options.
    NeighborOptions() NeighborOptionSetter

    // Returns an interface with methods to set interface options.
    InterfaceOptions() IfaceOptionSetter

    InvokeFunc(func()) error

    // Returns an interface with methods to get sandbox state.
    Info() Info

    // Destroy the sandbox
    Destroy() error

    // restore sandbox
    Restore(ifsopt map[string][]IfaceOption, routes []*types.StaticRoute, gw net.IP, gw6 net.IP) error

    // ApplyOSTweaks applies operating system specific knobs on the sandbox

Sandbox represents a network sandbox, identified by a specific key. It holds a list of Interfaces, routes etc, and more can be added dynamically.

func GetSandboxForExternalKey Uses

func GetSandboxForExternalKey(basePath string, key string) (Sandbox, error)

GetSandboxForExternalKey returns sandbox object for the supplied path

func NewSandbox Uses

func NewSandbox(key string, osCreate, isRestore bool) (Sandbox, error)

NewSandbox provides a new sandbox instance created in an os specific way provided a key which uniquely identifies the sandbox

type SandboxType Uses

type SandboxType int

SandboxType specify the time of the sandbox, this can be used to apply special configs



Package osl imports 21 packages (graph). Updated 2020-02-28. Refresh now. Tools for package owners.