X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fmap%2Fip4_map.c;h=fc47d0fee466e928a6c97ed2aa616717900859ff;hb=ffba3c3;hp=1bb33b016fa41576ee7f68d2be5348527e8fe33d;hpb=381e9a90748bb659f56081123052e3e95501a4b4;p=vpp.git diff --git a/src/plugins/map/ip4_map.c b/src/plugins/map/ip4_map.c index 1bb33b016fa..fc47d0fee46 100644 --- a/src/plugins/map/ip4_map.c +++ b/src/plugins/map/ip4_map.c @@ -167,7 +167,8 @@ ip4_map_fragment (vlib_buffer_t * b, u16 mtu, bool df, u8 * error) if (mm->frag_inner) { - ip_frag_set_vnet_buffer (b, sizeof (ip6_header_t), mtu, + // TODO: Fix inner fragmentation after removed inner support from ip-frag. + ip_frag_set_vnet_buffer (b, /*sizeof (ip6_header_t), */ mtu, IP4_FRAG_NEXT_IP6_LOOKUP, IP_FRAG_FLAG_IP6_HEADER); return (IP4_MAP_NEXT_IP4_FRAGMENT); @@ -183,7 +184,7 @@ ip4_map_fragment (vlib_buffer_t * b, u16 mtu, bool df, u8 * error) *error = MAP_ERROR_DF_SET; return (IP4_MAP_NEXT_ICMP_ERROR); } - ip_frag_set_vnet_buffer (b, 0, mtu, IP6_FRAG_NEXT_IP6_LOOKUP, + ip_frag_set_vnet_buffer (b, mtu, IP6_FRAG_NEXT_IP6_LOOKUP, IP_FRAG_FLAG_IP6_HEADER); return (IP4_MAP_NEXT_IP6_FRAGMENT); } @@ -203,7 +204,7 @@ ip4_map (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) next_index = node->cached_next_index; map_main_t *mm = &map_main; vlib_combined_counter_main_t *cm = mm->domain_counters; - u32 thread_index = vlib_get_thread_index (); + u32 thread_index = vm->thread_index; while (n_left_from > 0) { @@ -519,7 +520,7 @@ ip4_map_reass (vlib_main_t * vm, next_index = node->cached_next_index; map_main_t *mm = &map_main; vlib_combined_counter_main_t *cm = mm->domain_counters; - u32 thread_index = vlib_get_thread_index (); + u32 thread_index = vm->thread_index; u32 *fragments_to_drop = NULL; u32 *fragments_to_loopback = NULL; @@ -621,7 +622,7 @@ ip4_map_reass (vlib_main_t * vm, && (clib_net_to_host_u16 (ip60->payload_length) + sizeof (*ip60) > d0->mtu))) { - vnet_buffer (p0)->ip_frag.header_offset = sizeof (*ip60); + // TODO: vnet_buffer (p0)->ip_frag.header_offset = sizeof (*ip60); vnet_buffer (p0)->ip_frag.next_index = IP4_FRAG_NEXT_IP6_LOOKUP; vnet_buffer (p0)->ip_frag.mtu = d0->mtu; vnet_buffer (p0)->ip_frag.flags = IP_FRAG_FLAG_IP6_HEADER; @@ -665,17 +666,16 @@ ip4_map_reass (vlib_main_t * vm, u32 len = vec_len (fragments_to_loopback); if (len <= VLIB_FRAME_SIZE) { - clib_memcpy (from, fragments_to_loopback, - sizeof (u32) * len); + clib_memcpy_fast (from, fragments_to_loopback, + sizeof (u32) * len); n_left_from = len; vec_reset_length (fragments_to_loopback); } else { - clib_memcpy (from, - fragments_to_loopback + (len - - VLIB_FRAME_SIZE), - sizeof (u32) * VLIB_FRAME_SIZE); + clib_memcpy_fast (from, fragments_to_loopback + + (len - VLIB_FRAME_SIZE), + sizeof (u32) * VLIB_FRAME_SIZE); n_left_from = VLIB_FRAME_SIZE; _vec_len (fragments_to_loopback) = len - VLIB_FRAME_SIZE; }