diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2007-12-05 04:44:58 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 17:56:31 -0500 |
commit | 68dd299bc84dede6aef32e6f4777a676314f5d21 (patch) | |
tree | 665132d14a68b3d5676b3fc87424c8be79c28487 /net/ipv4/sysctl_net_ipv4.c | |
parent | 4d43b78ac27ca50fe42718192ac7c80474417389 (diff) |
[INET]: Merge sys.net.ipv4.ip_forward and sys.net.ipv4.conf.all.forwarding
AFAIS these two entries should do the same thing - change the
forwarding state on ipv4_devconf and on all the devices.
I propose to merge the handlers together using ctl paths.
The inet_forward_change() is static after this and I move
it higher to be closer to other "propagation" helpers and
to avoid diff making patches based on { and } matching :)
i.e. - make them easier to read.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/sysctl_net_ipv4.c')
-rw-r--r-- | net/ipv4/sysctl_net_ipv4.c | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c index bfd0dec6238d..844f26fab06f 100644 --- a/net/ipv4/sysctl_net_ipv4.c +++ b/net/ipv4/sysctl_net_ipv4.c | |||
@@ -27,62 +27,6 @@ static int tcp_retr1_max = 255; | |||
27 | static int ip_local_port_range_min[] = { 1, 1 }; | 27 | static int ip_local_port_range_min[] = { 1, 1 }; |
28 | static int ip_local_port_range_max[] = { 65535, 65535 }; | 28 | static int ip_local_port_range_max[] = { 65535, 65535 }; |
29 | 29 | ||
30 | static | ||
31 | int ipv4_sysctl_forward(ctl_table *ctl, int write, struct file * filp, | ||
32 | void __user *buffer, size_t *lenp, loff_t *ppos) | ||
33 | { | ||
34 | int val = IPV4_DEVCONF_ALL(FORWARDING); | ||
35 | int ret; | ||
36 | |||
37 | ret = proc_dointvec(ctl, write, filp, buffer, lenp, ppos); | ||
38 | |||
39 | if (write && IPV4_DEVCONF_ALL(FORWARDING) != val) | ||
40 | inet_forward_change(); | ||
41 | |||
42 | return ret; | ||
43 | } | ||
44 | |||
45 | static int ipv4_sysctl_forward_strategy(ctl_table *table, | ||
46 | int __user *name, int nlen, | ||
47 | void __user *oldval, size_t __user *oldlenp, | ||
48 | void __user *newval, size_t newlen) | ||
49 | { | ||
50 | int *valp = table->data; | ||
51 | int new; | ||
52 | |||
53 | if (!newval || !newlen) | ||
54 | return 0; | ||
55 | |||
56 | if (newlen != sizeof(int)) | ||
57 | return -EINVAL; | ||
58 | |||
59 | if (get_user(new, (int __user *)newval)) | ||
60 | return -EFAULT; | ||
61 | |||
62 | if (new == *valp) | ||
63 | return 0; | ||
64 | |||
65 | if (oldval && oldlenp) { | ||
66 | size_t len; | ||
67 | |||
68 | if (get_user(len, oldlenp)) | ||
69 | return -EFAULT; | ||
70 | |||
71 | if (len) { | ||
72 | if (len > table->maxlen) | ||
73 | len = table->maxlen; | ||
74 | if (copy_to_user(oldval, valp, len)) | ||
75 | return -EFAULT; | ||
76 | if (put_user(len, oldlenp)) | ||
77 | return -EFAULT; | ||
78 | } | ||
79 | } | ||
80 | |||
81 | *valp = new; | ||
82 | inet_forward_change(); | ||
83 | return 1; | ||
84 | } | ||
85 | |||
86 | extern seqlock_t sysctl_port_range_lock; | 30 | extern seqlock_t sysctl_port_range_lock; |
87 | extern int sysctl_local_port_range[2]; | 31 | extern int sysctl_local_port_range[2]; |
88 | 32 | ||
@@ -282,15 +226,6 @@ static struct ctl_table ipv4_table[] = { | |||
282 | .proc_handler = &proc_dointvec | 226 | .proc_handler = &proc_dointvec |
283 | }, | 227 | }, |
284 | { | 228 | { |
285 | .ctl_name = NET_IPV4_FORWARD, | ||
286 | .procname = "ip_forward", | ||
287 | .data = &IPV4_DEVCONF_ALL(FORWARDING), | ||
288 | .maxlen = sizeof(int), | ||
289 | .mode = 0644, | ||
290 | .proc_handler = &ipv4_sysctl_forward, | ||
291 | .strategy = &ipv4_sysctl_forward_strategy | ||
292 | }, | ||
293 | { | ||
294 | .ctl_name = NET_IPV4_DEFAULT_TTL, | 229 | .ctl_name = NET_IPV4_DEFAULT_TTL, |
295 | .procname = "ip_default_ttl", | 230 | .procname = "ip_default_ttl", |
296 | .data = &sysctl_ip_default_ttl, | 231 | .data = &sysctl_ip_default_ttl, |