bridge: Add multicast_snooping sysfs toggle
This patch allows the user to disable IGMP snooping completely through a sysfs toggle. It also allows the user to reenable snooping when it has been automatically disabled due to hash collisions. If the collisions have not been resolved however the system will refuse to reenable snooping. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
0909e11758
commit
561f1103a2
@@ -361,6 +361,23 @@ static ssize_t store_multicast_router(struct device *d,
|
||||
}
|
||||
static DEVICE_ATTR(multicast_router, S_IRUGO | S_IWUSR, show_multicast_router,
|
||||
store_multicast_router);
|
||||
|
||||
static ssize_t show_multicast_snooping(struct device *d,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct net_bridge *br = to_bridge(d);
|
||||
return sprintf(buf, "%d\n", !br->multicast_disabled);
|
||||
}
|
||||
|
||||
static ssize_t store_multicast_snooping(struct device *d,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t len)
|
||||
{
|
||||
return store_bridge_parm(d, buf, len, br_multicast_toggle);
|
||||
}
|
||||
static DEVICE_ATTR(multicast_snooping, S_IRUGO | S_IWUSR,
|
||||
show_multicast_snooping, store_multicast_snooping);
|
||||
#endif
|
||||
|
||||
static struct attribute *bridge_attrs[] = {
|
||||
@@ -384,6 +401,7 @@ static struct attribute *bridge_attrs[] = {
|
||||
&dev_attr_flush.attr,
|
||||
#ifdef CONFIG_BRIDGE_IGMP_SNOOPING
|
||||
&dev_attr_multicast_router.attr,
|
||||
&dev_attr_multicast_snooping.attr,
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
|
Reference in New Issue
Block a user