diff options
| author | Jonathan Lemon <jlemon@FreeBSD.org> | 1999-08-31 03:40:24 +0000 |
|---|---|---|
| committer | Jonathan Lemon <jlemon@FreeBSD.org> | 1999-08-31 03:40:24 +0000 |
| commit | ccb4d0c653df6d353647765616f0310ab2b7b02d (patch) | |
| tree | 71f706a36515c18f1db66e512685c9a6566b9197 /sys/netinet/tcp_timer.c | |
| parent | 46d6c355509c6d865ca6b743f3f6890b334c2290 (diff) | |
Notes
Diffstat (limited to 'sys/netinet/tcp_timer.c')
| -rw-r--r-- | sys/netinet/tcp_timer.c | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c index a4f3aad27fb0..74752b83d3ab 100644 --- a/sys/netinet/tcp_timer.c +++ b/sys/netinet/tcp_timer.c @@ -63,25 +63,50 @@ #include <netinet/tcp_debug.h> #endif +static int +sysctl_msec_to_ticks SYSCTL_HANDLER_ARGS +{ + int error, s, tt; + + tt = *(int *)oidp->oid_arg1; + s = tt * 1000 / hz; + + error = SYSCTL_OUT(req, &s, sizeof(int)); + if (error || !req->newptr) + return (error); + + error = SYSCTL_IN(req, &s, sizeof(int)); + if (error) + return (error); + + tt = s * hz / 1000; + if (tt == 0 && s > 0) + tt++; + + *(int *)oidp->oid_arg1 = tt; + return (0); +} + int tcp_keepinit; -SYSCTL_INT(_net_inet_tcp, TCPCTL_KEEPINIT, keepinit, - CTLFLAG_RW, &tcp_keepinit , 0, ""); +SYSCTL_PROC(_net_inet_tcp, TCPCTL_KEEPINIT, keepinit, CTLTYPE_INT|CTLFLAG_RW, + &tcp_keepinit, 0, sysctl_msec_to_ticks, "I", ""); int tcp_keepidle; -SYSCTL_INT(_net_inet_tcp, TCPCTL_KEEPIDLE, keepidle, - CTLFLAG_RW, &tcp_keepidle , 0, ""); +SYSCTL_PROC(_net_inet_tcp, TCPCTL_KEEPIDLE, keepidle, CTLTYPE_INT|CTLFLAG_RW, + &tcp_keepidle, 0, sysctl_msec_to_ticks, "I", ""); int tcp_keepintvl; -SYSCTL_INT(_net_inet_tcp, TCPCTL_KEEPINTVL, keepintvl, - CTLFLAG_RW, &tcp_keepintvl , 0, ""); +SYSCTL_PROC(_net_inet_tcp, TCPCTL_KEEPINTVL, keepintvl, CTLTYPE_INT|CTLFLAG_RW, + &tcp_keepintvl, 0, sysctl_msec_to_ticks, "I", ""); int tcp_delacktime; -SYSCTL_INT(_net_inet_tcp, TCPCTL_DELACKTIME, delacktime, CTLFLAG_RW, - &tcp_delacktime, 0, "Time before a delayed ACK is sent"); +SYSCTL_PROC(_net_inet_tcp, TCPCTL_DELACKTIME, delacktime, + CTLTYPE_INT|CTLFLAG_RW, &tcp_delacktime, 0, sysctl_msec_to_ticks, "I", + "Time before a delayed ACK is sent"); int tcp_msl; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, msl, CTLFLAG_RW, - &tcp_msl, 0, "Maximum segment lifetime"); +SYSCTL_PROC(_net_inet_tcp, OID_AUTO, msl, CTLTYPE_INT|CTLFLAG_RW, + &tcp_msl, 0, sysctl_msec_to_ticks, "I", "Maximum segment lifetime"); static int always_keepalive = 0; SYSCTL_INT(_net_inet_tcp, OID_AUTO, always_keepalive, CTLFLAG_RW, |
