From 45478933b21cf1bce028b757e1358936dd08380b Mon Sep 17 00:00:00 2001 From: shubing guo Date: Thu, 30 Aug 2018 11:09:49 +0800 Subject: [PATCH] VPP-1407: Fix the wrong length of udp header for buffer chains Change-Id: I1669faeac15dfb69e335a1e96b6da118dc1892c1 Signed-off-by: shubing guo --- src/vnet/udp/udp.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vnet/udp/udp.h b/src/vnet/udp/udp.h index 0382bc20d64..abf0d686d0a 100644 --- a/src/vnet/udp/udp.h +++ b/src/vnet/udp/udp.h @@ -254,12 +254,15 @@ always_inline void * vlib_buffer_push_udp (vlib_buffer_t * b, u16 sp, u16 dp, u8 offload_csum) { udp_header_t *uh; + u16 udp_len = sizeof (udp_header_t) + b->current_length; + if (PREDICT_FALSE (b->flags & VLIB_BUFFER_TOTAL_LENGTH_VALID)) + udp_len += b->total_length_not_including_first_buffer; uh = vlib_buffer_push_uninit (b, sizeof (udp_header_t)); uh->src_port = sp; uh->dst_port = dp; uh->checksum = 0; - uh->length = clib_host_to_net_u16 (b->current_length); + uh->length = clib_host_to_net_u16 (udp_len); if (offload_csum) { b->flags |= VNET_BUFFER_F_OFFLOAD_UDP_CKSUM; -- 2.16.6