]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/bridge/br_multicast.c
Merge branch 'spectre' of git://git.armlinux.org.uk/~rmk/linux-arm
[linux.git] / net / bridge / br_multicast.c
index 024139b51d3a55cdcbb418ec0d11cea5e8e02f02..6bac0d6b7b94137923ce29eac503518dcaa131d6 100644 (file)
@@ -1422,7 +1422,14 @@ static void br_multicast_query_received(struct net_bridge *br,
                return;
 
        br_multicast_update_query_timer(br, query, max_delay);
-       br_multicast_mark_router(br, port);
+
+       /* Based on RFC4541, section 2.1.1 IGMP Forwarding Rules,
+        * the arrival port for IGMP Queries where the source address
+        * is 0.0.0.0 should not be added to router port list.
+        */
+       if ((saddr->proto == htons(ETH_P_IP) && saddr->u.ip4) ||
+           saddr->proto == htons(ETH_P_IPV6))
+               br_multicast_mark_router(br, port);
 }
 
 static void br_ip4_multicast_query(struct net_bridge *br,