Changeset View
Changeset View
Standalone View
Standalone View
head/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 6,527 Lines • ▼ Show 20 Lines | KASSERT(tp->t_state != TCPS_TIME_WAIT, ("%s: TCPS_TIME_WAIT", | ||||
TCP_LOG_EVENT(tp, th, &so->so_rcv, &so->so_snd, TCP_LOG_IN, 0, | TCP_LOG_EVENT(tp, th, &so->so_rcv, &so->so_snd, TCP_LOG_IN, 0, | ||||
tlen, &log, true); | tlen, &log, true); | ||||
} | } | ||||
if ((thflags & TH_SYN) && (thflags & TH_FIN) && V_drop_synfin) { | if ((thflags & TH_SYN) && (thflags & TH_FIN) && V_drop_synfin) { | ||||
way_out = 4; | way_out = 4; | ||||
goto done_with_input; | goto done_with_input; | ||||
} | } | ||||
/* | /* | ||||
* If a segment with the ACK-bit set arrives in the SYN-SENT state | |||||
* check SEQ.ACK first as described on page 66 of RFC 793, section 3.9. | |||||
*/ | |||||
if ((tp->t_state == TCPS_SYN_SENT) && (thflags & TH_ACK) && | |||||
(SEQ_LEQ(th->th_ack, tp->iss) || SEQ_GT(th->th_ack, tp->snd_max))) { | |||||
rack_do_dropwithreset(m, tp, th, BANDLIM_RST_OPENPORT, tlen); | |||||
return; | |||||
} | |||||
/* | |||||
* Segment received on connection. Reset idle time and keep-alive | * Segment received on connection. Reset idle time and keep-alive | ||||
* timer. XXX: This should be done after segment validation to | * timer. XXX: This should be done after segment validation to | ||||
* ignore broken/spoofed segs. | * ignore broken/spoofed segs. | ||||
*/ | */ | ||||
if (tp->t_idle_reduce && (tp->snd_max == tp->snd_una)) { | if (tp->t_idle_reduce && (tp->snd_max == tp->snd_una)) { | ||||
#ifdef NETFLIX_CWV | #ifdef NETFLIX_CWV | ||||
if ((tp->cwv_enabled) && | if ((tp->cwv_enabled) && | ||||
((tp->cwv_cwnd_valid == 0) && | ((tp->cwv_cwnd_valid == 0) && | ||||
▲ Show 20 Lines • Show All 2,617 Lines • Show Last 20 Lines |