Skip to content
This repository was archived by the owner on Feb 19, 2025. It is now read-only.

Commit 3fb99bb

Browse files
author
Batyrkhan Koshenov
committed
producer, utils: refactor old funcs for new FlowSets field type
Signed-off-by: Batyrkhan Koshenov <[email protected]>
1 parent 2fcef7c commit 3fb99bb

File tree

6 files changed

+175
-203
lines changed

6 files changed

+175
-203
lines changed

decoders/netflow/netflow.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -638,4 +638,4 @@ func (f *FlowMessage) DecodeIPFIXPacket(payload *bytes.Buffer, templates NetFlow
638638
f.PacketIPFIX.OptionsDataFS = f.PacketIPFIX.OptionsDataFS[:ipxOptsDataFSidx]
639639

640640
return nil
641-
}
641+
}

producer/producer_nf.go

+7-43
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func CreateSamplingSystem() SamplingRateSystem {
3434
func (s *basicSamplingRateSystem) AddSamplingRate(version uint16, obsDomainId uint32, samplingRate uint32) {
3535
s.samplinglock.Lock()
3636
_, exists := s.sampling[version]
37-
if exists != true {
37+
if !exists {
3838
s.sampling[version] = make(map[uint32]uint32)
3939
}
4040
s.sampling[version][obsDomainId] = samplingRate
@@ -119,7 +119,7 @@ func DecodeUNumber(b []byte, out interface{}) error {
119119
iter++
120120
}
121121
} else {
122-
return errors.New(fmt.Sprintf("Non-regular number of bytes for a number: %v", l))
122+
return fmt.Errorf("non-regular number of bytes for a number: %v", l)
123123
}
124124
}
125125
switch t := out.(type) {
@@ -132,7 +132,7 @@ func DecodeUNumber(b []byte, out interface{}) error {
132132
case *uint64:
133133
*t = o
134134
default:
135-
return errors.New("The parameter is not a pointer to a byte/uint16/uint32/uint64 structure")
135+
return errors.New("the parameter is not a pointer to a byte/uint16/uint32/uint64 structure")
136136
}
137137
return nil
138138
}
@@ -150,13 +150,9 @@ func ConvertNetFlowDataSet(version uint16, baseTime uint32, uptime uint32, recor
150150
for i := range record {
151151
df := record[i]
152152

153-
v, ok := df.Value.([]byte)
154-
if !ok {
155-
continue
156-
}
153+
v := df.Value
157154

158155
switch df.Type {
159-
160156
// Statistics
161157
case netflow.NFV9_FIELD_IN_BYTES:
162158
DecodeUNumber(v, &(flowMessage.Bytes))
@@ -382,43 +378,11 @@ func SearchNetFlowOptionDataSets(dataFlowSet []netflow.OptionsDataFlowSet) (uint
382378
}
383379

384380
func SplitNetFlowSets(packetNFv9 netflow.NFv9Packet) ([]netflow.DataFlowSet, []netflow.TemplateFlowSet, []netflow.NFv9OptionsTemplateFlowSet, []netflow.OptionsDataFlowSet) {
385-
dataFlowSet := make([]netflow.DataFlowSet, 0)
386-
templatesFlowSet := make([]netflow.TemplateFlowSet, 0)
387-
optionsTemplatesFlowSet := make([]netflow.NFv9OptionsTemplateFlowSet, 0)
388-
optionsDataFlowSet := make([]netflow.OptionsDataFlowSet, 0)
389-
for _, flowSet := range packetNFv9.FlowSets {
390-
switch flowSet.(type) {
391-
case netflow.TemplateFlowSet:
392-
templatesFlowSet = append(templatesFlowSet, flowSet.(netflow.TemplateFlowSet))
393-
case netflow.NFv9OptionsTemplateFlowSet:
394-
optionsTemplatesFlowSet = append(optionsTemplatesFlowSet, flowSet.(netflow.NFv9OptionsTemplateFlowSet))
395-
case netflow.DataFlowSet:
396-
dataFlowSet = append(dataFlowSet, flowSet.(netflow.DataFlowSet))
397-
case netflow.OptionsDataFlowSet:
398-
optionsDataFlowSet = append(optionsDataFlowSet, flowSet.(netflow.OptionsDataFlowSet))
399-
}
400-
}
401-
return dataFlowSet, templatesFlowSet, optionsTemplatesFlowSet, optionsDataFlowSet
381+
return packetNFv9.DataFS, packetNFv9.TemplateFS, packetNFv9.NFv9OptionsTemplateFS, packetNFv9.OptionsDataFS
402382
}
403383

404384
func SplitIPFIXSets(packetIPFIX netflow.IPFIXPacket) ([]netflow.DataFlowSet, []netflow.TemplateFlowSet, []netflow.IPFIXOptionsTemplateFlowSet, []netflow.OptionsDataFlowSet) {
405-
dataFlowSet := make([]netflow.DataFlowSet, 0)
406-
templatesFlowSet := make([]netflow.TemplateFlowSet, 0)
407-
optionsTemplatesFlowSet := make([]netflow.IPFIXOptionsTemplateFlowSet, 0)
408-
optionsDataFlowSet := make([]netflow.OptionsDataFlowSet, 0)
409-
for _, flowSet := range packetIPFIX.FlowSets {
410-
switch flowSet.(type) {
411-
case netflow.TemplateFlowSet:
412-
templatesFlowSet = append(templatesFlowSet, flowSet.(netflow.TemplateFlowSet))
413-
case netflow.IPFIXOptionsTemplateFlowSet:
414-
optionsTemplatesFlowSet = append(optionsTemplatesFlowSet, flowSet.(netflow.IPFIXOptionsTemplateFlowSet))
415-
case netflow.DataFlowSet:
416-
dataFlowSet = append(dataFlowSet, flowSet.(netflow.DataFlowSet))
417-
case netflow.OptionsDataFlowSet:
418-
optionsDataFlowSet = append(optionsDataFlowSet, flowSet.(netflow.OptionsDataFlowSet))
419-
}
420-
}
421-
return dataFlowSet, templatesFlowSet, optionsTemplatesFlowSet, optionsDataFlowSet
385+
return packetIPFIX.DataFS, packetIPFIX.TemplateFS, packetIPFIX.IPFIXOptionsTemplateFS, packetIPFIX.OptionsDataFS
422386
}
423387

424388
// Convert a NetFlow datastructure to a FlowMessage protobuf
@@ -474,7 +438,7 @@ func ProcessMessageNetFlow(msgDec interface{}, samplingRateSys SamplingRateSyste
474438
fmsg.SamplingRate = uint64(samplingRate)
475439
}
476440
default:
477-
return flowMessageSet, errors.New("Bad NetFlow/IPFIX version")
441+
return flowMessageSet, errors.New("bad NetFlow/IPFIX version")
478442
}
479443

480444
return flowMessageSet, nil

producer/producer_nflegacy.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,6 @@ func ProcessMessageNetFlowLegacy(msgDec interface{}) ([]*flowmessage.FlowMessage
7474

7575
return flowMessageSet, nil
7676
default:
77-
return []*flowmessage.FlowMessage{}, errors.New("Bad NetFlow v5 version")
77+
return []*flowmessage.FlowMessage{}, errors.New("bad NetFlow v5 version")
7878
}
7979
}

producer/producer_sf.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -319,9 +319,11 @@ func ParseSampledHeaderConfig(flowMessage *flowmessage.FlowMessage, sampledHeade
319319
return nil
320320
}
321321

322+
/*
322323
func SearchSFlowSamples(samples []interface{}) []*flowmessage.FlowMessage {
323324
return SearchSFlowSamples(samples)
324325
}
326+
*/
325327

326328
func SearchSFlowSamplesConfig(samples []interface{}, config *SFlowProducerConfig, agent net.IP) []*flowmessage.FlowMessage {
327329
flowMessageSet := make([]*flowmessage.FlowMessage, 0)
@@ -345,9 +347,10 @@ func SearchSFlowSamplesConfig(samples []interface{}, config *SFlowProducerConfig
345347
flowMessage.OutIf = flowSample.OutputIfValue
346348
}
347349

348-
ipNh := net.IP{}
349-
ipSrc := net.IP{}
350-
ipDst := net.IP{}
350+
var (
351+
ipNh, ipSrc, ipDst net.IP
352+
)
353+
351354
flowMessage.Packets = 1
352355
for _, record := range records {
353356
switch recordData := record.Data.(type) {
@@ -425,6 +428,6 @@ func ProcessMessageSFlowConfig(msgDec interface{}, config *SFlowProducerConfig)
425428

426429
return flowMessageSet, nil
427430
default:
428-
return []*flowmessage.FlowMessage{}, errors.New("Bad sFlow version")
431+
return []*flowmessage.FlowMessage{}, errors.New("bad sFlow version")
429432
}
430433
}

producer/producer_test.go

+10-8
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,32 @@ import (
1010

1111
func TestProcessMessageNetFlow(t *testing.T) {
1212
records := []netflow.DataRecord{
13-
netflow.DataRecord{
13+
{
1414
Values: []netflow.DataField{
15-
netflow.DataField{
15+
{
1616
Type: netflow.NFV9_FIELD_IPV4_SRC_ADDR,
1717
Value: []byte{10, 0, 0, 1},
1818
},
1919
},
2020
},
2121
}
22-
dfs := []interface{}{
23-
netflow.DataFlowSet{
22+
23+
dfs := []netflow.DataFlowSet{
24+
{
2425
Records: records,
2526
},
2627
}
2728

2829
pktnf9 := netflow.NFv9Packet{
29-
FlowSets: dfs,
30+
FlowSets: netflow.FlowSets{DataFS: dfs},
3031
}
32+
3133
testsr := &SingleSamplingRateSystem{1}
3234
_, err := ProcessMessageNetFlow(pktnf9, testsr)
3335
assert.Nil(t, err)
3436

3537
pktipfix := netflow.IPFIXPacket{
36-
FlowSets: dfs,
38+
FlowSets: netflow.FlowSets{DataFS: dfs},
3739
}
3840
_, err = ProcessMessageNetFlow(pktipfix, testsr)
3941
assert.Nil(t, err)
@@ -58,15 +60,15 @@ func TestProcessMessageSFlow(t *testing.T) {
5860
sflow.FlowSample{
5961
SamplingRate: 1,
6062
Records: []sflow.FlowRecord{
61-
sflow.FlowRecord{
63+
{
6264
Data: sh,
6365
},
6466
},
6567
},
6668
sflow.ExpandedFlowSample{
6769
SamplingRate: 1,
6870
Records: []sflow.FlowRecord{
69-
sflow.FlowRecord{
71+
{
7072
Data: sh,
7173
},
7274
},

0 commit comments

Comments
 (0)