net neigh: Decouple per interface neighbour table controls from binary sysctls
authorEric W. Biederman <ebiederm@xmission.com>
Sun, 14 Feb 2010 03:27:03 +0000 (03:27 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Feb 2010 23:55:18 +0000 (15:55 -0800)
Stop computing the number of neighbour table settings we have by
counting the number of binary sysctls.  This behaviour was silly
and meant that we could not add another neighbour table setting
without also adding another binary sysctl.

Don't pass the binary sysctl path for neighour table entries
into neigh_sysctl_register.  These parameters are no longer
used and so are just dead code.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/sysctl.h
include/net/neighbour.h
net/core/neighbour.c
net/ipv4/arp.c
net/ipv4/devinet.c
net/ipv6/addrconf.c
net/ipv6/ndisc.c

index 7c74e919cabe0b0c04a094a57e1c75b464a4e0a3..f66014c90c9fe8b8aecc528072151550130ecb41 100644 (file)
@@ -596,7 +596,6 @@ enum {
        NET_NEIGH_GC_THRESH3=16,
        NET_NEIGH_RETRANS_TIME_MS=17,
        NET_NEIGH_REACHABLE_TIME_MS=18,
-       __NET_NEIGH_MAX
 };
 
 /* /proc/sys/net/dccp */
index b0173202cad96f3a8aa55df85d16b2d11a62b608..7834f470d14a9aa9d8c36aa14b3988d8a24dad15 100644 (file)
@@ -251,7 +251,6 @@ extern void neigh_seq_stop(struct seq_file *, void *);
 
 extern int                     neigh_sysctl_register(struct net_device *dev, 
                                                      struct neigh_parms *p,
-                                                     int p_id, int pdev_id,
                                                      char *p_name,
                                                      proc_handler *proc_handler);
 extern void                    neigh_sysctl_unregister(struct neigh_parms *p);
index f2efd72da799063e12f1b83096fa0661c8df7a8a..d102f6d9abdcf7878d73cc75a9f1b23fc84ed4d0 100644 (file)
@@ -2556,9 +2556,11 @@ EXPORT_SYMBOL(neigh_app_ns);
 
 #ifdef CONFIG_SYSCTL
 
+#define NEIGH_VARS_MAX 19
+
 static struct neigh_sysctl_table {
        struct ctl_table_header *sysctl_header;
-       struct ctl_table neigh_vars[__NET_NEIGH_MAX];
+       struct ctl_table neigh_vars[NEIGH_VARS_MAX];
        char *dev_name;
 } neigh_sysctl_template __read_mostly = {
        .neigh_vars = {
@@ -2675,8 +2677,7 @@ static struct neigh_sysctl_table {
 };
 
 int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
-                         int p_id, int pdev_id, char *p_name,
-                         proc_handler *handler)
+                         char *p_name, proc_handler *handler)
 {
        struct neigh_sysctl_table *t;
        const char *dev_name_source = NULL;
index 1940b4df76992b810916cc2e9f96b19898979b83..c4dd135428021e92e9023ac7379ac59b371fe6a5 100644 (file)
@@ -1284,8 +1284,7 @@ void __init arp_init(void)
        dev_add_pack(&arp_packet_type);
        arp_proc_init();
 #ifdef CONFIG_SYSCTL
-       neigh_sysctl_register(NULL, &arp_tbl.parms, NET_IPV4,
-                             NET_IPV4_NEIGH, "ipv4", NULL);
+       neigh_sysctl_register(NULL, &arp_tbl.parms, "ipv4", NULL);
 #endif
        register_netdevice_notifier(&arp_netdev_notifier);
 }
index b1eddee9bf94943fb9f5298f021b5e8229d0a51d..014982b61564937f7f55295ac960188491468491 100644 (file)
@@ -1487,8 +1487,7 @@ static void __devinet_sysctl_unregister(struct ipv4_devconf *cnf)
 
 static void devinet_sysctl_register(struct in_device *idev)
 {
-       neigh_sysctl_register(idev->dev, idev->arp_parms, NET_IPV4,
-                       NET_IPV4_NEIGH, "ipv4", NULL);
+       neigh_sysctl_register(idev->dev, idev->arp_parms, "ipv4", NULL);
        __devinet_sysctl_register(dev_net(idev->dev), idev->dev->name,
                                        &idev->cnf);
 }
index 764ad37ca0704ad06caa1fa8ea36410604ba84af..c79cbff543700a9b7dae91a91bac55fbbbb458e8 100644 (file)
@@ -4416,8 +4416,7 @@ static void __addrconf_sysctl_unregister(struct ipv6_devconf *p)
 
 static void addrconf_sysctl_register(struct inet6_dev *idev)
 {
-       neigh_sysctl_register(idev->dev, idev->nd_parms, NET_IPV6,
-                             NET_IPV6_NEIGH, "ipv6",
+       neigh_sysctl_register(idev->dev, idev->nd_parms, "ipv6",
                              &ndisc_ifinfo_sysctl_change);
        __addrconf_sysctl_register(dev_net(idev->dev), idev->dev->name,
                                        idev, &idev->cnf);
index 2dfec6bb8adaad2bb18b79f3f627af2689bfe148..8bcc4b7db3bf8593d74b491d869a48f4d9fcc9a0 100644 (file)
@@ -1820,8 +1820,7 @@ int __init ndisc_init(void)
        neigh_table_init(&nd_tbl);
 
 #ifdef CONFIG_SYSCTL
-       err = neigh_sysctl_register(NULL, &nd_tbl.parms, NET_IPV6,
-                                   NET_IPV6_NEIGH, "ipv6",
+       err = neigh_sysctl_register(NULL, &nd_tbl.parms, "ipv6",
                                    &ndisc_ifinfo_sysctl_change);
        if (err)
                goto out_unregister_pernet;