linuxcalls

package
v1.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 18, 2017 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Overview

Package linuxcalls contains wrappers over Netlink APIs related to Linux VETH interfaces or to Linux interfaces in general.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddInterfaceIP

func AddInterfaceIP(ifName string, addr *net.IPNet, timeLog measure.StopWatchEntry) error

AddInterfaceIP calls AddrAdd Netlink API

func AddVethInterface

func AddVethInterface(ifName, peerIfName string, log logging.Logger, timeLog measure.StopWatchEntry) error

AddVethInterface calls LinkAdd Netlink API for the Netlink.Veth interface type.

func CompareNamespaces

CompareNamespaces is a comparison function for "intf.Interfaces_Interface_Namespace" type.

func CreateNamedNetNs

func CreateNamedNetNs(namespace string, log logging.Logger) (netns.NsHandle, *intf.LinuxInterfaces_Interface_Namespace, error)

CreateNamedNetNs creates a new named Linux network namespace. It does exactly the same thing as the command "ip netns add NAMESPACE" .

func DelInterfaceIP

func DelInterfaceIP(ifName string, addr *net.IPNet, timeLog measure.StopWatchEntry) error

DelInterfaceIP calls AddrDel Netlink API

func DelVethInterface

func DelVethInterface(ifName, peerIfName string, log logging.Logger, timeLog measure.StopWatchEntry) error

DelVethInterface calls LinkDel Netlink API for the Netlink.Veth interface type.

func DeleteNamedNetNs

func DeleteNamedNetNs(namespace string, log logging.Logger) error

DeleteNamedNetNs deletes an existing named Linux network namespace. It does exactly the same thing as the command "ip netns del NAMESPACE" .

func GetDefaultNamespace

func GetDefaultNamespace() *intf.LinuxInterfaces_Interface_Namespace

GetDefaultNamespace returns an instance of the proto message referencing default namespace.

func GetInterfaceType

func GetInterfaceType(ifName string, timeLog measure.StopWatchEntry) (string, error)

GetInterfaceType returns the type (string representation) of a given interface.

func GetOrCreateNs

func GetOrCreateNs(namespace *intf.LinuxInterfaces_Interface_Namespace, log logging.Logger) (netns.NsHandle, error)

GetOrCreateNs returns an existing Linux network namespace or creates a new one if it doesn't exist yet. It is, however, only possible to create "named" namespaces. For PID-based namespaces, process with the given PID must exists, otherwise the function returns an error.

func GetVethPeerName

func GetVethPeerName(ifName string, timeLog measure.StopWatchEntry) (string, error)

GetVethPeerName return the peer name for a given VETH interface.

func InterfaceAdminDown

func InterfaceAdminDown(ifName string, timeLog measure.StopWatchEntry) error

InterfaceAdminDown calls Netlink API LinkSetDown

func InterfaceAdminUp

func InterfaceAdminUp(ifName string, timeLog measure.StopWatchEntry) error

InterfaceAdminUp calls Netlink API LinkSetUp

func InterfaceExists

func InterfaceExists(ifName string, timeLog measure.StopWatchEntry) (bool, error)

InterfaceExists checks if interface with a given name exists.

func NamedNetNsExists added in v1.0.6

func NamedNetNsExists(namespace string, log logging.Logger) (bool, error)

NamedNetNsExists checks whether namespace exists.

func NamespaceToStr

func NamespaceToStr(namespace *intf.LinuxInterfaces_Interface_Namespace) string

NamespaceToStr returns a string representation of a namespace suitable for logging purposes.

func SetInterfaceMTU

func SetInterfaceMTU(ifName string, mtu int, timeLog measure.StopWatchEntry) error

SetInterfaceMTU calls LinkSetMTU Netlink API

func SetInterfaceMac

func SetInterfaceMac(ifName string, macAddress string, timeLog measure.StopWatchEntry) error

SetInterfaceMac calls LinkSetHardwareAddr netlink API

func SetInterfaceNamespace

func SetInterfaceNamespace(ctx *NamespaceMgmtCtx, ifName string, namespace *intf.LinuxInterfaces_Interface_Namespace,
	log logging.Logger, stopwatch *measure.Stopwatch) error

SetInterfaceNamespace moves a given Linux interface into a specified namespace.

func SwitchNamespace

func SwitchNamespace(ctx *NamespaceMgmtCtx, namespace *intf.LinuxInterfaces_Interface_Namespace, log logging.Logger) (revert func(), err error)

SwitchNamespace switches the network namespace of the current thread. Caller should eventually call the returned "revert" function in order to get back to the original network namespace (for example using "defer revert()").

Types

type NamespaceMgmtCtx

type NamespaceMgmtCtx struct {
	// contains filtered or unexported fields
}

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL