- Fix broken implementation of WinDivertHelperParseIPv6Address().

- Fix IPv6 address word/byte ordering between DLL and SYS.
This commit is contained in:
basil00
2014-11-15 15:06:16 +08:00
parent 72d83fcb07
commit 48075e2e5f
3 changed files with 22 additions and 18 deletions
+12 -12
View File
@@ -3049,23 +3049,23 @@ static BOOL windivert_filter(PNET_BUFFER buffer, UINT32 if_idx,
break;
case WINDIVERT_FILTER_FIELD_IPV6_SRCADDR:
field[0] =
(UINT32)RtlUlongByteSwap(ipv6_header->SrcAddr[3]);
field[1] =
(UINT32)RtlUlongByteSwap(ipv6_header->SrcAddr[2]);
field[2] =
(UINT32)RtlUlongByteSwap(ipv6_header->SrcAddr[1]);
field[3] =
(UINT32)RtlUlongByteSwap(ipv6_header->SrcAddr[0]);
field[1] =
(UINT32)RtlUlongByteSwap(ipv6_header->SrcAddr[1]);
field[2] =
(UINT32)RtlUlongByteSwap(ipv6_header->SrcAddr[2]);
field[3] =
(UINT32)RtlUlongByteSwap(ipv6_header->SrcAddr[3]);
break;
case WINDIVERT_FILTER_FIELD_IPV6_DSTADDR:
field[0] =
(UINT32)RtlUlongByteSwap(ipv6_header->DstAddr[3]);
field[1] =
(UINT32)RtlUlongByteSwap(ipv6_header->DstAddr[2]);
field[2] =
(UINT32)RtlUlongByteSwap(ipv6_header->DstAddr[1]);
field[3] =
(UINT32)RtlUlongByteSwap(ipv6_header->DstAddr[0]);
field[1] =
(UINT32)RtlUlongByteSwap(ipv6_header->DstAddr[1]);
field[2] =
(UINT32)RtlUlongByteSwap(ipv6_header->DstAddr[2]);
field[3] =
(UINT32)RtlUlongByteSwap(ipv6_header->DstAddr[3]);
break;
case WINDIVERT_FILTER_FIELD_ICMP_TYPE:
field[0] = (UINT32)icmp_header->Type;