diff options
author | Linus Lüssing <linus.luessing@web.de> | 2014-02-15 11:47:53 -0500 |
---|---|---|
committer | Antonio Quartulli <antonio@meshcoding.com> | 2014-03-22 04:18:58 -0400 |
commit | ab49886e3da73b6b35ece21006e191910427bb30 (patch) | |
tree | d4ae8a3192413628fd8301044fcd039c57ba7066 /net/batman-adv/soft-interface.c | |
parent | 1d8ab8d3c176d31530b3ffd4547cf731018e2a45 (diff) |
batman-adv: Add IPv4 link-local/IPv6-ll-all-nodes multicast support
With this patch a node may additionally perform the dropping or
unicasting behaviour for a link-local IPv4 and link-local-all-nodes
IPv6 multicast packet, too.
The extra counter and BATADV_MCAST_WANT_ALL_UNSNOOPABLES flag is needed
because with a future bridge snooping support integration a node with a
bridge on top of its soft interface is not able to reliably detect its
multicast listeners for IPv4 link-local and the IPv6
link-local-all-nodes addresses anymore (see RFC4541, section 2.1.2.2
and section 3).
Even though this new flag does make "no difference" now, it'll ensure
a seamless integration of multicast bridge support without needing to
break compatibility later.
Also note, that even with multicast bridge support it won't be possible
to optimize 224.0.0.x and ff02::1 towards nodes with bridges, they will
always receive these ranges.
Signed-off-by: Linus Lüssing <linus.luessing@web.de>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
Diffstat (limited to 'net/batman-adv/soft-interface.c')
-rw-r--r-- | net/batman-adv/soft-interface.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c index 1a643fe647e1..db6fecaddb9c 100644 --- a/net/batman-adv/soft-interface.c +++ b/net/batman-adv/soft-interface.c | |||
@@ -710,6 +710,7 @@ static int batadv_softif_init_late(struct net_device *dev) | |||
710 | bat_priv->mcast.flags = BATADV_NO_FLAGS; | 710 | bat_priv->mcast.flags = BATADV_NO_FLAGS; |
711 | atomic_set(&bat_priv->multicast_mode, 1); | 711 | atomic_set(&bat_priv->multicast_mode, 1); |
712 | atomic_set(&bat_priv->mcast.num_disabled, 0); | 712 | atomic_set(&bat_priv->mcast.num_disabled, 0); |
713 | atomic_set(&bat_priv->mcast.num_want_all_unsnoopables, 0); | ||
713 | #endif | 714 | #endif |
714 | atomic_set(&bat_priv->gw_mode, BATADV_GW_MODE_OFF); | 715 | atomic_set(&bat_priv->gw_mode, BATADV_GW_MODE_OFF); |
715 | atomic_set(&bat_priv->gw_sel_class, 20); | 716 | atomic_set(&bat_priv->gw_sel_class, 20); |