diff options
author | Nikolay Borisov <kernel@kyup.com> | 2016-01-07 09:38:44 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-01-10 17:32:09 -0500 |
commit | 9bd6861bd4326e3afd3f14a9ec8a723771fb20bb (patch) | |
tree | 4ce4ba2445adc7a7ca29cfb36fdb6be0b8c5e91b | |
parent | 13b287e8d1cad951634389f85b8c9b816bd3bb1e (diff) |
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>
-rw-r--r-- | include/net/netns/ipv4.h | 1 | ||||
-rw-r--r-- | include/net/tcp.h | 5 | ||||
-rw-r--r-- | net/ipv4/sysctl_net_ipv4.c | 14 | ||||
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 1 | ||||
-rw-r--r-- | net/ipv4/tcp_timer.c | 1 |
5 files changed, 12 insertions, 10 deletions
diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h index 9e9bbebaebd1..6e26ea2d0374 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h | |||
@@ -95,6 +95,7 @@ struct netns_ipv4 { | |||
95 | u32 sysctl_tcp_probe_interval; | 95 | u32 sysctl_tcp_probe_interval; |
96 | 96 | ||
97 | int sysctl_tcp_keepalive_time; | 97 | int sysctl_tcp_keepalive_time; |
98 | int sysctl_tcp_keepalive_probes; | ||
98 | 99 | ||
99 | struct ping_group_range ping_group_range; | 100 | struct ping_group_range ping_group_range; |
100 | 101 | ||
diff --git a/include/net/tcp.h b/include/net/tcp.h index cb4d4cf25744..0646521400bf 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -240,7 +240,6 @@ extern int sysctl_tcp_timestamps; | |||
240 | extern int sysctl_tcp_window_scaling; | 240 | extern int sysctl_tcp_window_scaling; |
241 | extern int sysctl_tcp_sack; | 241 | extern int sysctl_tcp_sack; |
242 | extern int sysctl_tcp_fin_timeout; | 242 | extern int sysctl_tcp_fin_timeout; |
243 | extern int sysctl_tcp_keepalive_probes; | ||
244 | extern int sysctl_tcp_keepalive_intvl; | 243 | extern int sysctl_tcp_keepalive_intvl; |
245 | extern int sysctl_tcp_syn_retries; | 244 | extern int sysctl_tcp_syn_retries; |
246 | extern int sysctl_tcp_synack_retries; | 245 | extern int sysctl_tcp_synack_retries; |
@@ -1236,7 +1235,9 @@ static inline int keepalive_time_when(const struct tcp_sock *tp) | |||
1236 | 1235 | ||
1237 | static inline int keepalive_probes(const struct tcp_sock *tp) | 1236 | static inline int keepalive_probes(const struct tcp_sock *tp) |
1238 | { | 1237 | { |
1239 | return tp->keepalive_probes ? : sysctl_tcp_keepalive_probes; | 1238 | struct net *net = sock_net((struct sock *)tp); |
1239 | |||
1240 | return tp->keepalive_probes ? : net->ipv4.sysctl_tcp_keepalive_probes; | ||
1240 | } | 1241 | } |
1241 | 1242 | ||
1242 | static inline u32 keepalive_time_elapsed(const struct tcp_sock *tp) | 1243 | static inline u32 keepalive_time_elapsed(const struct tcp_sock *tp) |
diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c index 1886cc842871..e99fbb77dba7 100644 --- a/net/ipv4/sysctl_net_ipv4.c +++ b/net/ipv4/sysctl_net_ipv4.c | |||
@@ -337,13 +337,6 @@ static struct ctl_table ipv4_table[] = { | |||
337 | .proc_handler = proc_dointvec | 337 | .proc_handler = proc_dointvec |
338 | }, | 338 | }, |
339 | { | 339 | { |
340 | .procname = "tcp_keepalive_probes", | ||
341 | .data = &sysctl_tcp_keepalive_probes, | ||
342 | .maxlen = sizeof(int), | ||
343 | .mode = 0644, | ||
344 | .proc_handler = proc_dointvec | ||
345 | }, | ||
346 | { | ||
347 | .procname = "tcp_keepalive_intvl", | 340 | .procname = "tcp_keepalive_intvl", |
348 | .data = &sysctl_tcp_keepalive_intvl, | 341 | .data = &sysctl_tcp_keepalive_intvl, |
349 | .maxlen = sizeof(int), | 342 | .maxlen = sizeof(int), |
@@ -961,6 +954,13 @@ static struct ctl_table ipv4_net_table[] = { | |||
961 | .mode = 0644, | 954 | .mode = 0644, |
962 | .proc_handler = proc_dointvec_jiffies, | 955 | .proc_handler = proc_dointvec_jiffies, |
963 | }, | 956 | }, |
957 | { | ||
958 | .procname = "tcp_keepalive_probes", | ||
959 | .data = &init_net.ipv4.sysctl_tcp_keepalive_probes, | ||
960 | .maxlen = sizeof(int), | ||
961 | .mode = 0644, | ||
962 | .proc_handler = proc_dointvec | ||
963 | }, | ||
964 | { } | 964 | { } |
965 | }; | 965 | }; |
966 | 966 | ||
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 6e14ff9a8580..ed98de85871e 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -2386,6 +2386,7 @@ static int __net_init tcp_sk_init(struct net *net) | |||
2386 | net->ipv4.sysctl_tcp_probe_interval = TCP_PROBE_INTERVAL; | 2386 | net->ipv4.sysctl_tcp_probe_interval = TCP_PROBE_INTERVAL; |
2387 | 2387 | ||
2388 | net->ipv4.sysctl_tcp_keepalive_time = TCP_KEEPALIVE_TIME; | 2388 | net->ipv4.sysctl_tcp_keepalive_time = TCP_KEEPALIVE_TIME; |
2389 | net->ipv4.sysctl_tcp_keepalive_probes = TCP_KEEPALIVE_PROBES; | ||
2389 | 2390 | ||
2390 | return 0; | 2391 | return 0; |
2391 | fail: | 2392 | fail: |
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c index 166f27b43cc0..0ccb120d591a 100644 --- a/net/ipv4/tcp_timer.c +++ b/net/ipv4/tcp_timer.c | |||
@@ -24,7 +24,6 @@ | |||
24 | 24 | ||
25 | int sysctl_tcp_syn_retries __read_mostly = TCP_SYN_RETRIES; | 25 | int sysctl_tcp_syn_retries __read_mostly = TCP_SYN_RETRIES; |
26 | int sysctl_tcp_synack_retries __read_mostly = TCP_SYNACK_RETRIES; | 26 | int sysctl_tcp_synack_retries __read_mostly = TCP_SYNACK_RETRIES; |
27 | int sysctl_tcp_keepalive_probes __read_mostly = TCP_KEEPALIVE_PROBES; | ||
28 | int sysctl_tcp_keepalive_intvl __read_mostly = TCP_KEEPALIVE_INTVL; | 27 | int sysctl_tcp_keepalive_intvl __read_mostly = TCP_KEEPALIVE_INTVL; |
29 | int sysctl_tcp_retries1 __read_mostly = TCP_RETR1; | 28 | int sysctl_tcp_retries1 __read_mostly = TCP_RETR1; |
30 | int sysctl_tcp_retries2 __read_mostly = TCP_RETR2; | 29 | int sysctl_tcp_retries2 __read_mostly = TCP_RETR2; |