From 757de9873bbaf2d21d107da42c6bbeb2804c7fcc Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Tue, 26 Nov 2019 18:43:25 -0800 Subject: ip: init l3_hdr_offset when pushing an ip4 header Type: fix Change-Id: I87503b9a981724b1f3ff1c45a4a5f7a43024ca76 Signed-off-by: Florin Coras --- src/vnet/ip/ip4.h | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/vnet/ip/ip4.h b/src/vnet/ip/ip4.h index 2a3743febb3..339b84b1b62 100644 --- a/src/vnet/ip/ip4.h +++ b/src/vnet/ip/ip4.h @@ -401,16 +401,14 @@ vlib_buffer_push_ip4 (vlib_main_t * vm, vlib_buffer_t * b, ih->src_address.as_u32 = src->as_u32; ih->dst_address.as_u32 = dst->as_u32; + vnet_buffer (b)->l3_hdr_offset = (u8 *) ih - b->data; + b->flags |= VNET_BUFFER_F_IS_IP4 | VNET_BUFFER_F_L3_HDR_OFFSET_VALID; + /* Offload ip4 header checksum generation */ if (csum_offload) { ih->checksum = 0; - b->flags |= VNET_BUFFER_F_OFFLOAD_IP_CKSUM | VNET_BUFFER_F_IS_IP4; - vnet_buffer (b)->l3_hdr_offset = (u8 *) ih - b->data; - vnet_buffer (b)->l4_hdr_offset = vnet_buffer (b)->l3_hdr_offset + - sizeof (*ih); - b->flags |= - VNET_BUFFER_F_L3_HDR_OFFSET_VALID | VNET_BUFFER_F_L4_HDR_OFFSET_VALID; + b->flags |= VNET_BUFFER_F_OFFLOAD_IP_CKSUM; } else ih->checksum = ip4_header_checksum (ih); -- cgit 1.2.3-korg