network

package
v1.4.21 Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2022 License: MIT Imports: 28 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"
)
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),
}

Functions

func AddInfraEndpointRules

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

func AddInfraVnetEndpoint

func AddInfraVnetEndpoint(client *OVSEndpointClient) error

func AddSnatEndpoint

func AddSnatEndpoint(client *OVSEndpointClient) error

func AddSnatEndpointRules

func AddSnatEndpointRules(client *OVSEndpointClient) 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(client *OVSEndpointClient) 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(client *OVSEndpointClient) error

func DeleteSnatEndpointRules

func DeleteSnatEndpointRules(client *OVSEndpointClient)

func GetPodNameWithoutSuffix

func GetPodNameWithoutSuffix(podName string) string

func IsNetworkNotFoundError

func IsNetworkNotFoundError(err error) bool

func MoveInfraEndpointToContainerNS

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

func MoveSnatEndpointToContainerNS

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

func NewInfraVnetClient

func NewInfraVnetClient(client *OVSEndpointClient, epID string)

func NewSnatClient added in v1.0.12

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

func SetupInfraVnetContainerInterface

func SetupInfraVnetContainerInterface(client *OVSEndpointClient) error

func SetupSnatContainerInterface

func SetupSnatContainerInterface(client *OVSEndpointClient) 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
}

EndpointInfo contains read-only information about an endpoint.

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 MockNetworkManager

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

MockNetworkManager is a mock structure for Network Manager

func NewMockNetworkmanager

func NewMockNetworkmanager() *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, networkID string, epInfo *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) 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 GetCurrentThreadNamespace added in v1.0.0

func GetCurrentThreadNamespace() (*Namespace, error)

GetCurrentThreadNamespace returns the caller thread's current namespace.

func OpenNamespace added in v1.0.0

func OpenNamespace(nsPath string) (*Namespace, error)

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

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.

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
}

NetworkInfo contains read-only information about a container network.

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)

	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

func NewNetworkManager(nl netlink.NetlinkInterface, plc platform.ExecClient, netioCli netio.NetIOInterface) (NetworkManager, error)

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) ConfigureContainerInterfacesAndRoutes

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

func (*OVSEndpointClient) DeleteEndpointRules

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

func (*OVSEndpointClient) DeleteEndpoints

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

func (*OVSEndpointClient) MoveEndpointsToContainerNS

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

func (*OVSEndpointClient) SetupContainerInterfaces

func (client *OVSEndpointClient) SetupContainerInterfaces(epInfo *EndpointInfo) 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
}

RouteInfo contains information about an IP route.

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,
	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(ep *endpoint) error

func (*TransparentEndpointClient) MoveEndpointsToContainerNS

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

func (*TransparentEndpointClient) SetupContainerInterfaces

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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