linux/net/bridge
Thadeu Lima de Souza Cascardo 2f5f714f6d bridge: fix parsing of MLDv2 reports
[ Upstream commit 47cc84ce0c ]

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: 08b202b672 ("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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-06-22 16:55:51 -07:00
..
netfilter netfilter: Can't fail and free after table replacement 2014-05-30 21:52:11 -07:00
br_device.c net: vlan: rename NETIF_F_HW_VLAN_* feature flags to NETIF_F_HW_VLAN_CTAG_* 2013-04-19 14:45:26 -04:00
br_fdb.c bridge: Use the correct bit length for bitmap functions in the VLAN code 2013-09-14 06:54:55 -07:00
br_forward.c bridge: Implement vlan ingress/egress policy with PVID. 2013-02-13 19:42:15 -05:00
br_if.c bridge: flush br's address entry in fdb when remove the bridge dev 2013-12-08 07:29:26 -08:00
br_input.c bridge: Fix double free and memory leak around br_allowed_ingress 2014-05-30 21:52:14 -07:00
br_ioctl.c net: Allow userns root to control the network bridge code. 2012-11-18 20:33:00 -05:00
br_mdb.c rtnetlink: Remove passing of attributes into rtnl_doit functions 2013-03-22 10:31:16 -04:00
br_multicast.c bridge: fix parsing of MLDv2 reports 2015-06-22 16:55:51 -07:00
br_netfilter.c net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
br_netlink.c bridge: Handle IFLA_ADDRESS correctly when creating bridge device 2014-05-30 21:52:16 -07:00
br_notify.c bridge: respect RFC2863 operational state 2012-12-30 02:31:43 -08:00
br_private_stp.h net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
br_private.h br: fix use of ->rx_handler_data in code executed on non-rx_handler path 2014-11-21 09:22:54 -08:00
br_stp_bpdu.c br: fix use of ->rx_handler_data in code executed on non-rx_handler path 2014-11-21 09:22:54 -08:00
br_stp_if.c bridge: Correctly clamp MAX forward_delay when enabling STP 2013-11-04 04:31:03 -08:00
br_stp_timer.c bridge: fix race with topology change timer 2013-05-03 16:08:58 -04:00
br_stp.c bridge: Clamp forward_delay when enabling STP 2013-10-13 16:08:29 -07:00
br_sysfs_br.c bridge: Add vlan filtering infrastructure 2013-02-13 19:41:46 -05:00
br_sysfs_if.c bridge: implement multicast fast leave 2012-12-05 16:24:45 -05:00
br_vlan.c bridge: Fix double free and memory leak around br_allowed_ingress 2014-05-30 21:52:14 -07:00
br.c net:bridge: use IS_ENABLED 2011-12-16 15:49:52 -05:00
Kconfig bridge: Add vlan filtering infrastructure 2013-02-13 19:41:46 -05:00
Makefile bridge: Add vlan filtering infrastructure 2013-02-13 19:41:46 -05:00