Commit a1519237 authored by Hangbin Liu's avatar Hangbin Liu Committed by Greg Kroah-Hartman

bridge: do not add port to router list when receives query with source

commit 5a2de63fd1a59c30c02526d427bc014b98adf508 upstream.

Based on RFC 4541, 2.1.1.  IGMP Forwarding Rules

  The switch supporting IGMP snooping must maintain a list of
  multicast routers and the ports on which they are attached.  This
  list can be constructed in any combination of the following ways:

  a) This list should be built by the snooping switch sending
     Multicast Router Solicitation messages as described in IGMP
     Multicast Router Discovery [MRDISC].  It may also snoop
     Multicast Router Advertisement messages sent by and to other

  b) The arrival port for IGMP Queries (sent by multicast routers)
     where the source address is not

We should not add the port to router list when receives query with source
Reported-by: default avatarYing Xu <>
Signed-off-by: default avatarHangbin Liu <>
Acked-by: default avatarNikolay Aleksandrov <>
Acked-by: default avatarRoopa Prabhu <>
Signed-off-by: default avatarDavid S. Miller <>
Signed-off-by: default avatarGreg Kroah-Hartman <>
parent 6f52608e
......@@ -1261,7 +1261,15 @@ static void br_multicast_query_received(struct net_bridge *br,
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 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 int br_ip4_multicast_query(struct net_bridge *br,
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment