aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/sysctl_net_ipv4.c
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@openvz.org>2007-12-05 04:44:58 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:56:31 -0500
commit68dd299bc84dede6aef32e6f4777a676314f5d21 (patch)
tree665132d14a68b3d5676b3fc87424c8be79c28487 /net/ipv4/sysctl_net_ipv4.c
parent4d43b78ac27ca50fe42718192ac7c80474417389 (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.c65
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;
27static int ip_local_port_range_min[] = { 1, 1 }; 27static int ip_local_port_range_min[] = { 1, 1 };
28static int ip_local_port_range_max[] = { 65535, 65535 }; 28static int ip_local_port_range_max[] = { 65535, 65535 };
29 29
30static
31int 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
45static 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
86extern seqlock_t sysctl_port_range_lock; 30extern seqlock_t sysctl_port_range_lock;
87extern int sysctl_local_port_range[2]; 31extern 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,