diff options
author | William Allen Simpson <william.allen.simpson@gmail.com> | 2009-12-02 13:14:19 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-12-03 01:07:24 -0500 |
commit | 519855c508b9a17878c0977a3cdefc09b59b30df (patch) | |
tree | df6840c5c1560a84cb777b1855ec22c90c3df8d9 /net/ipv4 | |
parent | da5c78c82629a167794436e4306b4cf1faddea90 (diff) |
TCPCT part 1c: sysctl_tcp_cookie_size, socket option TCP_COOKIE_TRANSACTIONS
Define sysctl (tcp_cookie_size) to turn on and off the cookie option
default globally, instead of a compiled configuration option.
Define per socket option (TCP_COOKIE_TRANSACTIONS) for setting constant
data values, retrieving variable cookie values, and other facilities.
Move inline tcp_clear_options() unchanged from net/tcp.h to linux/tcp.h,
near its corresponding struct tcp_options_received (prior to changes).
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):
http://thread.gmane.org/gmane.linux.network/102586
These functions will also be used in subsequent patches that implement
additional features.
Requires:
net: TCP_MSS_DEFAULT, TCP_MSS_DESIRED
Signed-off-by: William.Allen.Simpson@gmail.com
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/sysctl_net_ipv4.c | 8 | ||||
-rw-r--r-- | net/ipv4/tcp_output.c | 3 |
2 files changed, 11 insertions, 0 deletions
diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c index c00323bae044..13f7ab6ad6a0 100644 --- a/net/ipv4/sysctl_net_ipv4.c +++ b/net/ipv4/sysctl_net_ipv4.c | |||
@@ -714,6 +714,14 @@ static struct ctl_table ipv4_table[] = { | |||
714 | }, | 714 | }, |
715 | { | 715 | { |
716 | .ctl_name = CTL_UNNUMBERED, | 716 | .ctl_name = CTL_UNNUMBERED, |
717 | .procname = "tcp_cookie_size", | ||
718 | .data = &sysctl_tcp_cookie_size, | ||
719 | .maxlen = sizeof(int), | ||
720 | .mode = 0644, | ||
721 | .proc_handler = proc_dointvec | ||
722 | }, | ||
723 | { | ||
724 | .ctl_name = CTL_UNNUMBERED, | ||
717 | .procname = "udp_mem", | 725 | .procname = "udp_mem", |
718 | .data = &sysctl_udp_mem, | 726 | .data = &sysctl_udp_mem, |
719 | .maxlen = sizeof(sysctl_udp_mem), | 727 | .maxlen = sizeof(sysctl_udp_mem), |
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index b8b25049f257..307f318fe931 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -59,6 +59,9 @@ int sysctl_tcp_base_mss __read_mostly = 512; | |||
59 | /* By default, RFC2861 behavior. */ | 59 | /* By default, RFC2861 behavior. */ |
60 | int sysctl_tcp_slow_start_after_idle __read_mostly = 1; | 60 | int sysctl_tcp_slow_start_after_idle __read_mostly = 1; |
61 | 61 | ||
62 | int sysctl_tcp_cookie_size __read_mostly = 0; /* TCP_COOKIE_MAX */ | ||
63 | |||
64 | |||
62 | /* Account for new data that has been sent to the network. */ | 65 | /* Account for new data that has been sent to the network. */ |
63 | static void tcp_event_new_data_sent(struct sock *sk, struct sk_buff *skb) | 66 | static void tcp_event_new_data_sent(struct sock *sk, struct sk_buff *skb) |
64 | { | 67 | { |