mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-29 11:54:38 +01:00
tcp: retire rstreason
With the latest changes, this variable and parameter for tcp_dropwithreset() is not needed anymore. It also makes it harder to introduce the usage of multiple counters for TCP again, which might open side channel attacks. No funtional changes intended. Reviewed by: rrs MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D51872
This commit is contained in:
1 parent
46f9056367
commit
463b5aed0d
6 files changed
+41
-58
No files matched your search
+7
-23
@@ -609,7 +609,6 @@ tcp_input_with_port(struct mbuf **mp, int *offp, int proto, uint16_t port)
|
||||
int tlen = 0, off;
|
||||
int drop_hdrlen;
|
||||
int thflags;
|
||||
int rstreason = 0; /* For badport_bandlim accounting purposes */
|
||||
int lookupflag;
|
||||
uint8_t iptos;
|
||||
struct m_tag *fwd_tag = NULL;
|
||||
@@ -921,7 +920,6 @@ findpcb:
|
||||
}
|
||||
closed_port = true;
|
||||
}
|
||||
rstreason = BANDLIM_TCP_RST;
|
||||
goto dropwithreset;
|
||||
}
|
||||
INP_LOCK_ASSERT(inp);
|
||||
@@ -1012,13 +1010,11 @@ findpcb:
|
||||
* down or it is in the CLOSED state. Either way we drop the
|
||||
* segment and send an appropriate response.
|
||||
*/
|
||||
rstreason = BANDLIM_TCP_RST;
|
||||
closed_port = true;
|
||||
goto dropwithreset;
|
||||
}
|
||||
|
||||
if ((tp->t_port != port) && (tp->t_state > TCPS_LISTEN)) {
|
||||
rstreason = BANDLIM_TCP_RST;
|
||||
closed_port = true;
|
||||
goto dropwithreset;
|
||||
}
|
||||
@@ -1134,7 +1130,6 @@ tfo_socket_result:
|
||||
V_tcp_sc_rst_sock_fail ?
|
||||
"sending RST" : "try again");
|
||||
if (V_tcp_sc_rst_sock_fail) {
|
||||
rstreason = BANDLIM_TCP_RST;
|
||||
goto dropwithreset;
|
||||
} else
|
||||
goto dropunlock;
|
||||
@@ -1201,7 +1196,6 @@ tfo_socket_result:
|
||||
s, __func__);
|
||||
syncache_badack(&inc, port); /* XXX: Not needed! */
|
||||
TCPSTAT_INC(tcps_badsyn);
|
||||
rstreason = BANDLIM_TCP_RST;
|
||||
goto dropwithreset;
|
||||
}
|
||||
/*
|
||||
@@ -1277,7 +1271,6 @@ tfo_socket_result:
|
||||
"Connection attempt to deprecated "
|
||||
"IPv6 address rejected\n",
|
||||
s, __func__);
|
||||
rstreason = BANDLIM_TCP_RST;
|
||||
goto dropwithreset;
|
||||
}
|
||||
}
|
||||
@@ -1398,8 +1391,7 @@ dropwithreset:
|
||||
* When blackholing do not respond with a RST but
|
||||
* completely ignore the segment and drop it.
|
||||
*/
|
||||
if (rstreason == BANDLIM_TCP_RST &&
|
||||
((!closed_port && V_blackhole == 3) ||
|
||||
if (((!closed_port && V_blackhole == 3) ||
|
||||
(closed_port &&
|
||||
((V_blackhole == 1 && (thflags & TH_SYN)) || V_blackhole > 1))) &&
|
||||
(V_blackhole_local || (
|
||||
@@ -1414,7 +1406,7 @@ dropwithreset:
|
||||
)))
|
||||
goto dropunlock;
|
||||
TCP_PROBE5(receive, NULL, tp, m, tp, th);
|
||||
tcp_dropwithreset(m, th, tp, tlen, rstreason);
|
||||
tcp_dropwithreset(m, th, tp, tlen);
|
||||
m = NULL; /* mbuf chain got consumed. */
|
||||
|
||||
dropunlock:
|
||||
@@ -1523,7 +1515,7 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th,
|
||||
uint16_t thflags;
|
||||
int acked, ourfinisacked, needoutput = 0;
|
||||
sackstatus_t sack_changed;
|
||||
int rstreason, todrop, win, incforsyn = 0;
|
||||
int todrop, win, incforsyn = 0;
|
||||
uint32_t tiwin;
|
||||
uint16_t nsegs;
|
||||
char *s;
|
||||
@@ -1568,7 +1560,6 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th,
|
||||
*/
|
||||
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))) {
|
||||
rstreason = BANDLIM_TCP_RST;
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
goto dropwithreset;
|
||||
}
|
||||
@@ -1984,7 +1975,6 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th,
|
||||
if ((thflags & TH_ACK) &&
|
||||
(SEQ_LEQ(th->th_ack, tp->snd_una) ||
|
||||
SEQ_GT(th->th_ack, tp->snd_max))) {
|
||||
rstreason = BANDLIM_TCP_RST;
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
goto dropwithreset;
|
||||
}
|
||||
@@ -1997,7 +1987,6 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th,
|
||||
* FIN, or a RST.
|
||||
*/
|
||||
if ((thflags & (TH_SYN|TH_ACK)) == (TH_SYN|TH_ACK)) {
|
||||
rstreason = BANDLIM_TCP_RST;
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
goto dropwithreset;
|
||||
} else if (thflags & TH_SYN) {
|
||||
@@ -2264,7 +2253,6 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th,
|
||||
* for the "LAND" DoS attack.
|
||||
*/
|
||||
if (tp->t_state == TCPS_SYN_RECEIVED && SEQ_LT(th->th_seq, tp->irs)) {
|
||||
rstreason = BANDLIM_TCP_RST;
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
goto dropwithreset;
|
||||
}
|
||||
@@ -2346,7 +2334,6 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th,
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_SERVER_RST);
|
||||
tp = tcp_close(tp);
|
||||
TCPSTAT_INC(tcps_rcvafterclose);
|
||||
rstreason = BANDLIM_TCP_RST;
|
||||
goto dropwithreset;
|
||||
}
|
||||
|
||||
@@ -3443,7 +3430,6 @@ dropafterack:
|
||||
if (tp->t_state == TCPS_SYN_RECEIVED && (thflags & TH_ACK) &&
|
||||
(SEQ_GT(tp->snd_una, th->th_ack) ||
|
||||
SEQ_GT(th->th_ack, tp->snd_max)) ) {
|
||||
rstreason = BANDLIM_TCP_RST;
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
goto dropwithreset;
|
||||
}
|
||||
@@ -3455,11 +3441,10 @@ dropafterack:
|
||||
return;
|
||||
|
||||
dropwithreset:
|
||||
tcp_dropwithreset(m, th, NULL, tlen);
|
||||
if (tp != NULL) {
|
||||
tcp_dropwithreset(m, th, tp, tlen, rstreason);
|
||||
INP_WUNLOCK(inp);
|
||||
} else
|
||||
tcp_dropwithreset(m, th, NULL, tlen, rstreason);
|
||||
}
|
||||
return;
|
||||
|
||||
drop:
|
||||
@@ -3479,8 +3464,7 @@ drop:
|
||||
* tp may be NULL.
|
||||
*/
|
||||
void
|
||||
tcp_dropwithreset(struct mbuf *m, struct tcphdr *th, struct tcpcb *tp,
|
||||
int tlen, int rstreason)
|
||||
tcp_dropwithreset(struct mbuf *m, struct tcphdr *th, struct tcpcb *tp, int tlen)
|
||||
{
|
||||
#ifdef INET
|
||||
struct ip *ip;
|
||||
@@ -3520,7 +3504,7 @@ tcp_dropwithreset(struct mbuf *m, struct tcphdr *th, struct tcpcb *tp,
|
||||
#endif
|
||||
|
||||
/* Perform bandwidth limiting. */
|
||||
if (badport_bandlim(rstreason) < 0)
|
||||
if (badport_bandlim(BANDLIM_TCP_RST) < 0)
|
||||
goto drop;
|
||||
|
||||
/* tcp_respond consumes the mbuf chain. */
|
||||
|
||||
@@ -7863,7 +7863,7 @@ nothing_left:
|
||||
/* tcp_close will kill the inp pre-log the Reset */
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_SERVER_RST);
|
||||
tp = tcp_close(tp);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset(m, tp, th, tlen);
|
||||
BBR_STAT_INC(bbr_dropped_af_data);
|
||||
return (1);
|
||||
}
|
||||
@@ -8763,7 +8763,7 @@ bbr_do_syn_sent(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
(SEQ_LEQ(th->th_ack, tp->iss) ||
|
||||
SEQ_GT(th->th_ack, tp->snd_max))) {
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
if ((thflags & (TH_ACK | TH_RST)) == (TH_ACK | TH_RST)) {
|
||||
@@ -8965,7 +8965,7 @@ bbr_do_syn_recv(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
(SEQ_LEQ(th->th_ack, tp->snd_una) ||
|
||||
SEQ_GT(th->th_ack, tp->snd_max))) {
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
if (tp->t_flags & TF_FASTOPEN) {
|
||||
@@ -8977,7 +8977,7 @@ bbr_do_syn_recv(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
*/
|
||||
if ((thflags & (TH_SYN | TH_ACK)) == (TH_SYN | TH_ACK)) {
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset(m, tp, th, tlen);
|
||||
return (1);
|
||||
} else if (thflags & TH_SYN) {
|
||||
/* non-initial SYN is ignored */
|
||||
@@ -9010,7 +9010,7 @@ bbr_do_syn_recv(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
*/
|
||||
if (SEQ_LT(th->th_seq, tp->irs)) {
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
if (ctf_drop_checks(to, m, th, tp, &tlen, &thflags, &drop_hdrlen, &ret_val)) {
|
||||
@@ -9288,7 +9288,7 @@ bbr_do_established(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
if (sbavail(&so->so_snd)) {
|
||||
if (ctf_progress_timeout_check(tp, true)) {
|
||||
bbr_log_progress_event(bbr, tp, tick, PROGRESS_DROP, __LINE__);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -9385,7 +9385,7 @@ bbr_do_close_wait(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
if (sbavail(&so->so_snd)) {
|
||||
if (ctf_progress_timeout_check(tp, true)) {
|
||||
bbr_log_progress_event(bbr, tp, tick, PROGRESS_DROP, __LINE__);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -9405,7 +9405,7 @@ close_now:
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_SERVER_RST);
|
||||
tp = tcp_close(tp);
|
||||
KMOD_TCPSTAT_INC(tcps_rcvafterclose);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, (*tlen));
|
||||
ctf_do_dropwithreset(m, tp, th, *tlen);
|
||||
return (1);
|
||||
}
|
||||
if (sbavail(&so->so_snd) == 0)
|
||||
@@ -9535,7 +9535,7 @@ bbr_do_fin_wait_1(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
if (sbavail(&so->so_snd)) {
|
||||
if (ctf_progress_timeout_check(tp, true)) {
|
||||
bbr_log_progress_event(bbr, tp, tick, PROGRESS_DROP, __LINE__);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -9637,7 +9637,7 @@ bbr_do_closing(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
if (sbavail(&so->so_snd)) {
|
||||
if (ctf_progress_timeout_check(tp, true)) {
|
||||
bbr_log_progress_event(bbr, tp, tick, PROGRESS_DROP, __LINE__);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -9739,7 +9739,7 @@ bbr_do_lastack(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
if (sbavail(&so->so_snd)) {
|
||||
if (ctf_progress_timeout_check(tp, true)) {
|
||||
bbr_log_progress_event(bbr, tp, tick, PROGRESS_DROP, __LINE__);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -9848,7 +9848,7 @@ bbr_do_fin_wait_2(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
if (sbavail(&so->so_snd)) {
|
||||
if (ctf_progress_timeout_check(tp, true)) {
|
||||
bbr_log_progress_event(bbr, tp, tick, PROGRESS_DROP, __LINE__);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -11510,7 +11510,7 @@ bbr_do_segment_nounlock(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th,
|
||||
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))) {
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
if (tiwin > bbr->r_ctl.rc_high_rwnd)
|
||||
|
||||
@@ -12038,7 +12038,7 @@ rack_process_ack(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
/* tcp_close will kill the inp pre-log the Reset */
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_SERVER_RST);
|
||||
tp = tcp_close(tp);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -12876,7 +12876,7 @@ rack_do_syn_sent(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
(SEQ_LEQ(th->th_ack, tp->iss) ||
|
||||
SEQ_GT(th->th_ack, tp->snd_max))) {
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
if ((thflags & (TH_ACK | TH_RST)) == (TH_ACK | TH_RST)) {
|
||||
@@ -13090,7 +13090,7 @@ rack_do_syn_recv(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
(SEQ_LEQ(th->th_ack, tp->snd_una) ||
|
||||
SEQ_GT(th->th_ack, tp->snd_max))) {
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
if (tp->t_flags & TF_FASTOPEN) {
|
||||
@@ -13103,7 +13103,7 @@ rack_do_syn_recv(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
*/
|
||||
if ((thflags & (TH_SYN | TH_ACK)) == (TH_SYN | TH_ACK)) {
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset(m, tp, th, tlen);
|
||||
return (1);
|
||||
} else if (thflags & TH_SYN) {
|
||||
/* non-initial SYN is ignored */
|
||||
@@ -13137,7 +13137,7 @@ rack_do_syn_recv(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
*/
|
||||
if (SEQ_LT(th->th_seq, tp->irs)) {
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
if (ctf_drop_checks(to, m, th, tp, &tlen, &thflags, &drop_hdrlen, &ret_val)) {
|
||||
@@ -13400,7 +13400,7 @@ rack_do_established(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
if (sbavail(&so->so_snd)) {
|
||||
if (ctf_progress_timeout_check(tp, true)) {
|
||||
rack_log_progress_event(rack, tp, tick, PROGRESS_DROP, __LINE__);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -13496,7 +13496,7 @@ rack_do_close_wait(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
if (ctf_progress_timeout_check(tp, true)) {
|
||||
rack_log_progress_event((struct tcp_rack *)tp->t_fb_ptr,
|
||||
tp, tick, PROGRESS_DROP, __LINE__);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -13518,7 +13518,7 @@ rack_check_data_after_close(struct mbuf *m,
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_SERVER_RST);
|
||||
tp = tcp_close(tp);
|
||||
KMOD_TCPSTAT_INC(tcps_rcvafterclose);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, (*tlen));
|
||||
ctf_do_dropwithreset(m, tp, th, *tlen);
|
||||
return (1);
|
||||
}
|
||||
if (sbavail(&so->so_snd) == 0)
|
||||
@@ -13646,7 +13646,7 @@ rack_do_fin_wait_1(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
if (ctf_progress_timeout_check(tp, true)) {
|
||||
rack_log_progress_event((struct tcp_rack *)tp->t_fb_ptr,
|
||||
tp, tick, PROGRESS_DROP, __LINE__);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -13747,7 +13747,7 @@ rack_do_closing(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
if (ctf_progress_timeout_check(tp, true)) {
|
||||
rack_log_progress_event((struct tcp_rack *)tp->t_fb_ptr,
|
||||
tp, tick, PROGRESS_DROP, __LINE__);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -13849,7 +13849,7 @@ rack_do_lastack(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
if (ctf_progress_timeout_check(tp, true)) {
|
||||
rack_log_progress_event((struct tcp_rack *)tp->t_fb_ptr,
|
||||
tp, tick, PROGRESS_DROP, __LINE__);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -13953,7 +13953,7 @@ rack_do_fin_wait_2(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
if (ctf_progress_timeout_check(tp, true)) {
|
||||
rack_log_progress_event((struct tcp_rack *)tp->t_fb_ptr,
|
||||
tp, tick, PROGRESS_DROP, __LINE__);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset_conn(m, tp, th, tlen);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
@@ -16653,7 +16653,7 @@ rack_do_segment_nounlock(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th,
|
||||
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))) {
|
||||
tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT);
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset(m, tp, th, tlen);
|
||||
#ifdef TCP_ACCOUNTING
|
||||
sched_unpin();
|
||||
#endif
|
||||
|
||||
@@ -507,9 +507,9 @@ ctf_flight_size(struct tcpcb *tp, uint32_t rc_sacked)
|
||||
|
||||
void
|
||||
ctf_do_dropwithreset(struct mbuf *m, struct tcpcb *tp, struct tcphdr *th,
|
||||
int32_t rstreason, int32_t tlen)
|
||||
int32_t tlen)
|
||||
{
|
||||
tcp_dropwithreset(m, th, tp, tlen, rstreason);
|
||||
tcp_dropwithreset(m, th, tp, tlen);
|
||||
if (tp != NULL)
|
||||
INP_WUNLOCK(tptoinpcb(tp));
|
||||
}
|
||||
@@ -670,7 +670,7 @@ ctf_do_dropafterack(struct mbuf *m, struct tcpcb *tp, struct tcphdr *th, int32_t
|
||||
(SEQ_GT(tp->snd_una, th->th_ack) ||
|
||||
SEQ_GT(th->th_ack, tp->snd_max))) {
|
||||
*ret_val = 1;
|
||||
ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen);
|
||||
ctf_do_dropwithreset(m, tp, th, tlen);
|
||||
return;
|
||||
} else
|
||||
*ret_val = 0;
|
||||
@@ -864,10 +864,10 @@ ctf_calc_rwin(struct socket *so, struct tcpcb *tp)
|
||||
|
||||
void
|
||||
ctf_do_dropwithreset_conn(struct mbuf *m, struct tcpcb *tp, struct tcphdr *th,
|
||||
int32_t rstreason, int32_t tlen)
|
||||
int32_t tlen)
|
||||
{
|
||||
|
||||
tcp_dropwithreset(m, th, tp, tlen, rstreason);
|
||||
tcp_dropwithreset(m, th, tp, tlen);
|
||||
tp = tcp_drop(tp, ETIMEDOUT);
|
||||
if (tp)
|
||||
INP_WUNLOCK(tptoinpcb(tp));
|
||||
|
||||
@@ -101,7 +101,7 @@ ctf_do_dropafterack(struct mbuf *m, struct tcpcb *tp,
|
||||
|
||||
void
|
||||
ctf_do_dropwithreset(struct mbuf *m, struct tcpcb *tp,
|
||||
struct tcphdr *th, int32_t rstreason, int32_t tlen);
|
||||
struct tcphdr *th, int32_t tlen);
|
||||
void
|
||||
ctf_do_drop(struct mbuf *m, struct tcpcb *tp);
|
||||
|
||||
@@ -125,7 +125,7 @@ ctf_calc_rwin(struct socket *so, struct tcpcb *tp);
|
||||
|
||||
void
|
||||
ctf_do_dropwithreset_conn(struct mbuf *m, struct tcpcb *tp, struct tcphdr *th,
|
||||
int32_t rstreason, int32_t tlen);
|
||||
int32_t tlen);
|
||||
|
||||
uint32_t
|
||||
ctf_fixed_maxseg(struct tcpcb *tp);
|
||||
|
||||
@@ -1379,8 +1379,7 @@ int tcp_reass(struct tcpcb *, struct tcphdr *, tcp_seq *, int *,
|
||||
void tcp_reass_global_init(void);
|
||||
void tcp_reass_flush(struct tcpcb *);
|
||||
void tcp_dooptions(struct tcpopt *, u_char *, int, int);
|
||||
void tcp_dropwithreset(struct mbuf *, struct tcphdr *,
|
||||
struct tcpcb *, int, int);
|
||||
void tcp_dropwithreset(struct mbuf *, struct tcphdr *, struct tcpcb *, int);
|
||||
void tcp_pulloutofband(struct socket *,
|
||||
struct tcphdr *, struct mbuf *, int);
|
||||
void tcp_xmit_timer(struct tcpcb *, int);
|
||||
|
||||
Reference in new issue
Block a user