summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/PacketParser.c
diff options
context:
space:
mode:
Diffstat (limited to 'datapath-windows/ovsext/PacketParser.c')
-rw-r--r--datapath-windows/ovsext/PacketParser.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/datapath-windows/ovsext/PacketParser.c b/datapath-windows/ovsext/PacketParser.c
index aeead5899..e89ff0641 100644
--- a/datapath-windows/ovsext/PacketParser.c
+++ b/datapath-windows/ovsext/PacketParser.c
@@ -141,7 +141,7 @@ OvsParseIPv6(const NET_BUFFER_LIST *packet,
nextHdr = extHdr->nextHeader;
if (OvsPacketLenNBL(packet) < ofs) {
return NDIS_STATUS_FAILURE;
- }
+ }
} else if (nextHdr == SOCKET_IPPROTO_FRAGMENT) {
IPv6FragHdr fragHdrStorage;
const IPv6FragHdr *fragHdr;
@@ -157,13 +157,15 @@ OvsParseIPv6(const NET_BUFFER_LIST *packet,
/* We only process the first fragment. */
if (fragHdr->offlg != htons(0)) {
- if ((fragHdr->offlg & IP6F_OFF_HOST_ORDER_MASK) == htons(0)) {
+ if ((ntohs(fragHdr->offlg) & IP6F_OFF_HOST_ORDER_MASK) == htons(0)) {
ipv6Key->nwFrag = OVS_FRAG_TYPE_FIRST;
} else {
ipv6Key->nwFrag = OVS_FRAG_TYPE_LATER;
nextHdr = SOCKET_IPPROTO_FRAGMENT;
break;
}
+ } else {
+ ipv6Key->nwFrag = OVS_FRAG_TYPE_NONE;
}
}
}