From: John Lo Date: Sat, 4 Jun 2016 00:48:31 +0000 (-0400) Subject: VPP-100: Fix IP4 local handling of TCP/IP fragmented packet X-Git-Tag: v16.09-rc1~342 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F01%2F1401%2F1;p=vpp.git VPP-100: Fix IP4 local handling of TCP/IP fragmented packet Fix previous change that does not work on little endian machines. Use inline call ip4_is_fragment() which is endian neutral. Change-Id: I5a35d89d936650ab6c628dfc388b8c992a74a589 Signed-off-by: John Lo --- diff --git a/vnet/vnet/ip/ip4_forward.c b/vnet/vnet/ip/ip4_forward.c index 5c2ac3828a1..e9e5232f9e0 100644 --- a/vnet/vnet/ip/ip4_forward.c +++ b/vnet/vnet/ip/ip4_forward.c @@ -1785,8 +1785,8 @@ ip4_local (vlib_main_t * vm, /* Treat IP frag packets as "experimental" protocol for now until support of IP frag reassembly is implemented */ - proto0 = (ip0->flags_and_fragment_offset << 2) ? 0xfe : ip0->protocol; - proto1 = (ip1->flags_and_fragment_offset << 2) ? 0xfe : ip1->protocol; + proto0 = ip4_is_fragment(ip0) ? 0xfe : ip0->protocol; + proto1 = ip4_is_fragment(ip1) ? 0xfe : ip1->protocol; is_udp0 = proto0 == IP_PROTOCOL_UDP; is_udp1 = proto1 == IP_PROTOCOL_UDP; is_tcp_udp0 = is_udp0 || proto0 == IP_PROTOCOL_TCP; @@ -1980,7 +1980,7 @@ ip4_local (vlib_main_t * vm, /* Treat IP frag packets as "experimental" protocol for now until support of IP frag reassembly is implemented */ - proto0 = (ip0->flags_and_fragment_offset << 2) ? 0xfe : ip0->protocol; + proto0 = ip4_is_fragment(ip0) ? 0xfe : ip0->protocol; is_udp0 = proto0 == IP_PROTOCOL_UDP; is_tcp_udp0 = is_udp0 || proto0 == IP_PROTOCOL_TCP;