Просмотр исходного кода

ipv4: Namespecify tcp_keepalive_probes sysctl knob

This is required to have full tcp keepalive mechanism namespace
support.

Signed-off-by: Nikolay Borisov <kernel@kyup.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Nikolay Borisov 9 лет назад
Родитель
Сommit
9bd6861bd4
5 измененных файлов с 12 добавлено и 10 удалено
  1. 1 0
      include/net/netns/ipv4.h
  2. 3 2
      include/net/tcp.h
  3. 7 7
      net/ipv4/sysctl_net_ipv4.c
  4. 1 0
      net/ipv4/tcp_ipv4.c
  5. 0 1
      net/ipv4/tcp_timer.c

+ 1 - 0
include/net/netns/ipv4.h

@@ -95,6 +95,7 @@ struct netns_ipv4 {
 	u32 sysctl_tcp_probe_interval;
 	u32 sysctl_tcp_probe_interval;
 
 
 	int sysctl_tcp_keepalive_time;
 	int sysctl_tcp_keepalive_time;
+	int sysctl_tcp_keepalive_probes;
 
 
 	struct ping_group_range ping_group_range;
 	struct ping_group_range ping_group_range;
 
 

+ 3 - 2
include/net/tcp.h

@@ -240,7 +240,6 @@ extern int sysctl_tcp_timestamps;
 extern int sysctl_tcp_window_scaling;
 extern int sysctl_tcp_window_scaling;
 extern int sysctl_tcp_sack;
 extern int sysctl_tcp_sack;
 extern int sysctl_tcp_fin_timeout;
 extern int sysctl_tcp_fin_timeout;
-extern int sysctl_tcp_keepalive_probes;
 extern int sysctl_tcp_keepalive_intvl;
 extern int sysctl_tcp_keepalive_intvl;
 extern int sysctl_tcp_syn_retries;
 extern int sysctl_tcp_syn_retries;
 extern int sysctl_tcp_synack_retries;
 extern int sysctl_tcp_synack_retries;
@@ -1236,7 +1235,9 @@ static inline int keepalive_time_when(const struct tcp_sock *tp)
 
 
 static inline int keepalive_probes(const struct tcp_sock *tp)
 static inline int keepalive_probes(const struct tcp_sock *tp)
 {
 {
-	return tp->keepalive_probes ? : sysctl_tcp_keepalive_probes;
+	struct net *net = sock_net((struct sock *)tp);
+
+	return tp->keepalive_probes ? : net->ipv4.sysctl_tcp_keepalive_probes;
 }
 }
 
 
 static inline u32 keepalive_time_elapsed(const struct tcp_sock *tp)
 static inline u32 keepalive_time_elapsed(const struct tcp_sock *tp)

+ 7 - 7
net/ipv4/sysctl_net_ipv4.c

@@ -336,13 +336,6 @@ static struct ctl_table ipv4_table[] = {
 		.mode		= 0644,
 		.mode		= 0644,
 		.proc_handler	= proc_dointvec
 		.proc_handler	= proc_dointvec
 	},
 	},
-	{
-		.procname	= "tcp_keepalive_probes",
-		.data		= &sysctl_tcp_keepalive_probes,
-		.maxlen		= sizeof(int),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec
-	},
 	{
 	{
 		.procname	= "tcp_keepalive_intvl",
 		.procname	= "tcp_keepalive_intvl",
 		.data		= &sysctl_tcp_keepalive_intvl,
 		.data		= &sysctl_tcp_keepalive_intvl,
@@ -961,6 +954,13 @@ static struct ctl_table ipv4_net_table[] = {
 		.mode		= 0644,
 		.mode		= 0644,
 		.proc_handler	= proc_dointvec_jiffies,
 		.proc_handler	= proc_dointvec_jiffies,
 	},
 	},
+	{
+		.procname	= "tcp_keepalive_probes",
+		.data		= &init_net.ipv4.sysctl_tcp_keepalive_probes,
+		.maxlen		= sizeof(int),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec
+	},
 	{ }
 	{ }
 };
 };
 
 

+ 1 - 0
net/ipv4/tcp_ipv4.c

@@ -2386,6 +2386,7 @@ static int __net_init tcp_sk_init(struct net *net)
 	net->ipv4.sysctl_tcp_probe_interval = TCP_PROBE_INTERVAL;
 	net->ipv4.sysctl_tcp_probe_interval = TCP_PROBE_INTERVAL;
 
 
 	net->ipv4.sysctl_tcp_keepalive_time = TCP_KEEPALIVE_TIME;
 	net->ipv4.sysctl_tcp_keepalive_time = TCP_KEEPALIVE_TIME;
+	net->ipv4.sysctl_tcp_keepalive_probes = TCP_KEEPALIVE_PROBES;
 
 
 	return 0;
 	return 0;
 fail:
 fail:

+ 0 - 1
net/ipv4/tcp_timer.c

@@ -24,7 +24,6 @@
 
 
 int sysctl_tcp_syn_retries __read_mostly = TCP_SYN_RETRIES;
 int sysctl_tcp_syn_retries __read_mostly = TCP_SYN_RETRIES;
 int sysctl_tcp_synack_retries __read_mostly = TCP_SYNACK_RETRIES;
 int sysctl_tcp_synack_retries __read_mostly = TCP_SYNACK_RETRIES;
-int sysctl_tcp_keepalive_probes __read_mostly = TCP_KEEPALIVE_PROBES;
 int sysctl_tcp_keepalive_intvl __read_mostly = TCP_KEEPALIVE_INTVL;
 int sysctl_tcp_keepalive_intvl __read_mostly = TCP_KEEPALIVE_INTVL;
 int sysctl_tcp_retries1 __read_mostly = TCP_RETR1;
 int sysctl_tcp_retries1 __read_mostly = TCP_RETR1;
 int sysctl_tcp_retries2 __read_mostly = TCP_RETR2;
 int sysctl_tcp_retries2 __read_mostly = TCP_RETR2;