ifplugin

package
v2.0.0-beta+incompatible Latest Latest
Warning

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

Go to latest
Published: Feb 6, 2019 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
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

View Source
var DefaultPlugin = *NewPlugin()

DefaultPlugin is a default instance of IfPlugin.

View Source
var PeriodicPollingPeriod = 1 * time.Second

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

type Config struct {
	MTU              uint32   `json:"mtu"`
	StatusPublishers []string `json:"status-publishers"`
}

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

func NewPlugin(opts ...Option) *IfPlugin

NewPlugin creates a new Plugin with the provides Options

func (*IfPlugin) AfterInit

func (p *IfPlugin) AfterInit() error

AfterInit delegates the call to ifStateUpdater.

func (*IfPlugin) Close

func (p *IfPlugin) Close() error

Close stops all go routines.

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

func (p *IfPlugin) Init() error

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

type Option

type Option func(*IfPlugin)

Option is a function that can be used in NewPlugin to customize Plugin.

func UseDeps

func UseDeps(f func(*Deps)) Option

UseDeps returns Option that can inject custom dependencies.

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.

Jump to

Keyboard shortcuts

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