From: Takashi Kawaguchi Date: Thu, 9 May 2013 17:39:34 +0000 (+0900) Subject: flow: Fix IPv6 fragment packet handling X-Git-Tag: sliver-openvswitch-1.10.90-3~16^2~5 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=44c67c17960e42064f2bb7ad926deb07a932458d;p=sliver-openvswitch.git flow: Fix IPv6 fragment packet handling IPv6 fragmented packet (except first fragment) will not be handled correctly. When extracting packet at parse_ipv6(), although nw_frag should have both of FLOW_NW_FRAG_ANY and FLOW_NW_FRAG_LATER for later fragment, only FLOW_NW_FRAG_LATER is set. Signed-off-by: Takashi Kawaguchi Signed-off-by: Ken Ajiro Signed-off-by: Jesse Gross --- diff --git a/lib/flow.c b/lib/flow.c index 678b8f0d5..e4154a711 100644 --- a/lib/flow.c +++ b/lib/flow.c @@ -229,9 +229,8 @@ parse_ipv6(struct ofpbuf *packet, struct flow *flow) /* We only process the first fragment. */ if (frag_hdr->ip6f_offlg != htons(0)) { - if ((frag_hdr->ip6f_offlg & IP6F_OFF_MASK) == htons(0)) { - flow->nw_frag = FLOW_NW_FRAG_ANY; - } else { + flow->nw_frag = FLOW_NW_FRAG_ANY; + if ((frag_hdr->ip6f_offlg & IP6F_OFF_MASK) != htons(0)) { flow->nw_frag |= FLOW_NW_FRAG_LATER; nexthdr = IPPROTO_FRAGMENT; break;