Skip to content

Commit ffcb62e

Browse files
committed
test(tcp): add coverage for remote_has_sack in SYN-SENT state
1 parent 805eed8 commit ffcb62e

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

src/socket/tcp.rs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3725,6 +3725,63 @@ mod test {
37253725
assert_eq!(s.state, State::Closed);
37263726
}
37273727

3728+
#[test]
3729+
fn test_syn_sent_sack_option() {
3730+
let mut s = socket_syn_sent();
3731+
recv!(
3732+
s,
3733+
[TcpRepr {
3734+
control: TcpControl::Syn,
3735+
seq_number: LOCAL_SEQ,
3736+
ack_number: None,
3737+
max_seg_size: Some(BASE_MSS),
3738+
window_scale: Some(0),
3739+
sack_permitted: true,
3740+
..RECV_TEMPL
3741+
}]
3742+
);
3743+
send!(
3744+
s,
3745+
TcpRepr {
3746+
control: TcpControl::Syn,
3747+
seq_number: REMOTE_SEQ,
3748+
ack_number: Some(LOCAL_SEQ + 1),
3749+
max_seg_size: Some(BASE_MSS - 80),
3750+
window_scale: Some(0),
3751+
sack_permitted: true,
3752+
..SEND_TEMPL
3753+
}
3754+
);
3755+
assert!(s.remote_has_sack);
3756+
3757+
let mut s = socket_syn_sent();
3758+
recv!(
3759+
s,
3760+
[TcpRepr {
3761+
control: TcpControl::Syn,
3762+
seq_number: LOCAL_SEQ,
3763+
ack_number: None,
3764+
max_seg_size: Some(BASE_MSS),
3765+
window_scale: Some(0),
3766+
sack_permitted: true,
3767+
..RECV_TEMPL
3768+
}]
3769+
);
3770+
send!(
3771+
s,
3772+
TcpRepr {
3773+
control: TcpControl::Syn,
3774+
seq_number: REMOTE_SEQ,
3775+
ack_number: Some(LOCAL_SEQ + 1),
3776+
max_seg_size: Some(BASE_MSS - 80),
3777+
window_scale: Some(0),
3778+
sack_permitted: false,
3779+
..SEND_TEMPL
3780+
}
3781+
);
3782+
assert!(!s.remote_has_sack);
3783+
}
3784+
37283785
#[test]
37293786
fn test_syn_sent_win_scale_buffers() {
37303787
for (buffer_size, shift_amt) in &[

0 commit comments

Comments
 (0)