syncookies: check decoded options against sysctl settings
authorFlorian Westphal <fw@strlen.de>
Wed, 16 Jun 2010 21:42:15 +0000 (14:42 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Jun 2010 21:42:15 +0000 (14:42 -0700)
commit8c76368174ed2359739f1b7b8a9c042b1ef839c4
tree143aa28c9438b24154bc3d1e36b432a534eca50c
parent317fe0e6c5dc9448bcef41a2e31fecfd3dba7f55
syncookies: check decoded options against sysctl settings

Discard the ACK if we find options that do not match current sysctl
settings.

Previously it was possible to create a connection with sack, wscale,
etc. enabled even if the feature was disabled via sysctl.

Also remove an unneeded call to tcp_sack_reset() in
cookie_check_timestamp: Both call sites (cookie_v4_check,
cookie_v6_check) zero "struct tcp_options_received", hand it to
tcp_parse_options() (which does not change tcp_opt->num_sacks/dsack)
and then call cookie_check_timestamp().

Even if num_sacks/dsacks were changed, the structure is allocated on
the stack and after cookie_check_timestamp returns only a few selected
members are copied to the inet_request_sock.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h
net/ipv4/syncookies.c
net/ipv6/syncookies.c