Lines Matching full:pg
78 struct net_bridge_port_group *pg);
201 static void __fwd_add_star_excl(struct net_bridge_port_group *pg, in __fwd_add_star_excl() argument
205 struct net_bridge *br = pg->key.port->br; in __fwd_add_star_excl()
209 sg_key.port = pg->key.port; in __fwd_add_star_excl()
214 src_pg = __br_multicast_add_group(br, pg->key.port, sg_ip, pg->eth_addr, in __fwd_add_star_excl()
223 static void __fwd_del_star_excl(struct net_bridge_port_group *pg, in __fwd_del_star_excl() argument
227 struct net_bridge *br = pg->key.port->br; in __fwd_del_star_excl()
231 sg_key.port = pg->key.port; in __fwd_del_star_excl()
249 void br_multicast_star_g_handle_mode(struct net_bridge_port_group *pg, in br_multicast_star_g_handle_mode() argument
252 struct net_bridge *br = pg->key.port->br; in br_multicast_star_g_handle_mode()
257 if (WARN_ON(!br_multicast_is_star_g(&pg->key.addr))) in br_multicast_star_g_handle_mode()
260 mp = br_mdb_ip_get(br, &pg->key.addr); in br_multicast_star_g_handle_mode()
265 sg_ip = pg->key.addr; in br_multicast_star_g_handle_mode()
271 if (pg_lst == pg) in br_multicast_star_g_handle_mode()
279 __fwd_del_star_excl(pg, &sg_ip); in br_multicast_star_g_handle_mode()
282 __fwd_add_star_excl(pg, &sg_ip); in br_multicast_star_g_handle_mode()
311 struct net_bridge_port_group *pg; in br_multicast_star_g_host_state() local
319 for (pg = mlock_dereference(star_mp->ports, br); in br_multicast_star_g_host_state()
320 pg; in br_multicast_star_g_host_state()
321 pg = mlock_dereference(pg->next, br)) { in br_multicast_star_g_host_state()
324 hlist_for_each_entry(src_ent, &pg->src_list, node) { in br_multicast_star_g_host_state()
375 struct net_bridge_port_group *pg; in br_multicast_sg_add_exclude_ports() local
386 for (pg = mlock_dereference(star_mp->ports, br); in br_multicast_sg_add_exclude_ports()
387 pg; in br_multicast_sg_add_exclude_ports()
388 pg = mlock_dereference(pg->next, br)) { in br_multicast_sg_add_exclude_ports()
391 if (pg == sg || pg->filter_mode == MCAST_INCLUDE) in br_multicast_sg_add_exclude_ports()
394 sg_key.port = pg->key.port; in br_multicast_sg_add_exclude_ports()
398 src_pg = __br_multicast_add_group(br, pg->key.port, in br_multicast_sg_add_exclude_ports()
419 sg_ip = src->pg->key.addr; in br_multicast_fwd_src_add()
421 sg = __br_multicast_add_group(src->br, src->pg->key.port, &sg_ip, in br_multicast_fwd_src_add()
422 src->pg->eth_addr, MCAST_INCLUDE, false, in br_multicast_fwd_src_add()
436 star_mp = br_mdb_ip_get(src->br, &src->pg->key.addr); in br_multicast_fwd_src_add()
445 struct net_bridge_port_group *p, *pg = src->pg; in br_multicast_fwd_src_remove() local
451 sg_ip = pg->key.addr; in br_multicast_fwd_src_remove()
461 if (!br_port_group_equal(p, pg->key.port, pg->eth_addr)) in br_multicast_fwd_src_remove()
484 sg_key.addr = src->pg->key.addr; in br_multicast_fwd_src_handle()
486 sg_key.port = src->pg->key.port; in br_multicast_fwd_src_handle()
563 struct net_bridge *br = src->pg->key.port->br; in br_multicast_del_group_src()
567 src->pg->src_ents--; in br_multicast_del_group_src()
574 struct net_bridge_port_group *pg; in br_multicast_destroy_port_group() local
576 pg = container_of(gc, struct net_bridge_port_group, mcast_gc); in br_multicast_destroy_port_group()
577 WARN_ON(!hlist_unhashed(&pg->mglist)); in br_multicast_destroy_port_group()
578 WARN_ON(!hlist_empty(&pg->src_list)); in br_multicast_destroy_port_group()
580 del_timer_sync(&pg->rexmit_timer); in br_multicast_destroy_port_group()
581 del_timer_sync(&pg->timer); in br_multicast_destroy_port_group()
582 kfree_rcu(pg, rcu); in br_multicast_destroy_port_group()
586 struct net_bridge_port_group *pg, in br_multicast_del_pg() argument
589 struct net_bridge *br = pg->key.port->br; in br_multicast_del_pg()
593 rcu_assign_pointer(*pp, pg->next); in br_multicast_del_pg()
594 hlist_del_init(&pg->mglist); in br_multicast_del_pg()
595 hlist_for_each_entry_safe(ent, tmp, &pg->src_list, node) in br_multicast_del_pg()
597 br_mdb_notify(br->dev, mp, pg, RTM_DELMDB); in br_multicast_del_pg()
599 rhashtable_remove_fast(&br->sg_port_tbl, &pg->rhnode, in br_multicast_del_pg()
603 br_multicast_star_g_handle_mode(pg, MCAST_INCLUDE); in br_multicast_del_pg()
605 hlist_add_head(&pg->mcast_gc.gc_node, &br->mcast_gc_list); in br_multicast_del_pg()
613 struct net_bridge_port_group *pg) in br_multicast_find_del_pg() argument
619 mp = br_mdb_ip_get(br, &pg->key.addr); in br_multicast_find_del_pg()
626 if (p != pg) in br_multicast_find_del_pg()
629 br_multicast_del_pg(mp, pg, pp); in br_multicast_find_del_pg()
638 struct net_bridge_port_group *pg = from_timer(pg, t, timer); in br_multicast_port_group_expired() local
640 struct net_bridge *br = pg->key.port->br; in br_multicast_port_group_expired()
645 if (!netif_running(br->dev) || timer_pending(&pg->timer) || in br_multicast_port_group_expired()
646 hlist_unhashed(&pg->mglist) || pg->flags & MDB_PG_FLAGS_PERMANENT) in br_multicast_port_group_expired()
649 changed = !!(pg->filter_mode == MCAST_EXCLUDE); in br_multicast_port_group_expired()
650 pg->filter_mode = MCAST_INCLUDE; in br_multicast_port_group_expired()
651 hlist_for_each_entry_safe(src_ent, tmp, &pg->src_list, node) { in br_multicast_port_group_expired()
658 if (hlist_empty(&pg->src_list)) { in br_multicast_port_group_expired()
659 br_multicast_find_del_pg(br, pg); in br_multicast_port_group_expired()
661 struct net_bridge_mdb_entry *mp = br_mdb_ip_get(br, &pg->key.addr); in br_multicast_port_group_expired()
663 if (changed && br_multicast_is_star_g(&pg->key.addr)) in br_multicast_port_group_expired()
664 br_multicast_star_g_handle_mode(pg, MCAST_INCLUDE); in br_multicast_port_group_expired()
668 br_mdb_notify(br->dev, mp, pg, RTM_NEWMDB); in br_multicast_port_group_expired()
686 struct net_bridge_port_group *pg, in br_ip4_multicast_alloc_query() argument
692 struct net_bridge_port *p = pg ? pg->key.port : NULL; in br_ip4_multicast_alloc_query()
709 if (pg && with_srcs) { in br_ip4_multicast_alloc_query()
712 hlist_for_each_entry(ent, &pg->src_list, node) { in br_ip4_multicast_alloc_query()
795 if (!pg || !with_srcs) in br_ip4_multicast_alloc_query()
799 hlist_for_each_entry(ent, &pg->src_list, node) { in br_ip4_multicast_alloc_query()
831 struct net_bridge_port_group *pg, in br_ip6_multicast_alloc_query() argument
838 struct net_bridge_port *p = pg ? pg->key.port : NULL; in br_ip6_multicast_alloc_query()
857 if (pg && with_srcs) { in br_ip6_multicast_alloc_query()
860 hlist_for_each_entry(ent, &pg->src_list, node) { in br_ip6_multicast_alloc_query()
956 if (!pg || !with_srcs) in br_ip6_multicast_alloc_query()
960 hlist_for_each_entry(ent, &pg->src_list, node) { in br_ip6_multicast_alloc_query()
994 struct net_bridge_port_group *pg, in br_multicast_alloc_query() argument
1006 return br_ip4_multicast_alloc_query(br, pg, in br_multicast_alloc_query()
1021 return br_ip6_multicast_alloc_query(br, pg, in br_multicast_alloc_query()
1070 struct net_bridge_port_group *pg; in br_multicast_group_src_expired() local
1078 pg = src->pg; in br_multicast_group_src_expired()
1079 if (pg->filter_mode == MCAST_INCLUDE) { in br_multicast_group_src_expired()
1081 if (!hlist_empty(&pg->src_list)) in br_multicast_group_src_expired()
1083 br_multicast_find_del_pg(br, pg); in br_multicast_group_src_expired()
1093 br_multicast_find_group_src(struct net_bridge_port_group *pg, struct br_ip *ip) in br_multicast_find_group_src() argument
1099 hlist_for_each_entry(ent, &pg->src_list, node) in br_multicast_find_group_src()
1105 hlist_for_each_entry(ent, &pg->src_list, node) in br_multicast_find_group_src()
1116 br_multicast_new_group_src(struct net_bridge_port_group *pg, struct br_ip *src_ip) in br_multicast_new_group_src() argument
1120 if (unlikely(pg->src_ents >= PG_SRC_ENT_LIMIT)) in br_multicast_new_group_src()
1142 grp_src->pg = pg; in br_multicast_new_group_src()
1143 grp_src->br = pg->key.port->br; in br_multicast_new_group_src()
1148 hlist_add_head_rcu(&grp_src->node, &pg->src_list); in br_multicast_new_group_src()
1149 pg->src_ents++; in br_multicast_new_group_src()
1283 struct net_bridge_port_group *pg; in br_multicast_add_group() local
1287 pg = __br_multicast_add_group(br, port, group, src, filter_mode, in br_multicast_add_group()
1290 err = IS_ERR(pg) ? PTR_ERR(pg) : 0; in br_multicast_add_group()
1432 struct net_bridge_port_group *pg, in __br_multicast_send_query() argument
1444 skb = br_multicast_alloc_query(br, pg, ip_dst, group, with_srcs, in __br_multicast_send_query()
1547 struct net_bridge_port_group *pg = from_timer(pg, t, rexmit_timer); in br_multicast_port_group_rexmit() local
1549 struct net_bridge *br = pg->key.port->br; in br_multicast_port_group_rexmit()
1553 if (!netif_running(br->dev) || hlist_unhashed(&pg->mglist) || in br_multicast_port_group_rexmit()
1558 if (pg->key.addr.proto == htons(ETH_P_IP)) in br_multicast_port_group_rexmit()
1568 if (pg->grp_query_rexmit_cnt) { in br_multicast_port_group_rexmit()
1569 pg->grp_query_rexmit_cnt--; in br_multicast_port_group_rexmit()
1570 __br_multicast_send_query(br, pg->key.port, pg, &pg->key.addr, in br_multicast_port_group_rexmit()
1571 &pg->key.addr, false, 1, NULL); in br_multicast_port_group_rexmit()
1573 __br_multicast_send_query(br, pg->key.port, pg, &pg->key.addr, in br_multicast_port_group_rexmit()
1574 &pg->key.addr, true, 0, &need_rexmit); in br_multicast_port_group_rexmit()
1576 if (pg->grp_query_rexmit_cnt || need_rexmit) in br_multicast_port_group_rexmit()
1577 mod_timer(&pg->rexmit_timer, jiffies + in br_multicast_port_group_rexmit()
1620 struct net_bridge_port_group *pg; in br_multicast_del_port() local
1626 hlist_for_each_entry_safe(pg, n, &port->mglist, mglist) in br_multicast_del_port()
1627 br_multicast_find_del_pg(br, pg); in br_multicast_del_port()
1672 struct net_bridge_port_group *pg; in br_multicast_disable_port() local
1676 hlist_for_each_entry_safe(pg, n, &port->mglist, mglist) in br_multicast_disable_port()
1677 if (!(pg->flags & MDB_PG_FLAGS_PERMANENT)) in br_multicast_disable_port()
1678 br_multicast_find_del_pg(br, pg); in br_multicast_disable_port()
1690 static int __grp_src_delete_marked(struct net_bridge_port_group *pg) in __grp_src_delete_marked() argument
1696 hlist_for_each_entry_safe(ent, tmp, &pg->src_list, node) in __grp_src_delete_marked()
1712 static void __grp_src_query_marked_and_rexmit(struct net_bridge_port_group *pg) in __grp_src_query_marked_and_rexmit() argument
1715 struct net_bridge *br = pg->key.port->br; in __grp_src_query_marked_and_rexmit()
1724 if (pg->key.addr.proto == htons(ETH_P_IP)) in __grp_src_query_marked_and_rexmit()
1732 hlist_for_each_entry(ent, &pg->src_list, node) { in __grp_src_query_marked_and_rexmit()
1749 __br_multicast_send_query(br, pg->key.port, pg, &pg->key.addr, in __grp_src_query_marked_and_rexmit()
1750 &pg->key.addr, true, 1, NULL); in __grp_src_query_marked_and_rexmit()
1753 if (!timer_pending(&pg->rexmit_timer) || in __grp_src_query_marked_and_rexmit()
1754 time_after(pg->rexmit_timer.expires, lmi)) in __grp_src_query_marked_and_rexmit()
1755 mod_timer(&pg->rexmit_timer, lmi); in __grp_src_query_marked_and_rexmit()
1758 static void __grp_send_query_and_rexmit(struct net_bridge_port_group *pg) in __grp_send_query_and_rexmit() argument
1761 struct net_bridge *br = pg->key.port->br; in __grp_send_query_and_rexmit()
1768 if (pg->key.addr.proto == htons(ETH_P_IP)) in __grp_send_query_and_rexmit()
1778 pg->grp_query_rexmit_cnt = br->multicast_last_member_count - 1; in __grp_send_query_and_rexmit()
1779 __br_multicast_send_query(br, pg->key.port, pg, &pg->key.addr, in __grp_send_query_and_rexmit()
1780 &pg->key.addr, false, 0, NULL); in __grp_send_query_and_rexmit()
1781 if (!timer_pending(&pg->rexmit_timer) || in __grp_send_query_and_rexmit()
1782 time_after(pg->rexmit_timer.expires, lmi)) in __grp_send_query_and_rexmit()
1783 mod_timer(&pg->rexmit_timer, lmi); in __grp_send_query_and_rexmit()
1786 if (pg->filter_mode == MCAST_EXCLUDE && in __grp_send_query_and_rexmit()
1787 (!timer_pending(&pg->timer) || in __grp_send_query_and_rexmit()
1788 time_after(pg->timer.expires, now + br_multicast_lmqt(br)))) in __grp_send_query_and_rexmit()
1789 mod_timer(&pg->timer, now + br_multicast_lmqt(br)); in __grp_send_query_and_rexmit()
1797 static bool br_multicast_isinc_allow(struct net_bridge_port_group *pg, in br_multicast_isinc_allow() argument
1800 struct net_bridge *br = pg->key.port->br; in br_multicast_isinc_allow()
1808 src_ip.proto = pg->key.addr.proto; in br_multicast_isinc_allow()
1811 ent = br_multicast_find_group_src(pg, &src_ip); in br_multicast_isinc_allow()
1813 ent = br_multicast_new_group_src(pg, &src_ip); in br_multicast_isinc_allow()
1831 static void __grp_src_isexc_incl(struct net_bridge_port_group *pg, in __grp_src_isexc_incl() argument
1838 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_isexc_incl()
1842 src_ip.proto = pg->key.addr.proto; in __grp_src_isexc_incl()
1845 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_isexc_incl()
1849 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_isexc_incl()
1855 __grp_src_delete_marked(pg); in __grp_src_isexc_incl()
1864 static bool __grp_src_isexc_excl(struct net_bridge_port_group *pg, in __grp_src_isexc_excl() argument
1867 struct net_bridge *br = pg->key.port->br; in __grp_src_isexc_excl()
1874 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_isexc_excl()
1878 src_ip.proto = pg->key.addr.proto; in __grp_src_isexc_excl()
1881 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_isexc_excl()
1885 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_isexc_excl()
1895 if (__grp_src_delete_marked(pg)) in __grp_src_isexc_excl()
1901 static bool br_multicast_isexc(struct net_bridge_port_group *pg, in br_multicast_isexc() argument
1904 struct net_bridge *br = pg->key.port->br; in br_multicast_isexc()
1907 switch (pg->filter_mode) { in br_multicast_isexc()
1909 __grp_src_isexc_incl(pg, srcs, nsrcs, src_size); in br_multicast_isexc()
1910 br_multicast_star_g_handle_mode(pg, MCAST_EXCLUDE); in br_multicast_isexc()
1914 changed = __grp_src_isexc_excl(pg, srcs, nsrcs, src_size); in br_multicast_isexc()
1918 pg->filter_mode = MCAST_EXCLUDE; in br_multicast_isexc()
1919 mod_timer(&pg->timer, jiffies + br_multicast_gmi(br)); in br_multicast_isexc()
1928 static bool __grp_src_toin_incl(struct net_bridge_port_group *pg, in __grp_src_toin_incl() argument
1931 struct net_bridge *br = pg->key.port->br; in __grp_src_toin_incl()
1932 u32 src_idx, to_send = pg->src_ents; in __grp_src_toin_incl()
1938 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_toin_incl()
1942 src_ip.proto = pg->key.addr.proto; in __grp_src_toin_incl()
1945 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_toin_incl()
1950 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_toin_incl()
1960 __grp_src_query_marked_and_rexmit(pg); in __grp_src_toin_incl()
1970 static bool __grp_src_toin_excl(struct net_bridge_port_group *pg, in __grp_src_toin_excl() argument
1973 struct net_bridge *br = pg->key.port->br; in __grp_src_toin_excl()
1974 u32 src_idx, to_send = pg->src_ents; in __grp_src_toin_excl()
1980 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_toin_excl()
1985 src_ip.proto = pg->key.addr.proto; in __grp_src_toin_excl()
1988 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_toin_excl()
1995 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_toin_excl()
2005 __grp_src_query_marked_and_rexmit(pg); in __grp_src_toin_excl()
2007 __grp_send_query_and_rexmit(pg); in __grp_src_toin_excl()
2012 static bool br_multicast_toin(struct net_bridge_port_group *pg, in br_multicast_toin() argument
2017 switch (pg->filter_mode) { in br_multicast_toin()
2019 changed = __grp_src_toin_incl(pg, srcs, nsrcs, src_size); in br_multicast_toin()
2022 changed = __grp_src_toin_excl(pg, srcs, nsrcs, src_size); in br_multicast_toin()
2035 static void __grp_src_toex_incl(struct net_bridge_port_group *pg, in __grp_src_toex_incl() argument
2042 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_toex_incl()
2046 src_ip.proto = pg->key.addr.proto; in __grp_src_toex_incl()
2049 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_toex_incl()
2055 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_toex_incl()
2062 __grp_src_delete_marked(pg); in __grp_src_toex_incl()
2064 __grp_src_query_marked_and_rexmit(pg); in __grp_src_toex_incl()
2074 static bool __grp_src_toex_excl(struct net_bridge_port_group *pg, in __grp_src_toex_excl() argument
2082 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_toex_excl()
2086 src_ip.proto = pg->key.addr.proto; in __grp_src_toex_excl()
2089 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_toex_excl()
2093 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_toex_excl()
2095 __grp_src_mod_timer(ent, pg->timer.expires); in __grp_src_toex_excl()
2106 if (__grp_src_delete_marked(pg)) in __grp_src_toex_excl()
2109 __grp_src_query_marked_and_rexmit(pg); in __grp_src_toex_excl()
2114 static bool br_multicast_toex(struct net_bridge_port_group *pg, in br_multicast_toex() argument
2117 struct net_bridge *br = pg->key.port->br; in br_multicast_toex()
2120 switch (pg->filter_mode) { in br_multicast_toex()
2122 __grp_src_toex_incl(pg, srcs, nsrcs, src_size); in br_multicast_toex()
2123 br_multicast_star_g_handle_mode(pg, MCAST_EXCLUDE); in br_multicast_toex()
2127 changed = __grp_src_toex_excl(pg, srcs, nsrcs, src_size); in br_multicast_toex()
2131 pg->filter_mode = MCAST_EXCLUDE; in br_multicast_toex()
2132 mod_timer(&pg->timer, jiffies + br_multicast_gmi(br)); in br_multicast_toex()
2140 static void __grp_src_block_incl(struct net_bridge_port_group *pg, in __grp_src_block_incl() argument
2147 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_block_incl()
2151 src_ip.proto = pg->key.addr.proto; in __grp_src_block_incl()
2154 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_block_incl()
2163 __grp_src_query_marked_and_rexmit(pg); in __grp_src_block_incl()
2165 if (pg->filter_mode == MCAST_INCLUDE && hlist_empty(&pg->src_list)) in __grp_src_block_incl()
2166 br_multicast_find_del_pg(pg->key.port->br, pg); in __grp_src_block_incl()
2173 static bool __grp_src_block_excl(struct net_bridge_port_group *pg, in __grp_src_block_excl() argument
2181 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_block_excl()
2185 src_ip.proto = pg->key.addr.proto; in __grp_src_block_excl()
2188 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_block_excl()
2190 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_block_excl()
2192 __grp_src_mod_timer(ent, pg->timer.expires); in __grp_src_block_excl()
2204 __grp_src_query_marked_and_rexmit(pg); in __grp_src_block_excl()
2209 static bool br_multicast_block(struct net_bridge_port_group *pg, in br_multicast_block() argument
2214 switch (pg->filter_mode) { in br_multicast_block()
2216 __grp_src_block_incl(pg, srcs, nsrcs, src_size); in br_multicast_block()
2219 changed = __grp_src_block_excl(pg, srcs, nsrcs, src_size); in br_multicast_block()
2232 struct net_bridge_port_group *pg; in br_multicast_find_port() local
2234 for (pg = mlock_dereference(mp->ports, br); in br_multicast_find_port()
2235 pg; in br_multicast_find_port()
2236 pg = mlock_dereference(pg->next, br)) in br_multicast_find_port()
2237 if (br_port_group_equal(pg, p, src)) in br_multicast_find_port()
2238 return pg; in br_multicast_find_port()
2250 struct net_bridge_port_group *pg; in br_ip4_multicast_igmp3_report() local
2313 pg = br_multicast_find_port(mdst, port, src); in br_ip4_multicast_igmp3_report()
2314 if (!pg || (pg->flags & MDB_PG_FLAGS_PERMANENT)) in br_ip4_multicast_igmp3_report()
2320 changed = br_multicast_isinc_allow(pg, grec->grec_src, in br_ip4_multicast_igmp3_report()
2324 changed = br_multicast_isinc_allow(pg, grec->grec_src, nsrcs, in br_ip4_multicast_igmp3_report()
2328 changed = br_multicast_isexc(pg, grec->grec_src, nsrcs, in br_ip4_multicast_igmp3_report()
2332 changed = br_multicast_toin(pg, grec->grec_src, nsrcs, in br_ip4_multicast_igmp3_report()
2336 changed = br_multicast_toex(pg, grec->grec_src, nsrcs, in br_ip4_multicast_igmp3_report()
2340 changed = br_multicast_block(pg, grec->grec_src, nsrcs, in br_ip4_multicast_igmp3_report()
2345 br_mdb_notify(br->dev, mdst, pg, RTM_NEWMDB); in br_ip4_multicast_igmp3_report()
2361 struct net_bridge_port_group *pg; in br_ip6_multicast_mld2_report() local
2440 pg = br_multicast_find_port(mdst, port, src); in br_ip6_multicast_mld2_report()
2441 if (!pg || (pg->flags & MDB_PG_FLAGS_PERMANENT)) in br_ip6_multicast_mld2_report()
2445 changed = br_multicast_isinc_allow(pg, grec->grec_src, in br_ip6_multicast_mld2_report()
2450 changed = br_multicast_isinc_allow(pg, grec->grec_src, nsrcs, in br_ip6_multicast_mld2_report()
2454 changed = br_multicast_isexc(pg, grec->grec_src, nsrcs, in br_ip6_multicast_mld2_report()
2458 changed = br_multicast_toin(pg, grec->grec_src, nsrcs, in br_ip6_multicast_mld2_report()
2462 changed = br_multicast_toex(pg, grec->grec_src, nsrcs, in br_ip6_multicast_mld2_report()
2466 changed = br_multicast_block(pg, grec->grec_src, nsrcs, in br_ip6_multicast_mld2_report()
2471 br_mdb_notify(br->dev, mdst, pg, RTM_NEWMDB); in br_ip6_multicast_mld2_report()