On 10/12/2022 16:56, Ido Schimmel wrote: > Now that user space can specify additional attributes of port group > entries such as filter mode and source list, it makes sense to allow > user space to atomically modify these attributes by replacing entries > instead of forcing user space to delete the entries and add them back. > > Replace MDB port group entries when the 'NLM_F_REPLACE' flag is > specified in the netlink message header. > > When a (*, G) entry is replaced, update the following attributes: Source > list, state, filter mode, protocol and flags. If the entry is temporary > and in EXCLUDE mode, reset the group timer to the group membership > interval. If the entry is temporary and in INCLUDE mode, reset the > source timers of associated sources to the group membership interval. > > Examples: > > # bridge mdb replace dev br0 port dummy10 grp 239.1.1.1 permanent source_list 192.0.2.1,192.0.2.2 filter_mode include > # bridge -d -s mdb show > dev br0 port dummy10 grp 239.1.1.1 src 192.0.2.2 permanent filter_mode include proto static 0.00 > dev br0 port dummy10 grp 239.1.1.1 src 192.0.2.1 permanent filter_mode include proto static 0.00 > dev br0 port dummy10 grp 239.1.1.1 permanent filter_mode include source_list 192.0.2.2/0.00,192.0.2.1/0.00 proto static 0.00 > > # bridge mdb replace dev br0 port dummy10 grp 239.1.1.1 permanent source_list 192.0.2.1,192.0.2.3 filter_mode exclude proto zebra > # bridge -d -s mdb show > dev br0 port dummy10 grp 239.1.1.1 src 192.0.2.3 permanent filter_mode include proto zebra blocked 0.00 > dev br0 port dummy10 grp 239.1.1.1 src 192.0.2.1 permanent filter_mode include proto zebra blocked 0.00 > dev br0 port dummy10 grp 239.1.1.1 permanent filter_mode exclude source_list 192.0.2.3/0.00,192.0.2.1/0.00 proto zebra 0.00 > > # bridge mdb replace dev br0 port dummy10 grp 239.1.1.1 temp source_list 192.0.2.4,192.0.2.3 filter_mode include proto bgp > # bridge -d -s mdb show > dev br0 port dummy10 grp 239.1.1.1 src 192.0.2.4 temp filter_mode include proto bgp 0.00 > dev br0 port dummy10 grp 239.1.1.1 src 192.0.2.3 temp filter_mode include proto bgp 0.00 > dev br0 port dummy10 grp 239.1.1.1 temp filter_mode include source_list 192.0.2.4/259.44,192.0.2.3/259.44 proto bgp 0.00 > > Signed-off-by: Ido Schimmel <idosch@xxxxxxxxxx> > --- > > Notes: > v2: > * Remove extack from br_mdb_replace_group_sg(). > * Change 'nlflags' to u16 and move it after 'filter_mode' to pack the > structure. > > net/bridge/br_mdb.c | 102 ++++++++++++++++++++++++++++++++++++++-- > net/bridge/br_private.h | 1 + > 2 files changed, 98 insertions(+), 5 deletions(-) > Acked-by: Nikolay Aleksandrov <razor@xxxxxxxxxxxxx>