Jerry Chu 1046716368 tcp: TCP Fast Open Server - header & support functions
This patch adds all the necessary data structure and support
functions to implement TFO server side. It also documents a number
of flags for the sysctl_tcp_fastopen knob, and adds a few Linux
extension MIBs.

In addition, it includes the following:

1. a new TCP_FASTOPEN socket option an application must call to
supply a max backlog allowed in order to enable TFO on its listener.

2. A number of key data structures:
"fastopen_rsk" in tcp_sock - for a big socket to access its
request_sock for retransmission and ack processing purpose. It is
non-NULL iff 3WHS not completed.

"fastopenq" in request_sock_queue - points to a per Fast Open
listener data structure "fastopen_queue" to keep track of qlen (# of
outstanding Fast Open requests) and max_qlen, among other things.

"listener" in tcp_request_sock - to point to the original listener
for book-keeping purpose, i.e., to maintain qlen against max_qlen
as part of defense against IP spoofing attack.

3. various data structure and functions, many in tcp_fastopen.c, to
support server side Fast Open cookie operations, including
/proc/sys/net/ipv4/tcp_fastopen_key to allow manual rekeying.

Signed-off-by: H.K. Jerry Chu <hkchu@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-08-31 20:02:18 -04:00
..
2011-09-27 18:08:04 +02:00
2012-04-03 13:09:18 +02:00
2011-09-27 18:08:04 +02:00
2012-06-18 13:42:03 +02:00
2011-03-31 11:26:23 -03:00
2012-07-31 08:16:22 -06:00
2012-07-18 18:35:57 -07:00
2011-03-31 11:26:23 -03:00
2012-07-09 16:42:11 -04:00
2011-09-27 18:08:04 +02:00
2011-11-02 16:07:02 -07:00
2012-08-01 10:42:26 -07:00
2011-03-31 11:26:23 -03:00
2012-07-24 23:20:40 -04:00
2011-09-27 18:08:04 +02:00
2012-08-21 16:45:03 -07:00
2012-03-16 20:35:01 +00:00
2011-03-31 11:26:23 -03:00
2012-06-03 12:05:50 +02:00
2012-07-29 21:11:05 -03:00
2011-03-31 11:26:23 -03:00
2011-09-27 18:08:04 +02:00
2011-03-07 13:20:05 -08:00
2011-09-27 18:08:04 +02:00
2012-02-28 16:05:06 +01:00
2011-09-27 18:08:04 +02:00
2011-03-31 11:26:23 -03:00
2010-07-19 10:56:54 +02:00
2012-07-31 08:16:23 -06:00
2012-01-02 13:04:55 +01:00