ipv4: Namespaceify tcp syn retries sysctl knob
Signed-off-by: Nikolay Borisov <kernel@kyup.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9d1eb21b59
commit
6fa2516630
@ -98,6 +98,8 @@ struct netns_ipv4 {
|
||||
int sysctl_tcp_keepalive_probes;
|
||||
int sysctl_tcp_keepalive_intvl;
|
||||
|
||||
int sysctl_tcp_syn_retries;
|
||||
|
||||
struct ping_group_range ping_group_range;
|
||||
|
||||
atomic_t dev_addr_genid;
|
||||
|
@ -240,7 +240,6 @@ extern int sysctl_tcp_timestamps;
|
||||
extern int sysctl_tcp_window_scaling;
|
||||
extern int sysctl_tcp_sack;
|
||||
extern int sysctl_tcp_fin_timeout;
|
||||
extern int sysctl_tcp_syn_retries;
|
||||
extern int sysctl_tcp_synack_retries;
|
||||
extern int sysctl_tcp_retries1;
|
||||
extern int sysctl_tcp_retries2;
|
||||
|
@ -291,15 +291,6 @@ static struct ctl_table ipv4_table[] = {
|
||||
.extra1 = &ip_ttl_min,
|
||||
.extra2 = &ip_ttl_max,
|
||||
},
|
||||
{
|
||||
.procname = "tcp_syn_retries",
|
||||
.data = &sysctl_tcp_syn_retries,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.extra1 = &tcp_syn_retries_min,
|
||||
.extra2 = &tcp_syn_retries_max
|
||||
},
|
||||
{
|
||||
.procname = "tcp_synack_retries",
|
||||
.data = &sysctl_tcp_synack_retries,
|
||||
@ -960,6 +951,15 @@ static struct ctl_table ipv4_net_table[] = {
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
},
|
||||
{
|
||||
.procname = "tcp_syn_retries",
|
||||
.data = &init_net.ipv4.sysctl_tcp_syn_retries,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.extra1 = &tcp_syn_retries_min,
|
||||
.extra2 = &tcp_syn_retries_max
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
|
@ -2731,6 +2731,7 @@ static int do_tcp_getsockopt(struct sock *sk, int level,
|
||||
{
|
||||
struct inet_connection_sock *icsk = inet_csk(sk);
|
||||
struct tcp_sock *tp = tcp_sk(sk);
|
||||
struct net *net = sock_net(sk);
|
||||
int val, len;
|
||||
|
||||
if (get_user(len, optlen))
|
||||
@ -2765,7 +2766,7 @@ static int do_tcp_getsockopt(struct sock *sk, int level,
|
||||
val = keepalive_probes(tp);
|
||||
break;
|
||||
case TCP_SYNCNT:
|
||||
val = icsk->icsk_syn_retries ? : sysctl_tcp_syn_retries;
|
||||
val = icsk->icsk_syn_retries ? : net->ipv4.sysctl_tcp_syn_retries;
|
||||
break;
|
||||
case TCP_LINGER2:
|
||||
val = tp->linger2;
|
||||
|
@ -2388,6 +2388,8 @@ static int __net_init tcp_sk_init(struct net *net)
|
||||
net->ipv4.sysctl_tcp_keepalive_probes = TCP_KEEPALIVE_PROBES;
|
||||
net->ipv4.sysctl_tcp_keepalive_intvl = TCP_KEEPALIVE_INTVL;
|
||||
|
||||
net->ipv4.sysctl_tcp_syn_retries = TCP_SYN_RETRIES;
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
tcp_sk_exit(net);
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include <linux/gfp.h>
|
||||
#include <net/tcp.h>
|
||||
|
||||
int sysctl_tcp_syn_retries __read_mostly = TCP_SYN_RETRIES;
|
||||
int sysctl_tcp_synack_retries __read_mostly = TCP_SYNACK_RETRIES;
|
||||
int sysctl_tcp_retries1 __read_mostly = TCP_RETR1;
|
||||
int sysctl_tcp_retries2 __read_mostly = TCP_RETR2;
|
||||
@ -157,6 +156,7 @@ static int tcp_write_timeout(struct sock *sk)
|
||||
{
|
||||
struct inet_connection_sock *icsk = inet_csk(sk);
|
||||
struct tcp_sock *tp = tcp_sk(sk);
|
||||
struct net *net = sock_net(sk);
|
||||
int retry_until;
|
||||
bool do_reset, syn_set = false;
|
||||
|
||||
@ -169,7 +169,7 @@ static int tcp_write_timeout(struct sock *sk)
|
||||
NET_INC_STATS_BH(sock_net(sk),
|
||||
LINUX_MIB_TCPFASTOPENACTIVEFAIL);
|
||||
}
|
||||
retry_until = icsk->icsk_syn_retries ? : sysctl_tcp_syn_retries;
|
||||
retry_until = icsk->icsk_syn_retries ? : net->ipv4.sysctl_tcp_syn_retries;
|
||||
syn_set = true;
|
||||
} else {
|
||||
if (retransmits_timed_out(sk, sysctl_tcp_retries1, 0, 0)) {
|
||||
|
Loading…
Reference in New Issue
Block a user