Skip to content

Commit 47cc84c

Browse files
Thadeu Lima de Souza Cascardodavem330
Thadeu Lima de Souza Cascardo
authored andcommitted
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: 08b202b ("bridge br_multicast: IPv6 MLD support.") Reported-by: Rik Theys <[email protected]> Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]> Tested-by: Rik Theys <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 9eeb516 commit 47cc84c

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

net/bridge/br_multicast.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1072,7 +1072,7 @@ static int br_ip6_multicast_mld2_report(struct net_bridge *br,
10721072

10731073
err = br_ip6_multicast_add_group(br, port, &grec->grec_mca,
10741074
vid);
1075-
if (!err)
1075+
if (err)
10761076
break;
10771077
}
10781078

0 commit comments

Comments
 (0)