sb->last_sacked_bytes);
TCP_TEST ((sb->last_bytes_delivered == 0), "last bytes delivered %d",
sb->last_bytes_delivered);
+ /* Hole should be split in 2 lost holes that add up to 300 */
TCP_TEST ((sb->lost_bytes == 300), "lost bytes %u", sb->lost_bytes);
+ TCP_TEST ((sb->reorder == 7), "reorder %u", sb->reorder);
/*
* Ack [100 300] in two steps
sb->last_sacked_bytes);
TCP_TEST ((sb->last_bytes_delivered == 0), "last bytes delivered %d",
sb->last_bytes_delivered);
- TCP_TEST ((sb->lost_bytes == 200), "lost bytes %u", sb->lost_bytes);
+ /* No bytes lost because of reorder */
+ TCP_TEST ((sb->lost_bytes == 0), "lost bytes %u", sb->lost_bytes);
+ TCP_TEST ((sb->reorder == 7), "reorder %u", sb->reorder);
TCP_TEST ((!sb->is_reneging), "is not reneging");
/*
TCP_TEST ((sb->rxt_sacked == 300), "last rxt sacked bytes %d",
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;
}