This change ensures that the new multicast active state variable is unset
again after a foreign IGMP/MLD querier has disappeared (default: 255
seconds). If no new, other IGMP/MLD querier took over then we can't
reliably receive IGMP/MLD reports anymore and in turn can't ensure the
completeness of our MDB anymore either.
No functional change for the fast/data path yet.
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
---
net/bridge/br_multicast.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 5cc713adcf9b..2e5b5281e484 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -1800,6 +1800,10 @@ static void br_multicast_querier_expired(struct net_bridge_mcast *brmctx,
br_multicast_start_querier(brmctx, query);
out:
+ /* another IGMP/MLD querier disappeared, set multicast state to inactive
+ * if our own querier is disabled, too
+ */
+ br_multicast_update_active(brmctx);
spin_unlock(&brmctx->br->multicast_lock);
}
--
2.50.1