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.
@@ -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));
