diff --git a/decoders/sflow/packet.go b/decoders/sflow/packet.go index 3f8aef0..edcca7e 100644 --- a/decoders/sflow/packet.go +++ b/decoders/sflow/packet.go @@ -60,7 +60,15 @@ type RecordHeader struct { type FlowRecord struct { Header RecordHeader - Data interface{} + Data interface{} // replace by FlowRecordData +} + +type FlowRecordRaw struct { + Data []byte +} + +type FlowRecordData interface { + GetBytes(offset int, length int, dst []byte) error } type CounterRecord struct { diff --git a/decoders/sflow/sflow.go b/decoders/sflow/sflow.go index 12b71c2..671fc20 100644 --- a/decoders/sflow/sflow.go +++ b/decoders/sflow/sflow.go @@ -247,7 +247,10 @@ func DecodeFlowRecord(header *RecordHeader, payload *bytes.Buffer) (FlowRecord, flowRecord.Data = extendedGateway default: - return flowRecord, errors.New(fmt.Sprintf("Unknown data format %v.", (*header).DataFormat)) + //return flowRecord, errors.New(fmt.Sprintf("Unknown data format %v.", (*header).DataFormat)) + flowRecord.Data = &FlowRecordRaw{ + Data: payload.Next(int(header.Length)), + } } return flowRecord, nil }