Lines Matching refs:br
86 list_for_each_entry_rcu(p, &brmctx->br->port_list, list) { in br_rports_fill_info()
188 lockdep_is_held(&p->key.port->br->multicast_lock)) { in __mdb_fill_srcs()
247 ifindex = mp->br->dev->ifindex; in __mdb_fill_info()
276 dump_srcs_mode = !!(mp->br->multicast_ctx.multicast_igmp_version == 3); in __mdb_fill_info()
286 dump_srcs_mode = !!(mp->br->multicast_ctx.multicast_mld_version == 2); in __mdb_fill_info()
320 struct net_bridge *br = netdev_priv(dev); in br_mdb_fill_info() local
324 if (!br_opt_get(br, BROPT_MULTICAST_ENABLED)) in br_mdb_fill_info()
331 hlist_for_each_entry_rcu(mp, &br->mdb_list, mdb_node) { in br_mdb_fill_info()
426 struct net_bridge *br = netdev_priv(dev); in br_mdb_dump() local
443 if (br_rports_fill_info(skb, &br->multicast_ctx) < 0) in br_mdb_dump()
520 if (pg->key.port->br->multicast_ctx.multicast_igmp_version == 2) in rtnl_mdb_nlmsg_size()
529 if (pg->key.port->br->multicast_ctx.multicast_mld_version == 1) in rtnl_mdb_nlmsg_size()
823 __br_mdb_choose_context(struct net_bridge *br, in __br_mdb_choose_context() argument
830 if (!br_opt_get(br, BROPT_MCAST_VLAN_SNOOPING_ENABLED)) { in __br_mdb_choose_context()
831 brmctx = &br->multicast_ctx; in __br_mdb_choose_context()
840 v = br_vlan_find(br_vlan_group(br), entry->vid); in __br_mdb_choose_context()
854 static int br_mdb_add_group(struct net_bridge *br, struct net_bridge_port *port, in br_mdb_add_group() argument
871 brmctx = __br_mdb_choose_context(br, entry, extack); in br_mdb_add_group()
893 mp = br_mdb_ip_get(br, &group); in br_mdb_add_group()
895 mp = br_multicast_new_group(br, &group); in br_mdb_add_group()
909 br_mdb_notify(br->dev, mp, NULL, RTM_NEWMDB); in br_mdb_add_group()
915 (p = mlock_dereference(*pp, br)) != NULL; in br_mdb_add_group()
941 br_mdb_notify(br->dev, mp, p, RTM_NEWMDB); in br_mdb_add_group()
955 star_mp = br_mdb_ip_get(br, &star_group); in br_mdb_add_group()
965 static int __br_mdb_add(struct net *net, struct net_bridge *br, in __br_mdb_add() argument
973 spin_lock_bh(&br->multicast_lock); in __br_mdb_add()
974 ret = br_mdb_add_group(br, p, entry, mdb_attrs, extack); in __br_mdb_add()
975 spin_unlock_bh(&br->multicast_lock); in __br_mdb_add()
990 struct net_bridge *br; in br_mdb_add() local
997 br = netdev_priv(dev); in br_mdb_add()
999 if (!netif_running(br->dev)) { in br_mdb_add()
1004 if (!br_opt_get(br, BROPT_MULTICAST_ENABLED)) { in br_mdb_add()
1009 if (entry->ifindex != br->dev->ifindex) { in br_mdb_add()
1022 if (p->br != br) { in br_mdb_add()
1032 vg = br_vlan_group(br); in br_mdb_add()
1038 if (br_vlan_enabled(br->dev) && vg && entry->vid == 0) { in br_mdb_add()
1041 err = __br_mdb_add(net, br, p, entry, mdb_attrs, extack); in br_mdb_add()
1046 err = __br_mdb_add(net, br, p, entry, mdb_attrs, extack); in br_mdb_add()
1052 static int __br_mdb_del(struct net_bridge *br, struct br_mdb_entry *entry, in __br_mdb_del() argument
1061 if (!netif_running(br->dev) || !br_opt_get(br, BROPT_MULTICAST_ENABLED)) in __br_mdb_del()
1066 spin_lock_bh(&br->multicast_lock); in __br_mdb_del()
1067 mp = br_mdb_ip_get(br, &ip); in __br_mdb_del()
1072 if (entry->ifindex == mp->br->dev->ifindex && mp->host_joined) { in __br_mdb_del()
1075 br_mdb_notify(br->dev, mp, NULL, RTM_DELMDB); in __br_mdb_del()
1076 if (!mp->ports && netif_running(br->dev)) in __br_mdb_del()
1082 (p = mlock_dereference(*pp, br)) != NULL; in __br_mdb_del()
1096 spin_unlock_bh(&br->multicast_lock); in __br_mdb_del()
1110 struct net_bridge *br; in br_mdb_del() local
1117 br = netdev_priv(dev); in br_mdb_del()
1119 if (entry->ifindex != br->dev->ifindex) { in br_mdb_del()
1125 if (!p || p->br != br || p->state == BR_STATE_DISABLED) in br_mdb_del()
1129 vg = br_vlan_group(br); in br_mdb_del()
1135 if (br_vlan_enabled(br->dev) && vg && entry->vid == 0) { in br_mdb_del()
1138 err = __br_mdb_del(br, entry, mdb_attrs); in br_mdb_del()
1141 err = __br_mdb_del(br, entry, mdb_attrs); in br_mdb_del()