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>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
---
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 9c22ec63fc6b..64aac9c415e2 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -1827,6 +1827,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.53.0