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.luess...@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


Reply via email to