On 11/05/2021 12:29, Nikolay Aleksandrov wrote:
On 09/05/2021 22:45, Linus Lüssing wrote:
A multicast router for IPv4 does not imply that the same host also is a multicast router for IPv6 and vice versa.
To reduce multicast traffic when a host is only a multicast router for one of these two protocol families, keep router state for IPv4 and IPv6 separately. Similar to how querier state is kept separately.
For backwards compatibility for netlink and switchdev notifications these two will still only notify if a port switched from either no IPv4/IPv6 multicast router to any IPv4/IPv6 multicast router or the other way round. However a full netlink MDB router dump will now also include a multicast router timeout for both IPv4 and IPv6.
Signed-off-by: Linus Lüssing linus.luessing@c0d3.blue
net/bridge/br_forward.c | 8 ++ net/bridge/br_mdb.c | 10 ++ net/bridge/br_multicast.c | 197 ++++++++++++++++++++++++++++++++++---- net/bridge/br_private.h | 6 +- 4 files changed, 201 insertions(+), 20 deletions(-)
[snip]
+#else +static inline void br_ip6_multicast_add_router(struct net_bridge *br,
struct net_bridge_port *port)
+{ +}
Actually that goes for multicast_add_router, too.
err, my bad - multicast_add_router is fine as is, sorry about that
I'm saying all this because soon I'll be adding per-vlan multicast router support and these will be reusable there without any modification if they can take any list. Also it'll be easier to maintain one set of functions instead of multiple identical ones.