aboutsummaryrefslogtreecommitdiffstats
path: root/man7/tcp.7
diff options
context:
space:
mode:
authorMichael Kerrisk <mtk.manpages@gmail.com>2014-01-23 04:27:29 +0100
committerMichael Kerrisk <mtk.manpages@gmail.com>2014-01-23 15:36:03 +0100
commit396fe1bcebb0022e36b79f4060547ba04a04f6bf (patch)
tree98a3fd8e86a52f4591da18741f00947c734d3a29 /man7/tcp.7
parent5d4f676f68671a0b87c4482fdbc120bf0c67e0be (diff)
downloadman-pages-396fe1bcebb0022e36b79f4060547ba04a04f6bf.tar.gz
tcp.7: Document TCP_USER_TIMEOUT
Text slightly adapted from Jerry Chu's (excellent) commit message (commit dca43c75e7e545694a9dd6288553f55c53e2a3a3). Cowritten-by: Jerry Chu <hkchu@google.com> Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
Diffstat (limited to 'man7/tcp.7')
-rw-r--r--man7/tcp.750
1 files changed, 46 insertions, 4 deletions
diff --git a/man7/tcp.7 b/man7/tcp.7
index 4b567200e6..94ddceb6f8 100644
--- a/man7/tcp.7
+++ b/man7/tcp.7
@@ -46,9 +46,6 @@
.\" TCP_THIN_DUPACK (2.6.34)
.\" commit 7e38017557bc0b87434d184f8804cadb102bb903
.\" Author: Andreas Petlund <apetlund@simula.no>
-.\" TCP_USER_TIMEOUT (new in 2.6.37)
-.\" Author: Jerry Chu <hkchu@google.com>
-.\" commit dca43c75e7e545694a9dd6288553f55c53e2a3a3
.\" TCP_REPAIR (3.5)
.\" commit ee9952831cfd0bbe834f4a26489d7dce74582e37
.\" Author: Pavel Emelyanov <xemul@parallels.com>
@@ -70,7 +67,7 @@
.\" commit c9bee3b7fdecb0c1d070c7b54113b3bdfb9a3d36
.\" Author: Eric Dumazet <edumazet@google.com>
.\"
-.TH TCP 7 2013-12-12 "Linux" "Linux Programmer's Manual"
+.TH TCP 7 2014-01-23 "Linux" "Linux Programmer's Manual"
.SH NAME
tcp \- TCP protocol
.SH SYNOPSIS
@@ -994,6 +991,51 @@ aborting the attempt to connect.
It cannot exceed 255.
This option should not be used in code intended to be portable.
.TP
+.BR TCP_USER_TIMEOUT " (since Linux 2.6.37)"
+.\" commit dca43c75e7e545694a9dd6288553f55c53e2a3a3
+.\" Author: Jerry Chu <hkchu@google.com>
+.\" The following text taken nearly verbatim from Jerry Chu's (excellent)
+.\" commit message.
+.\"
+This option takes an
+.IR "unsigned int"
+as an argument.
+When the value is greater than 0,
+it specifies the maximum amount of time in imilliseconds that transmitted
+data may remain unacknowledged before TCP will forcibly close the
+corresponding connection and return
+.B ETIMEDOUT
+to the application.
+If the option value is specified as 0,
+TCP will to use the system default.
+
+Increasing user timeouts allows a TCP connection to survive extended
+periods without end-to-end connectivity.
+Decreasing user timeouts
+allows applications to "fail fast", if so desired.
+Otherwise, failure may take upto 20 minutes with
+the current system defaults in a normal WAN environment.
+
+This option can be set during any state of a TCP connection,
+but is only effective during the synchronized states of a connection
+(ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, and LAST-ACK).
+Moreover, when used with the TCP keepalive
+.RB ( SO_KEEPALIVE )
+option,
+.B TCP_USER_TIMEOUT
+will override keepalive to determine when to close a
+connection due to keepalive failure.
+
+The option has no effect on when TCP retransmits a packet,
+nor when a keepalive probe is sent.
+
+This option, like many others, will be inherited by the socket returned by
+.BR accept (2),
+if it was set on the listening socket.
+
+Further details on the user timeout" feature can be found in
+RFC\ 793 and RFC\ 5482 ("TCP User Timeout Option").
+.TP
.BR TCP_WINDOW_CLAMP " (since Linux 2.4)"
.\" Precisely: since 2.3.41
Bound the size of the advertised window to this value.