openvswitch

package
v0.0.0-...-c012b7a Latest Latest
Warning

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

Go to latest
Published: Jul 2, 2021 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TCPFIN = 0x001
	TCPSYN = 0x002
	TCPRST = 0x004
	TCPPSH = 0x008
	TCPACK = 0x010
	TCPURG = 0x020
	TCPECE = 0x040
	TCPCWR = 0x080
	TCPNS  = 0x100
)

OVS TCP Flags from OVS lib/packets.h.

Variables

View Source
var ErrOVNNoPortIPs = fmt.Errorf("No port IPs")

ErrOVNNoPortIPs used when no IPs are found for a logical port.

Functions

This section is empty.

Types

type OVN

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

OVN command wrapper.

func NewOVN

func NewOVN(s *state.State) (*OVN, error)

NewOVN initialises new OVN client wrapper with the connection set in network.ovn.northbound_connection config.

func (*OVN) ChassisGroupAdd

func (o *OVN) ChassisGroupAdd(haChassisGroupName OVNChassisGroup, mayExist bool) error

ChassisGroupAdd adds a new HA chassis group. If mayExist is true, then an existing resource of the same name is not treated as an error.

func (*OVN) ChassisGroupChassisAdd

func (o *OVN) ChassisGroupChassisAdd(haChassisGroupName OVNChassisGroup, chassisID string, priority uint) error

ChassisGroupChassisAdd adds a chassis ID to an HA chassis group with the specified priority.

func (*OVN) ChassisGroupChassisDelete

func (o *OVN) ChassisGroupChassisDelete(haChassisGroupName OVNChassisGroup, chassisID string) error

ChassisGroupChassisDelete deletes a chassis ID from an HA chassis group.

func (*OVN) ChassisGroupDelete

func (o *OVN) ChassisGroupDelete(haChassisGroupName OVNChassisGroup) error

ChassisGroupDelete deletes an HA chassis group.

func (*OVN) LogicalRouterAdd

func (o *OVN) LogicalRouterAdd(routerName OVNRouter, mayExist bool) error

LogicalRouterAdd adds a named logical router.

func (*OVN) LogicalRouterDNATSNATAdd

func (o *OVN) LogicalRouterDNATSNATAdd(routerName OVNRouter, extIP net.IP, intIP net.IP, stateless bool, mayExist bool) error

LogicalRouterDNATSNATAdd adds a DNAT_AND_SNAT rule to a logical router to translate packets from extIP to intIP.

func (*OVN) LogicalRouterDNATSNATDelete

func (o *OVN) LogicalRouterDNATSNATDelete(routerName OVNRouter, extIPs ...net.IP) error

LogicalRouterDNATSNATDelete deletes a DNAT_AND_SNAT rule from a logical router.

func (*OVN) LogicalRouterDNATSNATDeleteAll

func (o *OVN) LogicalRouterDNATSNATDeleteAll(routerName OVNRouter) error

LogicalRouterDNATSNATDeleteAll deletes all DNAT_AND_SNAT rules from a logical router.

func (OVN) LogicalRouterDelete

func (o OVN) LogicalRouterDelete(routerName OVNRouter) error

LogicalRouterDelete deletes a named logical router.

func (*OVN) LogicalRouterPortAdd

func (o *OVN) LogicalRouterPortAdd(routerName OVNRouter, portName OVNRouterPort, mac net.HardwareAddr, ipAddr []*net.IPNet, mayExist bool) error

LogicalRouterPortAdd adds a named logical router port to a logical router.

func (*OVN) LogicalRouterPortDelete

func (o *OVN) LogicalRouterPortDelete(portName OVNRouterPort) error

LogicalRouterPortDelete deletes a named logical router port from a logical router.

func (*OVN) LogicalRouterPortDeleteIPv6Advertisements

func (o *OVN) LogicalRouterPortDeleteIPv6Advertisements(portName OVNRouterPort) error

LogicalRouterPortDeleteIPv6Advertisements removes the IPv6 RA announcement settings from a router port.

func (*OVN) LogicalRouterPortLinkChassisGroup

func (o *OVN) LogicalRouterPortLinkChassisGroup(portName OVNRouterPort, haChassisGroupName OVNChassisGroup) error

LogicalRouterPortLinkChassisGroup links a logical router port to a HA chassis group.

func (*OVN) LogicalRouterPortSetIPv6Advertisements

func (o *OVN) LogicalRouterPortSetIPv6Advertisements(portName OVNRouterPort, opts *OVNIPv6RAOpts) error

LogicalRouterPortSetIPv6Advertisements sets the IPv6 router advertisement options on a router port.

func (*OVN) LogicalRouterRouteAdd

func (o *OVN) LogicalRouterRouteAdd(routerName OVNRouter, destination *net.IPNet, nextHop net.IP, mayExist bool) error

LogicalRouterRouteAdd adds a static route to the logical router.

func (*OVN) LogicalRouterRouteDelete

func (o *OVN) LogicalRouterRouteDelete(routerName OVNRouter, destinations ...*net.IPNet) error

LogicalRouterRouteDelete deletes a static route from the logical router.

func (*OVN) LogicalRouterSNATAdd

func (o *OVN) LogicalRouterSNATAdd(routerName OVNRouter, intNet *net.IPNet, extIP net.IP, mayExist bool) error

LogicalRouterSNATAdd adds an SNAT rule to a logical router to translate packets from intNet to extIP.

func (*OVN) LogicalRouterSNATDeleteAll

func (o *OVN) LogicalRouterSNATDeleteAll(routerName OVNRouter) error

LogicalRouterSNATDeleteAll deletes all SNAT rules from a logical router.

func (*OVN) LogicalSwitchAdd

func (o *OVN) LogicalSwitchAdd(switchName OVNSwitch, mayExist bool) error

LogicalSwitchAdd adds a named logical switch. If mayExist is true, then an existing resource of the same name is not treated as an error.

func (*OVN) LogicalSwitchDHCPOptionsDelete

func (o *OVN) LogicalSwitchDHCPOptionsDelete(switchName OVNSwitch, uuids ...OVNDHCPOptionsUUID) error

LogicalSwitchDHCPOptionsDelete deletes the specified DHCP options defined for a switch.

func (*OVN) LogicalSwitchDHCPOptionsGet

func (o *OVN) LogicalSwitchDHCPOptionsGet(switchName OVNSwitch) ([]OVNDHCPOptsSet, error)

LogicalSwitchDHCPOptionsGet retrieves the existing DHCP options defined for a logical switch.

func (*OVN) LogicalSwitchDHCPv4OptionsSet

func (o *OVN) LogicalSwitchDHCPv4OptionsSet(switchName OVNSwitch, uuid OVNDHCPOptionsUUID, subnet *net.IPNet, opts *OVNDHCPv4Opts) error

LogicalSwitchDHCPv4OptionsSet creates or updates a DHCPv4 option set associated with the specified switchName and subnet. If uuid is non-empty then the record that exists with that ID is updated, otherwise a new record is created.

func (*OVN) LogicalSwitchDHCPv6OptionsSet

func (o *OVN) LogicalSwitchDHCPv6OptionsSet(switchName OVNSwitch, uuid OVNDHCPOptionsUUID, subnet *net.IPNet, opts *OVNDHCPv6Opts) error

LogicalSwitchDHCPv6OptionsSet creates or updates a DHCPv6 option set associated with the specified switchName and subnet. If uuid is non-empty then the record that exists with that ID is updated, otherwise a new record is created.

func (*OVN) LogicalSwitchDelete

func (o *OVN) LogicalSwitchDelete(switchName OVNSwitch) error

LogicalSwitchDelete deletes a named logical switch.

func (*OVN) LogicalSwitchPortAdd

func (o *OVN) LogicalSwitchPortAdd(switchName OVNSwitch, portName OVNSwitchPort, opts *OVNSwitchPortOpts, mayExist bool) error

LogicalSwitchPortAdd adds a named logical switch port to a logical switch, and sets options if provided. If mayExist is true, then an existing resource of the same name is not treated as an error.

func (*OVN) LogicalSwitchPortCleanup

func (o *OVN) LogicalSwitchPortCleanup(portName OVNSwitchPort, switchName OVNSwitch, switchPortGroupName OVNPortGroup, dnsUUID OVNDNSUUID) error

LogicalSwitchPortCleanup deletes the named logical switch port and its associated config.

func (*OVN) LogicalSwitchPortDelete

func (o *OVN) LogicalSwitchPortDelete(portName OVNSwitchPort) error

LogicalSwitchPortDelete deletes a named logical switch port.

func (*OVN) LogicalSwitchPortDeleteDNS

func (o *OVN) LogicalSwitchPortDeleteDNS(switchName OVNSwitch, dnsUUID OVNDNSUUID) error

LogicalSwitchPortDeleteDNS removes DNS records for a switch port.

func (*OVN) LogicalSwitchPortDynamicIPs

func (o *OVN) LogicalSwitchPortDynamicIPs(portName OVNSwitchPort) ([]net.IP, error)

LogicalSwitchPortDynamicIPs returns a list of dynamc IPs for a switch port.

func (*OVN) LogicalSwitchPortGetDNS

func (o *OVN) LogicalSwitchPortGetDNS(portName OVNSwitchPort) (OVNDNSUUID, string, []net.IP, error)

LogicalSwitchPortGetDNS returns the logical switch port DNS info (UUID, name and IPs).

func (*OVN) LogicalSwitchPortLinkProviderNetwork

func (o *OVN) LogicalSwitchPortLinkProviderNetwork(switchPortName OVNSwitchPort, extNetworkName string) error

LogicalSwitchPortLinkProviderNetwork links a logical switch port to a provider network.

func (*OVN) LogicalSwitchPortLinkRouter

func (o *OVN) LogicalSwitchPortLinkRouter(switchPortName OVNSwitchPort, routerPortName OVNRouterPort) error

LogicalSwitchPortLinkRouter links a logical switch port to a logical router port.

func (*OVN) LogicalSwitchPortSetDNS

func (o *OVN) LogicalSwitchPortSetDNS(switchName OVNSwitch, portName OVNSwitchPort, dnsName string) (OVNDNSUUID, net.IP, net.IP, error)

LogicalSwitchPortSetDNS sets up the switch DNS records for the DNS name resolving to the IPs of the switch port. Attempts to find at most one IP for each IP protocol, preferring static addresses over dynamic. Returns the DNS record UUID, IPv4 and IPv6 addresses used for DNS records.

func (*OVN) LogicalSwitchPortUUID

func (o *OVN) LogicalSwitchPortUUID(portName OVNSwitchPort) (OVNSwitchPortUUID, error)

LogicalSwitchPortUUID returns the logical switch port UUID or empty string if port doesn't exist.

func (*OVN) LogicalSwitchPorts

func (o *OVN) LogicalSwitchPorts(switchName OVNSwitch) (map[OVNSwitchPort]OVNSwitchPortUUID, error)

LogicalSwitchPorts returns a map of logical switch ports (name and UUID) for a switch. Includes non-instance ports, such as the router port.

func (*OVN) LogicalSwitchSetACLRules

func (o *OVN) LogicalSwitchSetACLRules(switchName OVNSwitch, aclRules ...OVNACLRule) error

LogicalSwitchSetACLRules applies a set of rules to the specified logical switch. Any existing rules are removed.

func (*OVN) LogicalSwitchSetIPAllocation

func (o *OVN) LogicalSwitchSetIPAllocation(switchName OVNSwitch, opts *OVNIPAllocationOpts) error

LogicalSwitchSetIPAllocation sets the IP allocation config on the logical switch.

func (*OVN) PortGroupAdd

func (o *OVN) PortGroupAdd(projectID int64, portGroupName OVNPortGroup, associatedPortGroup OVNPortGroup, associatedSwitch OVNSwitch, initialPortMembers ...OVNSwitchPort) error

PortGroupAdd creates a new port group and optionally adds logical switch ports to the group.

func (*OVN) PortGroupDelete

func (o *OVN) PortGroupDelete(portGroupNames ...OVNPortGroup) error

PortGroupDelete deletes port groups along with their ACL rules.

func (*OVN) PortGroupInfo

func (o *OVN) PortGroupInfo(portGroupName OVNPortGroup) (OVNPortGroupUUID, bool, error)

PortGroupInfo returns the port group UUID or empty string if port doesn't exist, and whether the port group has any ACL rules defined on it.

func (*OVN) PortGroupListByProject

func (o *OVN) PortGroupListByProject(projectID int64) ([]OVNPortGroup, error)

PortGroupListByProject finds the port groups that are associated to the project ID.

func (*OVN) PortGroupMemberChange

func (o *OVN) PortGroupMemberChange(addMembers map[OVNPortGroup][]OVNSwitchPortUUID, removeMembers map[OVNPortGroup][]OVNSwitchPortUUID) error

PortGroupMemberChange adds/removes logical switch ports (by UUID) to/from existing port groups.

func (*OVN) PortGroupPortClearACLRules

func (o *OVN) PortGroupPortClearACLRules(portGroupName OVNPortGroup, portName OVNSwitchPort) error

PortGroupPortClearACLRules clears any rules assigned to the logical switch port in the specified port group.

func (*OVN) PortGroupPortSetACLRules

func (o *OVN) PortGroupPortSetACLRules(portGroupName OVNPortGroup, portName OVNSwitchPort, aclRules ...OVNACLRule) error

PortGroupPortSetACLRules applies a set of rules for the logical switch port in the specified port group. Any existing rules for that logical switch port in the port group are removed.

func (*OVN) PortGroupSetACLRules

func (o *OVN) PortGroupSetACLRules(portGroupName OVNPortGroup, matchReplace map[string]string, aclRules ...OVNACLRule) error

PortGroupSetACLRules applies a set of rules to the specified port group. Any existing rules are removed.

func (*OVN) SetDatabaseAddress

func (o *OVN) SetDatabaseAddress(addr string)

SetDatabaseAddress sets the address that runs the OVN northbound and southbound databases.

type OVNACLRule

type OVNACLRule struct {
	Direction string // Either "from-lport" or "to-lport".
	Action    string // Either "allow-related", "allow", "drop", or "reject".
	Match     string // Match criteria. See OVN Southbound database's Logical_Flow table match column usage.
	Priority  int    // Priority (between 0 and 32767, inclusive). Higher values take precedence.
	Log       bool   // Whether or not to log matched packets.
	LogName   string // Log label name (requires Log be true).
}

OVNACLRule represents an ACL rule that can be added to a logical switch or port group.

type OVNChassisGroup

type OVNChassisGroup string

OVNChassisGroup OVN HA chassis group name.

type OVNDHCPOptionsUUID

type OVNDHCPOptionsUUID string

OVNDHCPOptionsUUID DHCP Options set UUID.

type OVNDHCPOptsSet

type OVNDHCPOptsSet struct {
	UUID OVNDHCPOptionsUUID
	CIDR *net.IPNet
}

OVNDHCPOptsSet is an existing DHCP options set in the northbound database.

type OVNDHCPv4Opts

type OVNDHCPv4Opts struct {
	ServerID           net.IP
	ServerMAC          net.HardwareAddr
	Router             net.IP
	RecursiveDNSServer []net.IP
	DomainName         string
	LeaseTime          time.Duration
	MTU                uint32
}

OVNDHCPv4Opts IPv4 DHCP options that can be applied to a switch port.

type OVNDHCPv6Opts

type OVNDHCPv6Opts struct {
	ServerID           net.HardwareAddr
	RecursiveDNSServer []net.IP
	DNSSearchList      []string
}

OVNDHCPv6Opts IPv6 DHCP option set that can be created (and then applied to a switch port by resulting ID).

type OVNDNSUUID

type OVNDNSUUID string

OVNDNSUUID OVN DNS record UUID.

type OVNIPAllocationOpts

type OVNIPAllocationOpts struct {
	PrefixIPv4  *net.IPNet
	PrefixIPv6  *net.IPNet
	ExcludeIPv4 []shared.IPRange
}

OVNIPAllocationOpts defines IP allocation settings that can be applied to a logical switch.

type OVNIPv6AddressMode

type OVNIPv6AddressMode string

OVNIPv6AddressMode IPv6 router advertisement address mode.

const OVNIPv6AddressModeDHCPStateful OVNIPv6AddressMode = "dhcpv6_stateful"

OVNIPv6AddressModeDHCPStateful IPv6 DHCPv6 stateful mode.

const OVNIPv6AddressModeDHCPStateless OVNIPv6AddressMode = "dhcpv6_stateless"

OVNIPv6AddressModeDHCPStateless IPv6 DHCPv6 stateless mode.

const OVNIPv6AddressModeSLAAC OVNIPv6AddressMode = "slaac"

OVNIPv6AddressModeSLAAC IPv6 SLAAC mode.

type OVNIPv6RAOpts

type OVNIPv6RAOpts struct {
	SendPeriodic       bool
	AddressMode        OVNIPv6AddressMode
	MinInterval        time.Duration
	MaxInterval        time.Duration
	RecursiveDNSServer net.IP
	DNSSearchList      []string
	MTU                uint32
}

OVNIPv6RAOpts IPv6 router advertisements options that can be applied to a router.

type OVNPortGroup

type OVNPortGroup string

OVNPortGroup OVN port group name.

type OVNPortGroupUUID

type OVNPortGroupUUID string

OVNPortGroupUUID OVN port group UUID.

type OVNRouter

type OVNRouter string

OVNRouter OVN router name.

type OVNRouterPort

type OVNRouterPort string

OVNRouterPort OVN router port name.

type OVNSwitch

type OVNSwitch string

OVNSwitch OVN switch name.

type OVNSwitchPort

type OVNSwitchPort string

OVNSwitchPort OVN switch port name.

type OVNSwitchPortOpts

type OVNSwitchPortOpts struct {
	MAC          net.HardwareAddr   // Optional, if nil will be set to dynamic.
	IPs          []net.IP           // Optional, if empty IPs will be set to dynamic.
	DHCPv4OptsID OVNDHCPOptionsUUID // Optional, if empty, no DHCPv4 enabled on port.
	DHCPv6OptsID OVNDHCPOptionsUUID // Optional, if empty, no DHCPv6 enabled on port.
}

OVNSwitchPortOpts options that can be applied to a swich port.

type OVNSwitchPortUUID

type OVNSwitchPortUUID string

OVNSwitchPortUUID OVN switch port UUID.

type OVS

type OVS struct{}

OVS command wrapper.

func NewOVS

func NewOVS() *OVS

NewOVS initialises new OVS wrapper.

func (*OVS) BridgeAdd

func (o *OVS) BridgeAdd(bridgeName string, mayExist bool) error

BridgeAdd adds an OVS bridge.

func (*OVS) BridgeDelete

func (o *OVS) BridgeDelete(bridgeName string) error

BridgeDelete deletes an OVS bridge.

func (*OVS) BridgeExists

func (o *OVS) BridgeExists(bridgeName string) (bool, error)

BridgeExists returns true if OVS bridge exists.

func (*OVS) BridgePortAdd

func (o *OVS) BridgePortAdd(bridgeName string, portName string, mayExist bool) error

BridgePortAdd adds a port to the bridge (if already attached does nothing).

func (*OVS) BridgePortDelete

func (o *OVS) BridgePortDelete(bridgeName string, portName string) error

BridgePortDelete deletes a port from the bridge (if already detached does nothing).

func (*OVS) BridgePortList

func (o *OVS) BridgePortList(bridgeName string) ([]string, error)

BridgePortList returns a list of ports that are connected to the bridge.

func (*OVS) BridgePortSet

func (o *OVS) BridgePortSet(portName string, options ...string) error

BridgePortSet sets port options.

func (*OVS) ChassisID

func (o *OVS) ChassisID() (string, error)

ChassisID returns the local chassis ID.

func (*OVS) Installed

func (o *OVS) Installed() bool

Installed returns true if OVS tools are installed.

func (*OVS) InterfaceAssociateOVNSwitchPort

func (o *OVS) InterfaceAssociateOVNSwitchPort(interfaceName string, ovnSwitchPortName OVNSwitchPort) error

InterfaceAssociateOVNSwitchPort removes any existing OVS ports associated to the specified ovnSwitchPortName and then associates the specified interfaceName to the OVN switch port.

func (*OVS) InterfaceAssociatedOVNSwitchPort

func (o *OVS) InterfaceAssociatedOVNSwitchPort(interfaceName string) (OVNSwitchPort, error)

InterfaceAssociatedOVNSwitchPort returns the OVN switch port associated to the OVS interface.

func (*OVS) OVNBridgeMappingAdd

func (o *OVS) OVNBridgeMappingAdd(bridgeName string, providerName string) error

OVNBridgeMappingAdd appends an OVN bridge mapping between an OVS bridge and the logical provider name.

func (*OVS) OVNBridgeMappingDelete

func (o *OVS) OVNBridgeMappingDelete(bridgeName string, providerName string) error

OVNBridgeMappingDelete deletes an OVN bridge mapping between an OVS bridge and the logical provider name.

func (*OVS) OVNBridgeMappings

func (o *OVS) OVNBridgeMappings(bridgeName string) ([]string, error)

OVNBridgeMappings gets the current OVN bridge mappings.

func (*OVS) OVNEncapIP

func (o *OVS) OVNEncapIP() (net.IP, error)

OVNEncapIP returns the enscapsulation IP used for OVN underlay tunnels.

Jump to

Keyboard shortcuts

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