Documentation ¶
Overview ¶
Package govppmux implements the GoVPPMux plugin that allows multiple plugins to share a single connection to VPP.
Index ¶
- Variables
- func NewStatsAdapter(socketName string) adapter.StatsAPI
- func NewVppAdapter(addr string, useShm bool) adapter.VppAPI
- type API
- type Config
- type Deps
- type Option
- type Plugin
- func (p *Plugin) AfterInit() error
- func (p *Plugin) CheckCompatiblity(msgs ...govppapi.Message) error
- func (p *Plugin) Close() error
- func (p *Plugin) DumpStats(prefixes ...string) ([]adapter.StatEntry, error)
- func (p *Plugin) GetBufferStats(stats *govppapi.BufferStats) error
- func (p *Plugin) GetErrorStats(stats *govppapi.ErrorStats) error
- func (p *Plugin) GetInterfaceStats(stats *govppapi.InterfaceStats) error
- func (p *Plugin) GetNodeStats(stats *govppapi.NodeStats) error
- func (p *Plugin) GetSystemStats(stats *govppapi.SystemStats) error
- func (p *Plugin) Init() (err error)
- func (p *Plugin) IsPluginLoaded(plugin string) bool
- func (p *Plugin) ListStats(prefixes ...string) ([]string, error)
- func (p *Plugin) NewAPIChannel() (govppapi.Channel, error)
- func (p *Plugin) NewAPIChannelBuffered(reqChanBufSize, replyChanBufSize int) (govppapi.Channel, error)
- func (p *Plugin) Stats() govppapi.StatsProvider
- func (p *Plugin) VPPInfo() VPPInfo
- func (p *Plugin) Version() vpp.Version
- type Stats
- type VPPInfo
Constants ¶
This section is empty.
Variables ¶
var DefaultPlugin = *NewPlugin()
DefaultPlugin is default instance of Plugin
Functions ¶
func NewStatsAdapter ¶
NewStatsAdapter returns VPP stats API adapter, implemented as pure Go client.
Types ¶
type API ¶
type API interface { // VPPInfo returns VPP information which is retrieved immediatelly after connecting to VPP. VPPInfo() VPPInfo vpp.Client }
API for other plugins to get connectivity to VPP.
type Config ¶
type Config struct { // ReconnectResync enables resync after reconnect to VPP. ReconnectResync bool `json:"resync-after-reconnect"` // ReplyTimeout defines timeout period for replies in channels from VPP. ReplyTimeout time.Duration `json:"reply-timeout"` // Connect to VPP for configuration requests via the shared memory instead of through the socket. ConnectViaShm bool `json:"connect-via-shm"` // ShmPrefix defines prefix prepended to the name used for shared memory (SHM) segments. // If not set, shared memory segments are created directly in the SHM directory /dev/shm. ShmPrefix string `json:"shm-prefix"` // BinAPISocketPath defines path to the binapi socket file. BinAPISocketPath string `json:"binapi-socket-path"` // StatsSocketPath defines path to the stats socket file. StatsSocketPath string `json:"stats-socket-path"` // How many times can be request resent in case vpp is suddenly disconnected. RetryRequestCount int `json:"retry-request-count"` // Time between request resend attempts. Default is 500ms. RetryRequestTimeout time.Duration `json:"retry-request-timeout"` // How many times can be connection request resent in case the vpp is not reachable. RetryConnectCount int `json:"retry-connect-count"` // Time between connection request resend attempts. Default is 1s. RetryConnectTimeout time.Duration `json:"retry-connect-timeout"` // Enable VPP proxy. ProxyEnabled bool `json:"proxy-enabled"` // Below are options used for VPP connection health checking. HealthCheckProbeInterval time.Duration `json:"health-check-probe-interval"` HealthCheckReplyTimeout time.Duration `json:"health-check-reply-timeout"` HealthCheckThreshold int `json:"health-check-threshold"` // DEPRECATED: TraceEnabled is obsolete and used only in older versions. TraceEnabled bool `json:"trace-enabled"` }
Config defines configurable parameters for govppmux plugin.
type Deps ¶
type Deps struct { infra.PluginDeps HTTPHandlers rest.HTTPHandlers StatusCheck statuscheck.PluginStatusWriter Resync *resync.Plugin }
Deps defines dependencies for the govppmux plugin.
type Option ¶
type Option func(*Plugin)
Option is a function that acts on a Plugin to inject Dependencies or configuration
type Plugin ¶
type Plugin struct { Deps // contains filtered or unexported fields }
Plugin is the govppmux plugin implementation.
func NewPlugin ¶
NewPlugin creates a new Plugin with the provides Options
func (*Plugin) CheckCompatiblity ¶
func (*Plugin) Close ¶
Close cleans up the resources allocated by the govppmux plugin.
func (*Plugin) DumpStats ¶
DumpStats returns all stats with name, type and value
func (*Plugin) GetBufferStats ¶
func (p *Plugin) GetBufferStats(stats *govppapi.BufferStats) error
GetBufferStats retrieves VPP error counters
func (*Plugin) GetErrorStats ¶
func (p *Plugin) GetErrorStats(stats *govppapi.ErrorStats) error
GetErrorStats retrieves VPP error counters
func (*Plugin) GetInterfaceStats ¶
func (p *Plugin) GetInterfaceStats(stats *govppapi.InterfaceStats) error
GetInterfaceStats retrieves all counters related to the VPP interfaces
func (*Plugin) GetNodeStats ¶
GetNodeStats retrieves a list of Node VPP counters (vectors, clocks, ...)
func (*Plugin) GetSystemStats ¶
func (p *Plugin) GetSystemStats(stats *govppapi.SystemStats) error
GetSystemStats retrieves system statistics of the connected VPP instance like Vector rate, Input rate, etc.
func (*Plugin) Init ¶
Init is the entry point called by Agent Core. A single binary-API connection to VPP is established.
func (*Plugin) IsPluginLoaded ¶
IsPluginLoaded returns true if plugin is loaded.
func (*Plugin) ListStats ¶
ListStats returns all stats names
func (*Plugin) NewAPIChannel ¶
NewAPIChannel returns a new API channel for communication with VPP via govpp core. It uses default buffer sizes for the request and reply Go channels.
Example of binary API call from some plugin using GOVPP:
ch, _ := govpp_mux.NewAPIChannel() ch.SendRequest(req).ReceiveReply
func (*Plugin) NewAPIChannelBuffered ¶
func (p *Plugin) NewAPIChannelBuffered(reqChanBufSize, replyChanBufSize int) (govppapi.Channel, error)
NewAPIChannelBuffered returns a new API channel for communication with VPP via govpp core. It allows to specify custom buffer sizes for the request and reply Go channels.
Example of binary API call from some plugin using GOVPP:
ch, _ := govpp_mux.NewAPIChannelBuffered(100, 100) ch.SendRequest(req).ReceiveReply
func (*Plugin) Stats ¶
func (p *Plugin) Stats() govppapi.StatsProvider
func (*Plugin) VPPInfo ¶
VPPInfo returns information about VPP session.
type Stats ¶
type Stats struct { govppmux.Metrics Errors metrics.Calls AllMessages metrics.CallStats Messages metrics.Calls Replies metrics.Calls }
Stats defines various statistics for govppmux plugin.
type VPPInfo ¶
type VPPInfo struct { Connected bool vppcalls.VersionInfo vppcalls.SessionInfo Plugins []vppcalls.PluginInfo }
VPPInfo defines retrieved information about the connected VPP instance.