diff --git a/producer/proto/producer_sf.go b/producer/proto/producer_sf.go index c54ff11..566c800 100644 --- a/producer/proto/producer_sf.go +++ b/producer/proto/producer_sf.go @@ -114,7 +114,7 @@ func ParseEthernetHeader(flowMessage *ProtoProducerMessage, data []byte, config ttl = data[offset+8] identification = binary.BigEndian.Uint16(data[offset+4 : offset+6]) - fragOffset = binary.BigEndian.Uint16(data[offset+6 : offset+8]) + fragOffset = binary.BigEndian.Uint16(data[offset+6:offset+8]) & 8191 for _, configLayer := range GetSFlowConfigLayer(config, "ipv4") { extracted := GetBytes(data, offset*8+configLayer.Offset, configLayer.Length) @@ -164,7 +164,7 @@ func ParseEthernetHeader(flowMessage *ProtoProducerMessage, data []byte, config } appOffset := 0 - if len(data) >= offset+4 && (nextHeader == 17 || nextHeader == 6) { + if len(data) >= offset+4 && (nextHeader == 17 || nextHeader == 6) && fragOffset&8191 == 0 { srcPort = binary.BigEndian.Uint16(data[offset+0 : offset+2]) dstPort = binary.BigEndian.Uint16(data[offset+2 : offset+4]) }