test(tcp): add coverage for remote_has_sack in SYN-SENT state

This commit is contained in:
XOR-op 2024-09-22 17:50:38 -04:00
parent 805eed8447
commit ffcb62e119

View File

@ -3725,6 +3725,63 @@ mod test {
assert_eq!(s.state, State::Closed);
}
#[test]
fn test_syn_sent_sack_option() {
let mut s = socket_syn_sent();
recv!(
s,
[TcpRepr {
control: TcpControl::Syn,
seq_number: LOCAL_SEQ,
ack_number: None,
max_seg_size: Some(BASE_MSS),
window_scale: Some(0),
sack_permitted: true,
..RECV_TEMPL
}]
);
send!(
s,
TcpRepr {
control: TcpControl::Syn,
seq_number: REMOTE_SEQ,
ack_number: Some(LOCAL_SEQ + 1),
max_seg_size: Some(BASE_MSS - 80),
window_scale: Some(0),
sack_permitted: true,
..SEND_TEMPL
}
);
assert!(s.remote_has_sack);
let mut s = socket_syn_sent();
recv!(
s,
[TcpRepr {
control: TcpControl::Syn,
seq_number: LOCAL_SEQ,
ack_number: None,
max_seg_size: Some(BASE_MSS),
window_scale: Some(0),
sack_permitted: true,
..RECV_TEMPL
}]
);
send!(
s,
TcpRepr {
control: TcpControl::Syn,
seq_number: REMOTE_SEQ,
ack_number: Some(LOCAL_SEQ + 1),
max_seg_size: Some(BASE_MSS - 80),
window_scale: Some(0),
sack_permitted: false,
..SEND_TEMPL
}
);
assert!(!s.remote_has_sack);
}
#[test]
fn test_syn_sent_win_scale_buffers() {
for (buffer_size, shift_amt) in &[