Lines Matching refs:pmctx

55 					struct net_bridge_mcast_port *pmctx);
57 struct net_bridge_mcast_port *pmctx,
64 br_multicast_rport_del_notify(struct net_bridge_mcast_port *pmctx, bool deleted);
66 struct net_bridge_mcast_port *pmctx);
69 struct net_bridge_mcast_port *pmctx,
75 struct net_bridge_mcast_port *pmctx,
207 struct net_bridge_mcast_port *pmctx = &pg->key.port->multicast_ctx; in br_multicast_pg_to_port_ctx() local
226 pmctx = &vlan->port_mcast_ctx; in br_multicast_pg_to_port_ctx()
228 pmctx = NULL; in br_multicast_pg_to_port_ctx()
231 return pmctx; in br_multicast_pg_to_port_ctx()
241 const struct net_bridge_mcast_port *pmctx) in br_multicast_ctx_should_use() argument
246 if (pmctx) in br_multicast_ctx_should_use()
247 return !br_multicast_port_ctx_state_disabled(pmctx); in br_multicast_ctx_should_use()
265 static void __fwd_add_star_excl(struct net_bridge_mcast_port *pmctx, in __fwd_add_star_excl() argument
274 brmctx = br_multicast_port_ctx_get_global(pmctx); in __fwd_add_star_excl()
280 src_pg = __br_multicast_add_group(brmctx, pmctx, in __fwd_add_star_excl()
321 struct net_bridge_mcast_port *pmctx; in br_multicast_star_g_handle_mode() local
331 pmctx = br_multicast_pg_to_port_ctx(pg); in br_multicast_star_g_handle_mode()
332 if (!pmctx) in br_multicast_star_g_handle_mode()
354 __fwd_add_star_excl(pmctx, pg, &sg_ip); in br_multicast_star_g_handle_mode()
447 struct net_bridge_mcast_port *pmctx; in br_multicast_sg_add_exclude_ports() local
472 pmctx = br_multicast_pg_to_port_ctx(pg); in br_multicast_sg_add_exclude_ports()
473 if (!pmctx) in br_multicast_sg_add_exclude_ports()
475 brmctx = br_multicast_port_ctx_get_global(pmctx); in br_multicast_sg_add_exclude_ports()
477 src_pg = __br_multicast_add_group(brmctx, pmctx, in br_multicast_sg_add_exclude_ports()
491 struct net_bridge_mcast_port *pmctx; in br_multicast_fwd_src_add() local
500 pmctx = br_multicast_pg_to_port_ctx(src->pg); in br_multicast_fwd_src_add()
501 if (!pmctx) in br_multicast_fwd_src_add()
503 brmctx = br_multicast_port_ctx_get_global(pmctx); in br_multicast_fwd_src_add()
507 sg = __br_multicast_add_group(brmctx, pmctx, &sg_ip, in br_multicast_fwd_src_add()
777 struct net_bridge_mcast_port *pmctx, in __br_multicast_query_handle_vlan() argument
782 if (pmctx && br_multicast_port_ctx_is_vlan(pmctx)) in __br_multicast_query_handle_vlan()
783 vlan = pmctx->vlan; in __br_multicast_query_handle_vlan()
797 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_alloc_query() argument
846 __br_multicast_query_handle_vlan(brmctx, pmctx, skb); in br_ip4_multicast_alloc_query()
944 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_alloc_query() argument
996 __br_multicast_query_handle_vlan(brmctx, pmctx, skb); in br_ip6_multicast_alloc_query()
1109 struct net_bridge_mcast_port *pmctx, in br_multicast_alloc_query() argument
1122 return br_ip4_multicast_alloc_query(brmctx, pmctx, pg, in br_multicast_alloc_query()
1137 return br_ip6_multicast_alloc_query(brmctx, pmctx, pg, in br_multicast_alloc_query()
1346 struct net_bridge_mcast_port *pmctx, in __br_multicast_add_group() argument
1358 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in __br_multicast_add_group()
1365 if (!pmctx) { in __br_multicast_add_group()
1373 if (br_port_group_equal(p, pmctx->port, src)) in __br_multicast_add_group()
1375 if ((unsigned long)p->key.port < (unsigned long)pmctx->port) in __br_multicast_add_group()
1379 p = br_multicast_new_port_group(pmctx->port, group, *pp, 0, src, in __br_multicast_add_group()
1400 struct net_bridge_mcast_port *pmctx, in br_multicast_add_group() argument
1410 pg = __br_multicast_add_group(brmctx, pmctx, group, src, filter_mode, in br_multicast_add_group()
1420 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_add_group() argument
1438 return br_multicast_add_group(brmctx, pmctx, &br_group, src, in br_ip4_multicast_add_group()
1444 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_add_group() argument
1462 return br_multicast_add_group(brmctx, pmctx, &br_group, src, in br_ip6_multicast_add_group()
1476 static bool br_ip4_multicast_rport_del(struct net_bridge_mcast_port *pmctx) in br_ip4_multicast_rport_del() argument
1478 return br_multicast_rport_del(&pmctx->ip4_rlist); in br_ip4_multicast_rport_del()
1481 static bool br_ip6_multicast_rport_del(struct net_bridge_mcast_port *pmctx) in br_ip6_multicast_rport_del() argument
1484 return br_multicast_rport_del(&pmctx->ip6_rlist); in br_ip6_multicast_rport_del()
1490 static void br_multicast_router_expired(struct net_bridge_mcast_port *pmctx, in br_multicast_router_expired() argument
1494 struct net_bridge *br = pmctx->port->br; in br_multicast_router_expired()
1498 if (pmctx->multicast_router == MDB_RTR_TYPE_DISABLED || in br_multicast_router_expired()
1499 pmctx->multicast_router == MDB_RTR_TYPE_PERM || in br_multicast_router_expired()
1504 br_multicast_rport_del_notify(pmctx, del); in br_multicast_router_expired()
1511 struct net_bridge_mcast_port *pmctx = from_timer(pmctx, t, in br_ip4_multicast_router_expired() local
1514 br_multicast_router_expired(pmctx, t, &pmctx->ip4_rlist); in br_ip4_multicast_router_expired()
1520 struct net_bridge_mcast_port *pmctx = from_timer(pmctx, t, in br_ip6_multicast_router_expired() local
1523 br_multicast_router_expired(pmctx, t, &pmctx->ip6_rlist); in br_ip6_multicast_router_expired()
1619 struct net_bridge_mcast_port *pmctx, in __br_multicast_send_query() argument
1631 if (!br_multicast_ctx_should_use(brmctx, pmctx) || in __br_multicast_send_query()
1636 skb = br_multicast_alloc_query(brmctx, pmctx, pg, ip_dst, group, in __br_multicast_send_query()
1642 if (pmctx) { in __br_multicast_send_query()
1643 skb->dev = pmctx->port->dev; in __br_multicast_send_query()
1644 br_multicast_count(brmctx->br, pmctx->port, skb, igmp_type, in __br_multicast_send_query()
1647 dev_net(pmctx->port->dev), NULL, skb, NULL, skb->dev, in __br_multicast_send_query()
1687 struct net_bridge_mcast_port *pmctx, in br_multicast_send_query() argument
1695 if (!br_multicast_ctx_should_use(brmctx, pmctx) || in br_multicast_send_query()
1702 if (pmctx ? (own_query == &pmctx->ip4_own_query) : in br_multicast_send_query()
1719 if (!pmctx && querier->port_ifidx) { in br_multicast_send_query()
1725 __br_multicast_send_query(brmctx, pmctx, NULL, NULL, &br_group, false, in br_multicast_send_query()
1736 br_multicast_port_query_expired(struct net_bridge_mcast_port *pmctx, in br_multicast_port_query_expired() argument
1739 struct net_bridge *br = pmctx->port->br; in br_multicast_port_query_expired()
1743 if (br_multicast_port_ctx_state_stopped(pmctx)) in br_multicast_port_query_expired()
1746 brmctx = br_multicast_port_ctx_get_global(pmctx); in br_multicast_port_query_expired()
1750 br_multicast_send_query(brmctx, pmctx, query); in br_multicast_port_query_expired()
1758 struct net_bridge_mcast_port *pmctx = from_timer(pmctx, t, in br_ip4_multicast_port_query_expired() local
1761 br_multicast_port_query_expired(pmctx, &pmctx->ip4_own_query); in br_ip4_multicast_port_query_expired()
1767 struct net_bridge_mcast_port *pmctx = from_timer(pmctx, t, in br_ip6_multicast_port_query_expired() local
1770 br_multicast_port_query_expired(pmctx, &pmctx->ip6_own_query); in br_ip6_multicast_port_query_expired()
1779 struct net_bridge_mcast_port *pmctx; in br_multicast_port_group_rexmit() local
1788 pmctx = br_multicast_pg_to_port_ctx(pg); in br_multicast_port_group_rexmit()
1789 if (!pmctx) in br_multicast_port_group_rexmit()
1791 brmctx = br_multicast_port_ctx_get_global(pmctx); in br_multicast_port_group_rexmit()
1807 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in br_multicast_port_group_rexmit()
1810 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in br_multicast_port_group_rexmit()
1835 struct net_bridge_mcast_port *pmctx) in br_multicast_port_ctx_init() argument
1837 pmctx->port = port; in br_multicast_port_ctx_init()
1838 pmctx->vlan = vlan; in br_multicast_port_ctx_init()
1839 pmctx->multicast_router = MDB_RTR_TYPE_TEMP_QUERY; in br_multicast_port_ctx_init()
1840 timer_setup(&pmctx->ip4_mc_router_timer, in br_multicast_port_ctx_init()
1842 timer_setup(&pmctx->ip4_own_query.timer, in br_multicast_port_ctx_init()
1845 timer_setup(&pmctx->ip6_mc_router_timer, in br_multicast_port_ctx_init()
1847 timer_setup(&pmctx->ip6_own_query.timer, in br_multicast_port_ctx_init()
1852 void br_multicast_port_ctx_deinit(struct net_bridge_mcast_port *pmctx) in br_multicast_port_ctx_deinit() argument
1855 del_timer_sync(&pmctx->ip6_mc_router_timer); in br_multicast_port_ctx_deinit()
1857 del_timer_sync(&pmctx->ip4_mc_router_timer); in br_multicast_port_ctx_deinit()
1908 static void __br_multicast_enable_port_ctx(struct net_bridge_mcast_port *pmctx) in __br_multicast_enable_port_ctx() argument
1910 struct net_bridge *br = pmctx->port->br; in __br_multicast_enable_port_ctx()
1913 brmctx = br_multicast_port_ctx_get_global(pmctx); in __br_multicast_enable_port_ctx()
1918 br_multicast_enable(&pmctx->ip4_own_query); in __br_multicast_enable_port_ctx()
1920 br_multicast_enable(&pmctx->ip6_own_query); in __br_multicast_enable_port_ctx()
1922 if (pmctx->multicast_router == MDB_RTR_TYPE_PERM) { in __br_multicast_enable_port_ctx()
1923 br_ip4_multicast_add_router(brmctx, pmctx); in __br_multicast_enable_port_ctx()
1924 br_ip6_multicast_add_router(brmctx, pmctx); in __br_multicast_enable_port_ctx()
1937 static void __br_multicast_disable_port_ctx(struct net_bridge_mcast_port *pmctx) in __br_multicast_disable_port_ctx() argument
1943 hlist_for_each_entry_safe(pg, n, &pmctx->port->mglist, mglist) in __br_multicast_disable_port_ctx()
1945 (!br_multicast_port_ctx_is_vlan(pmctx) || in __br_multicast_disable_port_ctx()
1946 pg->key.addr.vid == pmctx->vlan->vid)) in __br_multicast_disable_port_ctx()
1947 br_multicast_find_del_pg(pmctx->port->br, pg); in __br_multicast_disable_port_ctx()
1949 del |= br_ip4_multicast_rport_del(pmctx); in __br_multicast_disable_port_ctx()
1950 del_timer(&pmctx->ip4_mc_router_timer); in __br_multicast_disable_port_ctx()
1951 del_timer(&pmctx->ip4_own_query.timer); in __br_multicast_disable_port_ctx()
1952 del |= br_ip6_multicast_rport_del(pmctx); in __br_multicast_disable_port_ctx()
1954 del_timer(&pmctx->ip6_mc_router_timer); in __br_multicast_disable_port_ctx()
1955 del_timer(&pmctx->ip6_own_query.timer); in __br_multicast_disable_port_ctx()
1957 br_multicast_rport_del_notify(pmctx, del); in __br_multicast_disable_port_ctx()
1990 struct net_bridge_mcast_port *pmctx, in __grp_src_query_marked_and_rexmit() argument
2027 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in __grp_src_query_marked_and_rexmit()
2037 struct net_bridge_mcast_port *pmctx, in __grp_send_query_and_rexmit() argument
2058 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in __grp_send_query_and_rexmit()
2223 struct net_bridge_mcast_port *pmctx, in __grp_src_toin_incl() argument
2259 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toin_incl()
2270 struct net_bridge_mcast_port *pmctx, in __grp_src_toin_excl() argument
2309 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toin_excl()
2311 __grp_send_query_and_rexmit(brmctx, pmctx, pg); in __grp_src_toin_excl()
2317 struct net_bridge_mcast_port *pmctx, in br_multicast_toin() argument
2326 changed = __grp_src_toin_incl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_toin()
2330 changed = __grp_src_toin_excl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_toin()
2354 struct net_bridge_mcast_port *pmctx, in __grp_src_toex_incl() argument
2387 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toex_incl()
2398 struct net_bridge_mcast_port *pmctx, in __grp_src_toex_excl() argument
2438 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toex_excl()
2444 struct net_bridge_mcast_port *pmctx, in br_multicast_toex() argument
2453 __grp_src_toex_incl(brmctx, pmctx, pg, h_addr, srcs, nsrcs, in br_multicast_toex()
2459 changed = __grp_src_toex_excl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_toex()
2474 struct net_bridge_mcast_port *pmctx, in __grp_src_block_incl() argument
2502 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_block_incl()
2512 struct net_bridge_mcast_port *pmctx, in __grp_src_block_excl() argument
2547 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_block_excl()
2553 struct net_bridge_mcast_port *pmctx, in br_multicast_block() argument
2561 changed = __grp_src_block_incl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_block()
2565 changed = __grp_src_block_excl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_block()
2602 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_igmp3_report() argument
2653 if (!pmctx || igmpv2) { in br_ip4_multicast_igmp3_report()
2654 br_ip4_multicast_leave_group(brmctx, pmctx, in br_ip4_multicast_igmp3_report()
2659 err = br_ip4_multicast_add_group(brmctx, pmctx, group, in br_ip4_multicast_igmp3_report()
2665 if (!pmctx || igmpv2) in br_ip4_multicast_igmp3_report()
2669 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in br_ip4_multicast_igmp3_report()
2675 pg = br_multicast_find_port(mdst, pmctx->port, src); in br_ip4_multicast_igmp3_report()
2698 changed = br_multicast_toin(brmctx, pmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2703 changed = br_multicast_toex(brmctx, pmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2708 changed = br_multicast_block(brmctx, pmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2724 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_mld2_report() argument
2789 if (!pmctx || mldv1) { in br_ip6_multicast_mld2_report()
2790 br_ip6_multicast_leave_group(brmctx, pmctx, in br_ip6_multicast_mld2_report()
2796 err = br_ip6_multicast_add_group(brmctx, pmctx, in br_ip6_multicast_mld2_report()
2803 if (!pmctx || mldv1) in br_ip6_multicast_mld2_report()
2807 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in br_ip6_multicast_mld2_report()
2813 pg = br_multicast_find_port(mdst, pmctx->port, src); in br_ip6_multicast_mld2_report()
2837 changed = br_multicast_toin(brmctx, pmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2843 changed = br_multicast_toex(brmctx, pmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2849 changed = br_multicast_block(brmctx, pmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2866 struct net_bridge_mcast_port *pmctx, in br_multicast_select_querier() argument
2869 int port_ifidx = pmctx ? pmctx->port->dev->ifindex : 0; in br_multicast_select_querier()
3046 struct net_bridge_mcast_port *pmctx; in br_multicast_rport_from_node() local
3050 pmctx = hlist_entry(rlist, struct net_bridge_mcast_port, in br_multicast_rport_from_node()
3054 pmctx = hlist_entry(rlist, struct net_bridge_mcast_port, in br_multicast_rport_from_node()
3057 return pmctx->port; in br_multicast_rport_from_node()
3082 static bool br_multicast_no_router_otherpf(struct net_bridge_mcast_port *pmctx, in br_multicast_no_router_otherpf() argument
3086 if (rnode != &pmctx->ip6_rlist) in br_multicast_no_router_otherpf()
3087 return hlist_unhashed(&pmctx->ip6_rlist); in br_multicast_no_router_otherpf()
3089 return hlist_unhashed(&pmctx->ip4_rlist); in br_multicast_no_router_otherpf()
3100 struct net_bridge_mcast_port *pmctx, in br_multicast_add_router() argument
3109 slot = br_multicast_get_rport_slot(brmctx, pmctx->port, mc_router_list); in br_multicast_add_router()
3120 if (br_multicast_no_router_otherpf(pmctx, rlist)) { in br_multicast_add_router()
3121 br_rtr_notify(pmctx->port->br->dev, pmctx, RTM_NEWMDB); in br_multicast_add_router()
3122 br_port_mc_router_state_change(pmctx->port, true); in br_multicast_add_router()
3131 struct net_bridge_mcast_port *pmctx) in br_ip4_multicast_add_router() argument
3133 br_multicast_add_router(brmctx, pmctx, &pmctx->ip4_rlist, in br_ip4_multicast_add_router()
3142 struct net_bridge_mcast_port *pmctx) in br_ip6_multicast_add_router() argument
3145 br_multicast_add_router(brmctx, pmctx, &pmctx->ip6_rlist, in br_ip6_multicast_add_router()
3151 struct net_bridge_mcast_port *pmctx, in br_multicast_mark_router() argument
3158 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in br_multicast_mark_router()
3161 if (!pmctx) { in br_multicast_mark_router()
3171 if (pmctx->multicast_router == MDB_RTR_TYPE_DISABLED || in br_multicast_mark_router()
3172 pmctx->multicast_router == MDB_RTR_TYPE_PERM) in br_multicast_mark_router()
3175 br_multicast_add_router(brmctx, pmctx, rlist, mc_router_list); in br_multicast_mark_router()
3180 struct net_bridge_mcast_port *pmctx) in br_ip4_multicast_mark_router() argument
3185 if (pmctx) { in br_ip4_multicast_mark_router()
3186 timer = &pmctx->ip4_mc_router_timer; in br_ip4_multicast_mark_router()
3187 rlist = &pmctx->ip4_rlist; in br_ip4_multicast_mark_router()
3190 br_multicast_mark_router(brmctx, pmctx, timer, rlist, in br_ip4_multicast_mark_router()
3195 struct net_bridge_mcast_port *pmctx) in br_ip6_multicast_mark_router() argument
3201 if (pmctx) { in br_ip6_multicast_mark_router()
3202 timer = &pmctx->ip6_mc_router_timer; in br_ip6_multicast_mark_router()
3203 rlist = &pmctx->ip6_rlist; in br_ip6_multicast_mark_router()
3206 br_multicast_mark_router(brmctx, pmctx, timer, rlist, in br_ip6_multicast_mark_router()
3213 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_query_received() argument
3218 if (!br_multicast_select_querier(brmctx, pmctx, saddr)) in br_ip4_multicast_query_received()
3222 br_ip4_multicast_mark_router(brmctx, pmctx); in br_ip4_multicast_query_received()
3228 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_query_received() argument
3233 if (!br_multicast_select_querier(brmctx, pmctx, saddr)) in br_ip6_multicast_query_received()
3237 br_ip6_multicast_mark_router(brmctx, pmctx); in br_ip6_multicast_query_received()
3242 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_query() argument
3259 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in br_ip4_multicast_query()
3288 br_ip4_multicast_query_received(brmctx, pmctx, in br_ip4_multicast_query()
3323 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_query() argument
3342 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in br_ip6_multicast_query()
3376 br_ip6_multicast_query_received(brmctx, pmctx, in br_ip6_multicast_query()
3414 struct net_bridge_mcast_port *pmctx, in br_multicast_leave_group() argument
3426 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in br_multicast_leave_group()
3433 if (pmctx && (pmctx->port->flags & BR_MULTICAST_FAST_LEAVE)) { in br_multicast_leave_group()
3439 if (!br_port_group_equal(p, pmctx->port, src)) in br_multicast_leave_group()
3455 __br_multicast_send_query(brmctx, pmctx, NULL, NULL, &mp->addr, in br_multicast_leave_group()
3464 p != NULL && pmctx != NULL; in br_multicast_leave_group()
3466 if (!br_port_group_equal(p, pmctx->port, src)) in br_multicast_leave_group()
3484 if (!pmctx) { in br_multicast_leave_group()
3498 if (p->key.port != pmctx->port) in br_multicast_leave_group()
3515 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_leave_group() argument
3526 own_query = pmctx ? &pmctx->ip4_own_query : &brmctx->ip4_own_query; in br_ip4_multicast_leave_group()
3533 br_multicast_leave_group(brmctx, pmctx, &br_group, in br_ip4_multicast_leave_group()
3540 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_leave_group() argument
3551 own_query = pmctx ? &pmctx->ip6_own_query : &brmctx->ip6_own_query; in br_ip6_multicast_leave_group()
3558 br_multicast_leave_group(brmctx, pmctx, &br_group, in br_ip6_multicast_leave_group()
3598 struct net_bridge_mcast_port *pmctx, in br_multicast_pim() argument
3610 br_ip4_multicast_mark_router(brmctx, pmctx); in br_multicast_pim()
3615 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_mrd_rcv() argument
3623 br_ip4_multicast_mark_router(brmctx, pmctx); in br_ip4_multicast_mrd_rcv()
3630 struct net_bridge_mcast_port *pmctx, in br_multicast_ipv4_rcv() argument
3634 struct net_bridge_port *p = pmctx ? pmctx->port : NULL; in br_multicast_ipv4_rcv()
3646 br_multicast_pim(brmctx, pmctx, skb); in br_multicast_ipv4_rcv()
3648 br_ip4_multicast_mrd_rcv(brmctx, pmctx, skb); in br_multicast_ipv4_rcv()
3665 err = br_ip4_multicast_add_group(brmctx, pmctx, ih->group, vid, in br_multicast_ipv4_rcv()
3669 err = br_ip4_multicast_igmp3_report(brmctx, pmctx, skb, vid); in br_multicast_ipv4_rcv()
3672 br_ip4_multicast_query(brmctx, pmctx, skb, vid); in br_multicast_ipv4_rcv()
3675 br_ip4_multicast_leave_group(brmctx, pmctx, ih->group, vid, src); in br_multicast_ipv4_rcv()
3687 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_mrd_rcv() argument
3694 br_ip6_multicast_mark_router(brmctx, pmctx); in br_ip6_multicast_mrd_rcv()
3699 struct net_bridge_mcast_port *pmctx, in br_multicast_ipv6_rcv() argument
3703 struct net_bridge_port *p = pmctx ? pmctx->port : NULL; in br_multicast_ipv6_rcv()
3715 br_ip6_multicast_mrd_rcv(brmctx, pmctx, skb); in br_multicast_ipv6_rcv()
3730 err = br_ip6_multicast_add_group(brmctx, pmctx, &mld->mld_mca, in br_multicast_ipv6_rcv()
3734 err = br_ip6_multicast_mld2_report(brmctx, pmctx, skb, vid); in br_multicast_ipv6_rcv()
3737 err = br_ip6_multicast_query(brmctx, pmctx, skb, vid); in br_multicast_ipv6_rcv()
3741 br_ip6_multicast_leave_group(brmctx, pmctx, &mld->mld_mca, vid, in br_multicast_ipv6_rcv()
3754 struct net_bridge_mcast_port **pmctx, in br_multicast_rcv() argument
3775 *pmctx = NULL; in br_multicast_rcv()
3779 *pmctx = &vlan->port_mcast_ctx; in br_multicast_rcv()
3788 ret = br_multicast_ipv4_rcv(*brmctx, *pmctx, skb, vid); in br_multicast_rcv()
3792 ret = br_multicast_ipv6_rcv(*brmctx, *pmctx, skb, vid); in br_multicast_rcv()
4224 br_multicast_rport_del_notify(struct net_bridge_mcast_port *pmctx, bool deleted) in br_multicast_rport_del_notify() argument
4232 if (!hlist_unhashed(&pmctx->ip4_rlist)) in br_multicast_rport_del_notify()
4235 if (!hlist_unhashed(&pmctx->ip6_rlist)) in br_multicast_rport_del_notify()
4239 br_rtr_notify(pmctx->port->br->dev, pmctx, RTM_DELMDB); in br_multicast_rport_del_notify()
4240 br_port_mc_router_state_change(pmctx->port, false); in br_multicast_rport_del_notify()
4243 if (pmctx->multicast_router == MDB_RTR_TYPE_TEMP) in br_multicast_rport_del_notify()
4244 pmctx->multicast_router = MDB_RTR_TYPE_TEMP_QUERY; in br_multicast_rport_del_notify()
4247 int br_multicast_set_port_router(struct net_bridge_mcast_port *pmctx, in br_multicast_set_port_router() argument
4255 brmctx = br_multicast_port_ctx_get_global(pmctx); in br_multicast_set_port_router()
4257 if (pmctx->multicast_router == val) { in br_multicast_set_port_router()
4259 if (pmctx->multicast_router == MDB_RTR_TYPE_TEMP) { in br_multicast_set_port_router()
4260 mod_timer(&pmctx->ip4_mc_router_timer, in br_multicast_set_port_router()
4263 mod_timer(&pmctx->ip6_mc_router_timer, in br_multicast_set_port_router()
4272 pmctx->multicast_router = MDB_RTR_TYPE_DISABLED; in br_multicast_set_port_router()
4273 del |= br_ip4_multicast_rport_del(pmctx); in br_multicast_set_port_router()
4274 del_timer(&pmctx->ip4_mc_router_timer); in br_multicast_set_port_router()
4275 del |= br_ip6_multicast_rport_del(pmctx); in br_multicast_set_port_router()
4277 del_timer(&pmctx->ip6_mc_router_timer); in br_multicast_set_port_router()
4279 br_multicast_rport_del_notify(pmctx, del); in br_multicast_set_port_router()
4282 pmctx->multicast_router = MDB_RTR_TYPE_TEMP_QUERY; in br_multicast_set_port_router()
4283 del |= br_ip4_multicast_rport_del(pmctx); in br_multicast_set_port_router()
4284 del |= br_ip6_multicast_rport_del(pmctx); in br_multicast_set_port_router()
4285 br_multicast_rport_del_notify(pmctx, del); in br_multicast_set_port_router()
4288 pmctx->multicast_router = MDB_RTR_TYPE_PERM; in br_multicast_set_port_router()
4289 del_timer(&pmctx->ip4_mc_router_timer); in br_multicast_set_port_router()
4290 br_ip4_multicast_add_router(brmctx, pmctx); in br_multicast_set_port_router()
4292 del_timer(&pmctx->ip6_mc_router_timer); in br_multicast_set_port_router()
4294 br_ip6_multicast_add_router(brmctx, pmctx); in br_multicast_set_port_router()
4297 pmctx->multicast_router = MDB_RTR_TYPE_TEMP; in br_multicast_set_port_router()
4298 br_ip4_multicast_mark_router(brmctx, pmctx); in br_multicast_set_port_router()
4299 br_ip6_multicast_mark_router(brmctx, pmctx); in br_multicast_set_port_router()
4684 struct net_bridge_mcast_port *pmctx; in br_multicast_has_router_adjacent() local
4697 hlist_for_each_entry_rcu(pmctx, &brmctx->ip4_mc_router_list, in br_multicast_has_router_adjacent()
4699 if (pmctx->port == port) in br_multicast_has_router_adjacent()
4708 hlist_for_each_entry_rcu(pmctx, &brmctx->ip6_mc_router_list, in br_multicast_has_router_adjacent()
4710 if (pmctx->port == port) in br_multicast_has_router_adjacent()