diff options
author | Nikolay Aleksandrov <nikolay@nvidia.com> | 2021-01-20 16:51:56 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2021-01-22 19:39:56 -0800 |
commit | baa74d39ca39f2b22eeac5c3b069b58491ecd418 (patch) | |
tree | 82ef859dc46f2ccdabb645f198244b2562a0dab4 /net/bridge/br_multicast.c | |
parent | 5b16328879302695101f403f261ff7c5f1ee4b84 (diff) |
net: bridge: multicast: add EHT source set handling functions
Add EHT source set and set-entry create, delete and lookup functions.
These allow to manipulate source sets which contain their own host sets
with entries which joined that S,G. We're limiting the maximum number of
tracked S,G entries per host to PG_SRC_ENT_LIMIT (currently 32) which is
the current maximum of S,G entries for a group. There's a per-set timer
which will be used to destroy the whole set later.
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/bridge/br_multicast.c')
-rw-r--r-- | net/bridge/br_multicast.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index dc6e879dc840..ac363b104239 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -594,6 +594,7 @@ void br_multicast_del_pg(struct net_bridge_mdb_entry *mp, rcu_assign_pointer(*pp, pg->next); hlist_del_init(&pg->mglist); + br_multicast_eht_clean_sets(pg); hlist_for_each_entry_safe(ent, tmp, &pg->src_list, node) br_multicast_del_group_src(ent); br_mdb_notify(br->dev, mp, pg, RTM_DELMDB); @@ -1174,6 +1175,7 @@ struct net_bridge_port_group *br_multicast_new_port_group( p->filter_mode = filter_mode; p->rt_protocol = rt_protocol; p->eht_host_tree = RB_ROOT; + p->eht_set_tree = RB_ROOT; p->mcast_gc.destroy = br_multicast_destroy_port_group; INIT_HLIST_HEAD(&p->src_list); |