X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Ftcp%2Ftcp_pg.c;h=07bdb113fd0dfa44fb4d9d7310e447f2e8e0b756;hb=c5df8c71c;hp=3be4592c6799b1878795379b0363994d15c6eaaf;hpb=636815199a1f359fdd0da706985a74eca95254da;p=vpp.git diff --git a/src/vnet/tcp/tcp_pg.c b/src/vnet/tcp/tcp_pg.c index 3be4592c679..07bdb113fd0 100644 --- a/src/vnet/tcp/tcp_pg.c +++ b/src/vnet/tcp/tcp_pg.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Cisco and/or its affiliates. + * Copyright (c) 2016-2019 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: @@ -77,7 +77,11 @@ tcp_pg_edit_function (pg_main_t * pg, ASSERT (p0->current_data == 0); ip0 = (void *) (p0->data + ip_offset); tcp0 = (void *) (p0->data + tcp_offset); - tcp_len0 = clib_net_to_host_u16 (ip0->length) - sizeof (ip0[0]); + /* if IP length has been specified, then calculate the length based on buffer */ + if (ip0->length == 0) + tcp_len0 = vlib_buffer_length_in_chain (vm, p0) - tcp_offset; + else + tcp_len0 = clib_net_to_host_u16 (ip0->length) - tcp_offset; /* Initialize checksum with header. */ if (BITS (sum0) == 32)