vanflow

package
v0.0.0-...-c095839 Latest Latest
Warning

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

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

Documentation

Overview

Package vanflow defines types for the message and record types specified in the VanFlow specification.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Decode

func Decode(msg *amqp.Message) (interface{}, error)

Decode a raw amqp message into one of BeaconMessage, FlushMessage, HeartbeatMessage or RecordMessage.

Types

type AppBiflowRecord

type AppBiflowRecord struct {
	BaseRecord
	Parent        *string `vflow:"2"`
	Protocol      *string `vflow:"16"`
	Latency       *uint64 `vflow:"24"`
	Method        *string `vflow:"27"`
	Result        *string `vflow:"28"`
	Octets        *uint64 `vflow:"23"`
	OctetsReverse *uint64 `vflow:"58"`
}

func (AppBiflowRecord) GetTypeMeta

func (r AppBiflowRecord) GetTypeMeta() TypeMeta

type BaseRecord

type BaseRecord struct {
	ID        string `vflow:"1,required"`
	StartTime *Time  `vflow:"3"`
	EndTime   *Time  `vflow:"4"`
}

func NewBase

func NewBase(id string, times ...time.Time) BaseRecord

func (BaseRecord) Identity

func (b BaseRecord) Identity() string

type BeaconMessage

type BeaconMessage struct {
	MessageProps
	Version    uint32
	SourceType string
	Address    string
	Direct     string
	Identity   string
}

func DecodeBeacon

func DecodeBeacon(msg *amqp.Message) BeaconMessage

func (BeaconMessage) Encode

func (m BeaconMessage) Encode() *amqp.Message

type CollectorRecord

type CollectorRecord struct {
	BaseRecord
}

type ConnectorRecord

type ConnectorRecord struct {
	BaseRecord
	Parent      *string `vflow:"2"`
	ProcessID   *string `vflow:"7"`
	DestHost    *string `vflow:"15"`
	Protocol    *string `vflow:"16"`
	DestPort    *string `vflow:"18"`
	Address     *string `vflow:"19"`
	Name        *string `vflow:"30"`
	FlowCountL4 *uint64 `vflow:"40"`
	FlowCountL7 *uint64 `vflow:"41"`
	FlowRateL4  *uint64 `vflow:"42"`
	FlowRateL7  *uint64 `vflow:"43"`
}

func (ConnectorRecord) GetTypeMeta

func (r ConnectorRecord) GetTypeMeta() TypeMeta

type ControllerRecord

type ControllerRecord struct {
	BaseRecord
	Parent       *string `vflow:"2"`
	ImageName    *string `vflow:"20"`
	ImageVersion *string `vflow:"21"`
	Hostname     *string `vflow:"22"`
	Name         *string `vflow:"30"`
	BuildVersion *string `vflow:"32"`
}

func (ControllerRecord) GetTypeMeta

func (r ControllerRecord) GetTypeMeta() TypeMeta

type EgressRecord

type EgressRecord struct {
	BaseRecord
}

type FlowRecord

type FlowRecord struct {
	BaseRecord
	Parent         *string `vflow:"2"`
	Counterflow    *string `vflow:"5"`
	SourceHost     *string `vflow:"14"`
	SourcePort     *string `vflow:"17"`
	Octets         *uint64 `vflow:"23"`
	Latency        *uint64 `vflow:"24"`
	Reason         *string `vflow:"29"`
	Trace          *string `vflow:"31"`
	OctetRate      *uint64 `vflow:"35"`
	OctetsOut      *uint64 `vflow:"36"`
	OctetsUnacked  *uint64 `vflow:"37"`
	WindowClosures *uint64 `vflow:"38"`
	WindowSize     *uint64 `vflow:"39"`
	Method         *string `vflow:"27"`
	Result         *string `vflow:"28"`
}

func (FlowRecord) GetTypeMeta

func (r FlowRecord) GetTypeMeta() TypeMeta

type FlushMessage

type FlushMessage struct {
	MessageProps
}

func DecodeFlush

func DecodeFlush(msg *amqp.Message) FlushMessage

func (FlushMessage) Encode

func (m FlushMessage) Encode() *amqp.Message

type HeartbeatMessage

type HeartbeatMessage struct {
	MessageProps
	Identity string
	Version  uint32
	Now      uint64
}

func DecodeHeartbeat

func DecodeHeartbeat(msg *amqp.Message) HeartbeatMessage

func (HeartbeatMessage) Encode

func (m HeartbeatMessage) Encode() *amqp.Message

type HostRecord

type HostRecord struct {
	BaseRecord
	Provider *string `vflow:"10"`
	Name     *string `vflow:"30"`
}

func (HostRecord) GetTypeMeta

func (r HostRecord) GetTypeMeta() TypeMeta

type ImageRecord

type ImageRecord struct {
	BaseRecord
}

type IngressRecord

type IngressRecord struct {
	BaseRecord
}

type LinkRecord

type LinkRecord struct {
	BaseRecord
	Parent   *string `vflow:"2"`
	Name     *string `vflow:"30"`
	LinkCost *uint64 `vflow:"33"`
	// Mode      *string `vflow:"13"`
	// Direction *string `vflow:"34"`
	Peer   *string `vflow:"6"`
	Role   *string `vflow:"54"`
	Status *string `vflow:"53"`

	DestHost         *string `vflow:"15"`
	Protocol         *string `vflow:"16"`
	DestPort         *string `vflow:"18"`
	Octets           *uint64 `vflow:"23"`
	OctetRate        *uint64 `vflow:"35"`
	OctetsReverse    *uint64 `vflow:"58"`
	OctetRateReverse *uint64 `vflow:"59"`

	Result    *string `vflow:"28"`
	Reason    *string `vflow:"29"`
	LastUp    *uint64 `vflow:"55"`
	LastDown  *uint64 `vflow:"56"`
	DownCount *uint64 `vflow:"57"`
}

func (LinkRecord) GetTypeMeta

func (r LinkRecord) GetTypeMeta() TypeMeta

type ListenerRecord

type ListenerRecord struct {
	BaseRecord
	Parent      *string `vflow:"2"`
	Name        *string `vflow:"30"`
	DestHost    *string `vflow:"15"`
	Protocol    *string `vflow:"16"`
	DestPort    *string `vflow:"18"`
	Address     *string `vflow:"19"`
	FlowCountL4 *uint64 `vflow:"40"`
	FlowCountL7 *uint64 `vflow:"41"`
	FlowRateL4  *uint64 `vflow:"42"`
	FlowRateL7  *uint64 `vflow:"43"`
}

func (ListenerRecord) GetTypeMeta

func (r ListenerRecord) GetTypeMeta() TypeMeta

type LogRecord

type LogRecord struct {
	BaseRecord
	LogSeverity *uint64 `vflow:"48"`
	LogText     *string `vflow:"49"`
	SourceFile  *string `vflow:"50"`
	SourceLine  *uint64 `vflow:"51"`
}

func (LogRecord) GetTypeMeta

func (r LogRecord) GetTypeMeta() TypeMeta

type MessageProps

type MessageProps struct {
	To      string
	Subject string
	ReplyTo string
}

type ProcessGroupRecord

type ProcessGroupRecord struct {
	BaseRecord
}

type ProcessRecord

type ProcessRecord struct {
	BaseRecord
	Parent       *string `vflow:"2"` //unspeced
	Mode         *string `vflow:"13"`
	SourceHost   *string `vflow:"14"`
	ImageName    *string `vflow:"20"`
	ImageVersion *string `vflow:"21"`
	Hostname     *string `vflow:"22"`
	Name         *string `vflow:"30"`
	Group        *string `vflow:"46"`
}

func (ProcessRecord) GetTypeMeta

func (r ProcessRecord) GetTypeMeta() TypeMeta

type Record

type Record interface {
	Identity() string
	GetTypeMeta() TypeMeta
}

type RecordMessage

type RecordMessage struct {
	MessageProps
	Records []Record
}

func DecodeRecord

func DecodeRecord(msg *amqp.Message) (record RecordMessage, err error)

func (RecordMessage) Encode

func (m RecordMessage) Encode() (*amqp.Message, error)

type RouterAccessRecord

type RouterAccessRecord struct {
	BaseRecord
	Parent    *string `vflow:"2"`
	Name      *string `vflow:"30"`
	LinkCount *uint64 `vflow:"52"`
	Role      *string `vflow:"54"`
}

func (RouterAccessRecord) GetTypeMeta

func (r RouterAccessRecord) GetTypeMeta() TypeMeta

type RouterRecord

type RouterRecord struct {
	BaseRecord
	Parent       *string `vflow:"2"`
	Namespace    *string `vflow:"12"`
	Mode         *string `vflow:"13"`
	ImageName    *string `vflow:"20"`
	ImageVersion *string `vflow:"21"`
	Hostname     *string `vflow:"22"`
	Name         *string `vflow:"30"`
	BuildVersion *string `vflow:"32"`
}

func (RouterRecord) GetTypeMeta

func (r RouterRecord) GetTypeMeta() TypeMeta

type SiteRecord

type SiteRecord struct {
	BaseRecord
	Location  *string `vflow:"9"`
	Provider  *string `vflow:"10"`
	Platform  *string `vflow:"11"`
	Namespace *string `vflow:"12"`
	Name      *string `vflow:"30"` //unspeced
	Version   *string `vflow:"32"`
}

func (SiteRecord) GetTypeMeta

func (r SiteRecord) GetTypeMeta() TypeMeta

type Time

type Time struct {
	time.Time
}

func (*Time) DecodeRecordAttribute

func (t *Time) DecodeRecordAttribute(attr any) error

func (Time) EncodeRecordAttribute

func (t Time) EncodeRecordAttribute() (any, error)

type TransportBiflowRecord

type TransportBiflowRecord struct {
	BaseRecord
	Parent      *string `vflow:"2"`
	ConnectorID *string `vflow:"60"`
	Trace       *string `vflow:"31"`

	SourceHost *string `vflow:"14"`
	SourcePort *string `vflow:"17"`
	Octets     *uint64 `vflow:"23"`
	Latency    *uint64 `vflow:"24"`

	OctetsReverse  *uint64 `vflow:"58"`
	LatencyReverse *uint64 `vflow:"61"`
	ProxyHost      *string `vflow:"62"`
	ProxyPort      *string `vflow:"63"`

	ErrorListener  *string `vflow:"64"`
	ErrorConnector *string `vflow:"65"`
}

func (TransportBiflowRecord) GetTypeMeta

func (r TransportBiflowRecord) GetTypeMeta() TypeMeta

type TypeMeta

type TypeMeta struct {
	APIVersion string
	Type       string
}

func (TypeMeta) String

func (m TypeMeta) String() string

Directories

Path Synopsis
encoding exposes functionality to convert between an arbitray maps and native Go structs in service of the Vanflow protocol.
encoding exposes functionality to convert between an arbitray maps and native Go structs in service of the Vanflow protocol.
The eventsource package contains mechanisims for discovering and interracting with vanflow event sources.
The eventsource package contains mechanisims for discovering and interracting with vanflow event sources.
session implements amqp connection and session management though the concept of a Container, inspired by the Conatiner interface exposed by the qpid proton amqp libraries.
session implements amqp connection and session management though the concept of a Container, inspired by the Conatiner interface exposed by the qpid proton amqp libraries.

Jump to

Keyboard shortcuts

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