All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: "David S. Miller" <davem@davemloft.net>,
	Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
	James Morris <jmorris@namei.org>,
	Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
	Patrick McHardy <kaber@trash.net>
Cc: linux-arm-kernel@lists.infradead.org,
	Arnd Bergmann <arnd@arndb.de>,
	Nikolay Borisov <n.borisov@siteground.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH] net: igmp: use IS_ENABLED(CONFIG_IP_MULTICAST) instead of ifdef
Date: Tue, 16 Feb 2016 16:59:42 +0100	[thread overview]
Message-ID: <1455638393-3269483-1-git-send-email-arnd@arndb.de> (raw)

A recent change to use correct network namespace in net/ipv4/igmp.c
caused a couple of harmless build warnings when CONFIG_MULTICAST is
disabled:

net/ipv4/igmp.c: In function 'igmp_group_added':
net/ipv4/igmp.c:1227:14: error: unused variable 'net' [-Werror=unused-variable]
net/ipv4/igmp.c: In function 'ip_mc_inc_group':
net/ipv4/igmp.c:1319:14: error: unused variable 'net' [-Werror=unused-variable]
net/ipv4/igmp.c: In function 'ip_mc_init_dev':
net/ipv4/igmp.c:1646:14: error: unused variable 'net' [-Werror=unused-variable]
net/ipv4/igmp.c: In function 'ip_mc_up':
net/ipv4/igmp.c:1665:14: error: unused variable 'net' [-Werror=unused-variable]

This reworks the entire file to change each instance if '#ifdef
CONFIG_IP_MULTICAST' to 'if (IS_ENABLED(CONFIG_IP_MULTICAST)', which
should avoid these problems forever, and makes the whole file more
readable.

Build-tested only.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: 87a8a2ae65b7 ("igmp: Namespaceify igmp_llm_reports sysctl knob")
---
 net/ipv4/igmp.c | 141 ++++++++++++++++++++++++--------------------------------
 1 file changed, 59 insertions(+), 82 deletions(-)

diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index 7c95335bf85e..bb485b3e2baa 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -107,7 +107,6 @@
 #include <linux/seq_file.h>
 #endif
 
-#ifdef CONFIG_IP_MULTICAST
 /* Parameter names and values are taken from igmp-v2-06 draft */
 
 #define IGMP_V1_ROUTER_PRESENT_TIMEOUT		(400*HZ)
@@ -166,7 +165,6 @@ static void igmpv3_del_delrec(struct in_device *in_dev, __be32 multiaddr);
 static void igmpv3_clear_delrec(struct in_device *in_dev);
 static int sf_setstate(struct ip_mc_list *pmc);
 static void sf_markstate(struct ip_mc_list *pmc);
-#endif
 static void ip_mc_clear_src(struct ip_mc_list *pmc);
 static int ip_mc_add_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 			 int sfcount, __be32 *psfsrc, int delta);
@@ -189,8 +187,6 @@ static void ip_ma_put(struct ip_mc_list *im)
 	     pmc != NULL;					\
 	     pmc = rtnl_dereference(pmc->next_rcu))
 
-#ifdef CONFIG_IP_MULTICAST
-
 /*
  *	Timer management
  */
@@ -763,7 +759,9 @@ static void igmp_ifc_timer_expire(unsigned long data)
 static void igmp_ifc_event(struct in_device *in_dev)
 {
 	struct net *net = dev_net(in_dev->dev);
-	if (IGMP_V1_SEEN(in_dev) || IGMP_V2_SEEN(in_dev))
+
+	if (!IS_ENABLED(CONFIG_IP_MULTICAST) ||
+	    IGMP_V1_SEEN(in_dev) || IGMP_V2_SEEN(in_dev))
 		return;
 	in_dev->mr_ifc_count = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv;
 	igmp_ifc_start_timer(in_dev, 1);
@@ -1044,9 +1042,6 @@ drop:
 	return 0;
 }
 
-#endif
-
-
 /*
  *	Add a filter to a device
  */
@@ -1080,7 +1075,6 @@ static void ip_mc_filter_del(struct in_device *in_dev, __be32 addr)
 		dev_mc_del(dev, buf);
 }
 
-#ifdef CONFIG_IP_MULTICAST
 /*
  * deleted ip_mc_list manipulation
  */
@@ -1181,22 +1175,20 @@ static void igmpv3_clear_delrec(struct in_device *in_dev)
 	}
 	rcu_read_unlock();
 }
-#endif
 
 static void igmp_group_dropped(struct ip_mc_list *im)
 {
 	struct in_device *in_dev = im->interface;
-#ifdef CONFIG_IP_MULTICAST
 	struct net *net = dev_net(in_dev->dev);
 	int reporter;
-#endif
 
 	if (im->loaded) {
 		im->loaded = 0;
 		ip_mc_filter_del(in_dev, im->multiaddr);
 	}
 
-#ifdef CONFIG_IP_MULTICAST
+	if (!IS_ENABLED(CONFIG_IP_MULTICAST))
+		return;
 	if (im->multiaddr == IGMP_ALL_HOSTS)
 		return;
 	if (ipv4_is_local_multicast(im->multiaddr) && !net->ipv4.sysctl_igmp_llm_reports)
@@ -1218,7 +1210,6 @@ static void igmp_group_dropped(struct ip_mc_list *im)
 
 		igmp_ifc_event(in_dev);
 	}
-#endif
 }
 
 static void igmp_group_added(struct ip_mc_list *im)
@@ -1231,7 +1222,9 @@ static void igmp_group_added(struct ip_mc_list *im)
 		ip_mc_filter_add(in_dev, im->multiaddr);
 	}
 
-#ifdef CONFIG_IP_MULTICAST
+	if (!IS_ENABLED(CONFIG_IP_MULTICAST))
+		return;
+
 	if (im->multiaddr == IGMP_ALL_HOSTS)
 		return;
 	if (ipv4_is_local_multicast(im->multiaddr) && !net->ipv4.sysctl_igmp_llm_reports)
@@ -1249,7 +1242,6 @@ static void igmp_group_added(struct ip_mc_list *im)
 
 	im->crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv;
 	igmp_ifc_event(in_dev);
-#endif
 }
 
 
@@ -1341,10 +1333,10 @@ void ip_mc_inc_group(struct in_device *in_dev, __be32 addr)
 	im->sfcount[MCAST_EXCLUDE] = 1;
 	atomic_set(&im->refcnt, 1);
 	spin_lock_init(&im->lock);
-#ifdef CONFIG_IP_MULTICAST
-	setup_timer(&im->timer, igmp_timer_expire, (unsigned long)im);
-	im->unsolicit_count = net->ipv4.sysctl_igmp_qrv;
-#endif
+	if (IS_ENABLED(CONFIG_IP_MULTICAST)) {
+		setup_timer(&im->timer, igmp_timer_expire, (unsigned long)im);
+		im->unsolicit_count = net->ipv4.sysctl_igmp_qrv;
+	}
 
 	im->next_rcu = in_dev->mc_list;
 	in_dev->mc_count++;
@@ -1352,9 +1344,9 @@ void ip_mc_inc_group(struct in_device *in_dev, __be32 addr)
 
 	ip_mc_hash_add(in_dev, im);
 
-#ifdef CONFIG_IP_MULTICAST
-	igmpv3_del_delrec(in_dev, im->multiaddr);
-#endif
+	if (IS_ENABLED(CONFIG_IP_MULTICAST))
+		igmpv3_del_delrec(in_dev, im->multiaddr);
+
 	igmp_group_added(im);
 	if (!in_dev->dead)
 		ip_rt_multicast_event(in_dev);
@@ -1533,11 +1525,13 @@ EXPORT_SYMBOL(ip_mc_check_igmp);
  */
 static void ip_mc_rejoin_groups(struct in_device *in_dev)
 {
-#ifdef CONFIG_IP_MULTICAST
 	struct ip_mc_list *im;
 	int type;
 	struct net *net = dev_net(in_dev->dev);
 
+	if (!IS_ENABLED(CONFIG_IP_MULTICAST))
+		return;
+
 	ASSERT_RTNL();
 
 	for_each_pmc_rtnl(in_dev, im) {
@@ -1558,7 +1552,6 @@ static void ip_mc_rejoin_groups(struct in_device *in_dev)
 			type = IGMPV3_HOST_MEMBERSHIP_REPORT;
 		igmp_send_report(in_dev, im, type);
 	}
-#endif
 }
 
 /*
@@ -1628,15 +1621,15 @@ void ip_mc_down(struct in_device *in_dev)
 	for_each_pmc_rtnl(in_dev, pmc)
 		igmp_group_dropped(pmc);
 
-#ifdef CONFIG_IP_MULTICAST
-	in_dev->mr_ifc_count = 0;
-	if (del_timer(&in_dev->mr_ifc_timer))
-		__in_dev_put(in_dev);
-	in_dev->mr_gq_running = 0;
-	if (del_timer(&in_dev->mr_gq_timer))
-		__in_dev_put(in_dev);
-	igmpv3_clear_delrec(in_dev);
-#endif
+	if (IS_ENABLED(CONFIG_IP_MULTICAST)) {
+		in_dev->mr_ifc_count = 0;
+		if (del_timer(&in_dev->mr_ifc_timer))
+			__in_dev_put(in_dev);
+		in_dev->mr_gq_running = 0;
+		if (del_timer(&in_dev->mr_gq_timer))
+			__in_dev_put(in_dev);
+		igmpv3_clear_delrec(in_dev);
+	}
 
 	ip_mc_dec_group(in_dev, IGMP_ALL_HOSTS);
 }
@@ -1646,13 +1639,13 @@ void ip_mc_init_dev(struct in_device *in_dev)
 	struct net *net = dev_net(in_dev->dev);
 	ASSERT_RTNL();
 
-#ifdef CONFIG_IP_MULTICAST
-	setup_timer(&in_dev->mr_gq_timer, igmp_gq_timer_expire,
-			(unsigned long)in_dev);
-	setup_timer(&in_dev->mr_ifc_timer, igmp_ifc_timer_expire,
-			(unsigned long)in_dev);
-	in_dev->mr_qrv = net->ipv4.sysctl_igmp_qrv;
-#endif
+	if (IS_ENABLED(CONFIG_IP_MULTICAST)) {
+		setup_timer(&in_dev->mr_gq_timer, igmp_gq_timer_expire,
+				(unsigned long)in_dev);
+		setup_timer(&in_dev->mr_ifc_timer, igmp_ifc_timer_expire,
+				(unsigned long)in_dev);
+		in_dev->mr_qrv = net->ipv4.sysctl_igmp_qrv;
+	}
 
 	spin_lock_init(&in_dev->mc_tomb_lock);
 }
@@ -1666,9 +1659,9 @@ void ip_mc_up(struct in_device *in_dev)
 
 	ASSERT_RTNL();
 
-#ifdef CONFIG_IP_MULTICAST
-	in_dev->mr_qrv = net->ipv4.sysctl_igmp_qrv;
-#endif
+	if (IS_ENABLED(CONFIG_IP_MULTICAST))
+		in_dev->mr_qrv = net->ipv4.sysctl_igmp_qrv;
+
 	ip_mc_inc_group(in_dev, IGMP_ALL_HOSTS);
 
 	for_each_pmc_rtnl(in_dev, pmc)
@@ -1755,34 +1748,27 @@ static int ip_mc_del1_src(struct ip_mc_list *pmc, int sfmode,
 		ip_rt_multicast_event(pmc->interface);
 	}
 	if (!psf->sf_count[MCAST_INCLUDE] && !psf->sf_count[MCAST_EXCLUDE]) {
-#ifdef CONFIG_IP_MULTICAST
 		struct in_device *in_dev = pmc->interface;
 		struct net *net = dev_net(in_dev->dev);
-#endif
 
 		/* no more filters for this source */
 		if (psf_prev)
 			psf_prev->sf_next = psf->sf_next;
 		else
 			pmc->sources = psf->sf_next;
-#ifdef CONFIG_IP_MULTICAST
-		if (psf->sf_oldin &&
+		if (IS_ENABLED(CONFIG_IP_MULTICAST) && psf->sf_oldin &&
 		    !IGMP_V1_SEEN(in_dev) && !IGMP_V2_SEEN(in_dev)) {
 			psf->sf_crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv;
 			psf->sf_next = pmc->tomb;
 			pmc->tomb = psf;
 			rv = 1;
-		} else
-#endif
+		} else {
 			kfree(psf);
+		}
 	}
 	return rv;
 }
 
-#ifndef CONFIG_IP_MULTICAST
-#define igmp_ifc_event(x)	do { } while (0)
-#endif
-
 static int ip_mc_del_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 			 int sfcount, __be32 *psfsrc, int delta)
 {
@@ -1804,9 +1790,9 @@ static int ip_mc_del_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 	}
 	spin_lock_bh(&pmc->lock);
 	rcu_read_unlock();
-#ifdef CONFIG_IP_MULTICAST
-	sf_markstate(pmc);
-#endif
+	if (IS_ENABLED(CONFIG_IP_MULTICAST))
+		sf_markstate(pmc);
+
 	if (!delta) {
 		err = -EINVAL;
 		if (!pmc->sfcount[sfmode])
@@ -1821,17 +1807,15 @@ static int ip_mc_del_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 		if (!err && rv < 0)
 			err = rv;
 	}
-	if (pmc->sfmode == MCAST_EXCLUDE &&
+	if (IS_ENABLED(CONFIG_IP_MULTICAST) &&
+	    pmc->sfmode == MCAST_EXCLUDE &&
 	    pmc->sfcount[MCAST_EXCLUDE] == 0 &&
 	    pmc->sfcount[MCAST_INCLUDE]) {
-#ifdef CONFIG_IP_MULTICAST
 		struct ip_sf_list *psf;
 		struct net *net = dev_net(in_dev->dev);
-#endif
 
 		/* filter mode change */
 		pmc->sfmode = MCAST_INCLUDE;
-#ifdef CONFIG_IP_MULTICAST
 		pmc->crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv;
 		in_dev->mr_ifc_count = pmc->crcount;
 		for (psf = pmc->sources; psf; psf = psf->sf_next)
@@ -1839,7 +1823,6 @@ static int ip_mc_del_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 		igmp_ifc_event(pmc->interface);
 	} else if (sf_setstate(pmc) || changerec) {
 		igmp_ifc_event(pmc->interface);
-#endif
 	}
 out_unlock:
 	spin_unlock_bh(&pmc->lock);
@@ -1877,12 +1860,14 @@ static int ip_mc_add1_src(struct ip_mc_list *pmc, int sfmode,
 	return 0;
 }
 
-#ifdef CONFIG_IP_MULTICAST
 static void sf_markstate(struct ip_mc_list *pmc)
 {
 	struct ip_sf_list *psf;
 	int mca_xcount = pmc->sfcount[MCAST_EXCLUDE];
 
+	if (!IS_ENABLED(CONFIG_IP_MULTICAST))
+		return;
+
 	for (psf = pmc->sources; psf; psf = psf->sf_next)
 		if (pmc->sfcount[MCAST_EXCLUDE]) {
 			psf->sf_oldin = mca_xcount ==
@@ -1950,7 +1935,6 @@ static int sf_setstate(struct ip_mc_list *pmc)
 	}
 	return rv;
 }
-#endif
 
 /*
  * Add multicast source filter list to the interface list
@@ -1977,9 +1961,7 @@ static int ip_mc_add_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 	spin_lock_bh(&pmc->lock);
 	rcu_read_unlock();
 
-#ifdef CONFIG_IP_MULTICAST
 	sf_markstate(pmc);
-#endif
 	isexclude = pmc->sfmode == MCAST_EXCLUDE;
 	if (!delta)
 		pmc->sfcount[sfmode]++;
@@ -1997,28 +1979,26 @@ static int ip_mc_add_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 		for (j = 0; j < i; j++)
 			(void) ip_mc_del1_src(pmc, sfmode, &psfsrc[j]);
 	} else if (isexclude != (pmc->sfcount[MCAST_EXCLUDE] != 0)) {
-#ifdef CONFIG_IP_MULTICAST
 		struct ip_sf_list *psf;
 		struct net *net = dev_net(pmc->interface->dev);
 		in_dev = pmc->interface;
-#endif
 
 		/* filter mode change */
 		if (pmc->sfcount[MCAST_EXCLUDE])
 			pmc->sfmode = MCAST_EXCLUDE;
 		else if (pmc->sfcount[MCAST_INCLUDE])
 			pmc->sfmode = MCAST_INCLUDE;
-#ifdef CONFIG_IP_MULTICAST
 		/* else no filters; keep old mode for reports */
-
-		pmc->crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv;
-		in_dev->mr_ifc_count = pmc->crcount;
-		for (psf = pmc->sources; psf; psf = psf->sf_next)
-			psf->sf_crcount = 0;
-		igmp_ifc_event(in_dev);
-	} else if (sf_setstate(pmc)) {
+		if (IS_ENABLED(CONFIG_IP_MULTICAST)) {
+			pmc->crcount = in_dev->mr_qrv ?:
+				       net->ipv4.sysctl_igmp_qrv;
+			in_dev->mr_ifc_count = pmc->crcount;
+			for (psf = pmc->sources; psf; psf = psf->sf_next)
+				psf->sf_crcount = 0;
+			igmp_ifc_event(in_dev);
+		}
+	} else if (IS_ENABLED(CONFIG_IP_MULTICAST) && sf_setstate(pmc)) {
 		igmp_ifc_event(in_dev);
-#endif
 	}
 	spin_unlock_bh(&pmc->lock);
 	return err;
@@ -2711,13 +2691,10 @@ static int igmp_mc_seq_show(struct seq_file *seq, void *v)
 		char   *querier;
 		long delta;
 
-#ifdef CONFIG_IP_MULTICAST
-		querier = IGMP_V1_SEEN(state->in_dev) ? "V1" :
+		querier = !IS_ENABLED(CONFIG_IP_MULTICAST) ? "NONE" :
+			  IGMP_V1_SEEN(state->in_dev) ? "V1" :
 			  IGMP_V2_SEEN(state->in_dev) ? "V2" :
 			  "V3";
-#else
-		querier = "NONE";
-#endif
 
 		if (rcu_access_pointer(state->in_dev->mc_list) == im) {
 			seq_printf(seq, "%d\t%-10s: %5d %7s\n",
-- 
2.7.0

WARNING: multiple messages have this Message-ID (diff)
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] net: igmp: use IS_ENABLED(CONFIG_IP_MULTICAST) instead of ifdef
Date: Tue, 16 Feb 2016 16:59:42 +0100	[thread overview]
Message-ID: <1455638393-3269483-1-git-send-email-arnd@arndb.de> (raw)

A recent change to use correct network namespace in net/ipv4/igmp.c
caused a couple of harmless build warnings when CONFIG_MULTICAST is
disabled:

net/ipv4/igmp.c: In function 'igmp_group_added':
net/ipv4/igmp.c:1227:14: error: unused variable 'net' [-Werror=unused-variable]
net/ipv4/igmp.c: In function 'ip_mc_inc_group':
net/ipv4/igmp.c:1319:14: error: unused variable 'net' [-Werror=unused-variable]
net/ipv4/igmp.c: In function 'ip_mc_init_dev':
net/ipv4/igmp.c:1646:14: error: unused variable 'net' [-Werror=unused-variable]
net/ipv4/igmp.c: In function 'ip_mc_up':
net/ipv4/igmp.c:1665:14: error: unused variable 'net' [-Werror=unused-variable]

This reworks the entire file to change each instance if '#ifdef
CONFIG_IP_MULTICAST' to 'if (IS_ENABLED(CONFIG_IP_MULTICAST)', which
should avoid these problems forever, and makes the whole file more
readable.

Build-tested only.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: 87a8a2ae65b7 ("igmp: Namespaceify igmp_llm_reports sysctl knob")
---
 net/ipv4/igmp.c | 141 ++++++++++++++++++++++++--------------------------------
 1 file changed, 59 insertions(+), 82 deletions(-)

diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index 7c95335bf85e..bb485b3e2baa 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -107,7 +107,6 @@
 #include <linux/seq_file.h>
 #endif
 
-#ifdef CONFIG_IP_MULTICAST
 /* Parameter names and values are taken from igmp-v2-06 draft */
 
 #define IGMP_V1_ROUTER_PRESENT_TIMEOUT		(400*HZ)
@@ -166,7 +165,6 @@ static void igmpv3_del_delrec(struct in_device *in_dev, __be32 multiaddr);
 static void igmpv3_clear_delrec(struct in_device *in_dev);
 static int sf_setstate(struct ip_mc_list *pmc);
 static void sf_markstate(struct ip_mc_list *pmc);
-#endif
 static void ip_mc_clear_src(struct ip_mc_list *pmc);
 static int ip_mc_add_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 			 int sfcount, __be32 *psfsrc, int delta);
@@ -189,8 +187,6 @@ static void ip_ma_put(struct ip_mc_list *im)
 	     pmc != NULL;					\
 	     pmc = rtnl_dereference(pmc->next_rcu))
 
-#ifdef CONFIG_IP_MULTICAST
-
 /*
  *	Timer management
  */
@@ -763,7 +759,9 @@ static void igmp_ifc_timer_expire(unsigned long data)
 static void igmp_ifc_event(struct in_device *in_dev)
 {
 	struct net *net = dev_net(in_dev->dev);
-	if (IGMP_V1_SEEN(in_dev) || IGMP_V2_SEEN(in_dev))
+
+	if (!IS_ENABLED(CONFIG_IP_MULTICAST) ||
+	    IGMP_V1_SEEN(in_dev) || IGMP_V2_SEEN(in_dev))
 		return;
 	in_dev->mr_ifc_count = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv;
 	igmp_ifc_start_timer(in_dev, 1);
@@ -1044,9 +1042,6 @@ drop:
 	return 0;
 }
 
-#endif
-
-
 /*
  *	Add a filter to a device
  */
@@ -1080,7 +1075,6 @@ static void ip_mc_filter_del(struct in_device *in_dev, __be32 addr)
 		dev_mc_del(dev, buf);
 }
 
-#ifdef CONFIG_IP_MULTICAST
 /*
  * deleted ip_mc_list manipulation
  */
@@ -1181,22 +1175,20 @@ static void igmpv3_clear_delrec(struct in_device *in_dev)
 	}
 	rcu_read_unlock();
 }
-#endif
 
 static void igmp_group_dropped(struct ip_mc_list *im)
 {
 	struct in_device *in_dev = im->interface;
-#ifdef CONFIG_IP_MULTICAST
 	struct net *net = dev_net(in_dev->dev);
 	int reporter;
-#endif
 
 	if (im->loaded) {
 		im->loaded = 0;
 		ip_mc_filter_del(in_dev, im->multiaddr);
 	}
 
-#ifdef CONFIG_IP_MULTICAST
+	if (!IS_ENABLED(CONFIG_IP_MULTICAST))
+		return;
 	if (im->multiaddr == IGMP_ALL_HOSTS)
 		return;
 	if (ipv4_is_local_multicast(im->multiaddr) && !net->ipv4.sysctl_igmp_llm_reports)
@@ -1218,7 +1210,6 @@ static void igmp_group_dropped(struct ip_mc_list *im)
 
 		igmp_ifc_event(in_dev);
 	}
-#endif
 }
 
 static void igmp_group_added(struct ip_mc_list *im)
@@ -1231,7 +1222,9 @@ static void igmp_group_added(struct ip_mc_list *im)
 		ip_mc_filter_add(in_dev, im->multiaddr);
 	}
 
-#ifdef CONFIG_IP_MULTICAST
+	if (!IS_ENABLED(CONFIG_IP_MULTICAST))
+		return;
+
 	if (im->multiaddr == IGMP_ALL_HOSTS)
 		return;
 	if (ipv4_is_local_multicast(im->multiaddr) && !net->ipv4.sysctl_igmp_llm_reports)
@@ -1249,7 +1242,6 @@ static void igmp_group_added(struct ip_mc_list *im)
 
 	im->crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv;
 	igmp_ifc_event(in_dev);
-#endif
 }
 
 
@@ -1341,10 +1333,10 @@ void ip_mc_inc_group(struct in_device *in_dev, __be32 addr)
 	im->sfcount[MCAST_EXCLUDE] = 1;
 	atomic_set(&im->refcnt, 1);
 	spin_lock_init(&im->lock);
-#ifdef CONFIG_IP_MULTICAST
-	setup_timer(&im->timer, igmp_timer_expire, (unsigned long)im);
-	im->unsolicit_count = net->ipv4.sysctl_igmp_qrv;
-#endif
+	if (IS_ENABLED(CONFIG_IP_MULTICAST)) {
+		setup_timer(&im->timer, igmp_timer_expire, (unsigned long)im);
+		im->unsolicit_count = net->ipv4.sysctl_igmp_qrv;
+	}
 
 	im->next_rcu = in_dev->mc_list;
 	in_dev->mc_count++;
@@ -1352,9 +1344,9 @@ void ip_mc_inc_group(struct in_device *in_dev, __be32 addr)
 
 	ip_mc_hash_add(in_dev, im);
 
-#ifdef CONFIG_IP_MULTICAST
-	igmpv3_del_delrec(in_dev, im->multiaddr);
-#endif
+	if (IS_ENABLED(CONFIG_IP_MULTICAST))
+		igmpv3_del_delrec(in_dev, im->multiaddr);
+
 	igmp_group_added(im);
 	if (!in_dev->dead)
 		ip_rt_multicast_event(in_dev);
@@ -1533,11 +1525,13 @@ EXPORT_SYMBOL(ip_mc_check_igmp);
  */
 static void ip_mc_rejoin_groups(struct in_device *in_dev)
 {
-#ifdef CONFIG_IP_MULTICAST
 	struct ip_mc_list *im;
 	int type;
 	struct net *net = dev_net(in_dev->dev);
 
+	if (!IS_ENABLED(CONFIG_IP_MULTICAST))
+		return;
+
 	ASSERT_RTNL();
 
 	for_each_pmc_rtnl(in_dev, im) {
@@ -1558,7 +1552,6 @@ static void ip_mc_rejoin_groups(struct in_device *in_dev)
 			type = IGMPV3_HOST_MEMBERSHIP_REPORT;
 		igmp_send_report(in_dev, im, type);
 	}
-#endif
 }
 
 /*
@@ -1628,15 +1621,15 @@ void ip_mc_down(struct in_device *in_dev)
 	for_each_pmc_rtnl(in_dev, pmc)
 		igmp_group_dropped(pmc);
 
-#ifdef CONFIG_IP_MULTICAST
-	in_dev->mr_ifc_count = 0;
-	if (del_timer(&in_dev->mr_ifc_timer))
-		__in_dev_put(in_dev);
-	in_dev->mr_gq_running = 0;
-	if (del_timer(&in_dev->mr_gq_timer))
-		__in_dev_put(in_dev);
-	igmpv3_clear_delrec(in_dev);
-#endif
+	if (IS_ENABLED(CONFIG_IP_MULTICAST)) {
+		in_dev->mr_ifc_count = 0;
+		if (del_timer(&in_dev->mr_ifc_timer))
+			__in_dev_put(in_dev);
+		in_dev->mr_gq_running = 0;
+		if (del_timer(&in_dev->mr_gq_timer))
+			__in_dev_put(in_dev);
+		igmpv3_clear_delrec(in_dev);
+	}
 
 	ip_mc_dec_group(in_dev, IGMP_ALL_HOSTS);
 }
@@ -1646,13 +1639,13 @@ void ip_mc_init_dev(struct in_device *in_dev)
 	struct net *net = dev_net(in_dev->dev);
 	ASSERT_RTNL();
 
-#ifdef CONFIG_IP_MULTICAST
-	setup_timer(&in_dev->mr_gq_timer, igmp_gq_timer_expire,
-			(unsigned long)in_dev);
-	setup_timer(&in_dev->mr_ifc_timer, igmp_ifc_timer_expire,
-			(unsigned long)in_dev);
-	in_dev->mr_qrv = net->ipv4.sysctl_igmp_qrv;
-#endif
+	if (IS_ENABLED(CONFIG_IP_MULTICAST)) {
+		setup_timer(&in_dev->mr_gq_timer, igmp_gq_timer_expire,
+				(unsigned long)in_dev);
+		setup_timer(&in_dev->mr_ifc_timer, igmp_ifc_timer_expire,
+				(unsigned long)in_dev);
+		in_dev->mr_qrv = net->ipv4.sysctl_igmp_qrv;
+	}
 
 	spin_lock_init(&in_dev->mc_tomb_lock);
 }
@@ -1666,9 +1659,9 @@ void ip_mc_up(struct in_device *in_dev)
 
 	ASSERT_RTNL();
 
-#ifdef CONFIG_IP_MULTICAST
-	in_dev->mr_qrv = net->ipv4.sysctl_igmp_qrv;
-#endif
+	if (IS_ENABLED(CONFIG_IP_MULTICAST))
+		in_dev->mr_qrv = net->ipv4.sysctl_igmp_qrv;
+
 	ip_mc_inc_group(in_dev, IGMP_ALL_HOSTS);
 
 	for_each_pmc_rtnl(in_dev, pmc)
@@ -1755,34 +1748,27 @@ static int ip_mc_del1_src(struct ip_mc_list *pmc, int sfmode,
 		ip_rt_multicast_event(pmc->interface);
 	}
 	if (!psf->sf_count[MCAST_INCLUDE] && !psf->sf_count[MCAST_EXCLUDE]) {
-#ifdef CONFIG_IP_MULTICAST
 		struct in_device *in_dev = pmc->interface;
 		struct net *net = dev_net(in_dev->dev);
-#endif
 
 		/* no more filters for this source */
 		if (psf_prev)
 			psf_prev->sf_next = psf->sf_next;
 		else
 			pmc->sources = psf->sf_next;
-#ifdef CONFIG_IP_MULTICAST
-		if (psf->sf_oldin &&
+		if (IS_ENABLED(CONFIG_IP_MULTICAST) && psf->sf_oldin &&
 		    !IGMP_V1_SEEN(in_dev) && !IGMP_V2_SEEN(in_dev)) {
 			psf->sf_crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv;
 			psf->sf_next = pmc->tomb;
 			pmc->tomb = psf;
 			rv = 1;
-		} else
-#endif
+		} else {
 			kfree(psf);
+		}
 	}
 	return rv;
 }
 
-#ifndef CONFIG_IP_MULTICAST
-#define igmp_ifc_event(x)	do { } while (0)
-#endif
-
 static int ip_mc_del_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 			 int sfcount, __be32 *psfsrc, int delta)
 {
@@ -1804,9 +1790,9 @@ static int ip_mc_del_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 	}
 	spin_lock_bh(&pmc->lock);
 	rcu_read_unlock();
-#ifdef CONFIG_IP_MULTICAST
-	sf_markstate(pmc);
-#endif
+	if (IS_ENABLED(CONFIG_IP_MULTICAST))
+		sf_markstate(pmc);
+
 	if (!delta) {
 		err = -EINVAL;
 		if (!pmc->sfcount[sfmode])
@@ -1821,17 +1807,15 @@ static int ip_mc_del_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 		if (!err && rv < 0)
 			err = rv;
 	}
-	if (pmc->sfmode == MCAST_EXCLUDE &&
+	if (IS_ENABLED(CONFIG_IP_MULTICAST) &&
+	    pmc->sfmode == MCAST_EXCLUDE &&
 	    pmc->sfcount[MCAST_EXCLUDE] == 0 &&
 	    pmc->sfcount[MCAST_INCLUDE]) {
-#ifdef CONFIG_IP_MULTICAST
 		struct ip_sf_list *psf;
 		struct net *net = dev_net(in_dev->dev);
-#endif
 
 		/* filter mode change */
 		pmc->sfmode = MCAST_INCLUDE;
-#ifdef CONFIG_IP_MULTICAST
 		pmc->crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv;
 		in_dev->mr_ifc_count = pmc->crcount;
 		for (psf = pmc->sources; psf; psf = psf->sf_next)
@@ -1839,7 +1823,6 @@ static int ip_mc_del_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 		igmp_ifc_event(pmc->interface);
 	} else if (sf_setstate(pmc) || changerec) {
 		igmp_ifc_event(pmc->interface);
-#endif
 	}
 out_unlock:
 	spin_unlock_bh(&pmc->lock);
@@ -1877,12 +1860,14 @@ static int ip_mc_add1_src(struct ip_mc_list *pmc, int sfmode,
 	return 0;
 }
 
-#ifdef CONFIG_IP_MULTICAST
 static void sf_markstate(struct ip_mc_list *pmc)
 {
 	struct ip_sf_list *psf;
 	int mca_xcount = pmc->sfcount[MCAST_EXCLUDE];
 
+	if (!IS_ENABLED(CONFIG_IP_MULTICAST))
+		return;
+
 	for (psf = pmc->sources; psf; psf = psf->sf_next)
 		if (pmc->sfcount[MCAST_EXCLUDE]) {
 			psf->sf_oldin = mca_xcount ==
@@ -1950,7 +1935,6 @@ static int sf_setstate(struct ip_mc_list *pmc)
 	}
 	return rv;
 }
-#endif
 
 /*
  * Add multicast source filter list to the interface list
@@ -1977,9 +1961,7 @@ static int ip_mc_add_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 	spin_lock_bh(&pmc->lock);
 	rcu_read_unlock();
 
-#ifdef CONFIG_IP_MULTICAST
 	sf_markstate(pmc);
-#endif
 	isexclude = pmc->sfmode == MCAST_EXCLUDE;
 	if (!delta)
 		pmc->sfcount[sfmode]++;
@@ -1997,28 +1979,26 @@ static int ip_mc_add_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
 		for (j = 0; j < i; j++)
 			(void) ip_mc_del1_src(pmc, sfmode, &psfsrc[j]);
 	} else if (isexclude != (pmc->sfcount[MCAST_EXCLUDE] != 0)) {
-#ifdef CONFIG_IP_MULTICAST
 		struct ip_sf_list *psf;
 		struct net *net = dev_net(pmc->interface->dev);
 		in_dev = pmc->interface;
-#endif
 
 		/* filter mode change */
 		if (pmc->sfcount[MCAST_EXCLUDE])
 			pmc->sfmode = MCAST_EXCLUDE;
 		else if (pmc->sfcount[MCAST_INCLUDE])
 			pmc->sfmode = MCAST_INCLUDE;
-#ifdef CONFIG_IP_MULTICAST
 		/* else no filters; keep old mode for reports */
-
-		pmc->crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv;
-		in_dev->mr_ifc_count = pmc->crcount;
-		for (psf = pmc->sources; psf; psf = psf->sf_next)
-			psf->sf_crcount = 0;
-		igmp_ifc_event(in_dev);
-	} else if (sf_setstate(pmc)) {
+		if (IS_ENABLED(CONFIG_IP_MULTICAST)) {
+			pmc->crcount = in_dev->mr_qrv ?:
+				       net->ipv4.sysctl_igmp_qrv;
+			in_dev->mr_ifc_count = pmc->crcount;
+			for (psf = pmc->sources; psf; psf = psf->sf_next)
+				psf->sf_crcount = 0;
+			igmp_ifc_event(in_dev);
+		}
+	} else if (IS_ENABLED(CONFIG_IP_MULTICAST) && sf_setstate(pmc)) {
 		igmp_ifc_event(in_dev);
-#endif
 	}
 	spin_unlock_bh(&pmc->lock);
 	return err;
@@ -2711,13 +2691,10 @@ static int igmp_mc_seq_show(struct seq_file *seq, void *v)
 		char   *querier;
 		long delta;
 
-#ifdef CONFIG_IP_MULTICAST
-		querier = IGMP_V1_SEEN(state->in_dev) ? "V1" :
+		querier = !IS_ENABLED(CONFIG_IP_MULTICAST) ? "NONE" :
+			  IGMP_V1_SEEN(state->in_dev) ? "V1" :
 			  IGMP_V2_SEEN(state->in_dev) ? "V2" :
 			  "V3";
-#else
-		querier = "NONE";
-#endif
 
 		if (rcu_access_pointer(state->in_dev->mc_list) == im) {
 			seq_printf(seq, "%d\t%-10s: %5d %7s\n",
-- 
2.7.0

             reply	other threads:[~2016-02-16 16:00 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-16 15:59 Arnd Bergmann [this message]
2016-02-16 15:59 ` [PATCH] net: igmp: use IS_ENABLED(CONFIG_IP_MULTICAST) instead of ifdef Arnd Bergmann
2016-02-16 16:10 ` Nikolay Borisov
2016-02-16 16:10   ` Nikolay Borisov
2016-02-16 16:33   ` Arnd Bergmann
2016-02-16 16:33     ` Arnd Bergmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1455638393-3269483-1-git-send-email-arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=davem@davemloft.net \
    --cc=jmorris@namei.org \
    --cc=kaber@trash.net \
    --cc=kuznet@ms2.inr.ac.ru \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=n.borisov@siteground.com \
    --cc=netdev@vger.kernel.org \
    --cc=yoshfuji@linux-ipv6.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.