ipv4: register igmp_notifier even when !CONFIG_PROC_FS
authorWANG Cong <xiyou.wangcong@gmail.com>
Sat, 11 Jan 2014 00:09:45 +0000 (16:09 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Jan 2014 23:03:33 +0000 (15:03 -0800)
We still need this notifier even when we don't config
PROC_FS.

It should be rare to have a kernel without PROC_FS,
so just for completeness.

Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: David S. Miller <davem@davemloft.net>
Cc: Patrick McHardy <kaber@trash.net>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ip.h
net/ipv4/igmp.c
net/ipv4/ip_output.c

index 0dab95c2e4d59f096f481456581b931718216fff..7876e3b96ce340fa53a02baeafe669330b0508cf 100644 (file)
@@ -90,7 +90,7 @@ struct packet_type;
 struct rtable;
 struct sockaddr;
 
-int igmp_mc_proc_init(void);
+int igmp_mc_init(void);
 
 /*
  *     Functions provided by ip.c
index 84c4329cbd30f59b2642b60a4c90473b9ba8d0b6..bcbf33e58324d33aeccd398b2e3a8d9f11e98990 100644 (file)
@@ -2762,6 +2762,7 @@ static struct pernet_operations igmp_net_ops = {
        .init = igmp_net_init,
        .exit = igmp_net_exit,
 };
+#endif
 
 static int igmp_netdev_event(struct notifier_block *this,
                             unsigned long event, void *ptr)
@@ -2785,8 +2786,9 @@ static struct notifier_block igmp_notifier = {
        .notifier_call = igmp_netdev_event,
 };
 
-int __init igmp_mc_proc_init(void)
+int __init igmp_mc_init(void)
 {
+#if defined(CONFIG_PROC_FS)
        int err;
 
        err = register_pernet_subsys(&igmp_net_ops);
@@ -2800,5 +2802,7 @@ int __init igmp_mc_proc_init(void)
 reg_notif_fail:
        unregister_pernet_subsys(&igmp_net_ops);
        return err;
-}
+#else
+       return register_netdevice_notifier(&igmp_notifier);
 #endif
+}
index 9a78804cfe9c457a94c3b4c5f2e7d8fe0eb604dd..8971780aec7c5fadb4223c0391b05aa9c881ba34 100644 (file)
@@ -1553,7 +1553,7 @@ void __init ip_init(void)
        ip_rt_init();
        inet_initpeers();
 
-#if defined(CONFIG_IP_MULTICAST) && defined(CONFIG_PROC_FS)
-       igmp_mc_proc_init();
+#if defined(CONFIG_IP_MULTICAST)
+       igmp_mc_init();
 #endif
 }