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