br_multicast.c (5b16328879302695101f403f261ff7c5f1ee4b84) br_multicast.c (baa74d39ca39f2b22eeac5c3b069b58491ecd418)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Bridge multicast support.
4 *
5 * Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au>
6 */
7
8#include <linux/err.h>

--- 580 unchanged lines hidden (view full) ---

589 struct net_bridge_port_group __rcu **pp)
590{
591 struct net_bridge *br = pg->key.port->br;
592 struct net_bridge_group_src *ent;
593 struct hlist_node *tmp;
594
595 rcu_assign_pointer(*pp, pg->next);
596 hlist_del_init(&pg->mglist);
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Bridge multicast support.
4 *
5 * Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au>
6 */
7
8#include <linux/err.h>

--- 580 unchanged lines hidden (view full) ---

589 struct net_bridge_port_group __rcu **pp)
590{
591 struct net_bridge *br = pg->key.port->br;
592 struct net_bridge_group_src *ent;
593 struct hlist_node *tmp;
594
595 rcu_assign_pointer(*pp, pg->next);
596 hlist_del_init(&pg->mglist);
597 br_multicast_eht_clean_sets(pg);
597 hlist_for_each_entry_safe(ent, tmp, &pg->src_list, node)
598 br_multicast_del_group_src(ent);
599 br_mdb_notify(br->dev, mp, pg, RTM_DELMDB);
600 if (!br_multicast_is_star_g(&mp->addr)) {
601 rhashtable_remove_fast(&br->sg_port_tbl, &pg->rhnode,
602 br_sg_port_rht_params);
603 br_multicast_sg_del_exclude_ports(mp);
604 } else {

--- 564 unchanged lines hidden (view full) ---

1169 return NULL;
1170
1171 p->key.addr = *group;
1172 p->key.port = port;
1173 p->flags = flags;
1174 p->filter_mode = filter_mode;
1175 p->rt_protocol = rt_protocol;
1176 p->eht_host_tree = RB_ROOT;
598 hlist_for_each_entry_safe(ent, tmp, &pg->src_list, node)
599 br_multicast_del_group_src(ent);
600 br_mdb_notify(br->dev, mp, pg, RTM_DELMDB);
601 if (!br_multicast_is_star_g(&mp->addr)) {
602 rhashtable_remove_fast(&br->sg_port_tbl, &pg->rhnode,
603 br_sg_port_rht_params);
604 br_multicast_sg_del_exclude_ports(mp);
605 } else {

--- 564 unchanged lines hidden (view full) ---

1170 return NULL;
1171
1172 p->key.addr = *group;
1173 p->key.port = port;
1174 p->flags = flags;
1175 p->filter_mode = filter_mode;
1176 p->rt_protocol = rt_protocol;
1177 p->eht_host_tree = RB_ROOT;
1178 p->eht_set_tree = RB_ROOT;
1177 p->mcast_gc.destroy = br_multicast_destroy_port_group;
1178 INIT_HLIST_HEAD(&p->src_list);
1179
1180 if (!br_multicast_is_star_g(group) &&
1181 rhashtable_lookup_insert_fast(&port->br->sg_port_tbl, &p->rhnode,
1182 br_sg_port_rht_params)) {
1183 kfree(p);
1184 return NULL;

--- 2774 unchanged lines hidden ---
1179 p->mcast_gc.destroy = br_multicast_destroy_port_group;
1180 INIT_HLIST_HEAD(&p->src_list);
1181
1182 if (!br_multicast_is_star_g(group) &&
1183 rhashtable_lookup_insert_fast(&port->br->sg_port_tbl, &p->rhnode,
1184 br_sg_port_rht_params)) {
1185 kfree(p);
1186 return NULL;

--- 2774 unchanged lines hidden ---