- Add an ICMPv6 test packet.
- Fix missing byte-swaps for ICMPv6 fields. - Todo: 1 test-case fails.
This commit is contained in:
+4
-2
@@ -3087,10 +3087,12 @@ static BOOL windivert_filter(PNET_BUFFER buffer, UINT32 if_idx,
|
||||
field[0] = (UINT32)icmpv6_header->Code;
|
||||
break;
|
||||
case WINDIVERT_FILTER_FIELD_ICMPV6_CHECKSUM:
|
||||
field[0] = (UINT32)icmpv6_header->Checksum;
|
||||
field[0] =
|
||||
(UINT32)RtlUshortByteSwap(icmpv6_header->Checksum);
|
||||
break;
|
||||
case WINDIVERT_FILTER_FIELD_ICMPV6_BODY:
|
||||
field[0] = (UINT32)icmpv6_header->Body;
|
||||
field[0] =
|
||||
(UINT32)RtlUlongByteSwap(icmpv6_header->Body);
|
||||
break;
|
||||
case WINDIVERT_FILTER_FIELD_TCP_SRCPORT:
|
||||
field[0] = (UINT32)RtlUshortByteSwap(tcp_header->SrcPort);
|
||||
|
||||
+15
@@ -77,6 +77,12 @@ static struct packet pkt_ipv6_tcp_syn =
|
||||
sizeof(ipv6_tcp_syn),
|
||||
"ipv6_tcp_syn"
|
||||
};
|
||||
static struct packet pkt_ipv6_echo_reply =
|
||||
{
|
||||
ipv6_echo_reply,
|
||||
sizeof(ipv6_echo_reply),
|
||||
"ipv6_icmpv6_echo_rep"
|
||||
};
|
||||
static struct packet pkt_ipv6_exthdrs_udp =
|
||||
{
|
||||
ipv6_exthdrs_udp,
|
||||
@@ -113,6 +119,15 @@ static struct test tests[] =
|
||||
{"ipv6.SrcAddr == aabb:5678:1::1234:ccdd", &pkt_ipv6_tcp_syn, FALSE},
|
||||
{"tcp.SrcPort == 50046", &pkt_ipv6_tcp_syn, TRUE},
|
||||
{"tcp.SrcPort == 0x0000C37E", &pkt_ipv6_tcp_syn, TRUE},
|
||||
{"icmpv6", &pkt_ipv6_echo_reply, TRUE},
|
||||
{"icmp", &pkt_ipv6_echo_reply, FALSE},
|
||||
{"icmp or icmpv6", &pkt_ipv6_echo_reply, TRUE},
|
||||
{"not icmp", &pkt_ipv6_echo_reply, TRUE},
|
||||
{"icmpv6.Type == 129", &pkt_ipv6_echo_reply, TRUE},
|
||||
{"icmpv6.Code == 0", &pkt_ipv6_echo_reply, TRUE},
|
||||
{"icmpv6.Body == 0x10720003", &pkt_ipv6_echo_reply, TRUE},
|
||||
{"ipv6.DstAddr >= 1000", &pkt_ipv6_echo_reply, FALSE},
|
||||
{"ipv6.DstAddr <= 1", &pkt_ipv6_echo_reply, TRUE},
|
||||
{"true", &pkt_ipv6_exthdrs_udp, TRUE},
|
||||
{"udp", &pkt_ipv6_exthdrs_udp, TRUE},
|
||||
{"tcp", &pkt_ipv6_exthdrs_udp, FALSE},
|
||||
|
||||
@@ -118,6 +118,24 @@ static unsigned char ipv6_tcp_syn[] =
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07
|
||||
};
|
||||
|
||||
// IPV6 ICMPV6 ECHO REPLY
|
||||
static unsigned char ipv6_echo_reply[] =
|
||||
{
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3a, 0x1f,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x81, 0x00, 0x00, 0x00, 0x10, 0x72, 0x00, 0x03,
|
||||
0xa4, 0xd5, 0x69, 0x54, 0x00, 0x00, 0x00, 0x00,
|
||||
0xab, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
|
||||
0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
|
||||
0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
|
||||
0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
|
||||
0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77
|
||||
};
|
||||
|
||||
// IPV6 EXTENSION HEADERS UDP
|
||||
static unsigned char ipv6_exthdrs_udp[] =
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user