]>
Commit | Line | Data |
---|---|---|
084c3703 GKH |
1 | From 278e2148c07559dd4ad8602f22366d61eb2ee7b7 Mon Sep 17 00:00:00 2001 |
2 | From: Hangbin Liu <liuhangbin@gmail.com> | |
3 | Date: Fri, 22 Feb 2019 21:22:32 +0800 | |
4 | Subject: Revert "bridge: do not add port to router list when receives query with source 0.0.0.0" | |
5 | MIME-Version: 1.0 | |
6 | Content-Type: text/plain; charset=UTF-8 | |
7 | Content-Transfer-Encoding: 8bit | |
8 | ||
9 | From: Hangbin Liu <liuhangbin@gmail.com> | |
10 | ||
11 | commit 278e2148c07559dd4ad8602f22366d61eb2ee7b7 upstream. | |
12 | ||
13 | This reverts commit 5a2de63fd1a5 ("bridge: do not add port to router list | |
14 | when receives query with source 0.0.0.0") and commit 0fe5119e267f ("net: | |
15 | bridge: remove ipv6 zero address check in mcast queries") | |
16 | ||
17 | The reason is RFC 4541 is not a standard but suggestive. Currently we | |
18 | will elect 0.0.0.0 as Querier if there is no ip address configured on | |
19 | bridge. If we do not add the port which recives query with source | |
20 | 0.0.0.0 to router list, the IGMP reports will not be about to forward | |
21 | to Querier, IGMP data will also not be able to forward to dest. | |
22 | ||
23 | As Nikolay suggested, revert this change first and add a boolopt api | |
24 | to disable none-zero election in future if needed. | |
25 | ||
26 | Reported-by: Linus Lüssing <linus.luessing@c0d3.blue> | |
27 | Reported-by: Sebastian Gottschall <s.gottschall@newmedia-net.de> | |
28 | Fixes: 5a2de63fd1a5 ("bridge: do not add port to router list when receives query with source 0.0.0.0") | |
29 | Fixes: 0fe5119e267f ("net: bridge: remove ipv6 zero address check in mcast queries") | |
30 | Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> | |
31 | Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> | |
32 | Signed-off-by: David S. Miller <davem@davemloft.net> | |
33 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
34 | ||
35 | --- | |
36 | net/bridge/br_multicast.c | 9 +-------- | |
37 | 1 file changed, 1 insertion(+), 8 deletions(-) | |
38 | ||
39 | --- a/net/bridge/br_multicast.c | |
40 | +++ b/net/bridge/br_multicast.c | |
41 | @@ -1261,14 +1261,7 @@ static void br_multicast_query_received( | |
42 | return; | |
43 | ||
44 | br_multicast_update_query_timer(br, query, max_delay); | |
45 | - | |
46 | - /* Based on RFC4541, section 2.1.1 IGMP Forwarding Rules, | |
47 | - * the arrival port for IGMP Queries where the source address | |
48 | - * is 0.0.0.0 should not be added to router port list. | |
49 | - */ | |
50 | - if ((saddr->proto == htons(ETH_P_IP) && saddr->u.ip4) || | |
51 | - saddr->proto == htons(ETH_P_IPV6)) | |
52 | - br_multicast_mark_router(br, port); | |
53 | + br_multicast_mark_router(br, port); | |
54 | } | |
55 | ||
56 | static int br_ip4_multicast_query(struct net_bridge *br, |