[NETFILTER]: bridge-netfilter: use nf_register_hooks/nf_unregister_hooks
authorPatrick McHardy <kaber@trash.net>
Wed, 7 Feb 2007 23:07:22 +0000 (15:07 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Thu, 8 Feb 2007 20:39:13 +0000 (12:39 -0800)
Additionally mark the init function __init.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_netfilter.c

index ea3337ad0edcf3b7b19132fc5770ce5e4c90eeb4..a25fa8cb5284d9840ae2a1b5d3e19d412a67a780 100644 (file)
@@ -949,44 +949,29 @@ static ctl_table brnf_net_table[] = {
 };
 #endif
 
-int br_netfilter_init(void)
+int __init br_netfilter_init(void)
 {
-       int i;
-
-       for (i = 0; i < ARRAY_SIZE(br_nf_ops); i++) {
-               int ret;
-
-               if ((ret = nf_register_hook(&br_nf_ops[i])) >= 0)
-                       continue;
-
-               while (i--)
-                       nf_unregister_hook(&br_nf_ops[i]);
+       int ret;
 
+       ret = nf_register_hooks(br_nf_ops, ARRAY_SIZE(br_nf_ops));
+       if (ret < 0)
                return ret;
-       }
-
 #ifdef CONFIG_SYSCTL
        brnf_sysctl_header = register_sysctl_table(brnf_net_table, 0);
        if (brnf_sysctl_header == NULL) {
                printk(KERN_WARNING
                       "br_netfilter: can't register to sysctl.\n");
-               for (i = 0; i < ARRAY_SIZE(br_nf_ops); i++)
-                       nf_unregister_hook(&br_nf_ops[i]);
-               return -EFAULT;
+               nf_unregister_hooks(br_nf_ops, ARRAY_SIZE(br_nf_ops));
+               return -ENOMEM;
        }
 #endif
-
        printk(KERN_NOTICE "Bridge firewalling registered\n");
-
        return 0;
 }
 
 void br_netfilter_fini(void)
 {
-       int i;
-
-       for (i = ARRAY_SIZE(br_nf_ops) - 1; i >= 0; i--)
-               nf_unregister_hook(&br_nf_ops[i]);
+       nf_unregister_hooks(br_nf_ops, ARRAY_SIZE(br_nf_ops));
 #ifdef CONFIG_SYSCTL
        unregister_sysctl_table(brnf_sysctl_header);
 #endif