route

package
v1.7.0 Latest Latest
Warning

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

Go to latest
Published: Jun 15, 2022 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	PodCIDRIPv4 *net.IPNet
)

Functions

This section is empty.

Types

type Client

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

func NewClient

func NewClient(networkConfig *config.NetworkConfig, noSNAT, proxyAll, connectUplinkToBridge, multicastEnabled bool) (*Client, error)

NewClient returns a route client.

func (*Client) AddClusterIPRoute added in v1.4.0

func (c *Client) AddClusterIPRoute(svcIP net.IP) error

func (*Client) AddLoadBalancer added in v1.4.0

func (c *Client) AddLoadBalancer(externalIPs []string) error

func (*Client) AddLocalAntreaFlexibleIPAMPodRule added in v1.4.0

func (c *Client) AddLocalAntreaFlexibleIPAMPodRule(podAddresses []net.IP) error

func (*Client) AddNodePort added in v1.4.0

func (c *Client) AddNodePort(nodePortAddresses []net.IP, port uint16, protocol binding.Protocol) error

TODO: nodePortAddresses is not supported currently.

func (*Client) AddRoutes

func (c *Client) AddRoutes(podCIDR *net.IPNet, nodeName string, peerNodeIP, peerGwIP net.IP) error

AddRoutes adds routes to the provided podCIDR. It overrides the routes if they already exist, without error.

func (*Client) AddSNATRule

func (c *Client) AddSNATRule(snatIP net.IP, mark uint32) error

func (*Client) DeleteClusterIPRoute added in v1.4.0

func (c *Client) DeleteClusterIPRoute(svcIP net.IP) error

func (*Client) DeleteLoadBalancer added in v1.4.0

func (c *Client) DeleteLoadBalancer(externalIPs []string) error

func (*Client) DeleteLocalAntreaFlexibleIPAMPodRule added in v1.4.0

func (c *Client) DeleteLocalAntreaFlexibleIPAMPodRule(podAddresses []net.IP) error

func (*Client) DeleteNodePort added in v1.4.0

func (c *Client) DeleteNodePort(nodePortAddresses []net.IP, port uint16, protocol binding.Protocol) error

func (*Client) DeleteRoutes

func (c *Client) DeleteRoutes(podCIDR *net.IPNet) error

DeleteRoutes deletes routes to the provided podCIDR. It does nothing if the routes don't exist, without error.

func (*Client) DeleteSNATRule

func (c *Client) DeleteSNATRule(mark uint32) error

func (*Client) Initialize

func (c *Client) Initialize(nodeConfig *config.NodeConfig, done func()) error

Initialize sets nodeConfig on Window. Service LoadBalancing is provided by OpenFlow.

func (*Client) MigrateRoutesToGw

func (c *Client) MigrateRoutesToGw(linkName string) error

MigrateRoutesToGw is not supported on Windows.

func (*Client) Reconcile

func (c *Client) Reconcile(podCIDRs []string, svcIPs map[string]bool) error

Reconcile removes the orphaned routes and related configuration based on the desired podCIDRs and Service IPs. Only the route entries on the host gateway interface are stored in the cache.

func (*Client) Run

func (c *Client) Run(stopCh <-chan struct{})

Run is not supported on Windows and returns immediately.

func (*Client) UnMigrateRoutesFromGw

func (c *Client) UnMigrateRoutesFromGw(route *net.IPNet, linkName string) error

UnMigrateRoutesFromGw is not supported on Windows.

type Interface

type Interface interface {
	// Initialize should initialize all infrastructures required to route container packets in host network.
	// It should be idempotent and can be safely called on every startup.
	Initialize(nodeConfig *config.NodeConfig, done func()) error

	// Reconcile should remove orphaned routes and related configuration based on the desired podCIDRs and Service IPs.
	// If IPv6 is enabled in the cluster, Reconcile should also remove the orphaned IPv6 neighbors.
	Reconcile(podCIDRs []string, svcIPs map[string]bool) error

	// AddRoutes should add routes to the provided podCIDR.
	// It should override the routes if they already exist, without error.
	AddRoutes(podCIDR *net.IPNet, peerNodeName string, peerNodeIP, peerGwIP net.IP) error

	// DeleteRoutes should delete routes to the provided podCIDR.
	// It should do nothing if the routes don't exist, without error.
	DeleteRoutes(podCIDR *net.IPNet) error

	// MigrateRoutesToGw should move routes from device linkname to local gateway.
	MigrateRoutesToGw(linkName string) error

	// UnMigrateRoutesFromGw should move routes back from local gateway to original device linkName
	// if linkName is nil, it should remove the routes.
	UnMigrateRoutesFromGw(route *net.IPNet, linkName string) error

	// AddSNATRule should add rule to SNAT outgoing traffic with the mark, using the provided SNAT IP.
	AddSNATRule(snatIP net.IP, mark uint32) error

	// DeleteSNATRule should delete rule to SNAT outgoing traffic with the mark.
	DeleteSNATRule(mark uint32) error

	// AddNodePort adds configurations when a NodePort Service is created.
	AddNodePort(nodePortAddresses []net.IP, port uint16, protocol binding.Protocol) error

	// DeleteNodePort deletes related configurations when a NodePort Service is deleted.
	DeleteNodePort(nodePortAddresses []net.IP, port uint16, protocol binding.Protocol) error

	// AddClusterIPRoute adds route on K8s node for Service ClusterIP.
	AddClusterIPRoute(svcIP net.IP) error

	// DeleteClusterIPRoute deletes route for a Service IP when AntreaProxy is configured to handle
	// ClusterIP Service traffic from host network.
	DeleteClusterIPRoute(svcIP net.IP) error

	// AddLoadBalancer adds configurations when a LoadBalancer Service is created.
	AddLoadBalancer(externalIPs []string) error

	// DeleteLoadBalancer deletes related configurations when a LoadBalancer Service is deleted.
	DeleteLoadBalancer(externalIPs []string) error

	// Run starts the sync loop.
	Run(stopCh <-chan struct{})

	// AddLocalAntreaFlexibleIPAMPodRule is used to add IP to target ip set when an AntreaFlexibleIPAM Pod is added. An entry is added
	// for every Pod IP.
	AddLocalAntreaFlexibleIPAMPodRule(podAddresses []net.IP) error

	// DeleteLocalAntreaFlexibleIPAMPodRule is used to delete related IP set entries when an AntreaFlexibleIPAM Pod is deleted.
	DeleteLocalAntreaFlexibleIPAMPodRule(podAddresses []net.IP) error
}

Interface is the interface for routing container packets in host network.

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