linux-stable/net/batman-adv
Linus Lüssing bd2a979e53 batman-adv: Always flood IGMP/MLD reports
With this patch IGMP or MLD reports are always flooded. This is
necessary for the upcoming bridge integration to function without
multicast packet loss.

With the report handling so far bridges might miss interested multicast
listeners, leading to wrongly excluding ports from multicast packet
forwarding.

Currently we are treating IGMP/MLD reports, the messages bridges use to
learn about interested multicast listeners, just as any other multicast
packet: We try to send them to nodes matching its multicast destination.

Unfortunately, the destination address of reports of the older
IGMPv2/MLDv1 protocol families do not strictly adhere to their own
protocol: More precisely, the interested receiver, an IGMPv2 or MLDv1
querier, itself usually does not listen to the multicast destination
address of any reports.

Therefore with this patch we are simply excluding IGMP/MLD reports from
the multicast forwarding code path and keep flooding them. By that
any bridge receives them and can properly learn about listeners.

To avoid compatibility issues with older nodes not yet implementing this
report handling, we need to force them to flood reports: We do this by
bumping the multicast TVLV version to 2, effectively disabling their
multicast optimization.

Tested-by: Simon Wunderlich <sw@simonwunderlich.de>
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
2016-06-30 10:29:43 +02:00
..
bat_algo.h batman-adv: init ELP tweaking options only once 2016-06-30 10:29:43 +02:00
bat_iv_ogm.c batman-adv: remove ogm_emit and ogm_schedule API calls 2016-06-30 10:29:43 +02:00
bat_v.c batman-adv: init ELP tweaking options only once 2016-06-30 10:29:43 +02:00
bat_v_elp.c batman-adv: init ELP tweaking options only once 2016-06-30 10:29:43 +02:00
bat_v_elp.h batman-adv: initialize ELP orig address on secondary interfaces 2016-05-18 11:49:44 +08:00
bat_v_ogm.c batman-adv: refactor batadv_neigh_node_* functions to follow common style 2016-06-30 10:29:43 +02:00
bat_v_ogm.h batman-adv: OGMv2 - implement originators logic 2016-02-29 16:05:31 +08:00
bitarray.c batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
bitarray.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
bridge_loop_avoidance.c batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
bridge_loop_avoidance.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
debugfs.c batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
debugfs.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
distributed-arp-table.c batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
distributed-arp-table.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
fragmentation.c batman-adv: Include frame priority in fragment header 2016-06-30 10:29:43 +02:00
fragmentation.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
gateway_client.c batman-adv: move GW mode and selection class to private data structure 2016-06-30 10:29:43 +02:00
gateway_client.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
gateway_common.c batman-adv: move GW mode and selection class to private data structure 2016-06-30 10:29:43 +02:00
gateway_common.h batman-adv: add throughput override attribute to hard_ifaces 2016-02-29 16:05:32 +08:00
hard-interface.c batman-adv: init ELP tweaking options only once 2016-06-30 10:29:43 +02:00
hard-interface.h batman-adv: Create batman soft interfaces within correct netns. 2016-05-10 18:26:44 +08:00
hash.c batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
hash.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
icmp_socket.c batman-adv: fix wrong names in kerneldoc 2016-05-04 02:22:03 +08:00
icmp_socket.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
Kconfig batman-adv: Always flood IGMP/MLD reports 2016-06-30 10:29:43 +02:00
main.c batman-adv: remove ogm_emit and ogm_schedule API calls 2016-06-30 10:29:43 +02:00
main.h batman-adv: Start new development cycle 2016-06-30 10:29:43 +02:00
Makefile batman-adv: OGMv2 - add basic infrastructure 2016-02-29 16:05:31 +08:00
multicast.c batman-adv: Always flood IGMP/MLD reports 2016-06-30 10:29:43 +02:00
multicast.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
network-coding.c batman-adv: use batadv_compare_eth when possible 2016-05-10 18:28:54 +08:00
network-coding.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
originator.c batman-adv: remove unused callback from batadv_algo_ops struct 2016-06-30 10:29:43 +02:00
originator.h batman-adv: refactor batadv_neigh_node_* functions to follow common style 2016-06-30 10:29:43 +02:00
packet.h batman-adv: Include frame priority in fragment header 2016-06-30 10:29:43 +02:00
routing.c batman-adv: Include frame priority in fragment header 2016-06-30 10:29:43 +02:00
routing.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
send.c batman-adv: remove ogm_emit and ogm_schedule API calls 2016-06-30 10:29:43 +02:00
send.h batman-adv: remove ogm_emit and ogm_schedule API calls 2016-06-30 10:29:43 +02:00
soft-interface.c batman-adv: move GW mode and selection class to private data structure 2016-06-30 10:29:43 +02:00
soft-interface.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
sysfs.c batman-adv: move GW mode and selection class to private data structure 2016-06-30 10:29:43 +02:00
sysfs.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
translation-table.c batman-adv: remove unused vid local variable in tt seq print 2016-06-30 10:29:43 +02:00
translation-table.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
types.h batman-adv: move GW mode and selection class to private data structure 2016-06-30 10:29:43 +02:00