linuxcalls

package
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2017 License: Apache-2.0 Imports: 13 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) error

AddInterfaceIP calls AddrAdd Netlink API

func AddVethInterface

func AddVethInterface(ifName, peerIfName string) 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) (netns.NsHandle, 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) error

DelInterfaceIP calls AddrDel Netlink API

func DelVethInterface

func DelVethInterface(ifName, peerIfName string) error

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

func DeleteNamedNetNs

func DeleteNamedNetNs(namespace string) 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) (string, error)

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

func GetOrCreateNs

func GetOrCreateNs(namespace *intf.LinuxInterfaces_Interface_Namespace) (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) (string, error)

GetVethPeerName return the peer name for a given VETH interface.

func InterfaceAdminDown

func InterfaceAdminDown(ifName string) error

InterfaceAdminDown calls Netlink API LinkSetDown

func InterfaceAdminUp

func InterfaceAdminUp(ifName string) error

InterfaceAdminUp calls Netlink API LinkSetUp

func InterfaceExists

func InterfaceExists(ifName string) (bool, error)

InterfaceExists checks if interface with a given name 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) error

SetInterfaceMTU calls LinkSetMTU Netlink API

func SetInterfaceMac

func SetInterfaceMac(ifName string, macAddress string) error

SetInterfaceMac calls LinkSetHardwareAddr netlink API

func SetInterfaceNamespace

func SetInterfaceNamespace(ctx *NamespaceMgmtCtx, ifName string, namespace *intf.LinuxInterfaces_Interface_Namespace) error

SetInterfaceNamespace moves a given Linux interface into a specified namespace.

func SwitchNamespace

func SwitchNamespace(ctx *NamespaceMgmtCtx, namespace *intf.LinuxInterfaces_Interface_Namespace) (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