• Ido Schimmel's avatar
    bridge: mcast: Support replacement of MDB port group entries · 61f21835
    Ido Schimmel authored
    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: default avatarIdo Schimmel <idosch@nvidia.com>
    Acked-by: default avatarNikolay Aleksandrov <razor@blackwall.org>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    61f21835
br_mdb.c 38.2 KB