Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_stacks/rack.c
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 11,849 Lines • ▼ Show 20 Lines | if (_ctf_drop_checks(to, m, th, tp, &tlen, &thflags, &drop_hdrlen, &ret_val, | ||||
&rack->r_ctl.challenge_ack_ts, | &rack->r_ctl.challenge_ack_ts, | ||||
&rack->r_ctl.challenge_ack_cnt)) { | &rack->r_ctl.challenge_ack_cnt)) { | ||||
return (ret_val); | return (ret_val); | ||||
} | } | ||||
/* | /* | ||||
* If new data are received on a connection after the user processes | * If new data are received on a connection after the user processes | ||||
* are gone, then RST the other end. | * are gone, then RST the other end. | ||||
*/ | */ | ||||
if ((so->so_state & SS_NOFDREF) && tlen) { | if ((tp->t_flags & TF_CLOSED) && tlen && | ||||
if (rack_check_data_after_close(m, tp, &tlen, th, so)) | rack_check_data_after_close(m, tp, &tlen, th, so)) | ||||
return (1); | return (1); | ||||
} | |||||
/* | /* | ||||
* If last ACK falls within this segment's sequence numbers, record | * If last ACK falls within this segment's sequence numbers, record | ||||
* its timestamp. NOTE: 1) That the test incorporates suggestions | * its timestamp. NOTE: 1) That the test incorporates suggestions | ||||
* from the latest proposal of the tcplw@cray.com list (Braden | * from the latest proposal of the tcplw@cray.com list (Braden | ||||
* 1993/04/26). 2) That updating only on newer timestamps interferes | * 1993/04/26). 2) That updating only on newer timestamps interferes | ||||
* with our earlier PAWS tests, so this check should be solely | * with our earlier PAWS tests, so this check should be solely | ||||
* predicated on the sequence space of this segment. 3) That we | * predicated on the sequence space of this segment. 3) That we | ||||
* modify the segment boundary check to be Last.ACK.Sent <= SEG.SEQ | * modify the segment boundary check to be Last.ACK.Sent <= SEG.SEQ | ||||
▲ Show 20 Lines • Show All 108 Lines • ▼ Show 20 Lines | if (_ctf_drop_checks(to, m, th, tp, &tlen, &thflags, &drop_hdrlen, &ret_val, | ||||
&rack->r_ctl.challenge_ack_ts, | &rack->r_ctl.challenge_ack_ts, | ||||
&rack->r_ctl.challenge_ack_cnt)) { | &rack->r_ctl.challenge_ack_cnt)) { | ||||
return (ret_val); | return (ret_val); | ||||
} | } | ||||
/* | /* | ||||
* If new data are received on a connection after the user processes | * If new data are received on a connection after the user processes | ||||
* are gone, then RST the other end. | * are gone, then RST the other end. | ||||
*/ | */ | ||||
if ((so->so_state & SS_NOFDREF) && tlen) { | if ((tp->t_flags & TF_CLOSED) && tlen && | ||||
if (rack_check_data_after_close(m, tp, &tlen, th, so)) | rack_check_data_after_close(m, tp, &tlen, th, so)) | ||||
return (1); | return (1); | ||||
} | |||||
/* | /* | ||||
* If last ACK falls within this segment's sequence numbers, record | * If last ACK falls within this segment's sequence numbers, record | ||||
* its timestamp. NOTE: 1) That the test incorporates suggestions | * its timestamp. NOTE: 1) That the test incorporates suggestions | ||||
* from the latest proposal of the tcplw@cray.com list (Braden | * from the latest proposal of the tcplw@cray.com list (Braden | ||||
* 1993/04/26). 2) That updating only on newer timestamps interferes | * 1993/04/26). 2) That updating only on newer timestamps interferes | ||||
* with our earlier PAWS tests, so this check should be solely | * with our earlier PAWS tests, so this check should be solely | ||||
* predicated on the sequence space of this segment. 3) That we | * predicated on the sequence space of this segment. 3) That we | ||||
* modify the segment boundary check to be Last.ACK.Sent <= SEG.SEQ | * modify the segment boundary check to be Last.ACK.Sent <= SEG.SEQ | ||||
▲ Show 20 Lines • Show All 94 Lines • ▼ Show 20 Lines | if (_ctf_drop_checks(to, m, th, tp, &tlen, &thflags, &drop_hdrlen, &ret_val, | ||||
&rack->r_ctl.challenge_ack_ts, | &rack->r_ctl.challenge_ack_ts, | ||||
&rack->r_ctl.challenge_ack_cnt)) { | &rack->r_ctl.challenge_ack_cnt)) { | ||||
return (ret_val); | return (ret_val); | ||||
} | } | ||||
/* | /* | ||||
* If new data are received on a connection after the user processes | * If new data are received on a connection after the user processes | ||||
* are gone, then RST the other end. | * are gone, then RST the other end. | ||||
*/ | */ | ||||
if ((so->so_state & SS_NOFDREF) && tlen) { | if ((tp->t_flags & TF_CLOSED) && tlen && | ||||
if (rack_check_data_after_close(m, tp, &tlen, th, so)) | rack_check_data_after_close(m, tp, &tlen, th, so)) | ||||
return (1); | return (1); | ||||
} | |||||
/* | /* | ||||
* If last ACK falls within this segment's sequence numbers, record | * If last ACK falls within this segment's sequence numbers, record | ||||
* its timestamp. NOTE: 1) That the test incorporates suggestions | * its timestamp. NOTE: 1) That the test incorporates suggestions | ||||
* from the latest proposal of the tcplw@cray.com list (Braden | * from the latest proposal of the tcplw@cray.com list (Braden | ||||
* 1993/04/26). 2) That updating only on newer timestamps interferes | * 1993/04/26). 2) That updating only on newer timestamps interferes | ||||
* with our earlier PAWS tests, so this check should be solely | * with our earlier PAWS tests, so this check should be solely | ||||
* predicated on the sequence space of this segment. 3) That we | * predicated on the sequence space of this segment. 3) That we | ||||
* modify the segment boundary check to be Last.ACK.Sent <= SEG.SEQ | * modify the segment boundary check to be Last.ACK.Sent <= SEG.SEQ | ||||
▲ Show 20 Lines • Show All 95 Lines • ▼ Show 20 Lines | if (_ctf_drop_checks(to, m, th, tp, &tlen, &thflags, &drop_hdrlen, &ret_val, | ||||
&rack->r_ctl.challenge_ack_ts, | &rack->r_ctl.challenge_ack_ts, | ||||
&rack->r_ctl.challenge_ack_cnt)) { | &rack->r_ctl.challenge_ack_cnt)) { | ||||
return (ret_val); | return (ret_val); | ||||
} | } | ||||
/* | /* | ||||
* If new data are received on a connection after the user processes | * If new data are received on a connection after the user processes | ||||
* are gone, then RST the other end. | * are gone, then RST the other end. | ||||
*/ | */ | ||||
if ((so->so_state & SS_NOFDREF) && | if ((tp->t_flags & TF_CLOSED) && tlen && | ||||
tlen) { | rack_check_data_after_close(m, tp, &tlen, th, so)) | ||||
if (rack_check_data_after_close(m, tp, &tlen, th, so)) | |||||
return (1); | return (1); | ||||
} | |||||
/* | /* | ||||
* If last ACK falls within this segment's sequence numbers, record | * If last ACK falls within this segment's sequence numbers, record | ||||
* its timestamp. NOTE: 1) That the test incorporates suggestions | * its timestamp. NOTE: 1) That the test incorporates suggestions | ||||
* from the latest proposal of the tcplw@cray.com list (Braden | * from the latest proposal of the tcplw@cray.com list (Braden | ||||
* 1993/04/26). 2) That updating only on newer timestamps interferes | * 1993/04/26). 2) That updating only on newer timestamps interferes | ||||
* with our earlier PAWS tests, so this check should be solely | * with our earlier PAWS tests, so this check should be solely | ||||
* predicated on the sequence space of this segment. 3) That we | * predicated on the sequence space of this segment. 3) That we | ||||
* modify the segment boundary check to be Last.ACK.Sent <= SEG.SEQ | * modify the segment boundary check to be Last.ACK.Sent <= SEG.SEQ | ||||
▲ Show 20 Lines • Show All 8,539 Lines • Show Last 20 Lines |