interfacestore

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Sep 4, 2021 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ContainerInterfaceConfig

type ContainerInterfaceConfig struct {
	ContainerID  string
	PodName      string
	PodNamespace string
}

type InterfaceConfig

type InterfaceConfig struct {
	Type InterfaceType
	// Unique name of the interface, also used for the OVS port name.
	InterfaceName string
	IPs           []net.IP
	MAC           net.HardwareAddr
	*OVSPortConfig
	*ContainerInterfaceConfig
	*TunnelInterfaceConfig
}

func NewContainerInterface

func NewContainerInterface(
	interfaceName string,
	containerID string,
	podName string,
	podNamespace string,
	mac net.HardwareAddr,
	ips []net.IP) *InterfaceConfig

NewContainerInterface creates InterfaceConfig for a Pod.

func NewGatewayInterface

func NewGatewayInterface(gatewayName string) *InterfaceConfig

NewGatewayInterface creates InterfaceConfig for the host gateway interface.

func NewIPSecTunnelInterface

func NewIPSecTunnelInterface(interfaceName string, tunnelType ovsconfig.TunnelType, nodeName string, nodeIP net.IP, psk string) *InterfaceConfig

NewIPSecTunnelInterface creates InterfaceConfig for the IPSec tunnel to the Node.

func NewTunnelInterface

func NewTunnelInterface(tunnelName string, tunnelType ovsconfig.TunnelType, localIP net.IP, csum bool) *InterfaceConfig

NewTunnelInterface creates InterfaceConfig for the default tunnel port interface.

func NewUplinkInterface

func NewUplinkInterface(uplinkName string) *InterfaceConfig

NewUplinkInterface creates InterfaceConfig for the uplink interface.

func (*InterfaceConfig) GetIPv4Addr

func (c *InterfaceConfig) GetIPv4Addr() net.IP

TODO: remove this method after IPv4/IPv6 dual-stack is supported completely.

func (*InterfaceConfig) GetIPv6Addr

func (c *InterfaceConfig) GetIPv6Addr() net.IP

type InterfaceStore

type InterfaceStore interface {
	Initialize(interfaces []*InterfaceConfig)
	AddInterface(interfaceConfig *InterfaceConfig)
	DeleteInterface(interfaceConfig *InterfaceConfig)
	GetInterface(interfaceKey string) (*InterfaceConfig, bool)
	GetInterfaceByName(interfaceName string) (*InterfaceConfig, bool)
	GetContainerInterface(containerID string) (*InterfaceConfig, bool)
	GetInterfacesByEntity(name string, namespace string) []*InterfaceConfig
	GetContainerInterfacesByPod(podName string, podNamespace string) []*InterfaceConfig
	GetInterfaceByIP(interfaceIP string) (*InterfaceConfig, bool)
	GetNodeTunnelInterface(nodeName string) (*InterfaceConfig, bool)
	GetContainerInterfaceNum() int
	GetInterfacesByType(interfaceType InterfaceType) []*InterfaceConfig
	Len() int
	GetInterfaceKeysByType(interfaceType InterfaceType) []string
}

InterfaceStore is a service interface to create local interfaces for container, host gateway, and tunnel port. Support add/delete/get operations

func NewInterfaceStore

func NewInterfaceStore() InterfaceStore

type InterfaceType

type InterfaceType uint8
const (
	// ContainerInterface is used to mark current interface is for container
	ContainerInterface InterfaceType = iota
	// GatewayInterface is used to mark current interface is for host gateway
	GatewayInterface
	// TunnelInterface is used to mark current interface is for tunnel port
	TunnelInterface
	// UplinkInterface is used to mark current interface is for uplink port
	UplinkInterface
)

func (InterfaceType) String

func (t InterfaceType) String() string

type OVSPortConfig

type OVSPortConfig struct {
	PortUUID string
	OFPort   int32
}

type TunnelInterfaceConfig

type TunnelInterfaceConfig struct {
	Type ovsconfig.TunnelType
	// Name of the remote Node.
	NodeName string
	// IP address of the local Node.
	LocalIP net.IP
	// IP address of the remote Node.
	RemoteIP net.IP
	PSK      string
	// Whether options:csum is set for this tunnel interface.
	// If true, encapsulation header UDP checksums will be computed on outgoing packets.
	Csum bool
}

Directories

Path Synopsis
Package testing is a generated GoMock package.
Package testing is a generated GoMock package.

Jump to

Keyboard shortcuts

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