All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0
@ 2018-10-26  2:28 Hangbin Liu
  2018-10-26  7:27   ` [Bridge] " Nikolay Aleksandrov
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Hangbin Liu @ 2018-10-26  2:28 UTC (permalink / raw)
  To: netdev
  Cc: Nikolay Aleksandrov, Jiri Pirko, Linus Lüssing,
	David S. Miller, 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 <yinxu@redhat.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
---
 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(&saddr->u.ip6)))
+		br_multicast_mark_router(br, port);
 }
 
 static void br_ip4_multicast_query(struct net_bridge *br,
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0
  2018-10-26  2:28 [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0 Hangbin Liu
@ 2018-10-26  7:27   ` Nikolay Aleksandrov
  2018-10-26 16:26 ` nikolay
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Nikolay Aleksandrov @ 2018-10-26  7:27 UTC (permalink / raw)
  To: Hangbin Liu, netdev
  Cc: Jiri Pirko, Linus Lüssing, David S. Miller, bridge, Roopa Prabhu

On 26/10/2018 05:28, 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 <yinxu@redhat.com>
> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
> ---
>  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(&saddr->u.ip6)))
> +		br_multicast_mark_router(br, port);
>  }
>  
>  static void br_ip4_multicast_query(struct net_bridge *br,
> 

+CC Roopa & bridge@lists.linux-foundation.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Bridge] [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0
@ 2018-10-26  7:27   ` Nikolay Aleksandrov
  0 siblings, 0 replies; 6+ messages in thread
From: Nikolay Aleksandrov @ 2018-10-26  7:27 UTC (permalink / raw)
  To: Hangbin Liu, netdev; +Cc: Jiri Pirko, bridge, Roopa Prabhu, David S. Miller

On 26/10/2018 05:28, 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 <yinxu@redhat.com>
> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
> ---
>  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(&saddr->u.ip6)))
> +		br_multicast_mark_router(br, port);
>  }
>  
>  static void br_ip4_multicast_query(struct net_bridge *br,
> 

+CC Roopa & bridge@lists.linux-foundation.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0
  2018-10-26  2:28 [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0 Hangbin Liu
  2018-10-26  7:27   ` [Bridge] " Nikolay Aleksandrov
@ 2018-10-26 16:26 ` nikolay
  2018-10-26 16:27 ` Roopa Prabhu
  2018-10-26 23:02 ` David Miller
  3 siblings, 0 replies; 6+ messages in thread
From: nikolay @ 2018-10-26 16:26 UTC (permalink / raw)
  To: Hangbin Liu, netdev; +Cc: Jiri Pirko, Linus Lüssing, David S. Miller

On 26 October 2018 05:28:43 EEST, Hangbin Liu <liuhangbin@gmail.com> 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 <yinxu@redhat.com>
>Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
>---

Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0
  2018-10-26  2:28 [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0 Hangbin Liu
  2018-10-26  7:27   ` [Bridge] " Nikolay Aleksandrov
  2018-10-26 16:26 ` nikolay
@ 2018-10-26 16:27 ` Roopa Prabhu
  2018-10-26 23:02 ` David Miller
  3 siblings, 0 replies; 6+ messages in thread
From: Roopa Prabhu @ 2018-10-26 16:27 UTC (permalink / raw)
  To: Hangbin Liu
  Cc: netdev, Nikolay Aleksandrov, Jiri Pirko, Linus Lüssing,
	David Miller

On Thu, Oct 25, 2018 at 7:29 PM Hangbin Liu <liuhangbin@gmail.com> 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 <yinxu@redhat.com>
> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
> ---

Acked-by: Roopa Prabhu <roopa@cumulusnetworks.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0
  2018-10-26  2:28 [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0 Hangbin Liu
                   ` (2 preceding siblings ...)
  2018-10-26 16:27 ` Roopa Prabhu
@ 2018-10-26 23:02 ` David Miller
  3 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2018-10-26 23:02 UTC (permalink / raw)
  To: liuhangbin; +Cc: netdev, nikolay, jiri, linus.luessing

From: Hangbin Liu <liuhangbin@gmail.com>
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 <yinxu@redhat.com>
> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>

Applied and queued up for -stable, thanks.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-10-27  7:41 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-26  2:28 [PATCH net] bridge: do not add port to router list when receives query with source 0.0.0.0 Hangbin Liu
2018-10-26  7:27 ` Nikolay Aleksandrov
2018-10-26  7:27   ` [Bridge] " Nikolay Aleksandrov
2018-10-26 16:26 ` nikolay
2018-10-26 16:27 ` Roopa Prabhu
2018-10-26 23:02 ` David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.