ifplugin

package
v2.3.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Oct 7, 2019 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// PeriodicPollingPeriod between statistics reads
	// TODO  should be configurable
	PeriodicPollingPeriod = time.Second * 5

	// StateUpdateDelay defines delay before dumping states
	StateUpdateDelay = time.Second * 3
)
View Source
var DefaultPlugin = *NewPlugin()

DefaultPlugin is a default instance of IfPlugin.

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 defines configuration for VPP ifplugin.

func DefaultConfig

func DefaultConfig() Config

DefaultConfig returns Config with default values.

type Deps

type Deps struct {
	infra.PluginDeps
	KVScheduler kvs.KVScheduler
	GoVppmux    govppmux.StatsAPI
	AddrAlloc   netalloc.AddressAllocator

	/*	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() (err 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(*intf.InterfaceNotification), readCounters bool,
) (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.
vpp1904
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.
vpp1908
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.
vpp2001
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