Skip to content

Commit d6e0939

Browse files
committed
try negative
1 parent d47e29a commit d6e0939

4 files changed

Lines changed: 434 additions & 416 deletions

File tree

pkg/plugin/ebpfwindows/ebpf_windows_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -813,7 +813,7 @@ func TestHandleTraceEventWithEthPacket_PktmonDropNotify(t *testing.T) {
813813
// version 1
814814
pdn[2] = 0x01
815815
pdn[3] = 0x00
816-
// PacketType 1
816+
// PacketType 1 (PktMonPayloadEthernet)
817817
pdn[31] = 0x01
818818
pdn[32] = 0x00
819819

@@ -859,7 +859,7 @@ func TestHandleTraceEventWithIpPacket_PktmonDropNotify(t *testing.T) {
859859
t.Errorf("expected event type %v, got %v", MessageTypePktmonDrop, eventType)
860860
}
861861

862-
var testDropReason int32 = 2
862+
var testDropReason int32 = -2147483641
863863
eventSubType := fl.GetEventType().GetSubType()
864864
if eventSubType != testDropReason {
865865
t.Errorf("expected event type %v, got %v", testDropReason, eventSubType)
@@ -901,12 +901,12 @@ func TestHandleTraceEventWithIpPacket_PktmonDropNotify(t *testing.T) {
901901
// version 1
902902
pdn[2] = 0x01
903903
pdn[3] = 0x00
904-
// PacketType 3
904+
// PacketType 3 (PktMonPayloadIP)
905905
pdn[31] = 0x03
906906
pdn[32] = 0x00
907907

908908
// DropReason 0x00000002
909-
pdn[39] = 0x02
909+
pdn[39] = 0x07
910910
pdn[40] = 0x00
911911
pdn[41] = 0x00
912912
pdn[42] = 0x00

pkg/plugin/ebpfwindows/parser_windows.go

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,24 @@ import (
2727

2828
const MaxInt = int(^uint(0) >> 1)
2929
const 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
3350
type 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

Comments
 (0)