summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_input.c
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2012-02-05 16:53:02 +0000
committerglebius <glebius@FreeBSD.org>2012-02-05 16:53:02 +0000
commit4326beb059fb2e0786289b19b1bf9a8b7a2b824b (patch)
treedcb36bc519c1f170cc8c8a32ba0dd1c8c7acfc78 /sys/netinet/tcp_input.c
parent96baefc0cb3bd4bac8a5c692c335abaf29650d71 (diff)
downloadFreeBSD-src-4326beb059fb2e0786289b19b1bf9a8b7a2b824b.zip
FreeBSD-src-4326beb059fb2e0786289b19b1bf9a8b7a2b824b.tar.gz
Add new socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL and
TCP_KEEPCNT, that allow to control initial timeout, idle time, idle re-send interval and idle send count on a per-socket basis. Reviewed by: andre, bz, lstewart
Diffstat (limited to 'sys/netinet/tcp_input.c')
-rw-r--r--sys/netinet/tcp_input.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index db373cd..0fadf87 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -1446,7 +1446,7 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so,
*/
tp->t_rcvtime = ticks;
if (TCPS_HAVEESTABLISHED(tp->t_state))
- tcp_timer_activate(tp, TT_KEEP, tcp_keepidle);
+ tcp_timer_activate(tp, TT_KEEP, TP_KEEPIDLE(tp));
/*
* Unscale the window into a 32-bit value.
@@ -1889,7 +1889,8 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so,
} else {
tp->t_state = TCPS_ESTABLISHED;
cc_conn_init(tp);
- tcp_timer_activate(tp, TT_KEEP, tcp_keepidle);
+ tcp_timer_activate(tp, TT_KEEP,
+ TP_KEEPIDLE(tp));
}
} else {
/*
@@ -2293,7 +2294,7 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so,
} else {
tp->t_state = TCPS_ESTABLISHED;
cc_conn_init(tp);
- tcp_timer_activate(tp, TT_KEEP, tcp_keepidle);
+ tcp_timer_activate(tp, TT_KEEP, TP_KEEPIDLE(tp));
}
/*
* If segment contains data or ACK, will call tcp_reass()
@@ -2630,12 +2631,11 @@ process_ACK:
* compressed state.
*/
if (so->so_rcv.sb_state & SBS_CANTRCVMORE) {
- int timeout;
-
soisdisconnected(so);
- timeout = (tcp_fast_finwait2_recycle) ?
- tcp_finwait2_timeout : tcp_maxidle;
- tcp_timer_activate(tp, TT_2MSL, timeout);
+ tcp_timer_activate(tp, TT_2MSL,
+ (tcp_fast_finwait2_recycle ?
+ tcp_finwait2_timeout :
+ TP_MAXIDLE(tp)));
}
tp->t_state = TCPS_FIN_WAIT_2;
}
OpenPOWER on IntegriCloud