|
|
|
|
@ -41,7 +41,7 @@ var icmpRequestBuffer = []byte{ |
|
|
|
|
0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var icmpRequestDecode = ParsedPacket{ |
|
|
|
|
var icmpRequestDecode = Parsed{ |
|
|
|
|
b: icmpRequestBuffer, |
|
|
|
|
subofs: 20, |
|
|
|
|
dataofs: 24, |
|
|
|
|
@ -67,7 +67,7 @@ var icmpReplyBuffer = []byte{ |
|
|
|
|
0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var icmpReplyDecode = ParsedPacket{ |
|
|
|
|
var icmpReplyDecode = Parsed{ |
|
|
|
|
b: icmpReplyBuffer, |
|
|
|
|
subofs: 20, |
|
|
|
|
dataofs: 24, |
|
|
|
|
@ -91,7 +91,7 @@ var ipv6PacketBuffer = []byte{ |
|
|
|
|
0x85, 0x00, 0x38, 0x04, 0x00, 0x00, 0x00, 0x00, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var ipv6PacketDecode = ParsedPacket{ |
|
|
|
|
var ipv6PacketDecode = Parsed{ |
|
|
|
|
b: ipv6PacketBuffer, |
|
|
|
|
IPVersion: 6, |
|
|
|
|
IPProto: ICMPv6, |
|
|
|
|
@ -103,7 +103,7 @@ var unknownPacketBuffer = []byte{ |
|
|
|
|
0x45, 0x74, 0x63, 0x70, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var unknownPacketDecode = ParsedPacket{ |
|
|
|
|
var unknownPacketDecode = Parsed{ |
|
|
|
|
b: unknownPacketBuffer, |
|
|
|
|
IPVersion: 0, |
|
|
|
|
IPProto: Unknown, |
|
|
|
|
@ -123,7 +123,7 @@ var tcpPacketBuffer = []byte{ |
|
|
|
|
0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var tcpPacketDecode = ParsedPacket{ |
|
|
|
|
var tcpPacketDecode = Parsed{ |
|
|
|
|
b: tcpPacketBuffer, |
|
|
|
|
subofs: 20, |
|
|
|
|
dataofs: 40, |
|
|
|
|
@ -151,7 +151,7 @@ var udpRequestBuffer = []byte{ |
|
|
|
|
0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var udpRequestDecode = ParsedPacket{ |
|
|
|
|
var udpRequestDecode = Parsed{ |
|
|
|
|
b: udpRequestBuffer, |
|
|
|
|
subofs: 20, |
|
|
|
|
dataofs: 28, |
|
|
|
|
@ -178,7 +178,7 @@ var udpReplyBuffer = []byte{ |
|
|
|
|
0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var udpReplyDecode = ParsedPacket{ |
|
|
|
|
var udpReplyDecode = Parsed{ |
|
|
|
|
b: udpReplyBuffer, |
|
|
|
|
subofs: 20, |
|
|
|
|
dataofs: 28, |
|
|
|
|
@ -191,10 +191,10 @@ var udpReplyDecode = ParsedPacket{ |
|
|
|
|
DstPort: 123, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestParsedPacket(t *testing.T) { |
|
|
|
|
func TestParsed(t *testing.T) { |
|
|
|
|
tests := []struct { |
|
|
|
|
name string |
|
|
|
|
qdecode ParsedPacket |
|
|
|
|
qdecode Parsed |
|
|
|
|
want string |
|
|
|
|
}{ |
|
|
|
|
{"tcp", tcpPacketDecode, "TCP{1.2.3.4:123 > 5.6.7.8:567}"}, |
|
|
|
|
@ -226,7 +226,7 @@ func TestDecode(t *testing.T) { |
|
|
|
|
tests := []struct { |
|
|
|
|
name string |
|
|
|
|
buf []byte |
|
|
|
|
want ParsedPacket |
|
|
|
|
want Parsed |
|
|
|
|
}{ |
|
|
|
|
{"icmp", icmpRequestBuffer, icmpRequestDecode}, |
|
|
|
|
{"ipv6", ipv6PacketBuffer, ipv6PacketDecode}, |
|
|
|
|
@ -237,7 +237,7 @@ func TestDecode(t *testing.T) { |
|
|
|
|
|
|
|
|
|
for _, tt := range tests { |
|
|
|
|
t.Run(tt.name, func(t *testing.T) { |
|
|
|
|
var got ParsedPacket |
|
|
|
|
var got Parsed |
|
|
|
|
got.Decode(tt.buf) |
|
|
|
|
if !reflect.DeepEqual(got, tt.want) { |
|
|
|
|
t.Errorf("mismatch\n got: %#v\nwant: %#v", got, tt.want) |
|
|
|
|
@ -246,7 +246,7 @@ func TestDecode(t *testing.T) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
allocs := testing.AllocsPerRun(1000, func() { |
|
|
|
|
var got ParsedPacket |
|
|
|
|
var got Parsed |
|
|
|
|
got.Decode(tests[0].buf) |
|
|
|
|
}) |
|
|
|
|
if allocs != 0 { |
|
|
|
|
@ -267,7 +267,7 @@ func BenchmarkDecode(b *testing.B) { |
|
|
|
|
for _, bench := range benches { |
|
|
|
|
b.Run(bench.name, func(b *testing.B) { |
|
|
|
|
for i := 0; i < b.N; i++ { |
|
|
|
|
var p ParsedPacket |
|
|
|
|
var p Parsed |
|
|
|
|
p.Decode(bench.buf) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
|