From 44c67c17960e42064f2bb7ad926deb07a932458d Mon Sep 17 00:00:00 2001 From: Takashi Kawaguchi Date: Fri, 10 May 2013 02:39:34 +0900 Subject: [PATCH] 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 --- lib/flow.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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; -- 2.43.0