From: Kingwel Xie Date: Thu, 11 Oct 2018 00:51:59 +0000 (-0400) Subject: pg: udp length & checsum issue X-Git-Tag: v19.04-rc0~560 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F30%2F15230%2F3;p=vpp.git pg: udp length & checsum issue if udp length is specified, then use this length to calculate udp checksum otherwise, use length from vlib_buffer Change-Id: I5304a60d5d429993d0524b864b65ec503775412d Signed-off-by: Kingwel Xie --- diff --git a/src/vnet/udp/udp_pg.c b/src/vnet/udp/udp_pg.c index c9d8d38ca4a..a81a9d2ed40 100644 --- a/src/vnet/udp/udp_pg.c +++ b/src/vnet/udp/udp_pg.c @@ -68,12 +68,12 @@ udp_pg_edit_function_inline (pg_main_t * pg, ip0 = (void *) (p0->data + ip_offset); udp0 = (void *) (p0->data + udp_offset); - udp_len0 = clib_net_to_host_u16 (ip0->length) - sizeof (ip0[0]); + udp_len0 = vlib_buffer_length_in_chain (vm, p0) - udp_offset; if (flags & UDP_PG_EDIT_LENGTH) - udp0->length = - clib_net_to_host_u16 (vlib_buffer_length_in_chain (vm, p0) - - ip_offset); + udp0->length = clib_host_to_net_u16 (udp_len0); + else + udp_len0 = clib_host_to_net_u16 (udp0->length); /* Initialize checksum with header. */ if (flags & UDP_PG_EDIT_CHECKSUM)