@@ -27,7 +27,24 @@ import (
2727
2828const MaxInt = int (^ uint (0 ) >> 1 )
2929const MessageTypePktmonDrop = 100
30- const maxCapLength uint16 = 128
30+
31+ type PktmonPacketType uint8
32+
33+ // pktmon packet types
34+ const (
35+ PktMonPayloadUnknown PktmonPacketType = iota
36+ PktMonPayloadEthernet
37+ PktMonPayloadWiFi
38+ PktMonPayloadIP
39+ PktMonPayloadHTTP
40+ PktMonPayloadTCP
41+ PktMonPayloadUDP
42+ PktMonPayloadARP
43+ PktMonPayloadICMP
44+ PktMonPayloadESP
45+ PktMonPayloadAH
46+ PktMonPayloadL4Payload
47+ )
3148
3249// Parser is a parser for L3/L4 payloads
3350type Parser struct {
@@ -205,7 +222,7 @@ func (p *Parser) decode(data []byte, decoded *pb.Flow) error {
205222 // Fill relevant fields for dropNotify from pktmonNotify struct
206223 dn = & DropNotify {}
207224
208- eventSubType = pdn .PktmonHeader .Metadata .DropReason
225+ eventSubType = pdn .PktmonHeader .Metadata .DropReason | ( 1 << 31 )
209226 if offset > uint (MaxInt ) {
210227 return fmt .Errorf ("%w: %d" , errDataOffsetTooLarge , offset )
211228 }
@@ -230,9 +247,9 @@ func (p *Parser) decode(data []byte, decoded *pb.Flow) error {
230247 var err error
231248 if pdn != nil {
232249 switch pdn .PktmonHeader .Metadata .PacketType {
233- case 1 :
250+ case uint16 ( PktMonPayloadEthernet ) :
234251 err = p .packet .decLayerL2Dev .DecodeLayers (data [packetOffset :], & p .packet .Layers )
235- case 3 :
252+ case uint16 ( PktMonPayloadIP ) :
236253 switch data [packetOffset ] >> 4 {
237254 case 0x4 :
238255 err = p .packet .decLayerL3Dev .IPv4 .DecodeLayers (data [packetOffset :], & p .packet .Layers )
0 commit comments