Lines Matching refs:pg
33 static bool br_multicast_del_eht_set_entry(struct net_bridge_port_group *pg,
37 struct net_bridge_port_group *pg,
44 br_multicast_eht_host_lookup(struct net_bridge_port_group *pg,
47 struct rb_node *node = pg->eht_host_tree.rb_node;
67 static int br_multicast_eht_host_filter_mode(struct net_bridge_port_group *pg,
72 eht_host = br_multicast_eht_host_lookup(pg, h_addr);
104 br_multicast_eht_set_lookup(struct net_bridge_port_group *pg,
107 struct rb_node *node = pg->eht_set_tree.rb_node;
131 br_multicast_eht_hosts_dec(eht_host->pg);
133 rb_erase(&eht_host->rb_node, &eht_host->pg->eht_host_tree);
190 rb_erase(&eht_set->rb_node, &eht_set->pg->eht_set_tree);
196 void br_multicast_eht_clean_sets(struct net_bridge_port_group *pg)
201 while ((node = rb_first(&pg->eht_set_tree))) {
217 br_multicast_del_eht_set_entry(set_h->eht_set->pg,
240 __eht_lookup_create_host(struct net_bridge_port_group *pg,
244 struct rb_node **link = &pg->eht_host_tree.rb_node, *parent = NULL;
263 if (br_multicast_eht_hosts_over_limit(pg))
272 eht_host->pg = pg;
276 rb_insert_color(&eht_host->rb_node, &pg->eht_host_tree);
278 br_multicast_eht_hosts_inc(pg);
338 __eht_lookup_create_set(struct net_bridge_port_group *pg,
341 struct rb_node **link = &pg->eht_set_tree.rb_node, *parent = NULL;
366 eht_set->pg = pg;
367 eht_set->br = pg->key.port->br;
372 rb_insert_color(&eht_set->rb_node, &pg->eht_set_tree);
393 struct net_bridge_port_group *pg,
400 eht_host = br_multicast_eht_host_lookup(pg, h_addr);
407 br_multicast_del_eht_set_entry(pg, &zero_addr, h_addr);
410 br_multicast_create_eht_set_entry(brmctx, pg, &zero_addr,
418 struct net_bridge_port_group *pg,
426 struct net_bridge *br = pg->key.port->br;
434 eht_set = __eht_lookup_create_set(pg, src_addr);
438 eht_host = __eht_lookup_create_host(pg, h_addr, filter_mode);
460 static bool br_multicast_del_eht_set_entry(struct net_bridge_port_group *pg,
468 eht_set = br_multicast_eht_set_lookup(pg, src_addr);
487 static void br_multicast_del_eht_host(struct net_bridge_port_group *pg,
494 eht_host = br_multicast_eht_host_lookup(pg, h_addr);
499 br_multicast_del_eht_set_entry(set_h->eht_set->pg,
506 struct net_bridge_port_group *pg,
519 br_multicast_create_eht_set_entry(brmctx, pg, &eht_src_addr,
526 static bool __eht_del_set_entries(struct net_bridge_port_group *pg,
540 src_ip.proto = pg->key.addr.proto;
543 if (!br_multicast_del_eht_set_entry(pg, &eht_src_addr, h_addr))
546 src_ent = br_multicast_find_group_src(pg, &src_ip);
557 struct net_bridge_port_group *pg,
565 switch (br_multicast_eht_host_filter_mode(pg, h_addr)) {
567 __eht_create_set_entries(brmctx, pg, h_addr, srcs, nsrcs,
571 changed = __eht_del_set_entries(pg, h_addr, srcs, nsrcs,
580 struct net_bridge_port_group *pg,
588 switch (br_multicast_eht_host_filter_mode(pg, h_addr)) {
590 changed = __eht_del_set_entries(pg, h_addr, srcs, nsrcs,
594 __eht_create_set_entries(brmctx, pg, h_addr, srcs, nsrcs, addr_size,
604 struct net_bridge_port_group *pg,
615 if (br_multicast_eht_host_filter_mode(pg, h_addr) != filter_mode)
621 br_multicast_del_eht_host(pg, h_addr);
622 __eht_create_set_entries(brmctx, pg, h_addr, srcs, nsrcs, addr_size,
630 hlist_for_each_entry_safe(src_ent, tmp, &pg->src_list, node) {
633 if (!br_multicast_eht_set_lookup(pg, &eht_src_addr)) {
652 eht_set = br_multicast_eht_set_lookup(pg,
664 struct net_bridge_port_group *pg,
673 changed = __eht_inc_exc(brmctx, pg, h_addr, srcs, nsrcs, addr_size,
675 br_eht_convert_host_filter_mode(brmctx, pg, h_addr, MCAST_INCLUDE);
681 struct net_bridge_port_group *pg,
690 changed = __eht_inc_exc(brmctx, pg, h_addr, srcs, nsrcs, addr_size,
692 br_eht_convert_host_filter_mode(brmctx, pg, h_addr, MCAST_EXCLUDE);
698 struct net_bridge_port_group *pg,
708 br_multicast_eht_allow(brmctx, pg, h_addr, srcs, nsrcs,
712 changed = br_multicast_eht_block(brmctx, pg, h_addr, srcs, nsrcs,
719 changed = br_multicast_eht_inc(brmctx, pg, h_addr, srcs, nsrcs,
726 changed = br_multicast_eht_exc(brmctx, pg, h_addr, srcs, nsrcs,
736 struct net_bridge_port_group *pg,
746 br_multicast_eht_allow(brmctx, pg, h_addr, srcs, nsrcs,
750 changed = br_multicast_eht_block(brmctx, pg, h_addr, srcs, nsrcs,
757 changed = br_multicast_eht_inc(brmctx, pg, h_addr, srcs, nsrcs,
765 changed = br_multicast_eht_exc(brmctx, pg, h_addr, srcs, nsrcs,
777 struct net_bridge_port_group *pg,
784 bool eht_enabled = !!(pg->key.port->flags & BR_MULTICAST_FAST_LEAVE);
794 changed = __eht_ip4_handle(brmctx, pg, &eht_host_addr, srcs,
798 changed = __eht_ip6_handle(brmctx, pg, &eht_host_addr, srcs,