On 08/12/2022 17:28, Ido Schimmel wrote: > In preparation for allowing user space to add (*, G) entries with a > source list and associated filter mode, add the necessary plumbing to > handle such requests. > > Extend the MDB configuration structure with a currently empty source > array and filter mode that is currently hard coded to EXCLUDE. > > Add the source entries and the corresponding (S, G) entries before > making the new (*, G) port group entry visible to the data path. > > Handle the creation of each source entry in a similar fashion to how it > is created from the data path in response to received Membership > Reports: Create the source entry, arm the source timer (if needed), add > a corresponding (S, G) forwarding entry and finally mark the source > entry as installed (by user space). > > Add the (S, G) entry by populating an MDB configuration structure and > calling br_mdb_add_group_sg() as if a new entry is created by user > space, with the sole difference that the 'src_entry' field is set to > make sure that the group timer of such entries is never armed. > > Note that it is not currently possible to add more than 32 source > entries to a port group entry. If this proves to be a problem we can > either increase 'PG_SRC_ENT_LIMIT' or avoid forcing a limit on entries > created by user space. > That can be tricky wrt EHT. If the limit is increased we have to consider the complexity and runtime, we might have to optimize it. In practice I think it's rare to have so many sources, but evpn might change that. :) > Signed-off-by: Ido Schimmel <idosch@xxxxxxxxxx> > --- > > Notes: > v1: > * Use an array instead of a list to store source entries. > > net/bridge/br_mdb.c | 128 +++++++++++++++++++++++++++++++++++++++- > net/bridge/br_private.h | 7 +++ > 2 files changed, 132 insertions(+), 3 deletions(-) > Acked-by: Nikolay Aleksandrov <razor@xxxxxxxxxxxxx>