Documentation
¶
Index ¶
- Variables
- func ConvertNetFlowDataSet(flowMessage *ProtoProducerMessage, version uint16, baseTime uint32, ...) error
- func ConvertNetFlowLegacyRecord(flowMessage *ProtoProducerMessage, baseTime uint64, uptime uint32, ...)
- func CreateProtoProducer(cfg *ProducerConfig, samplingRateSystem func() SamplingRateSystem) (producer.ProducerInterface, error)
- func DateTimeNanoRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
- func DateTimeRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
- func DecodeNumber(b []byte, out interface{}) error
- func DecodeNumberLE(b []byte, out interface{}) error
- func DecodeUNumber(b []byte, out interface{}) error
- func DecodeUNumberLE(b []byte, out interface{}) error
- func EtypeRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
- func ExtractTag(name, original string, tag reflect.StructTag) string
- func GetBytes(d []byte, offset int, length int) []byte
- func GetSFlowFlowSamples(packet *sflow.Packet) []interface{}
- func ICMPRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
- func IPRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
- func IcmpCodeType(proto, icmpCode, icmpType uint32) string
- func Is8021Q(etherType []byte) bool
- func IsARP(etherType []byte) bool
- func IsIPv4(etherType []byte) bool
- func IsIPv6(etherType []byte) bool
- func IsInt(k reflect.Kind) bool
- func IsMPLS(etherType []byte) bool
- func IsUInt(k reflect.Kind) bool
- func MacRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
- func MapCustom(flowMessage *ProtoProducerMessage, v []byte, cfg MapConfigBase) error
- func MapCustomNetFlow(flowMessage *ProtoProducerMessage, df netflow.DataField, mapper *NetFlowMapper) error
- func NetFlowLookFor(dataFields []netflow.DataField, typeId uint16) (bool, interface{})
- func NetFlowPopulate(dataFields []netflow.DataField, typeId uint16, addr interface{}) (bool, error)
- func NetworkRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
- func NilRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
- func Parse8021Q(offset int, flowMessage *ProtoProducerMessage, data []byte) (etherType []byte, newOffset int, err error)
- func ParseEthernet(offset int, flowMessage *ProtoProducerMessage, data []byte) (etherType []byte, newOffset int, err error)
- func ParseEthernetHeader(flowMessage *ProtoProducerMessage, data []byte, config *SFlowMapper) (err error)
- func ParseICMP(offset int, flowMessage *ProtoProducerMessage, data []byte) (newOffset int, err error)
- func ParseICMPv6(offset int, flowMessage *ProtoProducerMessage, data []byte) (newOffset int, err error)
- func ParseIPv4(offset int, flowMessage *ProtoProducerMessage, data []byte) (nextHeader byte, newOffset int, err error)
- func ParseIPv6(offset int, flowMessage *ProtoProducerMessage, data []byte) (nextHeader byte, newOffset int, err error)
- func ParseIPv6Headers(nextHeader byte, offset int, flowMessage *ProtoProducerMessage, data []byte) (newNextHeader byte, newOffset int, err error)
- func ParseMPLS(offset int, flowMessage *ProtoProducerMessage, data []byte) (etherType []byte, newOffset int, err error)
- func ParseSampledHeader(flowMessage *ProtoProducerMessage, sampledHeader *sflow.SampledHeader) error
- func ParseSampledHeaderConfig(flowMessage *ProtoProducerMessage, sampledHeader *sflow.SampledHeader, ...) error
- func ParseTCP(offset int, flowMessage *ProtoProducerMessage, data []byte) (newOffset int, err error)
- func ParseUDP(offset int, flowMessage *ProtoProducerMessage, data []byte) (newOffset int, err error)
- func ProcessMessageIPFIXConfig(packet *netflow.IPFIXPacket, samplingRateSys SamplingRateSystem, ...) (flowMessageSet []producer.ProducerMessage, err error)
- func ProcessMessageNetFlowLegacy(packet *netflowlegacy.PacketNetFlowV5) ([]producer.ProducerMessage, error)
- func ProcessMessageNetFlowV9Config(packet *netflow.NFv9Packet, samplingRateSys SamplingRateSystem, ...) (flowMessageSet []producer.ProducerMessage, err error)
- func ProcessMessageSFlowConfig(packet *sflow.Packet, config *producerConfigMapped) (flowMessageSet []producer.ProducerMessage, err error)
- func ProtoRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
- func RenderIP(addr []byte) string
- func SearchNetFlowDataSets(version uint16, baseTime uint32, uptime uint32, ...) (flowMessageSet []producer.ProducerMessage, err error)
- func SearchNetFlowDataSetsRecords(version uint16, baseTime uint32, uptime uint32, ...) (flowMessageSet []producer.ProducerMessage, err error)
- func SearchNetFlowLegacyRecords(baseTime uint64, uptime uint32, dataRecords []netflowlegacy.RecordsNetFlowV5) (flowMessageSet []producer.ProducerMessage)
- func SearchNetFlowOptionDataSets(dataFlowSet []netflow.OptionsDataFlowSet) (samplingRate uint32, found bool, err error)
- func SearchSFlowSampleConfig(flowMessage *ProtoProducerMessage, flowSample interface{}, config *SFlowMapper) error
- func SearchSFlowSamplesConfig(samples []interface{}, config *SFlowMapper) (flowMessageSet []producer.ProducerMessage, err error)
- func SplitIPFIXSets(packetIPFIX netflow.IPFIXPacket) ([]netflow.DataFlowSet, []netflow.TemplateFlowSet, ...)
- func SplitNetFlowSets(packetNFv9 netflow.NFv9Packet) ([]netflow.DataFlowSet, []netflow.TemplateFlowSet, ...)
- func StringRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
- func WriteDecoded(o int64, out interface{}) error
- func WriteUDecoded(o uint64, out interface{}) error
- type DataMap
- type DataMapLayer
- type EndianType
- type FormatterConfig
- type FormatterConfigMapper
- type IPFIXProducerConfig
- type MapConfigBase
- type NetFlowMapField
- type NetFlowMapper
- type NetFlowV9ProducerConfig
- type ProducerConfig
- type ProtoProducer
- type ProtoProducerMessage
- func (m *ProtoProducerMessage) FormatMessageReflectCustom(ext, quotes, sep, sign string, null bool) string
- func (m *ProtoProducerMessage) FormatMessageReflectJSON(ext string) string
- func (m *ProtoProducerMessage) FormatMessageReflectText(ext string) string
- func (m *ProtoProducerMessage) Key() []byte
- func (m *ProtoProducerMessage) MarshalBinary() ([]byte, error)
- func (m *ProtoProducerMessage) MarshalJSON() ([]byte, error)
- func (m *ProtoProducerMessage) MarshalText() ([]byte, error)
- type ProtoType
- type ProtobufFormatterConfig
- type RenderFunc
- type RendererID
- type SFlowMapField
- type SFlowMapper
- type SFlowProducerConfig
- type SamplingRateSystem
- type SingleSamplingRateSystem
Constants ¶
This section is empty.
Variables ¶
View Source
var ( BigEndian EndianType = "big" LittleEndian EndianType = "little" ProtoString ProtoType = "string" ProtoVarint ProtoType = "varint" ProtoTypeMap = map[string]ProtoType{ string(ProtoString): ProtoString, string(ProtoVarint): ProtoVarint, "bytes": ProtoString, } )
Functions ¶
func ConvertNetFlowDataSet ¶
func ConvertNetFlowDataSet(flowMessage *ProtoProducerMessage, version uint16, baseTime uint32, uptime uint32, record []netflow.DataField, mapperNetFlow *NetFlowMapper, mapperSFlow *SFlowMapper) error
func ConvertNetFlowLegacyRecord ¶
func ConvertNetFlowLegacyRecord(flowMessage *ProtoProducerMessage, baseTime uint64, uptime uint32, record netflowlegacy.RecordsNetFlowV5)
func CreateProtoProducer ¶
func CreateProtoProducer(cfg *ProducerConfig, samplingRateSystem func() SamplingRateSystem) (producer.ProducerInterface, error)
func DateTimeNanoRenderer ¶ added in v2.1.0
func DateTimeNanoRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
func DateTimeRenderer ¶ added in v2.1.0
func DateTimeRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
func DecodeNumber ¶
func DecodeNumberLE ¶
func DecodeUNumber ¶
func DecodeUNumberLE ¶
func EtypeRenderer ¶
func EtypeRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
func GetSFlowFlowSamples ¶
func ICMPRenderer ¶
func ICMPRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
func IPRenderer ¶
func IPRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
func IcmpCodeType ¶
func MacRenderer ¶
func MacRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
func MapCustom ¶
func MapCustom(flowMessage *ProtoProducerMessage, v []byte, cfg MapConfigBase) error
func MapCustomNetFlow ¶
func MapCustomNetFlow(flowMessage *ProtoProducerMessage, df netflow.DataField, mapper *NetFlowMapper) error
func NetFlowLookFor ¶
func NetFlowPopulate ¶
func NetworkRenderer ¶
func NetworkRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
func NilRenderer ¶
func NilRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
func Parse8021Q ¶ added in v2.1.0
func ParseEthernet ¶ added in v2.1.0
func ParseEthernetHeader ¶
func ParseEthernetHeader(flowMessage *ProtoProducerMessage, data []byte, config *SFlowMapper) (err error)
Parses an entire stream consisting of multiple layers of protocols It picks the best field to map when multiple encapsulation of the same layer (eg: tunnels, extension headers, etc.)
func ParseICMP ¶ added in v2.1.0
func ParseICMP(offset int, flowMessage *ProtoProducerMessage, data []byte) (newOffset int, err error)
func ParseICMPv6 ¶ added in v2.1.0
func ParseICMPv6(offset int, flowMessage *ProtoProducerMessage, data []byte) (newOffset int, err error)
func ParseIPv6Headers ¶ added in v2.1.0
func ParseSampledHeader ¶
func ParseSampledHeader(flowMessage *ProtoProducerMessage, sampledHeader *sflow.SampledHeader) error
func ParseSampledHeaderConfig ¶
func ParseSampledHeaderConfig(flowMessage *ProtoProducerMessage, sampledHeader *sflow.SampledHeader, config *SFlowMapper) error
func ParseTCP ¶ added in v2.1.0
func ParseTCP(offset int, flowMessage *ProtoProducerMessage, data []byte) (newOffset int, err error)
func ParseUDP ¶ added in v2.1.0
func ParseUDP(offset int, flowMessage *ProtoProducerMessage, data []byte) (newOffset int, err error)
func ProcessMessageIPFIXConfig ¶
func ProcessMessageIPFIXConfig(packet *netflow.IPFIXPacket, samplingRateSys SamplingRateSystem, config *producerConfigMapped) (flowMessageSet []producer.ProducerMessage, err error)
Convert a NetFlow datastructure to a FlowMessage protobuf Does not put sampling rate
func ProcessMessageNetFlowLegacy ¶
func ProcessMessageNetFlowLegacy(packet *netflowlegacy.PacketNetFlowV5) ([]producer.ProducerMessage, error)
func ProcessMessageNetFlowV9Config ¶
func ProcessMessageNetFlowV9Config(packet *netflow.NFv9Packet, samplingRateSys SamplingRateSystem, config *producerConfigMapped) (flowMessageSet []producer.ProducerMessage, err error)
Convert a NetFlow datastructure to a FlowMessage protobuf Does not put sampling rate
func ProcessMessageSFlowConfig ¶
func ProcessMessageSFlowConfig(packet *sflow.Packet, config *producerConfigMapped) (flowMessageSet []producer.ProducerMessage, err error)
Converts an sFlow message
func ProtoRenderer ¶
func ProtoRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
func SearchNetFlowDataSets ¶
func SearchNetFlowDataSets(version uint16, baseTime uint32, uptime uint32, dataFlowSet []netflow.DataFlowSet, mapperNetFlow *NetFlowMapper, mapperSFlow *SFlowMapper) (flowMessageSet []producer.ProducerMessage, err error)
func SearchNetFlowDataSetsRecords ¶
func SearchNetFlowDataSetsRecords(version uint16, baseTime uint32, uptime uint32, dataRecords []netflow.DataRecord, mapperNetFlow *NetFlowMapper, mapperSFlow *SFlowMapper) (flowMessageSet []producer.ProducerMessage, err error)
func SearchNetFlowLegacyRecords ¶
func SearchNetFlowLegacyRecords(baseTime uint64, uptime uint32, dataRecords []netflowlegacy.RecordsNetFlowV5) (flowMessageSet []producer.ProducerMessage)
func SearchNetFlowOptionDataSets ¶
func SearchNetFlowOptionDataSets(dataFlowSet []netflow.OptionsDataFlowSet) (samplingRate uint32, found bool, err error)
func SearchSFlowSampleConfig ¶
func SearchSFlowSampleConfig(flowMessage *ProtoProducerMessage, flowSample interface{}, config *SFlowMapper) error
func SearchSFlowSamplesConfig ¶
func SearchSFlowSamplesConfig(samples []interface{}, config *SFlowMapper) (flowMessageSet []producer.ProducerMessage, err error)
func SplitIPFIXSets ¶
func SplitIPFIXSets(packetIPFIX netflow.IPFIXPacket) ([]netflow.DataFlowSet, []netflow.TemplateFlowSet, []netflow.IPFIXOptionsTemplateFlowSet, []netflow.OptionsDataFlowSet)
func SplitNetFlowSets ¶
func SplitNetFlowSets(packetNFv9 netflow.NFv9Packet) ([]netflow.DataFlowSet, []netflow.TemplateFlowSet, []netflow.NFv9OptionsTemplateFlowSet, []netflow.OptionsDataFlowSet)
func StringRenderer ¶ added in v2.1.2
func StringRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
func WriteDecoded ¶
func WriteUDecoded ¶
Types ¶
type DataMap ¶
type DataMap struct {
MapConfigBase
}
type DataMapLayer ¶
type DataMapLayer struct { MapConfigBase Offset int Length int }
func GetSFlowConfigLayer ¶
func GetSFlowConfigLayer(m *SFlowMapper, layer string) []DataMapLayer
type EndianType ¶
type EndianType string
type FormatterConfig ¶
type FormatterConfig struct { Fields []string `yaml:"fields"` Key []string `yaml:"key"` Render map[string]RendererID `yaml:"render"` Rename map[string]string `yaml:"rename"` Protobuf []ProtobufFormatterConfig `yaml:"protobuf"` }
type FormatterConfigMapper ¶
type FormatterConfigMapper struct {
// contains filtered or unexported fields
}
type IPFIXProducerConfig ¶
type IPFIXProducerConfig struct {
Mapping []NetFlowMapField `yaml:"mapping"`
}
type MapConfigBase ¶
type MapConfigBase struct { // Used if the field inside the protobuf exists // also serves as the field when rendering with text Destination string Endianness EndianType // The following fields are used for mapping // when the destination field does not exist // inside the protobuf ProtoIndex int32 ProtoType ProtoType ProtoArray bool }
Structure to help the MapCustom functions populate the protobuf data
type NetFlowMapField ¶
type NetFlowMapField struct { PenProvided bool `yaml:"penprovided"` Type uint16 `yaml:"field"` Pen uint32 `yaml:"pen"` Destination string `yaml:"destination"` Endian EndianType `yaml:"endianness"` }
type NetFlowMapper ¶
type NetFlowMapper struct {
// contains filtered or unexported fields
}
type NetFlowV9ProducerConfig ¶
type NetFlowV9ProducerConfig struct {
Mapping []NetFlowMapField `json:"mapping"`
}
type ProducerConfig ¶
type ProducerConfig struct { Formatter FormatterConfig `yaml:"formatter"` IPFIX IPFIXProducerConfig `yaml:"ipfix"` NetFlowV9 NetFlowV9ProducerConfig `yaml:"netflowv9"` SFlow SFlowProducerConfig `yaml:"sflow"` // also used for IPFIX data frames }
type ProtoProducer ¶
type ProtoProducer struct {
// contains filtered or unexported fields
}
func (*ProtoProducer) Close ¶
func (p *ProtoProducer) Close()
func (*ProtoProducer) Commit ¶
func (p *ProtoProducer) Commit(flowMessageSet []producer.ProducerMessage)
func (*ProtoProducer) Produce ¶
func (p *ProtoProducer) Produce(msg interface{}, args *producer.ProduceArgs) (flowMessageSet []producer.ProducerMessage, err error)
type ProtoProducerMessage ¶
type ProtoProducerMessage struct { flowmessage.FlowMessage // contains filtered or unexported fields }
func (*ProtoProducerMessage) FormatMessageReflectCustom ¶
func (m *ProtoProducerMessage) FormatMessageReflectCustom(ext, quotes, sep, sign string, null bool) string
func (*ProtoProducerMessage) FormatMessageReflectJSON ¶
func (m *ProtoProducerMessage) FormatMessageReflectJSON(ext string) string
func (*ProtoProducerMessage) FormatMessageReflectText ¶
func (m *ProtoProducerMessage) FormatMessageReflectText(ext string) string
func (*ProtoProducerMessage) Key ¶
func (m *ProtoProducerMessage) Key() []byte
func (*ProtoProducerMessage) MarshalBinary ¶
func (m *ProtoProducerMessage) MarshalBinary() ([]byte, error)
func (*ProtoProducerMessage) MarshalJSON ¶
func (m *ProtoProducerMessage) MarshalJSON() ([]byte, error)
func (*ProtoProducerMessage) MarshalText ¶
func (m *ProtoProducerMessage) MarshalText() ([]byte, error)
type ProtobufFormatterConfig ¶
type RenderFunc ¶
type RenderFunc func(msg *ProtoProducerMessage, fieldName string, data interface{}) interface{}
type RendererID ¶
type RendererID string
const ( RendererNone RendererID = "none" RendererIP RendererID = "ip" RendererMac RendererID = "mac" RendererEtype RendererID = "etype" RendererProto RendererID = "proto" RendererType RendererID = "type" RendererNetwork RendererID = "network" RendererDateTime RendererID = "datetime" RendererDateTimeNano RendererID = "datetimenano" RendererString RendererID = "string" )
type SFlowMapField ¶
type SFlowMapField struct { Layer string `yaml:"layer"` Offset int `yaml:"offset"` // offset in bits Length int `yaml:"length"` // length in bits Destination string `yaml:"destination"` Endian EndianType `yaml:"endianness"` }
type SFlowMapper ¶
type SFlowMapper struct {
// contains filtered or unexported fields
}
type SFlowProducerConfig ¶
type SFlowProducerConfig struct {
Mapping []SFlowMapField `yaml:"mapping"`
}
type SamplingRateSystem ¶
type SamplingRateSystem interface { GetSamplingRate(version uint16, obsDomainId uint32) (uint32, error) AddSamplingRate(version uint16, obsDomainId uint32, samplingRate uint32) }
func CreateSamplingSystem ¶
func CreateSamplingSystem() SamplingRateSystem
type SingleSamplingRateSystem ¶
type SingleSamplingRateSystem struct {
Sampling uint32
}
func (*SingleSamplingRateSystem) AddSamplingRate ¶
func (s *SingleSamplingRateSystem) AddSamplingRate(version uint16, obsDomainId uint32, samplingRate uint32)
func (*SingleSamplingRateSystem) GetSamplingRate ¶
func (s *SingleSamplingRateSystem) GetSamplingRate(version uint16, obsDomainId uint32) (uint32, error)
Click to show internal directories.
Click to hide internal directories.