William Allen Simpson 435cf559f0 TCPCT part 1d: define TCP cookie option, extend existing struct's
Data structures are carefully composed to require minimal additions.
For example, the struct tcp_options_received cookie_plus variable fits
between existing 16-bit and 8-bit variables, requiring no additional
space (taking alignment into consideration).  There are no additions to
tcp_request_sock, and only 1 pointer in tcp_sock.

This is a significantly revised implementation of an earlier (year-old)
patch that no longer applies cleanly, with permission of the original
author (Adam Langley):

    http://thread.gmane.org/gmane.linux.network/102586

The principle difference is using a TCP option to carry the cookie nonce,
instead of a user configured offset in the data.  This is more flexible and
less subject to user configuration error.  Such a cookie option has been
suggested for many years, and is also useful without SYN data, allowing
several related concepts to use the same extension option.

    "Re: SYN floods (was: does history repeat itself?)", September 9, 1996.
    http://www.merit.net/mail.archives/nanog/1996-09/msg00235.html

    "Re: what a new TCP header might look like", May 12, 1998.
    ftp://ftp.isi.edu/end2end/end2end-interest-1998.mail

These functions will also be used in subsequent patches that implement
additional features.

Requires:
   TCPCT part 1a: add request_values parameter for sending SYNACK
   TCPCT part 1b: generate Responder Cookie secret
   TCPCT part 1c: sysctl_tcp_cookie_size, socket option TCP_COOKIE_TRANSACTIONS

Signed-off-by: William.Allen.Simpson@gmail.com
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-12-02 22:07:25 -08:00
..
2009-11-02 08:43:45 -06:00
2009-08-05 10:42:58 -07:00
2009-11-04 05:06:25 -08:00
2009-09-01 17:40:57 -07:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-03-21 19:06:54 -07:00
2009-09-01 17:40:31 -07:00
2009-11-04 05:06:25 -08:00
2008-11-25 17:35:18 -08:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-10-18 18:52:53 -07:00
2009-11-13 20:46:58 -08:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-01-06 11:38:15 -07:00
2009-08-25 16:07:40 +02:00
2009-11-20 15:35:04 -08:00
2009-11-04 05:06:25 -08:00
2009-03-21 19:06:50 -07:00
2009-11-04 05:06:25 -08:00
2009-04-22 16:57:17 -04:00
2009-07-26 19:11:14 -07:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-04-27 02:45:02 -07:00
2009-11-10 20:54:38 -08:00
2009-10-07 16:39:43 -04:00
2009-11-29 00:24:59 -08:00