mirror of https://github.com/hak5/openwrt.git
59 lines
2.1 KiB
Diff
59 lines
2.1 KiB
Diff
From 1430a5975e1a5f249875faab7fd35b915a8d2397 Mon Sep 17 00:00:00 2001
|
|
From: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
|
|
Date: Fri, 22 May 2015 12:18:59 -0300
|
|
Subject: [PATCH] bridge: fix parsing of MLDv2 reports
|
|
|
|
When more than a multicast address is present in a MLDv2 report, all but
|
|
the first address is ignored, because the code breaks out of the loop if
|
|
there has not been an error adding that address.
|
|
|
|
This has caused failures when two guests connected through the bridge
|
|
tried to communicate using IPv6. Neighbor discoveries would not be
|
|
transmitted to the other guest when both used a link-local address and a
|
|
static address.
|
|
|
|
This only happens when there is a MLDv2 querier in the network.
|
|
|
|
The fix will only break out of the loop when there is a failure adding a
|
|
multicast address.
|
|
|
|
The mdb before the patch:
|
|
|
|
dev ovirtmgmt port vnet0 grp ff02::1:ff7d:6603 temp
|
|
dev ovirtmgmt port vnet1 grp ff02::1:ff7d:6604 temp
|
|
dev ovirtmgmt port bond0.86 grp ff02::2 temp
|
|
|
|
After the patch:
|
|
|
|
dev ovirtmgmt port vnet0 grp ff02::1:ff7d:6603 temp
|
|
dev ovirtmgmt port vnet1 grp ff02::1:ff7d:6604 temp
|
|
dev ovirtmgmt port bond0.86 grp ff02::fb temp
|
|
dev ovirtmgmt port bond0.86 grp ff02::2 temp
|
|
dev ovirtmgmt port bond0.86 grp ff02::d temp
|
|
dev ovirtmgmt port vnet0 grp ff02::1:ff00:76 temp
|
|
dev ovirtmgmt port bond0.86 grp ff02::16 temp
|
|
dev ovirtmgmt port vnet1 grp ff02::1:ff00:77 temp
|
|
dev ovirtmgmt port bond0.86 grp ff02::1:ff00:def temp
|
|
dev ovirtmgmt port bond0.86 grp ff02::1:ffa1:40bf temp
|
|
|
|
Fixes: 08b202b67264 ("bridge br_multicast: IPv6 MLD support.")
|
|
Reported-by: Rik Theys <Rik.Theys@esat.kuleuven.be>
|
|
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
|
|
Tested-by: Rik Theys <Rik.Theys@esat.kuleuven.be>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
net/bridge/br_multicast.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
--- a/net/bridge/br_multicast.c
|
|
+++ b/net/bridge/br_multicast.c
|
|
@@ -1071,7 +1071,7 @@ static int br_ip6_multicast_mld2_report(
|
|
|
|
err = br_ip6_multicast_add_group(br, port, &grec->grec_mca,
|
|
vid);
|
|
- if (!err)
|
|
+ if (err)
|
|
break;
|
|
}
|
|
|