network

package
v1.4.13 Latest Latest
Warning

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

Go to latest
Published: Oct 7, 2021 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 (
	CnetAddressSpace = "cnetAddressSpace"
)
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 ConstructEndpointID

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

ConstructEndpointID constructs endpoint name from netNsPath.

func GetPodNameWithoutSuffix

func GetPodNameWithoutSuffix(podName string) string

func UseHnsV2

func UseHnsV2(netNs string) (bool, error)

UseHnsV2 indicates whether to use HNSv1 or HNSv2 HNSv2 should be used if the NetNs is a valid GUID and if the platform has HCN which supports HNSv2 API.

Types

type AzureHNSEndpoint

type AzureHNSEndpoint struct{}

func (AzureHNSEndpoint) GetHNSEndpointByID added in v1.4.13

func (az AzureHNSEndpoint) GetHNSEndpointByID(id string) (*hcsshim.HNSEndpoint, error)

func (AzureHNSEndpoint) GetHNSEndpointByName added in v1.4.13

func (az AzureHNSEndpoint) GetHNSEndpointByName(endpointName string) (*hcsshim.HNSEndpoint, error)

func (AzureHNSEndpoint) HotAttachEndpoint added in v1.4.13

func (az AzureHNSEndpoint) HotAttachEndpoint(containerID, endpointID string) error

func (AzureHNSEndpoint) IsAttached added in v1.4.13

func (az AzureHNSEndpoint) IsAttached(hnsep *hcsshim.HNSEndpoint, containerID string) (bool, error)

type AzureHNSEndpointClient added in v1.4.13

type AzureHNSEndpointClient interface {
	GetHNSEndpointByName(endpointName string) (*hcsshim.HNSEndpoint, error)
	GetHNSEndpointByID(endpointID string) (*hcsshim.HNSEndpoint, error)
	HotAttachEndpoint(containerID string, endpointID string) error
	IsAttached(hnsep *hcsshim.HNSEndpoint, containerID string) (bool, error)
}

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
}

EndpointInfo contains read-only information about an endpoint.

func (*EndpointInfo) HotAttachEndpoint added in v1.0.4

func (endpoint *EndpointInfo) HotAttachEndpoint(containerID string) error

HotAttachEndpoint is a wrapper of hcsshim's HotAttachEndpoint.

type MockHNSEndpoint

type MockHNSEndpoint struct {
	HnsIDMap         map[string]*hcsshim.HNSEndpoint
	IsAttachedFlag   bool
	HotAttachFailure bool
}

func NewMockHNSEndpoint

func NewMockHNSEndpoint(isAttached bool, hotAttachFailure bool) *MockHNSEndpoint

func (*MockHNSEndpoint) GetHNSEndpointByID

func (az *MockHNSEndpoint) GetHNSEndpointByID(id string) (*hcsshim.HNSEndpoint, error)

func (*MockHNSEndpoint) GetHNSEndpointByName

func (az *MockHNSEndpoint) GetHNSEndpointByName(endpointName string) (*hcsshim.HNSEndpoint, error)

func (*MockHNSEndpoint) HotAttachEndpoint

func (az *MockHNSEndpoint) HotAttachEndpoint(containerID, endpointID string) error

func (*MockHNSEndpoint) IsAttached

func (az *MockHNSEndpoint) IsAttached(hnsep *hcsshim.HNSEndpoint, containerID string) (bool, 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(_ apipaClient, networkID string, 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) 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 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)

	CreateEndpoint(client apipaClient, networkID string, epInfo *EndpointInfo) error
	DeleteEndpoint(cli apipaClient, 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) (NetworkManager, error)

Creates a new network manager.

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.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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