decoder

package
v0.0.0-...-7fb98da Latest Latest
Warning

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

Go to latest
Published: Feb 19, 2026 License: BSD-2-Clause Imports: 5 Imported by: 0

Documentation

Overview

Package decoder decodes sflow packets

Index

Constants

View Source
const (
	BytesPerLength  = 1 // length field is already in bytes (XDR opaque/strings)
	BytesPerUint32  = 4 // uint32 array elements
	MinBytesPerItem = 8 // structured items (samples, records, adapters, etc)
)

Minimum byte sizes for validation (per sFlow v5 spec and XDR RFC 4506)

View Source
const (
	// MaxDatagramSize matches sflowtool's SA_MAX_SFLOW_PKT_SIZ (exceeds UDP max payload of 65,507 bytes)
	MaxDatagramSize = 65536
)

Variables

View Source
var (
	ErrInvalidCounterIfRecordSize         = errors.New("counter if record size is invalid")
	ErrInvalidEthernetCountersRecordSize  = errors.New("counter ethernet record size is invalid")
	ErrInvalidTokenringCountersRecordSize = errors.New("counter tokenring record size is invalid")
	ErrInvalidVgCountersRecordSize        = errors.New("counter vg record size is invalid")
	ErrInvalidVlanCountersRecordSize      = errors.New("counter vlan record size is invalid")
	ErrInvalidIEEE80211CountersRecordSize = errors.New("ieee80211 counters record size is invalid")
	ErrInvalidLAGPortStatsRecordSize      = errors.New("lag port stats record size is invalid")
	ErrInvalidProcessorCountersRecordSize = errors.New("counter processor record size is invalid")
	ErrInvalidQueueLengthRecordSize       = errors.New("queue length record size is invalid")
	ErrInvalidOpenFlowPortRecordSize      = errors.New("openflow port record size is invalid")
	ErrInvalidOpenFlowPortNameRecordSize  = errors.New("openflow port name record size is invalid")
	ErrOpenFlowPortNameTooLong            = errors.New("openflow port name exceeds maximum length")
	ErrInvalidHostDescrRecordSize         = errors.New("host descr record size is invalid")
	ErrHostNameTooLong                    = errors.New("hostname exceeds maximum length")
	ErrOSReleaseTooLong                   = errors.New("OS release exceeds maximum length")
	ErrInvalidHostAdaptersRecordSize      = errors.New("host adapters record size is invalid")
	ErrInvalidHostParentRecordSize        = errors.New("host parent record size is invalid")
	ErrInvalidHostCPURecordSize           = errors.New("host cpu record size is invalid")
	ErrInvalidHostMemoryRecordSize        = errors.New("host memory record size is invalid")
	ErrInvalidHostDiskIORecordSize        = errors.New("host disk io record size is invalid")
	ErrInvalidHostNetIORecordSize         = errors.New("host net io record size is invalid")
	ErrInvalidVirtNodeRecordSize          = errors.New("virt node record size is invalid")
	ErrInvalidVirtCPURecordSize           = errors.New("virt cpu record size is invalid")
	ErrInvalidVirtMemoryRecordSize        = errors.New("virt memory record size is invalid")
	ErrInvalidVirtDiskIORecordSize        = errors.New("virt disk io record size is invalid")
	ErrInvalidVirtNetIORecordSize         = errors.New("virt net io record size is invalid")
	ErrInvalidJVMMachineNameRecordSize    = errors.New("JVM machine name record size is invalid")
	ErrJVMVMNameTooLong                   = errors.New("JVM vm name exceeds maximum length")
	ErrJVMVMVendorTooLong                 = errors.New("JVM vm vendor exceeds maximum length")
	ErrJVMVMVersionTooLong                = errors.New("JVM vm version exceeds maximum length")
	ErrInvalidJVMStatisticsRecordSize     = errors.New("JVM statistics record size is invalid")
	ErrInvalidHTTPCountersRecordSize      = errors.New("http counters record size is invalid")
	ErrInvalidAppOperationsRecordSize     = errors.New("app operations record size is invalid")
	ErrApplicationTooLong                 = errors.New("application name exceeds maximum length")
	ErrInvalidAppResourcesRecordSize      = errors.New("app resources record size is invalid")
	ErrInvalidMemcacheCountersRecordSize  = errors.New("memcache counters record size is invalid")
	ErrInvalidAppWorkersRecordSize        = errors.New("app workers record size is invalid")
	ErrInvalidEnergyRecordSize            = errors.New("energy record size is invalid")
	ErrInvalidTemperatureRecordSize       = errors.New("temperature record size is invalid")
	ErrInvalidHumidityRecordSize          = errors.New("humidity record size is invalid")
	ErrInvalidFansRecordSize              = errors.New("fans record size is invalid")
	ErrInvalidMIB2IPGroupRecordSize       = errors.New("mib2 ip group record size is invalid")
	ErrInvalidMIB2ICMPGroupRecordSize     = errors.New("mib2 icmp group record size is invalid")
	ErrInvalidMIB2TCPGroupRecordSize      = errors.New("mib2 tcp group record size is invalid")
	ErrInvalidMIB2UDPGroupRecordSize      = errors.New("mib2 udp group record size is invalid")
	ErrInvalidOVSDPStatsRecordSize        = errors.New("ovs dp stats record size is invalid")
)
View Source
var (
	ErrUnknownSflowVersion = errors.New("unknown sflow version")
	ErrUnknownIPVersion    = errors.New("unknown ip version")
)
View Source
var (
	ErrInvalidExtendedTCPInfoRecordSize     = errors.New("extended tcp info record size is invalid")
	ErrInvalidFlowSampledHeaderRecordSize   = errors.New("flow sampled header record size is invalid")
	ErrInvalidSampledEthernetRecordSize     = errors.New("sampled ethernet record size is invalid")
	ErrInvalidSampledIPv4RecordSize         = errors.New("sampled ipv4 record size is invalid")
	ErrInvalidSampledIPv6RecordSize         = errors.New("sampled ipv6 record size is invalid")
	ErrInvalidExtendedSwitchRecordSize      = errors.New("extended switch record size is invalid")
	ErrInvalidExtendedRouterRecordSize      = errors.New("extended router record size is invalid")
	ErrInvalidExtendedGatewayRecordSize     = errors.New("extended gateway record size is invalid")
	ErrInvalidExtendedUserRecordSize        = errors.New("extended user record size is invalid")
	ErrInvalidExtendedNATRecordSize         = errors.New("extended nat record size is invalid")
	ErrInvalidExtendedSocketIPv4RecordSize  = errors.New("extended socket ipv4 record size is invalid")
	ErrInvalidExtendedSocketIPv6RecordSize  = errors.New("extended socket ipv6 record size is invalid")
	ErrInvalidExtendedMPLSRecordSize        = errors.New("extended mpls record size is invalid")
	ErrInvalidExtendedMPLSTunnelRecordSize  = errors.New("extended mpls tunnel record size is invalid")
	ErrInvalidExtendedMPLSVCRecordSize      = errors.New("extended mpls vc record size is invalid")
	ErrInvalidExtendedMPLSFTNRecordSize     = errors.New("extended mpls ftn record size is invalid")
	ErrInvalidExtendedMPLSLDPFECRecordSize  = errors.New("extended mpls ldp fec record size is invalid")
	ErrInvalidExtendedVLANTunnelRecordSize  = errors.New("extended vlan tunnel record size is invalid")
	ErrInvalidExtendedEgressQueueRecordSize = errors.New("extended egress queue record size is invalid")
	ErrInvalidExtendedACLRecordSize         = errors.New("extended acl record size is invalid")
	ErrInvalidExtendedFunctionRecordSize    = errors.New("extended function record size is invalid")
	ErrInvalidExtendedLinuxReasonRecordSize = errors.New("extended linux reason record size is invalid")
)
View Source
var (
	ErrSampleMalformedOrIncomplete = errors.New("sample is malformed or incomplete")
	ErrRecordMalformedOrIncomplete = errors.New("record is malformed or incomplete")
)
View Source
var (
	ErrUnknownAddressIPVersion = errors.New("unknown address ip version")
	ErrSizeTooLarge            = errors.New("decoded size is larger than remaining data")
)

Functions

This section is empty.

Types

type DatagramDecoder

type DatagramDecoder struct {
	// contains filtered or unexported fields
}

func NewDatagramDecoder

func NewDatagramDecoder(r io.Reader) DatagramDecoder

func (*DatagramDecoder) Decode

func (dd *DatagramDecoder) Decode() (*datagram.Datagram, error)

Decode decodes a single sflow datagram from the underlying reader.

Directories

Path Synopsis
Package tests contains auto-generated decoder tests for sFlow v5 datagrams.
Package tests contains auto-generated decoder tests for sFlow v5 datagrams.

Jump to

Keyboard shortcuts

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