network

package
v1.5.14 Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2023 License: MIT Imports: 33 Imported by: 2

Documentation ¶

Index ¶

Constants ¶

View Source
const (
	VlanIDKey   = "VlanID"
	AzureCNS    = "azure-cns"
	SNATIPKey   = "NCPrimaryIPKey"
	RoutesKey   = "RoutesKey"
	IPTablesKey = "IPTablesKey"
)
View Source
const (

	// OptVethName key for veth name option
	OptVethName = "vethname"
	// SnatBridgeIPKey key for the SNAT bridge
	SnatBridgeIPKey = "snatBridgeIP"
	// LocalIPKey key for local IP
	LocalIPKey = "localIP"
	// InfraVnetIPKey key for infra vnet
	InfraVnetIPKey = "infraVnetIP"
	// Ubuntu Release Version for checking which command to use.
	Ubuntu22 = "22.04"
)
View Source
const (
	DisableRPFilterCmd = "sysctl -w net.ipv4.conf.all.rp_filter=0" // Command to disable the rp filter for tunneling
)
View Source
const (
	// ipv6 modes
	IPV6Nat = "ipv6nat"
)
View Source
const (
	InfraVnet = 0
)

Variables ¶

View Source
var Ipv4DefaultRouteDstPrefix = net.IPNet{
	IP:   net.IPv4zero,
	Mask: net.IPv4Mask(0, 0, 0, 0),
}
View Source
var Ipv6DefaultRouteDstPrefix = net.IPNet{
	IP: net.IPv6zero,

	Mask: net.CIDRMask(0, ipv6AddressMask),
}

Functions ¶

func AddInfraEndpointRules ¶

func AddInfraEndpointRules(client *OVSEndpointClient, infraIP net.IPNet, hostPort string) error

func AddInfraVnetEndpoint ¶

func AddInfraVnetEndpoint(client *OVSEndpointClient) error

func AddSnatEndpoint ¶

func AddSnatEndpoint(snatClient *snat.Client) error

func AddSnatEndpointRules ¶

func AddSnatEndpointRules(snatClient *snat.Client, hostToNC, ncToHost bool, nl netlink.NetlinkInterface, plc platform.ExecClient) error

func AddStaticRoute ¶

func AddStaticRoute(nl netlink.NetlinkInterface, netioshim netio.NetIOInterface, ip, interfaceName string) error

AddStaticRoute adds a static route to the interface.

func ConfigureInfraVnetContainerInterface ¶

func ConfigureInfraVnetContainerInterface(client *OVSEndpointClient, infraIP net.IPNet) error

func ConfigureSnatContainerInterface ¶

func ConfigureSnatContainerInterface(snatClient *snat.Client) error

func ConstructEndpointID ¶

func ConstructEndpointID(containerID string, _ string, ifName string) (string, string)

func DeleteInfraVnetEndpoint ¶

func DeleteInfraVnetEndpoint(client *OVSEndpointClient, epID string) error

func DeleteInfraVnetEndpointRules ¶

func DeleteInfraVnetEndpointRules(client *OVSEndpointClient, ep *endpoint, hostPort string)

func DeleteSnatEndpoint ¶

func DeleteSnatEndpoint(snatClient *snat.Client) error

func DeleteSnatEndpointRules ¶

func DeleteSnatEndpointRules(snatClient *snat.Client, hostToNC, ncToHost bool)

func ExecuteInNS ¶

func ExecuteInNS(nsc NamespaceClientInterface, nsName string, f func() error) error

Helper function that allows executing a function in a VM namespace Does not work for process namespaces

func GetPodNameWithoutSuffix ¶

func GetPodNameWithoutSuffix(podName string) string

func GetSnatContIfName ¶

func GetSnatContIfName(epInfo *EndpointInfo) string

func GetSnatHostIfName ¶

func GetSnatHostIfName(epInfo *EndpointInfo) string

func IsNetworkNotFoundError ¶

func IsNetworkNotFoundError(err error) bool

func MoveInfraEndpointToContainerNS ¶

func MoveInfraEndpointToContainerNS(client *OVSEndpointClient, netnsPath string, nsID uintptr) error

func MoveSnatEndpointToContainerNS ¶

func MoveSnatEndpointToContainerNS(snatClient *snat.Client, netnsPath string, nsID uintptr) error

func NewErrorMockEndpointClient ¶

func NewErrorMockEndpointClient(errStr string) error

func NewInfraVnetClient ¶

func NewInfraVnetClient(client *OVSEndpointClient, epID string)

func SetupInfraVnetContainerInterface ¶

func SetupInfraVnetContainerInterface(client *OVSEndpointClient) error

func SetupSnatContainerInterface ¶

func SetupSnatContainerInterface(snatClient *snat.Client) error

Types ¶

type AzureHNSEndpoint ¶

type AzureHNSEndpoint struct{}

type AzureHNSEndpointClient ¶

type AzureHNSEndpointClient interface{}

type DNSInfo ¶

type DNSInfo struct {
	Suffix  string
	Servers []string
	Options []string
}

DNSInfo contains DNS information for a container network or endpoint.

type EndpointClient ¶

type EndpointClient interface {
	AddEndpoints(epInfo *EndpointInfo) error
	AddEndpointRules(epInfo *EndpointInfo) error
	DeleteEndpointRules(ep *endpoint)
	MoveEndpointsToContainerNS(epInfo *EndpointInfo, nsID uintptr) error
	SetupContainerInterfaces(epInfo *EndpointInfo) error
	ConfigureContainerInterfacesAndRoutes(epInfo *EndpointInfo) error
	DeleteEndpoints(ep *endpoint) error
}

type EndpointInfo ¶

type EndpointInfo struct {
	Id                       string
	ContainerID              string
	NetNsPath                string
	IfName                   string
	SandboxKey               string
	IfIndex                  int
	MacAddress               net.HardwareAddr
	DNS                      DNSInfo
	IPAddresses              []net.IPNet
	IPsToRouteViaHost        []string
	InfraVnetIP              net.IPNet
	Routes                   []RouteInfo
	Policies                 []policy.Policy
	Gateways                 []net.IP
	EnableSnatOnHost         bool
	EnableInfraVnet          bool
	EnableMultiTenancy       bool
	EnableSnatForDns         bool
	AllowInboundFromHostToNC bool
	AllowInboundFromNCToHost bool
	NetworkContainerID       string
	PODName                  string
	PODNameSpace             string
	Data                     map[string]interface{}
	InfraVnetAddressSpace    string
	SkipHotAttachEp          bool
	IPV6Mode                 string
	VnetCidrs                string
	ServiceCidrs             string
	NATInfo                  []policy.NATInfo
	NICType                  cns.NICType
	SkipDefaultRoutes        bool
}

EndpointInfo contains read-only information about an endpoint.

func (*EndpointInfo) PrettyString ¶

func (epInfo *EndpointInfo) PrettyString() string

type InterfaceInfo ¶

type InterfaceInfo struct {
	Name              string
	MacAddress        net.HardwareAddr
	IPAddress         []net.IPNet
	Routes            []RouteInfo
	NICType           cns.NICType
	SkipDefaultRoutes bool
}

InterfaceInfo contains information for secondary interfaces

type LinuxBridgeClient ¶

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

func NewLinuxBridgeClient ¶

func NewLinuxBridgeClient(
	bridgeName string,
	hostInterfaceName string,
	nwInfo NetworkInfo,
	nl netlink.NetlinkInterface,
	plc platform.ExecClient,
) *LinuxBridgeClient

func (*LinuxBridgeClient) AddL2Rules ¶

func (client *LinuxBridgeClient) AddL2Rules(extIf *externalInterface) error

func (*LinuxBridgeClient) CreateBridge ¶

func (client *LinuxBridgeClient) CreateBridge() error

func (*LinuxBridgeClient) DeleteBridge ¶

func (client *LinuxBridgeClient) DeleteBridge() error

func (*LinuxBridgeClient) DeleteL2Rules ¶

func (client *LinuxBridgeClient) DeleteL2Rules(extIf *externalInterface)

func (*LinuxBridgeClient) SetBridgeMasterToHostInterface ¶

func (client *LinuxBridgeClient) SetBridgeMasterToHostInterface() error

func (*LinuxBridgeClient) SetHairpinOnHostInterface ¶

func (client *LinuxBridgeClient) SetHairpinOnHostInterface(enable bool) error

type LinuxBridgeEndpointClient ¶

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

func NewLinuxBridgeEndpointClient ¶

func NewLinuxBridgeEndpointClient(
	extIf *externalInterface,
	hostVethName string,
	containerVethName string,
	mode string,
	nl netlink.NetlinkInterface,
	plc platform.ExecClient,
) *LinuxBridgeEndpointClient

func (*LinuxBridgeEndpointClient) AddEndpointRules ¶

func (client *LinuxBridgeEndpointClient) AddEndpointRules(epInfo *EndpointInfo) error

func (*LinuxBridgeEndpointClient) AddEndpoints ¶

func (client *LinuxBridgeEndpointClient) AddEndpoints(epInfo *EndpointInfo) error

func (*LinuxBridgeEndpointClient) ConfigureContainerInterfacesAndRoutes ¶

func (client *LinuxBridgeEndpointClient) ConfigureContainerInterfacesAndRoutes(epInfo *EndpointInfo) error

func (*LinuxBridgeEndpointClient) DeleteEndpointRules ¶

func (client *LinuxBridgeEndpointClient) DeleteEndpointRules(ep *endpoint)

func (*LinuxBridgeEndpointClient) DeleteEndpoints ¶

func (client *LinuxBridgeEndpointClient) DeleteEndpoints(ep *endpoint) error

func (*LinuxBridgeEndpointClient) MoveEndpointsToContainerNS ¶

func (client *LinuxBridgeEndpointClient) MoveEndpointsToContainerNS(epInfo *EndpointInfo, nsID uintptr) error

func (*LinuxBridgeEndpointClient) SetupContainerInterfaces ¶

func (client *LinuxBridgeEndpointClient) SetupContainerInterfaces(epInfo *EndpointInfo) error

type MockEndpointClient ¶

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

func NewMockEndpointClient ¶

func NewMockEndpointClient(fn func(*EndpointInfo) error) *MockEndpointClient

func (*MockEndpointClient) AddEndpointRules ¶

func (client *MockEndpointClient) AddEndpointRules(_ *EndpointInfo) error

func (*MockEndpointClient) AddEndpoints ¶

func (client *MockEndpointClient) AddEndpoints(epInfo *EndpointInfo) error

func (*MockEndpointClient) ConfigureContainerInterfacesAndRoutes ¶

func (client *MockEndpointClient) ConfigureContainerInterfacesAndRoutes(_ *EndpointInfo) error

func (*MockEndpointClient) DeleteEndpointRules ¶

func (client *MockEndpointClient) DeleteEndpointRules(_ *endpoint)

func (*MockEndpointClient) DeleteEndpoints ¶

func (client *MockEndpointClient) DeleteEndpoints(ep *endpoint) error

func (*MockEndpointClient) MoveEndpointsToContainerNS ¶

func (client *MockEndpointClient) MoveEndpointsToContainerNS(_ *EndpointInfo, _ uintptr) error

func (*MockEndpointClient) SetupContainerInterfaces ¶

func (client *MockEndpointClient) SetupContainerInterfaces(_ *EndpointInfo) error

type MockNamespace ¶

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

func (*MockNamespace) Close ¶

func (ns *MockNamespace) Close() error

Close releases the resources associated with the namespace object.

func (*MockNamespace) Enter ¶

func (ns *MockNamespace) Enter() error

Enter puts the caller thread inside the namespace.

func (*MockNamespace) Exit ¶

func (ns *MockNamespace) Exit() error

Exit puts the caller thread to its previous namespace.

func (*MockNamespace) GetFd ¶

func (ns *MockNamespace) GetFd() uintptr

GetFd returns the file descriptor of the namespace.

func (*MockNamespace) GetName ¶

func (ns *MockNamespace) GetName() string

type MockNamespaceClient ¶

type MockNamespaceClient struct{}

func NewMockNamespaceClient ¶

func NewMockNamespaceClient() *MockNamespaceClient

func (*MockNamespaceClient) GetCurrentThreadNamespace ¶

func (c *MockNamespaceClient) GetCurrentThreadNamespace() (NamespaceInterface, error)

GetCurrentThreadNamespace returns the caller thread's current namespace.

func (*MockNamespaceClient) OpenNamespace ¶

func (c *MockNamespaceClient) OpenNamespace(ns string) (NamespaceInterface, error)

OpenNamespace creates a new namespace object for the given netns path.

type MockNetworkManager ¶

type MockNetworkManager struct {
	TestNetworkInfoMap  map[string]*NetworkInfo
	TestEndpointInfoMap map[string]*EndpointInfo
	TestEndpointClient  *MockEndpointClient
}

MockNetworkManager is a mock structure for Network Manager

func NewMockNetworkmanager ¶

func NewMockNetworkmanager(mockEndpointclient *MockEndpointClient) *MockNetworkManager

NewMockNetworkmanager returns a new mock

func (*MockNetworkManager) AddExternalInterface ¶

func (nm *MockNetworkManager) AddExternalInterface(ifName string, subnet string) error

AddExternalInterface mock

func (*MockNetworkManager) AttachEndpoint ¶

func (nm *MockNetworkManager) AttachEndpoint(networkID string, endpointID string, sandboxKey string) (*endpoint, error)

AttachEndpoint mock

func (*MockNetworkManager) CreateEndpoint ¶

func (nm *MockNetworkManager) CreateEndpoint(_ apipaClient, _ string, epInfos []*EndpointInfo) error

CreateEndpoint mock

func (*MockNetworkManager) CreateNetwork ¶

func (nm *MockNetworkManager) CreateNetwork(nwInfo *NetworkInfo) error

CreateNetwork mock

func (*MockNetworkManager) DeleteEndpoint ¶

func (nm *MockNetworkManager) DeleteEndpoint(networkID, endpointID string) error

DeleteEndpoint mock

func (*MockNetworkManager) DeleteNetwork ¶

func (nm *MockNetworkManager) DeleteNetwork(networkID string) error

DeleteNetwork mock

func (*MockNetworkManager) DetachEndpoint ¶

func (nm *MockNetworkManager) DetachEndpoint(networkID string, endpointID string) error

DetachEndpoint mock

func (*MockNetworkManager) FindNetworkIDFromNetNs ¶

func (nm *MockNetworkManager) FindNetworkIDFromNetNs(netNs string) (string, error)

func (*MockNetworkManager) GetAllEndpoints ¶

func (nm *MockNetworkManager) GetAllEndpoints(networkID string) (map[string]*EndpointInfo, error)

func (*MockNetworkManager) GetEndpointInfo ¶

func (nm *MockNetworkManager) GetEndpointInfo(networkID string, endpointID string) (*EndpointInfo, error)

GetEndpointInfo mock

func (*MockNetworkManager) GetEndpointInfoBasedOnPODDetails ¶

func (nm *MockNetworkManager) GetEndpointInfoBasedOnPODDetails(networkID string, podName string, podNameSpace string, doExactMatchForPodName bool) (*EndpointInfo, error)

GetEndpointInfoBasedOnPODDetails mock

func (*MockNetworkManager) GetNetworkInfo ¶

func (nm *MockNetworkManager) GetNetworkInfo(networkID string) (NetworkInfo, error)

GetNetworkInfo mock

func (*MockNetworkManager) GetNumEndpointsByContainerID ¶

func (nm *MockNetworkManager) GetNumEndpointsByContainerID(_ string) int

GetNumEndpointsByContainerID mock

func (*MockNetworkManager) GetNumberOfEndpoints ¶

func (nm *MockNetworkManager) GetNumberOfEndpoints(ifName string, networkID string) int

GetNumberOfEndpoints mock

func (*MockNetworkManager) Initialize ¶

func (nm *MockNetworkManager) Initialize(config *common.PluginConfig, isRehydrationRequired bool) error

Initialize mock

func (*MockNetworkManager) SetupNetworkUsingState ¶

func (nm *MockNetworkManager) SetupNetworkUsingState(networkMonitor *cnms.NetworkMonitor) error

SetupNetworkUsingState mock

func (*MockNetworkManager) Uninitialize ¶

func (nm *MockNetworkManager) Uninitialize()

Uninitialize mock

func (*MockNetworkManager) UpdateEndpoint ¶

func (nm *MockNetworkManager) UpdateEndpoint(networkID string, existingEpInfo *EndpointInfo, targetEpInfo *EndpointInfo) error

UpdateEndpoint mock

type Namespace ¶

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

Namespace represents a network namespace.

func (*Namespace) Close ¶

func (ns *Namespace) Close() error

Close releases the resources associated with the namespace object.

func (*Namespace) Enter ¶

func (ns *Namespace) Enter() error

Enter puts the caller thread inside the namespace.

func (*Namespace) Exit ¶

func (ns *Namespace) Exit() error

Exit puts the caller thread to its previous namespace.

func (*Namespace) GetFd ¶

func (ns *Namespace) GetFd() uintptr

GetFd returns the file descriptor of the namespace.

func (*Namespace) GetName ¶

func (ns *Namespace) GetName() string

type NamespaceClient ¶

type NamespaceClient struct{}

func NewNamespaceClient ¶

func NewNamespaceClient() *NamespaceClient

func (*NamespaceClient) GetCurrentThreadNamespace ¶

func (c *NamespaceClient) GetCurrentThreadNamespace() (NamespaceInterface, error)

GetCurrentThreadNamespace returns the caller thread's current namespace.

func (*NamespaceClient) OpenNamespace ¶

func (c *NamespaceClient) OpenNamespace(nsPath string) (NamespaceInterface, error)

OpenNamespace creates a new namespace object for the given netns path.

type NamespaceClientInterface ¶

type NamespaceClientInterface interface {
	OpenNamespace(nsPath string) (NamespaceInterface, error)
	GetCurrentThreadNamespace() (NamespaceInterface, error)
}

type NamespaceInterface ¶

type NamespaceInterface interface {
	GetFd() uintptr
	GetName() string
	Enter() error
	Exit() error
	Close() error
}

type NetworkClient ¶

type NetworkClient interface {
	CreateBridge() error
	DeleteBridge() error
	AddL2Rules(extIf *externalInterface) error
	DeleteL2Rules(extIf *externalInterface)
	SetBridgeMasterToHostInterface() error
	SetHairpinOnHostInterface(bool) error
}

type NetworkInfo ¶

type NetworkInfo struct {
	MasterIfName                  string
	AdapterName                   string
	Id                            string
	Mode                          string
	Subnets                       []SubnetInfo
	PodSubnet                     SubnetInfo
	DNS                           DNSInfo
	Policies                      []policy.Policy
	BridgeName                    string
	EnableSnatOnHost              bool
	NetNs                         string
	Options                       map[string]interface{}
	DisableHairpinOnHostInterface bool
	IPV6Mode                      string
	IPAMType                      string
	ServiceCidrs                  string
	IsIPv6Enabled                 bool
}

NetworkInfo contains read-only information about a container network.

func (*NetworkInfo) PrettyString ¶

func (nwInfo *NetworkInfo) PrettyString() string

type NetworkManager ¶

type NetworkManager interface {
	Initialize(config *common.PluginConfig, isRehydrationRequired bool) error
	Uninitialize()

	AddExternalInterface(ifName string, subnet string) error

	CreateNetwork(nwInfo *NetworkInfo) error
	DeleteNetwork(networkID string) error
	GetNetworkInfo(networkID string) (NetworkInfo, error)
	// FindNetworkIDFromNetNs returns the network name that contains an endpoint created for this netNS, errNetworkNotFound if no network is found
	FindNetworkIDFromNetNs(netNs string) (string, error)
	GetNumEndpointsByContainerID(containerID string) int

	CreateEndpoint(client apipaClient, networkID string, epInfo []*EndpointInfo) error
	DeleteEndpoint(networkID string, endpointID string) error
	GetEndpointInfo(networkID string, endpointID string) (*EndpointInfo, error)
	GetAllEndpoints(networkID string) (map[string]*EndpointInfo, error)
	GetEndpointInfoBasedOnPODDetails(networkID string, podName string, podNameSpace string, doExactMatchForPodName bool) (*EndpointInfo, error)
	AttachEndpoint(networkID string, endpointID string, sandboxKey string) (*endpoint, error)
	DetachEndpoint(networkID string, endpointID string) error
	UpdateEndpoint(networkID string, existingEpInfo *EndpointInfo, targetEpInfo *EndpointInfo) error
	GetNumberOfEndpoints(ifName string, networkID string) int
	SetupNetworkUsingState(networkMonitor *cnms.NetworkMonitor) error
}

NetworkManager API.

func NewNetworkManager ¶

Creates a new network manager.

type OVSEndpointClient ¶

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

func NewOVSEndpointClient ¶

func NewOVSEndpointClient(
	nw *network,
	epInfo *EndpointInfo,
	hostVethName string,
	containerVethName string,
	vlanid int,
	localIP string,
	nl netlink.NetlinkInterface,
	ovs ovsctl.OvsInterface,
	plc platform.ExecClient,
) *OVSEndpointClient

func (*OVSEndpointClient) AddEndpointRules ¶

func (client *OVSEndpointClient) AddEndpointRules(epInfo *EndpointInfo) error

func (*OVSEndpointClient) AddEndpoints ¶

func (client *OVSEndpointClient) AddEndpoints(epInfo *EndpointInfo) error

func (*OVSEndpointClient) AddSnatEndpoint ¶

func (client *OVSEndpointClient) AddSnatEndpoint() error

func (*OVSEndpointClient) AddSnatEndpointRules ¶

func (client *OVSEndpointClient) AddSnatEndpointRules() error

func (*OVSEndpointClient) ConfigureContainerInterfacesAndRoutes ¶

func (client *OVSEndpointClient) ConfigureContainerInterfacesAndRoutes(epInfo *EndpointInfo) error

func (*OVSEndpointClient) ConfigureSnatContainerInterface ¶

func (client *OVSEndpointClient) ConfigureSnatContainerInterface() error

func (*OVSEndpointClient) DeleteEndpointRules ¶

func (client *OVSEndpointClient) DeleteEndpointRules(ep *endpoint)

func (*OVSEndpointClient) DeleteEndpoints ¶

func (client *OVSEndpointClient) DeleteEndpoints(ep *endpoint) error

func (*OVSEndpointClient) DeleteSnatEndpoint ¶

func (client *OVSEndpointClient) DeleteSnatEndpoint() error

func (*OVSEndpointClient) DeleteSnatEndpointRules ¶

func (client *OVSEndpointClient) DeleteSnatEndpointRules()

func (*OVSEndpointClient) MoveEndpointsToContainerNS ¶

func (client *OVSEndpointClient) MoveEndpointsToContainerNS(epInfo *EndpointInfo, nsID uintptr) error

func (*OVSEndpointClient) MoveSnatEndpointToContainerNS ¶

func (client *OVSEndpointClient) MoveSnatEndpointToContainerNS(netnsPath string, nsID uintptr) error

func (*OVSEndpointClient) NewSnatClient ¶

func (client *OVSEndpointClient) NewSnatClient(snatBridgeIP, localIP string, epInfo *EndpointInfo)

func (*OVSEndpointClient) SetupContainerInterfaces ¶

func (client *OVSEndpointClient) SetupContainerInterfaces(epInfo *EndpointInfo) error

func (*OVSEndpointClient) SetupSnatContainerInterface ¶

func (client *OVSEndpointClient) SetupSnatContainerInterface() error

type OVSNetworkClient ¶

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

func NewOVSClient ¶

func NewOVSClient(bridgeName, hostInterfaceName string, ovsctlClient ovsctl.OvsInterface,
	nl netlink.NetlinkInterface, plc platform.ExecClient,
) *OVSNetworkClient

func (*OVSNetworkClient) AddL2Rules ¶

func (client *OVSNetworkClient) AddL2Rules(extIf *externalInterface) error

func (*OVSNetworkClient) AddRoutes ¶

func (client *OVSNetworkClient) AddRoutes(nwInfo *NetworkInfo, interfaceName string) error

func (*OVSNetworkClient) CreateBridge ¶

func (client *OVSNetworkClient) CreateBridge() error

func (*OVSNetworkClient) DeleteBridge ¶

func (client *OVSNetworkClient) DeleteBridge() error

func (*OVSNetworkClient) DeleteL2Rules ¶

func (client *OVSNetworkClient) DeleteL2Rules(extIf *externalInterface)

func (*OVSNetworkClient) SetBridgeMasterToHostInterface ¶

func (client *OVSNetworkClient) SetBridgeMasterToHostInterface() error

func (*OVSNetworkClient) SetHairpinOnHostInterface ¶

func (client *OVSNetworkClient) SetHairpinOnHostInterface(enable bool) error

type RouteInfo ¶

type RouteInfo struct {
	Dst      net.IPNet
	Src      net.IP
	Gw       net.IP
	Protocol int
	DevName  string
	Scope    int
	Priority int
	Table    int
}

RouteInfo contains information about an IP route.

type SecondaryEndpointClient ¶

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

func NewSecondaryEndpointClient ¶

func NewSecondaryEndpointClient(
	nl netlink.NetlinkInterface,
	nioc netio.NetIOInterface,
	plc platform.ExecClient,
	nsc NamespaceClientInterface,
	endpoint *endpoint,
) *SecondaryEndpointClient

func (*SecondaryEndpointClient) AddEndpointRules ¶

func (client *SecondaryEndpointClient) AddEndpointRules(_ *EndpointInfo) error

func (*SecondaryEndpointClient) AddEndpoints ¶

func (client *SecondaryEndpointClient) AddEndpoints(epInfo *EndpointInfo) error

func (*SecondaryEndpointClient) ConfigureContainerInterfacesAndRoutes ¶

func (client *SecondaryEndpointClient) ConfigureContainerInterfacesAndRoutes(epInfo *EndpointInfo) error

func (*SecondaryEndpointClient) DeleteEndpointRules ¶

func (client *SecondaryEndpointClient) DeleteEndpointRules(_ *endpoint)

func (*SecondaryEndpointClient) DeleteEndpoints ¶

func (client *SecondaryEndpointClient) DeleteEndpoints(ep *endpoint) error

func (*SecondaryEndpointClient) MoveEndpointsToContainerNS ¶

func (client *SecondaryEndpointClient) MoveEndpointsToContainerNS(epInfo *EndpointInfo, nsID uintptr) error

func (*SecondaryEndpointClient) SetupContainerInterfaces ¶

func (client *SecondaryEndpointClient) SetupContainerInterfaces(epInfo *EndpointInfo) error

type SubnetInfo ¶

type SubnetInfo struct {
	Family    platform.AddressFamily
	Prefix    net.IPNet
	Gateway   net.IP
	PrimaryIP net.IP
}

SubnetInfo contains subnet information for a container network.

type TransparentEndpointClient ¶

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

func NewTransparentEndpointClient ¶

func NewTransparentEndpointClient(
	extIf *externalInterface,
	hostVethName string,
	containerVethName string,
	mode string,
	nl netlink.NetlinkInterface,
	nioc netio.NetIOInterface,
	plc platform.ExecClient,
) *TransparentEndpointClient

func (*TransparentEndpointClient) AddEndpointRules ¶

func (client *TransparentEndpointClient) AddEndpointRules(epInfo *EndpointInfo) error

func (*TransparentEndpointClient) AddEndpoints ¶

func (client *TransparentEndpointClient) AddEndpoints(epInfo *EndpointInfo) error

func (*TransparentEndpointClient) ConfigureContainerInterfacesAndRoutes ¶

func (client *TransparentEndpointClient) ConfigureContainerInterfacesAndRoutes(epInfo *EndpointInfo) error

func (*TransparentEndpointClient) DeleteEndpointRules ¶

func (client *TransparentEndpointClient) DeleteEndpointRules(ep *endpoint)

func (*TransparentEndpointClient) DeleteEndpoints ¶

func (client *TransparentEndpointClient) DeleteEndpoints(_ *endpoint) error

func (*TransparentEndpointClient) MoveEndpointsToContainerNS ¶

func (client *TransparentEndpointClient) MoveEndpointsToContainerNS(epInfo *EndpointInfo, nsID uintptr) error

func (*TransparentEndpointClient) SetupContainerInterfaces ¶

func (client *TransparentEndpointClient) SetupContainerInterfaces(epInfo *EndpointInfo) error

type TransparentVlanEndpointClient ¶

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

func NewTransparentVlanEndpointClient ¶

func NewTransparentVlanEndpointClient(
	nw *network,
	ep *EndpointInfo,
	vnetVethName string,
	containerVethName string,
	vlanid int,
	localIP string,
	nl netlink.NetlinkInterface,
	plc platform.ExecClient,
	nsc NamespaceClientInterface,
) *TransparentVlanEndpointClient

func (*TransparentVlanEndpointClient) AddDefaultArp ¶

func (client *TransparentVlanEndpointClient) AddDefaultArp(interfaceName, destMac string) error

Helper that creates arp entry for the current NS which maps the virtual gateway (169.254.2.1) to destMac on a particular interfaceName Example: (169.254.2.1) at 12:34:56:78:9a:bc [ether] PERM on <interfaceName>

func (*TransparentVlanEndpointClient) AddEndpointRules ¶

func (client *TransparentVlanEndpointClient) AddEndpointRules(epInfo *EndpointInfo) error

func (*TransparentVlanEndpointClient) AddEndpoints ¶

func (client *TransparentVlanEndpointClient) AddEndpoints(epInfo *EndpointInfo) error

Adds interfaces to the vnet (created if not existing) and vm namespace

func (*TransparentVlanEndpointClient) AddSnatEndpoint ¶

func (client *TransparentVlanEndpointClient) AddSnatEndpoint() error

func (*TransparentVlanEndpointClient) AddSnatEndpointRules ¶

func (client *TransparentVlanEndpointClient) AddSnatEndpointRules() error

func (*TransparentVlanEndpointClient) AddVnetRules ¶

func (client *TransparentVlanEndpointClient) AddVnetRules(epInfo *EndpointInfo) error

Add rules related to tunneling the packet outside of the VM, assumes all calls are idempotent. Namespace: vnet

func (*TransparentVlanEndpointClient) ConfigureContainerInterfacesAndRoutes ¶

func (client *TransparentVlanEndpointClient) ConfigureContainerInterfacesAndRoutes(epInfo *EndpointInfo) error

Adds routes, arp entries, etc. to the vnet and container namespaces

func (*TransparentVlanEndpointClient) ConfigureContainerInterfacesAndRoutesImpl ¶

func (client *TransparentVlanEndpointClient) ConfigureContainerInterfacesAndRoutesImpl(epInfo *EndpointInfo) error

Called from ConfigureContainerInterfacesAndRoutes, Namespace: Container

func (*TransparentVlanEndpointClient) ConfigureSnatContainerInterface ¶

func (client *TransparentVlanEndpointClient) ConfigureSnatContainerInterface() error

func (*TransparentVlanEndpointClient) ConfigureVnetInterfacesAndRoutesImpl ¶

func (client *TransparentVlanEndpointClient) ConfigureVnetInterfacesAndRoutesImpl(epInfo *EndpointInfo) error

Called from ConfigureContainerInterfacesAndRoutes, Namespace: Vnet

func (*TransparentVlanEndpointClient) DeleteEndpointRules ¶

func (client *TransparentVlanEndpointClient) DeleteEndpointRules(ep *endpoint)

func (*TransparentVlanEndpointClient) DeleteEndpoints ¶

func (client *TransparentVlanEndpointClient) DeleteEndpoints(ep *endpoint) error

func (*TransparentVlanEndpointClient) DeleteEndpointsImpl ¶

func (client *TransparentVlanEndpointClient) DeleteEndpointsImpl(ep *endpoint, _ func() (int, error)) error

getNumRoutesLeft is a function which gets the current number of routes in the namespace. Namespace: Vnet

func (*TransparentVlanEndpointClient) DeleteSnatEndpoint ¶

func (client *TransparentVlanEndpointClient) DeleteSnatEndpoint() error

func (*TransparentVlanEndpointClient) DeleteSnatEndpointRules ¶

func (client *TransparentVlanEndpointClient) DeleteSnatEndpointRules()

func (*TransparentVlanEndpointClient) GetVnetRoutes ¶

func (client *TransparentVlanEndpointClient) GetVnetRoutes(ipAddresses []net.IPNet) []RouteInfo

Helper that gets the routes in the vnet NS for a particular list of IP addresses Example: 192.168.0.4 dev <device which connects to NS with that IP> proto static

func (*TransparentVlanEndpointClient) MoveEndpointsToContainerNS ¶

func (client *TransparentVlanEndpointClient) MoveEndpointsToContainerNS(epInfo *EndpointInfo, nsID uintptr) error

func (*TransparentVlanEndpointClient) MoveSnatEndpointToContainerNS ¶

func (client *TransparentVlanEndpointClient) MoveSnatEndpointToContainerNS(netnsPath string, nsID uintptr) error

func (*TransparentVlanEndpointClient) NewSnatClient ¶

func (client *TransparentVlanEndpointClient) NewSnatClient(snatBridgeIP, localIP string, epInfo *EndpointInfo)

func (*TransparentVlanEndpointClient) PopulateVM ¶

func (client *TransparentVlanEndpointClient) PopulateVM(epInfo *EndpointInfo) error

Called from AddEndpoints, Namespace: VM

func (*TransparentVlanEndpointClient) PopulateVnet ¶

func (client *TransparentVlanEndpointClient) PopulateVnet(epInfo *EndpointInfo) error

Called from AddEndpoints, Namespace: Vnet

func (*TransparentVlanEndpointClient) SetupContainerInterfaces ¶

func (client *TransparentVlanEndpointClient) SetupContainerInterfaces(epInfo *EndpointInfo) error

func (*TransparentVlanEndpointClient) SetupSnatContainerInterface ¶

func (client *TransparentVlanEndpointClient) SetupSnatContainerInterface() error

Directories ¶

Path Synopsis

Jump to

Keyboard shortcuts

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