From fb6c75293cb82501f80975c6a46365ab14d7a85a Mon Sep 17 00:00:00 2001 From: Sirshak das Date: Wed, 6 Mar 2019 09:51:02 -0500 Subject: [PATCH] sctp chunk_len fix total_length_not_including_first_buffer should only be used when VLIB_BUFFER_TOTAL_LENGTH_VALID is set, if not it uses stale data from previous session_chain_tail calculation to set data/chunk len. Change-Id: I9802341e522cf9b18d0aef817f0047b76945782e Signed-off-by: Sirshak Das Reviewed-by: Honnappa Nagarahalli --- src/vnet/sctp/sctp_output.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vnet/sctp/sctp_output.c b/src/vnet/sctp/sctp_output.c index 8863012c041..e76f67b3e3e 100644 --- a/src/vnet/sctp/sctp_output.c +++ b/src/vnet/sctp/sctp_output.c @@ -1334,8 +1334,10 @@ static void sctp_push_hdr_i (sctp_connection_t * sctp_conn, vlib_buffer_t * b, sctp_state_t next_state) { - u16 data_len = - b->current_length + b->total_length_not_including_first_buffer; + u16 data_len = b->current_length; + + if (b->flags & VLIB_BUFFER_TOTAL_LENGTH_VALID) + data_len += b->total_length_not_including_first_buffer; ASSERT (!b->total_length_not_including_first_buffer || (b->flags & VLIB_BUFFER_NEXT_PRESENT)); -- 2.16.6