Change-Id: I1df3d23c1c5668b83d52b41f51c0e3f24183af9e
Signed-off-by: Vijayabhaskar Katamreddy <vkatamre@cisco.com>
/* IP Fragmentation */
struct
{
/* IP Fragmentation */
struct
{
+ u32 pad[2]; /* do not overlay w/ ip.adj_index[0,1] */
u16 header_offset;
u16 mtu;
u8 next_index;
u16 header_offset;
u16 mtu;
u8 next_index;
vnet_buffer (p)->sw_if_index[VLIB_RX];
vnet_buffer (b)->sw_if_index[VLIB_TX] =
vnet_buffer (p)->sw_if_index[VLIB_TX];
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
fip4 = (ip4_header_t *) (vlib_buffer_get_current (b) + offset);
//Copy offset and ip4 header
vnet_buffer (p)->sw_if_index[VLIB_RX];
vnet_buffer (b)->sw_if_index[VLIB_TX] =
vnet_buffer (p)->sw_if_index[VLIB_TX];
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,
clib_memcpy (vlib_buffer_get_current (b),
vlib_buffer_get_current (p), headers_len);
clib_memcpy (vlib_buffer_get_current (b) + headers_len,