• Ido Schimmel's avatar
    bridge: mcast: Add a flag for user installed source entries · a01ecb17
    Ido Schimmel authored
    There are a few places where the bridge driver differentiates between
    (S, G) entries installed by the kernel (in response to Membership
    Reports) and those installed by user space. One of them is when deleting
    an (S, G) entry corresponding to a source entry that is being deleted.
    
    While user space cannot currently add a source entry to a (*, G), it can
    add an (S, G) entry that later corresponds to a source entry created by
    the reception of a Membership Report. If this source entry is later
    deleted because its source timer expired or because the (*, G) entry is
    being deleted, the bridge driver will not delete the corresponding (S,
    G) entry if it was added by user space as permanent.
    
    This is going to be a problem when the ability to install a (*, G) with
    a source list is exposed to user space. In this case, when user space
    installs the (*, G) as permanent, then all the (S, G) entries
    corresponding to its source list will also be installed as permanent.
    When user space deletes the (*, G), all the source entries will be
    deleted and the expectation is that the corresponding (S, G) entries
    will be deleted as well.
    
    Solve this by introducing a new source entry flag denoting that the
    entry was installed by user space. When the entry is deleted, delete the
    corresponding (S, G) entry even if it was installed by user space as
    permanent, as the flag tells us that it was installed in response to the
    source entry being created.
    
    The flag will be set in a subsequent patch where source entries are
    created in response to user requests.
    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>
    a01ecb17
br_multicast.c 131 KB