batman-adv: Add multicast optimization support for bridged setups
authorLinus Lüssing <linus.luessing@c0d3.blue>
Tue, 10 May 2016 16:41:25 +0000 (18:41 +0200)
committerSimon Wunderlich <sw@simonwunderlich.de>
Thu, 30 Jun 2016 08:29:43 +0000 (10:29 +0200)
commit687937ab34896d9c39b80b68d304c68ca3c2b207
tree0b7ff9fcb9693ecbcfc312c09f7015cfef2cac63
parentbd2a979e53fd9dd64b7e27553a23001d53201005
batman-adv: Add multicast optimization support for bridged setups

With this patch we are finally able to support multicast optimizations
in bridged setups, too. So far, if a bridge was added on top of a
soft-interface (e.g. bat0) the batman-adv multicast optimizations
needed to be disabled to avoid packetloss.

Current Linux bridge implementations and API can now provide us
with the so far missing information about interested but "remote"
multicast receivers behind bridge ports.

The Linux bridge performs the detection of remote participants
interested in multicast packets with its own and mature so
called IGMP and MLD snooping code and stores that in its
database. With the new API provided by the bridge batman-adv can
now simply hook into this database.

We then reliably announce the gathered multicast listeners to
other nodes through the batman-adv translation table.

Additionally, the Linux bridge provides us with the information about
whether an IGMP/MLD querier exists. If there is none then we need to
disable multicast optimizations as we cannot learn about multicast
listeners on external, bridged-in host then.

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>
net/batman-adv/Kconfig
net/batman-adv/multicast.c
net/batman-adv/types.h