This is a straightforward re-implementation of an earlier (year-old) patch that no longer applies cleanly, with permission of the original author (Adam Langley). The patch was previously reviewed: 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 As suggested, the CONFIG_ was replaced by a sysctl (tcp_cookie_size) to turn on and off the cookie option default globally. These functions will also be used in subsequent patches that implement additional features. --- include/linux/tcp.h | 92 +++++++++++++++++-- include/net/tcp.h | 48 +++++++++- net/ipv4/sysctl_net_ipv4.c | 8 ++ net/ipv4/tcp.c | 97 +++++++++++++++++++- net/ipv4/tcp_input.c | 38 ++++++++- net/ipv4/tcp_ipv4.c | 54 ++++++++++- net/ipv4/tcp_minisocks.c | 32 +++++- net/ipv4/tcp_output.c | 220 +++++++++++++++++++++++++++++++++++++++++--- net/ipv6/tcp_ipv6.c | 35 +++++++- 9 files changed, 580 insertions(+), 44 deletions(-)