Documentation
¶
Index ¶
- Constants
- Variables
- type API
- type Config
- type Deps
- type IfPlugin
- func (p *IfPlugin) AfterInit() error
- func (p *IfPlugin) Close() error
- func (p *IfPlugin) GetDHCPIndex() idxmap.NamedMapping
- func (p *IfPlugin) GetInterfaceIndex() ifaceidx.IfaceMetadataIndex
- func (p *IfPlugin) Init() error
- func (p *IfPlugin) SetNotifyService(notify func(notification *vpp.Notification))
- type InterfaceStateUpdater
- type Option
Constants ¶
const ( Drop statType = ifPrefix + "drops" Punt = ifPrefix + "punt" IPv4 = ifPrefix + "ip4" IPv6 = ifPrefix + "ip6" RxNoBuf = ifPrefix + "rx-no-buf" RxMiss = ifPrefix + "rx-miss" RxError = ifPrefix + "rx-error" TxError = ifPrefix + "tx-error" Rx = ifPrefix + "rx" Tx = ifPrefix + "tx" )
interface statistics matching patterns
Variables ¶
var DefaultPlugin = *NewPlugin()
DefaultPlugin is a default instance of IfPlugin.
PeriodicPollingPeriod between statistics reads TODO should be configurable
Functions ¶
This section is empty.
Types ¶
type API ¶
type API interface {
// GetInterfaceIndex gives read-only access to map with metadata of all configured
// VPP interfaces.
GetInterfaceIndex() ifaceidx.IfaceMetadataIndex
// GetDHCPIndex gives read-only access to (untyped) map with DHCP leases.
// Cast metadata to "github.com/ligato/vpp-agent/api/models/vpp/interfaces".DHCPLease
GetDHCPIndex() idxmap.NamedMapping
// SetNotifyService allows to pass function for updating interface notifications.
SetNotifyService(notify func(notification *vpp.Notification))
}
API defines methods exposed by VPP-IfPlugin.
type Config ¶
Config holds the vpp-plugin configuration.
type Deps ¶
type Deps struct {
infra.PluginDeps
KVScheduler kvs.KVScheduler
GoVppmux govppmux.StatsAPI
/* LinuxIfPlugin and NsPlugin deps are optional,
but they are required if AFPacket or TAP+TAP_TO_VPP interfaces are used. */
LinuxIfPlugin descriptor.LinuxPluginAPI
NsPlugin nsplugin.API
// state publishing
StatusCheck statuscheck.PluginStatusWriter
PublishErrors datasync.KeyProtoValWriter // TODO: to be used with a generic plugin for publishing errors (not just interfaces and BDs)
Watcher datasync.KeyValProtoWatcher /* for resync of interface state data (PublishStatistics) */
NotifyStates datasync.KeyProtoValWriter /* e.g. Kafka (up/down events only)*/
PublishStatistics datasync.KeyProtoValWriter /* e.g. ETCD (with resync) */
DataSyncs map[string]datasync.KeyProtoValWriter /* available DBs for PublishStatistics */
PushNotification func(notification *vpp.Notification)
}
Deps lists dependencies of the interface plugin.
type IfPlugin ¶
type IfPlugin struct {
Deps
// contains filtered or unexported fields
}
IfPlugin configures VPP interfaces using GoVPP.
func NewPlugin ¶
NewPlugin creates a new Plugin with the provides Options
func (*IfPlugin) AfterInit ¶
AfterInit delegates the call to ifStateUpdater.
func (*IfPlugin) GetDHCPIndex ¶
func (p *IfPlugin) GetDHCPIndex() idxmap.NamedMapping
GetDHCPIndex gives read-only access to (untyped) map with DHCP leases. Cast metadata to "github.com/ligato/vpp-agent/api/models/vpp/interfaces".DHCPLease
func (*IfPlugin) GetInterfaceIndex ¶
func (p *IfPlugin) GetInterfaceIndex() ifaceidx.IfaceMetadataIndex
GetInterfaceIndex gives read-only access to map with metadata of all configured VPP interfaces.
func (*IfPlugin) Init ¶
Init loads configuration file and registers interface-related descriptors.
func (*IfPlugin) SetNotifyService ¶
func (p *IfPlugin) SetNotifyService(notify func(notification *vpp.Notification))
SetNotifyService sets notification callback for processing VPP notifications.
type InterfaceStateUpdater ¶
type InterfaceStateUpdater struct {
// contains filtered or unexported fields
}
InterfaceStateUpdater holds state data of all VPP interfaces.
func (*InterfaceStateUpdater) AfterInit ¶
func (c *InterfaceStateUpdater) AfterInit() error
AfterInit subscribes for watching VPP notifications on previously initialized channel
func (*InterfaceStateUpdater) Close ¶
func (c *InterfaceStateUpdater) Close() error
Close unsubscribes from interface state notifications from VPP & GOVPP channel
func (*InterfaceStateUpdater) Init ¶
func (c *InterfaceStateUpdater) Init(ctx context.Context, logger logging.PluginLogger, kvScheduler kvs.KVScheduler, goVppMux govppmux.StatsAPI, swIfIndexes ifaceidx.IfaceMetadataIndex, publishIfState func(notification *intf.InterfaceNotification)) (err error)
Init members (channels, maps...) and start go routines
Source Files
¶
- ifplugin.go
- ifplugin_api.go
- interface_state.go
- options.go
- publish_state.go
Directories
¶
| Path | Synopsis |
|---|---|
|
Package ifaceidx implements name-to-index mapping registry and cache for VPP interfaces.
|
Package ifaceidx implements name-to-index mapping registry and cache for VPP interfaces. |
|
Package vppcalls contains wrappers over VPP binary APIs for all supported interface types and for dumping all interfaces configured in VPP.
|
Package vppcalls contains wrappers over VPP binary APIs for all supported interface types and for dumping all interfaces configured in VPP. |