Re: [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0

2018-10-26 Thread David Miller
From: Hangbin Liu 
Date: Fri, 26 Oct 2018 10:28:43 +0800

> 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
>  nodes.
> 
>   b) The arrival port for IGMP Queries (sent by multicast routers)
>  where the source address is not 0.0.0.0.
> 
> We should not add the port to router list when receives query with source
> 0.0.0.0.
> 
> Reported-by: Ying Xu 
> Signed-off-by: Hangbin Liu 

Applied and queued up for -stable, thanks.


Re: [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0

2018-10-26 Thread Roopa Prabhu
On Thu, Oct 25, 2018 at 7:29 PM Hangbin Liu  wrote:
>
> 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
>  nodes.
>
>   b) The arrival port for IGMP Queries (sent by multicast routers)
>  where the source address is not 0.0.0.0.
>
> We should not add the port to router list when receives query with source
> 0.0.0.0.
>
> Reported-by: Ying Xu 
> Signed-off-by: Hangbin Liu 
> ---

Acked-by: Roopa Prabhu 


Re: [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0

2018-10-26 Thread nikolay
On 26 October 2018 05:28:43 EEST, Hangbin Liu  wrote:
>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
> nodes.
>
>  b) The arrival port for IGMP Queries (sent by multicast routers)
> where the source address is not 0.0.0.0.
>
>We should not add the port to router list when receives query with
>source
>0.0.0.0.
>
>Reported-by: Ying Xu 
>Signed-off-by: Hangbin Liu 
>---

Acked-by: Nikolay Aleksandrov 



[PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0

2018-10-25 Thread Hangbin Liu
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
 nodes.

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

We should not add the port to router list when receives query with source
0.0.0.0.

Reported-by: Ying Xu 
Signed-off-by: Hangbin Liu 
---
 net/bridge/br_multicast.c | 10 +-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 024139b..41cdafb 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -1422,7 +1422,15 @@ 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) &&
+!ipv6_addr_any(>u.ip6)))
+   br_multicast_mark_router(br, port);
 }
 
 static void br_ip4_multicast_query(struct net_bridge *br,
-- 
2.5.5