X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fip%2Fip_frag.c;h=fba25fffff79426c3f47c61fa49d8979e300a089;hb=4b9669dc116f6c9be5ef124e4aff7b201404b6ea;hp=2af697e96b6ab548d3351eb1090e5faa286dbb12;hpb=ce07412a54f06900b377a7f4966f6a26e19b8f2b;p=vpp.git diff --git a/src/vnet/ip/ip_frag.c b/src/vnet/ip/ip_frag.c index 2af697e96b6..fba25fffff7 100644 --- a/src/vnet/ip/ip_frag.c +++ b/src/vnet/ip/ip_frag.c @@ -131,6 +131,12 @@ ip4_frag_do_fragment (vlib_main_t * vm, u32 pi, u32 ** buffer, vnet_buffer (p)->sw_if_index[VLIB_RX]; vnet_buffer (b)->sw_if_index[VLIB_TX] = vnet_buffer (p)->sw_if_index[VLIB_TX]; + /* Copy Adj_index in case DPO based node is sending for the fragmentation, + the packet would be sent back to the proper DPO next node and Index */ + vnet_buffer (b)->ip.adj_index[VLIB_RX] = + vnet_buffer (p)->ip.adj_index[VLIB_RX]; + vnet_buffer (b)->ip.adj_index[VLIB_TX] = + vnet_buffer (p)->ip.adj_index[VLIB_TX]; fip4 = (ip4_header_t *) (vlib_buffer_get_current (b) + offset); //Copy offset and ip4 header @@ -393,6 +399,14 @@ ip6_frag_do_fragment (vlib_main_t * vm, u32 pi, u32 ** buffer, vnet_buffer (p)->sw_if_index[VLIB_RX]; vnet_buffer (b)->sw_if_index[VLIB_TX] = vnet_buffer (p)->sw_if_index[VLIB_TX]; + + /* Copy Adj_index in case DPO based node is sending for the fragmentation, + the packet would be sent back to the proper DPO next node and Index */ + vnet_buffer (b)->ip.adj_index[VLIB_RX] = + vnet_buffer (p)->ip.adj_index[VLIB_RX]; + vnet_buffer (b)->ip.adj_index[VLIB_TX] = + vnet_buffer (p)->ip.adj_index[VLIB_TX]; + clib_memcpy (vlib_buffer_get_current (b), vlib_buffer_get_current (p), headers_len); clib_memcpy (vlib_buffer_get_current (b) + headers_len,