On Mon, Dec 3, 2012 at 10:06 AM, Pablo Neira Ayuso <pa...@netfilter.org> wrote: > On Mon, Dec 03, 2012 at 09:28:55AM -0800, Jesse Gross wrote: >> On Mon, Dec 3, 2012 at 6:04 AM, Pablo Neira Ayuso <pa...@netfilter.org> >> wrote: >> > On Thu, Nov 29, 2012 at 10:35:45AM -0800, Jesse Gross wrote: >> >> @@ -159,9 +162,10 @@ int ipv6_find_hdr(const struct sk_buff *skb, >> >> unsigned int *offset, >> >> } >> >> len = skb->len - start; >> >> >> >> - while (nexthdr != target) { >> > >> > If the offset is set as parameter via ipv6_find_hdr, we now are always >> > entering the loop even if we found the target header we're looking >> > for, before that didn't happen. >> > >> > Something seems wrong here to me. >> >> If the target header is a routing header then you might still need to >> continue searching because the first one that you see could be empty. > > OK, but if it's not a routing header what we're searching for (which > seems to be the case of netfilter/IPVS) we waste way more cycles on > copying the IPv6 header again and with way more things that are > completely useless.
We could add a check to short circuit this but it seems like a premature optimization to me. Ansis, can you comment? _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev