• Nikolay Aleksandrov's avatar
    net: bridge: mcast: handle port group filter modes · 8266a049
    Nikolay Aleksandrov authored
    We need to handle group filter mode transitions and initial state.
    To change a port group's INCLUDE -> EXCLUDE mode (or when we have added
    a new port group in EXCLUDE mode) we need to add that port to all of
    *,G ports' S,G entries for proper replication. When the EXCLUDE state is
    changed from IGMPv3 report, br_multicast_fwd_filter_exclude() must be
    called after the source list processing because the assumption is that
    all of the group's S,G entries will be created before transitioning to
    EXCLUDE mode, i.e. most importantly its blocked entries will already be
    added so it will not get automatically added to them.
    The transition EXCLUDE -> INCLUDE happens only when a port group timer
    expires, it requires us to remove that port from all of *,G ports' S,G
    entries where it was automatically added previously.
    Finally when we are adding a new S,G entry we must add all of *,G's
    EXCLUDE ports to it.
    In order to distinguish automatically added *,G EXCLUDE ports we have a
    new port group flag - MDB_PG_FLAGS_STAR_EXCL.
    Signed-off-by: default avatarNikolay Aleksandrov <nikolay@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8266a049
br_mdb.c 26.4 KB