syncookies: add support for ECN
Allows use of ECN when syncookies are in effect by encoding ecn_ok into the syn-ack tcp timestamp. While at it, remove a uneeded #ifdef CONFIG_SYN_COOKIES. With CONFIG_SYN_COOKIES=nm want_cookie is ifdef'd to 0 and gcc removes the "if (0)". Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
734f614bc1
commit
172d69e63c
@@ -164,6 +164,7 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
|
||||
int mss;
|
||||
struct dst_entry *dst;
|
||||
__u8 rcv_wscale;
|
||||
bool ecn_ok;
|
||||
|
||||
if (!sysctl_tcp_syncookies || !th->ack || th->rst)
|
||||
goto out;
|
||||
@@ -180,7 +181,7 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
|
||||
memset(&tcp_opt, 0, sizeof(tcp_opt));
|
||||
tcp_parse_options(skb, &tcp_opt, &hash_location, 0);
|
||||
|
||||
if (!cookie_check_timestamp(&tcp_opt))
|
||||
if (!cookie_check_timestamp(&tcp_opt, &ecn_ok))
|
||||
goto out;
|
||||
|
||||
ret = NULL;
|
||||
@@ -215,7 +216,7 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
|
||||
|
||||
req->expires = 0UL;
|
||||
req->retrans = 0;
|
||||
ireq->ecn_ok = 0;
|
||||
ireq->ecn_ok = ecn_ok;
|
||||
ireq->snd_wscale = tcp_opt.snd_wscale;
|
||||
ireq->sack_ok = tcp_opt.sack_ok;
|
||||
ireq->wscale_ok = tcp_opt.wscale_ok;
|
||||
|
Reference in New Issue
Block a user