tcp: make sysctl_tcp_ecn namespace aware
As per suggestion from Eric Dumazet this patch makes tcp_ecn sysctl namespace aware. The reason behind this patch is to ease the testing of ecn problems on the internet and allows applications to tune their own use of ecn. Cc: Eric Dumazet <eric.dumazet@gmail.com> Cc: David Miller <davem@davemloft.net> Cc: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
71bcdba06d
commit
5d134f1c1f
@@ -232,7 +232,8 @@ static inline struct sock *get_cookie_sock(struct sock *sk, struct sk_buff *skb,
|
||||
*
|
||||
* return false if we decode an option that should not be.
|
||||
*/
|
||||
bool cookie_check_timestamp(struct tcp_options_received *tcp_opt, bool *ecn_ok)
|
||||
bool cookie_check_timestamp(struct tcp_options_received *tcp_opt,
|
||||
struct net *net, bool *ecn_ok)
|
||||
{
|
||||
/* echoed timestamp, lowest bits contain options */
|
||||
u32 options = tcp_opt->rcv_tsecr & TSMASK;
|
||||
@@ -247,7 +248,7 @@ bool cookie_check_timestamp(struct tcp_options_received *tcp_opt, bool *ecn_ok)
|
||||
|
||||
tcp_opt->sack_ok = (options & (1 << 4)) ? TCP_SACK_SEEN : 0;
|
||||
*ecn_ok = (options >> 5) & 1;
|
||||
if (*ecn_ok && !sysctl_tcp_ecn)
|
||||
if (*ecn_ok && !net->ipv4.sysctl_tcp_ecn)
|
||||
return false;
|
||||
|
||||
if (tcp_opt->sack_ok && !sysctl_tcp_sack)
|
||||
@@ -295,7 +296,7 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
|
||||
memset(&tcp_opt, 0, sizeof(tcp_opt));
|
||||
tcp_parse_options(skb, &tcp_opt, &hash_location, 0, NULL);
|
||||
|
||||
if (!cookie_check_timestamp(&tcp_opt, &ecn_ok))
|
||||
if (!cookie_check_timestamp(&tcp_opt, sock_net(sk), &ecn_ok))
|
||||
goto out;
|
||||
|
||||
ret = NULL;
|
||||
|
Reference in New Issue
Block a user