tcp: fix sack block validation on wrap
Type: fix Fixes: 487507f Ticket: VPP-1879 Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ia9813ae09d14111dc8edac0fa6ab082e13ab6e2e (cherry picked from commit 3b9540966f877ae67d374cab334c31bd6e3f8c8b)
This commit is contained in:
Florin Coras
committed by
Florin Coras
parent
11974e5f5a
commit
89c12dbe23
@ -637,6 +637,32 @@ tcp_test_sack_rx (vlib_main_t * vm, unformat_input_t * input)
|
|||||||
TCP_TEST ((sb->rxt_sacked == 300), "last rxt sacked bytes %d",
|
TCP_TEST ((sb->rxt_sacked == 300), "last rxt sacked bytes %d",
|
||||||
sb->rxt_sacked);
|
sb->rxt_sacked);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Restart
|
||||||
|
*/
|
||||||
|
scoreboard_clear (sb);
|
||||||
|
vec_reset_length (tc->rcv_opts.sacks);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Broken sacks:
|
||||||
|
* block.start > snd_nxt
|
||||||
|
* && block.start < blk.end
|
||||||
|
* && block.end <= snd_nxt
|
||||||
|
*/
|
||||||
|
tc->flags = 0;
|
||||||
|
block.start = 2147483647;
|
||||||
|
block.end = 4294967295;
|
||||||
|
vec_add1 (tc->rcv_opts.sacks, block);
|
||||||
|
tc->snd_una = tc->snd_nxt = 1969067947;
|
||||||
|
|
||||||
|
tcp_rcv_sacks (tc, tc->snd_una);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Clear
|
||||||
|
*/
|
||||||
|
scoreboard_clear (sb);
|
||||||
|
vec_reset_length (tc->rcv_opts.sacks);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -326,7 +326,9 @@ tcp_rcv_sacks (tcp_connection_t * tc, u32 ack)
|
|||||||
{
|
{
|
||||||
if (seq_lt (blk->start, blk->end)
|
if (seq_lt (blk->start, blk->end)
|
||||||
&& seq_gt (blk->start, tc->snd_una)
|
&& seq_gt (blk->start, tc->snd_una)
|
||||||
&& seq_gt (blk->start, ack) && seq_leq (blk->end, tc->snd_nxt))
|
&& seq_gt (blk->start, ack)
|
||||||
|
&& seq_lt (blk->start, tc->snd_nxt)
|
||||||
|
&& seq_leq (blk->end, tc->snd_nxt))
|
||||||
{
|
{
|
||||||
blk++;
|
blk++;
|
||||||
continue;
|
continue;
|
||||||
|
Reference in New Issue
Block a user