ribctl

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Jun 26, 2019 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const FLOWDB_BUILTIN_CONFIG = "_builtin_"

Variables

This section is empty.

Functions

func FlowCmdToGroupCmd

func FlowCmdToGroupCmd(cmd fibcapi.FlowMod_Cmd) fibcapi.GroupMod_Cmd

func GetFlowCmd

func GetFlowCmd(t uint16) fibcapi.FlowMod_Cmd

func GetFlowCmdByLinkStatus added in v0.4.0

func GetFlowCmdByLinkStatus(link *nlamsg.Link) fibcapi.FlowMod_Cmd

func GetGroupCmd

func GetGroupCmd(t uint16) fibcapi.GroupMod_Cmd

func GetPortConfigCmd

func GetPortConfigCmd(t uint16) string

func L2AddrReasonToMsgType added in v0.4.0

func L2AddrReasonToMsgType(reason fibcapi.L2Addr_Reason) (uint16, error)
func LinkTypeFromLink(link *nlamsg.Link) fibcapi.LinkType_Type

func NewACLFlowByAddr

func NewACLFlowByAddr(addr *nlamsg.Addr, inPort uint32) *fibcapi.PolicyACLFlow

PolicyACL (match ip_dst and send controller)

func NewAddrLinkName

func NewAddrLinkName(addr *nlamsg.Addr, useNId bool) string

func NewBridgingFlow added in v0.4.0

func NewBridgingFlow(neigh *nlamsg.Neigh, portId uint32) *fibcapi.BridgingFlow

Bridging

func NewIfDBKey added in v0.4.0

func NewIfDBKey(nid uint8, ifindex int) string

func NewL2InterfaceGroup

func NewL2InterfaceGroup(link *nlamsg.Link, master *IfDBEntry) *fibcapi.L2InterfaceGroup

L2 Interface Group

func NewL3UnicastGroup

func NewL3UnicastGroup(link, phyLink *nlamsg.Link, neigh *nlamsg.Neigh) *fibcapi.L3UnicastGroup

L3 Unicast Group

func NewLinkName

func NewLinkName(link *nlamsg.Link, useNId bool) string

func NewMPLSFlowPop1

func NewMPLSFlowPop1(route *nlamsg.Route) *fibcapi.MPLSFlow

MPLS Flow (POP single label)

func NewMPLSFlowPop2

func NewMPLSFlowPop2(neigh *nlamsg.Neigh, route *nlamsg.Route) *fibcapi.MPLSFlow

MPLS Flow (POP double label)

func NewMPLSFlowSwap

func NewMPLSFlowSwap(route *nlamsg.Route, bos bool) *fibcapi.MPLSFlow

MPLS Flow (SWAP)

func NewMPLSFlowVRF

func NewMPLSFlowVRF(label uint32, nid uint8) *fibcapi.MPLSFlow

MPLS Flow (POP single label for VRF)

func NewMPLSInterfaceGroup

func NewMPLSInterfaceGroup(link *nlamsg.Link, neigh *nlamsg.Neigh) *fibcapi.MPLSInterfaceGroup

MPLS Interface Group

func NewMPLSLabelGroupL3VPN

func NewMPLSLabelGroupL3VPN(enId, label, neId, nextEnId uint32) *fibcapi.MPLSLabelGroup

MPLS L3 VPN Group

func NewMPLSLabelGroupSwap

func NewMPLSLabelGroupSwap(neigh *nlamsg.Neigh, route *nlamsg.Route) *fibcapi.MPLSLabelGroup

MPLS Swap Group

func NewMPLSLabelGroupTun1

func NewMPLSLabelGroupTun1(enId, label, neId uint32) *fibcapi.MPLSLabelGroup

MPLS Tunnel1 Group

func NewNeighId

func NewNeighId(neigh *nlamsg.Neigh) uint32

func NewPortId

func NewPortId(link *nlamsg.Link) uint32

func NewPortStatus added in v0.2.0

func NewPortStatus(link *nlamsg.Link) fibcapi.PortStatus_Status

func NewTermMACFlowIPv4

func NewTermMACFlowIPv4(link *nlamsg.Link) *fibcapi.TerminationMacFlow

Term MAC flow

func NewTermMACFlowIPv6

func NewTermMACFlowIPv6(link *nlamsg.Link) *fibcapi.TerminationMacFlow

func NewTermMACFlowMPLS

func NewTermMACFlowMPLS(link *nlamsg.Link) *fibcapi.TerminationMacFlow

func NewUnicastRoutingFlow

func NewUnicastRoutingFlow(neigh *nlamsg.Neigh, route *nlamsg.Route) *fibcapi.UnicastRoutingFlow

Unicast Routing (for Route)

func NewUnicastRoutingFlowMPLS

func NewUnicastRoutingFlowMPLS(route *nlamsg.Route) *fibcapi.UnicastRoutingFlow

Unicast Routing (for MPLS)

func NewUnicastRoutingFlowNeigh

func NewUnicastRoutingFlowNeigh(neigh *nlamsg.Neigh) *fibcapi.UnicastRoutingFlow

Unicast Routing (for Neighbor)

func NewVLANBridgeVlanFlow added in v0.4.0

func NewVLANBridgeVlanFlow(brvlan *nlamsg.BridgeVlanInfo, portId uint32) *fibcapi.VLANFlow

func NewVLANFilterFlow

func NewVLANFilterFlow(link *nlamsg.Link) *fibcapi.VLANFlow

VLAN Flow()

func NewVLANUntagFlow

func NewVLANUntagFlow(link *nlamsg.Link) *fibcapi.VLANFlow

func NewVRFLabel

func NewVRFLabel(base uint32, nid uint8) uint32

func ParseLinkName

func ParseLinkName(name string) (uint8, string)

func ParsePortId

func ParsePortId(linkId uint32) (uint8, uint16)

func PortId added in v0.4.0

func PortId(nid uint8, lnId uint16) uint32

Types

type FIBCData added in v0.3.1

type FIBCData struct {
	Hdr  *fibcnet.Header
	Data []byte
}

func NewFIBCData added in v0.3.1

func NewFIBCData(h *fibcnet.Header, data []byte) *FIBCData

type FIBController

type FIBController struct {
	*fibcnet.Client
	// contains filtered or unexported fields
}

func NewFIBController

func NewFIBController(addr string) *FIBController

func (*FIBController) Recv

func (f *FIBController) Recv() <-chan *FIBCData

func (*FIBController) Send

func (f *FIBController) Send(msg fibcnet.Message, xid uint32) error

func (*FIBController) Start

func (f *FIBController) Start()

type FlowConfig added in v0.4.0

type FlowConfig struct {
	PolicyACL []*PolicyACLFlowConfig `mapstructure:"policy_acl"`
}

func NewBuiltinFlowConfig added in v0.4.0

func NewBuiltinFlowConfig() *FlowConfig

type FlowDB added in v0.4.0

type FlowDB struct {
	Flows map[string]*FlowConfig `mapstructure:"flows"`
	// contains filtered or unexported fields
}

func NewFlowDB added in v0.4.0

func NewFlowDB() *FlowDB

func (*FlowDB) Config added in v0.4.0

func (c *FlowDB) Config(name string) *FlowConfig

func (*FlowDB) Load added in v0.4.0

func (c *FlowDB) Load() error

func (*FlowDB) SetConfigFile added in v0.4.0

func (c *FlowDB) SetConfigFile(path, format string) *FlowDB

type IfDB added in v0.4.0

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

func NewIfDB added in v0.4.0

func NewIfDB() *IfDB

func (*IfDB) Associated added in v0.4.0

func (db *IfDB) Associated(nid uint8, ifindex int) bool

func (*IfDB) Clear added in v0.4.0

func (db *IfDB) Clear()

func (*IfDB) Delete added in v0.4.0

func (db *IfDB) Delete(portId uint32) *IfDBEntry

func (*IfDB) ListSlaves added in v0.4.0

func (db *IfDB) ListSlaves(masterIndex int, f func(*IfDBEntry))

func (*IfDB) Select added in v0.4.0

func (db *IfDB) Select(ifentry *IfDBEntry, portId uint32) bool

func (*IfDB) SelectBy added in v0.4.0

func (db *IfDB) SelectBy(ifentry *IfDBEntry, nid uint8, ifindex int) bool

func (*IfDB) Set added in v0.4.0

func (db *IfDB) Set(e *IfDBEntry)

func (*IfDB) Update added in v0.4.0

func (db *IfDB) Update(portId uint32, f func(e *IfDBEntry) IfDBField) IfDBField

type IfDBEntry added in v0.4.0

type IfDBEntry struct {
	NId         uint8
	LnId        uint16
	Index       int
	MasterIndex int
	PortStatus  fibcapi.PortStatus_Status
	Associated  bool
	LinkType    fibcapi.LinkType_Type
}
func NewIfDBEntryFromLink(link *nlamsg.Link) *IfDBEntry

func (*IfDBEntry) CopyTo added in v0.4.0

func (e *IfDBEntry) CopyTo(dst *IfDBEntry)

func (*IfDBEntry) Key added in v0.4.0

func (e *IfDBEntry) Key() string

func (*IfDBEntry) PortId added in v0.4.0

func (e *IfDBEntry) PortId() uint32

func (*IfDBEntry) String added in v0.4.0

func (e *IfDBEntry) String() string

func (*IfDBEntry) Update added in v0.4.0

func (e *IfDBEntry) Update(link *nlamsg.Link) IfDBField

type IfDBField added in v0.4.0

type IfDBField uint32
const (
	IfDBFieldNone IfDBField = 0
	IfDBFieldAny  IfDBField = 1 << iota
	IfDBFieldStatus
	IfDBFieldMaster
	IfDBFieldLinkType
	IfDBFieldLinkID
)

func (IfDBField) Has added in v0.4.0

func (v IfDBField) Has(fields ...IfDBField) bool

func (IfDBField) IsNull added in v0.4.0

func (v IfDBField) IsNull() bool

func (IfDBField) String added in v0.4.0

func (v IfDBField) String() string

type NLAController

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

func NewNLAController

func NewNLAController(addr string) *NLAController

func (*NLAController) Conn

func (n *NLAController) Conn() <-chan net.IP

func (*NLAController) GetAddrs

func (n *NLAController) GetAddrs(nid uint8, f func(*nlamsg.Addr) error) error

func (*NLAController) GetBridgeVlanInfos added in v0.4.0

func (n *NLAController) GetBridgeVlanInfos(nid uint8, ifindex int, f func(*nlamsg.BridgeVlanInfo)) error

func (*NLAController) GetIptun added in v0.3.1

func (n *NLAController) GetIptun(nid uint8, remote net.IP) (*nlamsg.Iptun, error)
func (n *NLAController) GetLink(nid uint8, index int) (*nlamsg.Link, error)
func (n *NLAController) GetLink_GroupMod(cmd fibcapi.GroupMod_Cmd, nid uint8, index int) (*nlamsg.Link, error)
func (n *NLAController) GetLinks(nid uint8, f func(*nlamsg.Link) error) error

func (*NLAController) GetNeigh

func (n *NLAController) GetNeigh(nid uint8, addr net.IP) (*nlamsg.Neigh, error)

func (*NLAController) GetNeigh_FlowMod added in v0.2.0

func (n *NLAController) GetNeigh_FlowMod(cmd fibcapi.FlowMod_Cmd, nid uint8, addr net.IP) (*nlamsg.Neigh, error)

func (*NLAController) GetNeigh_GroupMod added in v0.2.0

func (n *NLAController) GetNeigh_GroupMod(cmd fibcapi.GroupMod_Cmd, nid uint8, addr net.IP) (*nlamsg.Neigh, error)

func (*NLAController) GetNeighs

func (n *NLAController) GetNeighs(nid uint8, f func(*nlamsg.Neigh) error) error

func (*NLAController) GetRoutes

func (n *NLAController) GetRoutes(nid uint8, f func(*nlamsg.Route) error) error

func (*NLAController) ModFdb added in v0.4.0

func (n *NLAController) ModFdb(nid uint8, ifindex int, hwaddr net.HardwareAddr, vid uint16, mtype uint16) error

func (*NLAController) ModLinkStatus

func (n *NLAController) ModLinkStatus(nid uint8, ifname string, operState string) error

func (*NLAController) Monitor

func (n *NLAController) Monitor(ci *nlalib.ConnInfo)

func (*NLAController) Recv

func (n *NLAController) Recv() <-chan *nlamsg.NetlinkMessageUnion

func (*NLAController) Start

func (n *NLAController) Start() error

type PolicyACLActionConfig added in v0.4.0

type PolicyACLActionConfig struct {
	Name  string `mapstructure:"name"`
	Value uint32 `mapstructure:"value"`
}

func (*PolicyACLActionConfig) ToAPI added in v0.4.0

type PolicyACLFlowConfig added in v0.4.0

type PolicyACLFlowConfig struct {
	Match  PolicyACLMatchConfig  `mapstructure:"match"`
	Action PolicyACLActionConfig `mapstructure:"action"`
}

func (*PolicyACLFlowConfig) Clone added in v0.4.0

func (*PolicyACLFlowConfig) SetPort added in v0.4.0

func (c *PolicyACLFlowConfig) SetPort(vrf uint8, inPort uint32) *PolicyACLFlowConfig

func (*PolicyACLFlowConfig) ToAPI added in v0.4.0

type PolicyACLMatchConfig added in v0.4.0

type PolicyACLMatchConfig struct {
	EthDst  string `mapstructure:"eth_dst"`
	EthType uint16 `mapstructure:"eth_type"`
	IpProto uint16 `mapstructure:"ip_proto"`
	IpDst   string `mapstructure:"ip_dst"`
	TpSrc   uint16 `mapstructure:"tp_src"`
	TpDst   uint16 `mapstructure:"tp_dst"`
	InPort  uint32 `mapstructure:"in_port"`
	Vrf     uint8  `mapstructure:"vrf"`
}

func (*PolicyACLMatchConfig) ToAPI added in v0.4.0

type RIBController

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

func NewRIBController

func NewRIBController(nid uint8, reId string, label uint32, useNId bool, nla *NLAController, fib *FIBController, flowdb *FlowConfig) *RIBController

func (*RIBController) FIBCConnected added in v0.4.0

func (r *RIBController) FIBCConnected()

func (*RIBController) FIBCDpStatus added in v0.3.1

func (r *RIBController) FIBCDpStatus(hdr *fibcnet.Header, msg *fibcapi.DpStatus)

func (*RIBController) FIBCL2AddrStatus added in v0.4.0

func (r *RIBController) FIBCL2AddrStatus(hdr *fibcnet.Header, msg *fibcapi.L2AddrStatus)

func (*RIBController) FIBCPortStatus added in v0.3.1

func (r *RIBController) FIBCPortStatus(hdr *fibcnet.Header, msg *fibcapi.PortStatus)

func (*RIBController) NetlinkAddr

func (r *RIBController) NetlinkAddr(nlmsg *nlamsg.NetlinkMessage, addr *nlamsg.Addr)

func (*RIBController) NetlinkBridgeVlanInfo added in v0.4.0

func (r *RIBController) NetlinkBridgeVlanInfo(nlmsg *nlamsg.NetlinkMessage, brvlan *nlamsg.BridgeVlanInfo)
func (r *RIBController) NetlinkLink(nlmsg *nlamsg.NetlinkMessage, link *nlamsg.Link)

func (*RIBController) NetlinkNeigh

func (r *RIBController) NetlinkNeigh(nlmsg *nlamsg.NetlinkMessage, neigh *nlamsg.Neigh)

func (*RIBController) NetlinkNode added in v0.2.0

func (r *RIBController) NetlinkNode(nlmsg *nlamsg.NetlinkMessage, node *nlamsg.Node)

func (*RIBController) NetlinkRoute

func (r *RIBController) NetlinkRoute(nlmsg *nlamsg.NetlinkMessage, route *nlamsg.Route)

func (*RIBController) NewPortConfig added in v0.2.0

func (r *RIBController) NewPortConfig(cmd string, reId string, link *nlamsg.Link) *fibcapi.PortConfig

func (*RIBController) SendACLFlowByAddr

func (r *RIBController) SendACLFlowByAddr(cmd fibcapi.FlowMod_Cmd, addr *nlamsg.Addr, inPort uint32) error
func (r *RIBController) SendACLFlowByLink(cmd fibcapi.FlowMod_Cmd, link *nlamsg.Link) error

PolicyACL (default flows of port)

func (*RIBController) SendAddrFlows added in v0.4.0

func (r *RIBController) SendAddrFlows(cmd fibcapi.FlowMod_Cmd, addr *nlamsg.Addr) error

func (*RIBController) SendBondSlaveFlows added in v0.4.0

func (r *RIBController) SendBondSlaveFlows(cmd fibcapi.FlowMod_Cmd, link *nlamsg.Link, ife *IfDBEntry) error

func (*RIBController) SendBridgeVlanFlows added in v0.4.0

func (r *RIBController) SendBridgeVlanFlows(cmd fibcapi.FlowMod_Cmd, brvlan *nlamsg.BridgeVlanInfo) error

func (*RIBController) SendBridgingFlow added in v0.4.0

func (r *RIBController) SendBridgingFlow(cmd fibcapi.FlowMod_Cmd, neigh *nlamsg.Neigh, portId uint32) error

func (*RIBController) SendFdbFlows added in v0.4.0

func (r *RIBController) SendFdbFlows(cmd fibcapi.FlowMod_Cmd, neigh *nlamsg.Neigh) error

func (*RIBController) SendHello

func (r *RIBController) SendHello()

func (*RIBController) SendL2InterfaceGroup

func (r *RIBController) SendL2InterfaceGroup(cmd fibcapi.GroupMod_Cmd, link *nlamsg.Link, master *IfDBEntry) error

func (*RIBController) SendL3UnicastGroup

func (r *RIBController) SendL3UnicastGroup(cmd fibcapi.GroupMod_Cmd, neigh *nlamsg.Neigh) error

func (*RIBController) SendLinkFlows

func (r *RIBController) SendLinkFlows(cmd fibcapi.FlowMod_Cmd, link *nlamsg.Link) error

func (*RIBController) SendLoopbackFlows

func (r *RIBController) SendLoopbackFlows(cmd fibcapi.FlowMod_Cmd, nid uint8, inPort uint32) error

func (*RIBController) SendMPLSFlowPop1

func (r *RIBController) SendMPLSFlowPop1(cmd fibcapi.FlowMod_Cmd, route *nlamsg.Route) error

func (*RIBController) SendMPLSFlowPop2

func (r *RIBController) SendMPLSFlowPop2(cmd fibcapi.FlowMod_Cmd, route *nlamsg.Route) error

func (*RIBController) SendMPLSFlowSwap

func (r *RIBController) SendMPLSFlowSwap(cmd fibcapi.FlowMod_Cmd, route *nlamsg.Route, bos bool) error

func (*RIBController) SendMPLSFlowVRF

func (r *RIBController) SendMPLSFlowVRF(cmd fibcapi.FlowMod_Cmd, nid uint8) error

func (*RIBController) SendMPLSInterfaceGroup

func (r *RIBController) SendMPLSInterfaceGroup(cmd fibcapi.GroupMod_Cmd, neigh *nlamsg.Neigh) error

func (*RIBController) SendMPLSLabelGroupMPLS

func (r *RIBController) SendMPLSLabelGroupMPLS(cmd fibcapi.GroupMod_Cmd, route *nlamsg.Route) error

MPLS Label Groups for encap mpls single label

func (*RIBController) SendMPLSLabelGroupSwap

func (r *RIBController) SendMPLSLabelGroupSwap(cmd fibcapi.GroupMod_Cmd, route *nlamsg.Route) error

func (*RIBController) SendMPLSLabelGroupVPN

func (r *RIBController) SendMPLSLabelGroupVPN(cmd fibcapi.GroupMod_Cmd, route *nlamsg.Route) error

MPLS Label Groups for encap mpls double label

func (*RIBController) SendNeighFlows

func (r *RIBController) SendNeighFlows(cmd fibcapi.FlowMod_Cmd, neigh *nlamsg.Neigh) error

func (*RIBController) SendPortConfig

func (r *RIBController) SendPortConfig(cmd string, link *nlamsg.Link) error

func (*RIBController) SendRouteFlows

func (r *RIBController) SendRouteFlows(cmd fibcapi.FlowMod_Cmd, route *nlamsg.Route) error

func (*RIBController) SendTermMACFlow

func (r *RIBController) SendTermMACFlow(cmd fibcapi.FlowMod_Cmd, link *nlamsg.Link) error

func (*RIBController) SendUnicastRoutingFlow

func (r *RIBController) SendUnicastRoutingFlow(cmd fibcapi.FlowMod_Cmd, route *nlamsg.Route) error

func (*RIBController) SendUnicastRoutingFlowMPLS

func (r *RIBController) SendUnicastRoutingFlowMPLS(cmd fibcapi.FlowMod_Cmd, route *nlamsg.Route) error

func (*RIBController) SendUnicastRoutingFlowNeigh

func (r *RIBController) SendUnicastRoutingFlowNeigh(cmd fibcapi.FlowMod_Cmd, neigh *nlamsg.Neigh) error

func (*RIBController) SendVLANBridgeVlanFlow added in v0.4.0

func (r *RIBController) SendVLANBridgeVlanFlow(cmd fibcapi.FlowMod_Cmd, brvlan *nlamsg.BridgeVlanInfo, portId uint32) error

func (*RIBController) SendVLANFlow

func (r *RIBController) SendVLANFlow(cmd fibcapi.FlowMod_Cmd, link *nlamsg.Link) error

func (*RIBController) Serve

func (r *RIBController) Serve(done <-chan struct{})

func (*RIBController) SetFdb added in v0.4.0

func (r *RIBController) SetFdb(addr *fibcapi.L2Addr, ifindex int) error

func (*RIBController) Start

func (r *RIBController) Start(done <-chan struct{})

Jump to

Keyboard shortcuts

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