ovsconfig

package
v0.12.1 Latest Latest
Warning

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

Go to latest
Published: Feb 11, 2021 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	GeneveTunnel = "geneve"
	VXLANTunnel  = "vxlan"
	GRETunnel    = "gre"
	STTTunnel    = "stt"

	OVSDatapathSystem = "system"
	OVSDatapathNetdev = "netdev"
)
View Source
const (
	DefaultOVSRunDir = "/var/run/openvswitch"
)

Variables

This section is empty.

Functions

func GetConnAddress added in v0.7.0

func GetConnAddress(ovsRunDir string) string

func ParseTunnelInterfaceOptions added in v0.3.0

func ParseTunnelInterfaceOptions(portData *OVSPortData) (net.IP, net.IP, string, bool)

ParseTunnelInterfaceOptions reads remote IP, local IP, IPSec PSK, and csum from the tunnel interface options and returns them.

Types

type Bridge

type Bridge struct {
	Name         string        `json:"name"`
	Protocols    []interface{} `json:"protocols,omitempty"`
	DatapathType string        `json:"datapath_type,omitempty"`
}

type Error

type Error interface {
	error
	Timeout() bool   // Is the error a timeout?
	Temporary() bool // Is the error temporary?
}

func NewOVSDBConnectionUDS

func NewOVSDBConnectionUDS(address string) (*ovsdb.OVSDB, Error)

NewOVSDBConnectionUDS connects to the OVSDB server on the UNIX domain socket specified by address. If address is set to "", the default UNIX domain socket path "/run/openvswitch/db.sock" will be used. Returns the OVSDB struct on success.

type Interface

type Interface struct {
	Name          string        `json:"name"`
	Type          string        `json:"type,omitempty"`
	OFPortRequest int32         `json:"ofport_request,omitempty"`
	Options       []interface{} `json:"options,omitempty"`
}

type InvalidArgumentsError added in v0.2.0

type InvalidArgumentsError string

func (InvalidArgumentsError) Error added in v0.2.0

func (e InvalidArgumentsError) Error() string

func (InvalidArgumentsError) Temporary added in v0.2.0

func (e InvalidArgumentsError) Temporary() bool

func (InvalidArgumentsError) Timeout added in v0.2.0

func (e InvalidArgumentsError) Timeout() bool

type OVSBridge

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

func NewOVSBridge

func NewOVSBridge(bridgeName string, ovsDatapathType string, ovsdb *ovsdb.OVSDB) *OVSBridge

NewOVSBridge creates and returns a new OVSBridge struct.

func (*OVSBridge) AddOVSOtherConfig added in v0.6.0

func (br *OVSBridge) AddOVSOtherConfig(configs map[string]interface{}) Error

AddOVSOtherConfig adds the given configs to the "other_config" column of the single record of the "Open_vSwitch" table. For each config, it will only be added if its key doesn't already exist. No error is returned if configs already exist.

func (*OVSBridge) Create

func (br *OVSBridge) Create() Error

Create looks up or creates the bridge. If the bridge with name bridgeName does not exist, it will be created. Openflow protocol version 1.0 and 1.3 will be enabled for the bridge.

func (*OVSBridge) CreateInternalPort

func (br *OVSBridge) CreateInternalPort(name string, ofPortRequest int32, externalIDs map[string]interface{}) (string, Error)

CreateInternalPort creates an internal port with the specified name on the bridge. If externalIDs is not empty, the map key/value pairs will be set to the port's external_ids. If ofPortRequest is not zero, it will be passed to the OVS port creation.

func (*OVSBridge) CreatePort

func (br *OVSBridge) CreatePort(name, ifDev string, externalIDs map[string]interface{}) (string, Error)

CreatePort creates a port with the specified name on the bridge, and connects the interface specified by ifDev to the port. If externalIDs is not empty, the map key/value pairs will be set to the port's external_ids.

func (*OVSBridge) CreateTunnelPort added in v0.2.0

func (br *OVSBridge) CreateTunnelPort(name string, tunnelType TunnelType, ofPortRequest int32) (string, Error)

CreateTunnelPort creates a tunnel port with the specified name and type on the bridge. If ofPortRequest is not zero, it will be passed to the OVS port creation.

func (*OVSBridge) CreateTunnelPortExt added in v0.2.0

func (br *OVSBridge) CreateTunnelPortExt(
	name string,
	tunnelType TunnelType,
	ofPortRequest int32,
	csum bool,
	localIP string,
	remoteIP string,
	psk string,
	externalIDs map[string]interface{}) (string, Error)

CreateTunnelPortExt creates a tunnel port with the specified name and type on the bridge. If ofPortRequest is not zero, it will be passed to the OVS port creation. If remoteIP is not empty, it will be set to the tunnel port interface options; otherwise flow based tunneling will be configured. psk is for the pre-shared key of IPSec ESP tunnel. If it is not empty, it will be set to the tunnel port interface options. Flow based IPSec tunnel is not supported, so remoteIP must be provided too when psk is not empty. If externalIDs is not nill, the IDs in it will be added to the port's external_ids.

func (*OVSBridge) CreateUplinkPort added in v0.7.0

func (br *OVSBridge) CreateUplinkPort(name string, ofPortRequest int32, externalIDs map[string]interface{}) (string, Error)

CreateUplinkPort creates uplink port.

func (*OVSBridge) Delete

func (br *OVSBridge) Delete() Error

func (*OVSBridge) DeleteOVSOtherConfig added in v0.6.0

func (br *OVSBridge) DeleteOVSOtherConfig(configs map[string]interface{}) Error

DeleteOVSOtherConfig deletes the given configs from the "other_config" column of the single record of the "Open_vSwitch" table. For each config, it will only be deleted if its key exists and its value matches the stored one. No error is returned if configs don't exist or don't match.

func (*OVSBridge) DeletePort

func (br *OVSBridge) DeletePort(portUUID string) Error

DeletePort deletes the port with the provided portUUID. If the port does not exist no change will be done.

func (*OVSBridge) DeletePorts

func (br *OVSBridge) DeletePorts(portUUIDList []string) Error

DeletePorts deletes ports in portUUIDList on the bridge

func (*OVSBridge) GetBridgeName added in v0.7.0

func (br *OVSBridge) GetBridgeName() string

func (*OVSBridge) GetDatapathID added in v0.7.0

func (br *OVSBridge) GetDatapathID() (string, Error)

func (*OVSBridge) GetExternalIDs

func (br *OVSBridge) GetExternalIDs() (map[string]string, Error)

GetExternalIDs returns the external IDs of the bridge.

func (*OVSBridge) GetInterfaceOptions added in v0.9.0

func (br *OVSBridge) GetInterfaceOptions(name string) (map[string]string, Error)

GetInterfaceOptions returns the options of the provided interface.

func (*OVSBridge) GetOFPort

func (br *OVSBridge) GetOFPort(ifName string) (int32, Error)

GetOFPort retrieves the ofport value of an interface given the interface name. The function will invoke OVSDB "wait" operation with 5 seconds timeout to wait the ofport is set on the interface, and so could be blocked for 5 seconds. If the "wait" operation times out or the interface is not found, or the ofport is invalid, value 0 and an error will be returned.

func (*OVSBridge) GetOVSOtherConfig added in v0.6.0

func (br *OVSBridge) GetOVSOtherConfig() (map[string]string, Error)

func (*OVSBridge) GetOVSVersion added in v0.2.0

func (br *OVSBridge) GetOVSVersion() (string, Error)

GetOVSVersion either returns the version of OVS, or an error.

func (*OVSBridge) GetPortData

func (br *OVSBridge) GetPortData(portUUID, ifName string) (*OVSPortData, Error)

GetPortData retrieves port data given the OVS port UUID and interface name. nil is returned, if the port or interface could not be found, or the interface is not attached to the port. The port's OFPort will be set to 0, if its ofport is not assigned by OVS yet.

func (*OVSBridge) GetPortList

func (br *OVSBridge) GetPortList() ([]OVSPortData, Error)

GetPortList returns all ports on the bridge. A port's OFPort will be set to 0, if its ofport is not assigned by OVS yet.

func (*OVSBridge) GetPortUUIDList

func (br *OVSBridge) GetPortUUIDList() ([]string, Error)

GetPortUUIDList returns UUIDs of all ports on the bridge.

func (*OVSBridge) IsHardwareOffloadEnabled added in v0.9.0

func (br *OVSBridge) IsHardwareOffloadEnabled() bool

func (*OVSBridge) SetDatapathID added in v0.7.0

func (br *OVSBridge) SetDatapathID(datapathID string) Error

SetDatapathID sets the provided datapath ID to the bridge. If datapath ID is not configured, reconfigure bridge(add/delete port or set different Mac address for local port) will change its datapath ID. And the change of datapath ID and interrupt OpenFlow connection. See question "My bridge disconnects from my controller on add-port/del-port" in: http://openvswitch.org/support/dist-docs-2.5/FAQ.md.html

func (*OVSBridge) SetExternalIDs

func (br *OVSBridge) SetExternalIDs(externalIDs map[string]interface{}) Error

SetExternalIDs sets the provided external IDs to the bridge.

func (*OVSBridge) SetInterfaceMTU

func (br *OVSBridge) SetInterfaceMTU(name string, MTU int) error

func (*OVSBridge) SetInterfaceOptions added in v0.9.0

func (br *OVSBridge) SetInterfaceOptions(name string, options map[string]interface{}) Error

SetInterfaceOptions sets the specified options of the provided interface.

type OVSBridgeClient

type OVSBridgeClient interface {
	Create() Error
	Delete() Error
	GetExternalIDs() (map[string]string, Error)
	SetExternalIDs(externalIDs map[string]interface{}) Error
	SetDatapathID(datapathID string) Error
	GetInterfaceOptions(name string) (map[string]string, Error)
	SetInterfaceOptions(name string, options map[string]interface{}) Error
	CreatePort(name, ifDev string, externalIDs map[string]interface{}) (string, Error)
	CreateInternalPort(name string, ofPortRequest int32, externalIDs map[string]interface{}) (string, Error)
	CreateTunnelPort(name string, tunnelType TunnelType, ofPortRequest int32) (string, Error)
	CreateTunnelPortExt(name string, tunnelType TunnelType, ofPortRequest int32, csum bool, localIP string, remoteIP string, psk string, externalIDs map[string]interface{}) (string, Error)
	CreateUplinkPort(name string, ofPortRequest int32, externalIDs map[string]interface{}) (string, Error)
	DeletePort(portUUID string) Error
	DeletePorts(portUUIDList []string) Error
	GetOFPort(ifName string) (int32, Error)
	GetPortData(portUUID, ifName string) (*OVSPortData, Error)
	GetPortList() ([]OVSPortData, Error)
	SetInterfaceMTU(name string, MTU int) error
	GetOVSVersion() (string, Error)
	AddOVSOtherConfig(configs map[string]interface{}) Error
	GetOVSOtherConfig() (map[string]string, Error)
	DeleteOVSOtherConfig(configs map[string]interface{}) Error
	GetBridgeName() string
	IsHardwareOffloadEnabled() bool
}

type OVSPortData

type OVSPortData struct {
	UUID string
	Name string
	// Interface type.
	IFType      string
	IFName      string
	OFPort      int32
	ExternalIDs map[string]string
	Options     map[string]string
}

type Port

type Port struct {
	Name        string        `json:"name"`
	Interfaces  []interface{} `json:"interfaces"`
	ExternalIDs []interface{} `json:"external_ids,omitempty"`
}

type TransactionError

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

func NewTransactionError

func NewTransactionError(err error, temporary bool) *TransactionError

func (*TransactionError) Temporary

func (e *TransactionError) Temporary() bool

func (*TransactionError) Timeout

func (e *TransactionError) Timeout() bool

type TunnelType added in v0.2.0

type TunnelType string

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