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, 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()
219 br_multicast_del_eht_set_entry(set_h->eht_set->pg, in br_multicast_eht_set_entry_expired()
243 __eht_lookup_create_host(struct net_bridge_port_group *pg, in __eht_lookup_create_host() argument
247 struct rb_node **link = &pg->eht_host_tree.rb_node, *parent = NULL; in __eht_lookup_create_host()
266 if (br_multicast_eht_hosts_over_limit(pg)) in __eht_lookup_create_host()
275 eht_host->pg = pg; in __eht_lookup_create_host()
279 rb_insert_color(&eht_host->rb_node, &pg->eht_host_tree); in __eht_lookup_create_host()
281 br_multicast_eht_hosts_inc(pg); in __eht_lookup_create_host()
341 __eht_lookup_create_set(struct net_bridge_port_group *pg, in __eht_lookup_create_set() argument
344 struct rb_node **link = &pg->eht_set_tree.rb_node, *parent = NULL; in __eht_lookup_create_set()
369 eht_set->pg = pg; in __eht_lookup_create_set()
370 eht_set->br = pg->key.port->br; in __eht_lookup_create_set()
375 rb_insert_color(&eht_set->rb_node, &pg->eht_set_tree); in __eht_lookup_create_set()
396 struct net_bridge_port_group *pg, in br_eht_convert_host_filter_mode() argument
403 eht_host = br_multicast_eht_host_lookup(pg, h_addr); in br_eht_convert_host_filter_mode()
410 br_multicast_del_eht_set_entry(pg, &zero_addr, h_addr); in br_eht_convert_host_filter_mode()
413 br_multicast_create_eht_set_entry(brmctx, pg, &zero_addr, in br_eht_convert_host_filter_mode()
421 struct net_bridge_port_group *pg, in br_multicast_create_eht_set_entry() argument
429 struct net_bridge *br = pg->key.port->br; in br_multicast_create_eht_set_entry()
437 eht_set = __eht_lookup_create_set(pg, src_addr); in br_multicast_create_eht_set_entry()
441 eht_host = __eht_lookup_create_host(pg, h_addr, filter_mode); in br_multicast_create_eht_set_entry()
463 static bool br_multicast_del_eht_set_entry(struct net_bridge_port_group *pg, in br_multicast_del_eht_set_entry() argument
471 eht_set = br_multicast_eht_set_lookup(pg, src_addr); in br_multicast_del_eht_set_entry()
490 static void br_multicast_del_eht_host(struct net_bridge_port_group *pg, in br_multicast_del_eht_host() argument
497 eht_host = br_multicast_eht_host_lookup(pg, h_addr); in br_multicast_del_eht_host()
502 br_multicast_del_eht_set_entry(set_h->eht_set->pg, in br_multicast_del_eht_host()
509 struct net_bridge_port_group *pg, in __eht_create_set_entries() argument
522 br_multicast_create_eht_set_entry(brmctx, pg, &eht_src_addr, in __eht_create_set_entries()
529 static bool __eht_del_set_entries(struct net_bridge_port_group *pg, in __eht_del_set_entries() argument
543 src_ip.proto = pg->key.addr.proto; in __eht_del_set_entries()
546 if (!br_multicast_del_eht_set_entry(pg, &eht_src_addr, h_addr)) in __eht_del_set_entries()
549 src_ent = br_multicast_find_group_src(pg, &src_ip); in __eht_del_set_entries()
560 struct net_bridge_port_group *pg, in br_multicast_eht_allow() argument
568 switch (br_multicast_eht_host_filter_mode(pg, h_addr)) { in br_multicast_eht_allow()
570 __eht_create_set_entries(brmctx, pg, h_addr, srcs, nsrcs, in br_multicast_eht_allow()
574 changed = __eht_del_set_entries(pg, h_addr, srcs, nsrcs, in br_multicast_eht_allow()
583 struct net_bridge_port_group *pg, in br_multicast_eht_block() argument
591 switch (br_multicast_eht_host_filter_mode(pg, h_addr)) { in br_multicast_eht_block()
593 changed = __eht_del_set_entries(pg, h_addr, srcs, nsrcs, in br_multicast_eht_block()
597 __eht_create_set_entries(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in br_multicast_eht_block()
607 struct net_bridge_port_group *pg, in __eht_inc_exc() argument
618 if (br_multicast_eht_host_filter_mode(pg, h_addr) != filter_mode) in __eht_inc_exc()
624 br_multicast_del_eht_host(pg, h_addr); in __eht_inc_exc()
625 __eht_create_set_entries(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __eht_inc_exc()
633 hlist_for_each_entry_safe(src_ent, tmp, &pg->src_list, node) { in __eht_inc_exc()
636 if (!br_multicast_eht_set_lookup(pg, &eht_src_addr)) { in __eht_inc_exc()
655 eht_set = br_multicast_eht_set_lookup(pg, in __eht_inc_exc()
667 struct net_bridge_port_group *pg, in br_multicast_eht_inc() argument
676 changed = __eht_inc_exc(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in br_multicast_eht_inc()
678 br_eht_convert_host_filter_mode(brmctx, pg, h_addr, MCAST_INCLUDE); in br_multicast_eht_inc()
684 struct net_bridge_port_group *pg, in br_multicast_eht_exc() argument
693 changed = __eht_inc_exc(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in br_multicast_eht_exc()
695 br_eht_convert_host_filter_mode(brmctx, pg, h_addr, MCAST_EXCLUDE); in br_multicast_eht_exc()
701 struct net_bridge_port_group *pg, in __eht_ip4_handle() argument
711 br_multicast_eht_allow(brmctx, pg, h_addr, srcs, nsrcs, in __eht_ip4_handle()
715 changed = br_multicast_eht_block(brmctx, pg, h_addr, srcs, nsrcs, in __eht_ip4_handle()
722 changed = br_multicast_eht_inc(brmctx, pg, h_addr, srcs, nsrcs, in __eht_ip4_handle()
729 changed = br_multicast_eht_exc(brmctx, pg, h_addr, srcs, nsrcs, in __eht_ip4_handle()
739 struct net_bridge_port_group *pg, in __eht_ip6_handle() argument
749 br_multicast_eht_allow(brmctx, pg, h_addr, srcs, nsrcs, in __eht_ip6_handle()
753 changed = br_multicast_eht_block(brmctx, pg, h_addr, srcs, nsrcs, in __eht_ip6_handle()
760 changed = br_multicast_eht_inc(brmctx, pg, h_addr, srcs, nsrcs, in __eht_ip6_handle()
768 changed = br_multicast_eht_exc(brmctx, pg, h_addr, srcs, nsrcs, in __eht_ip6_handle()
780 struct net_bridge_port_group *pg, in br_multicast_eht_handle() argument
787 bool eht_enabled = !!(pg->key.port->flags & BR_MULTICAST_FAST_LEAVE); in br_multicast_eht_handle()
797 changed = __eht_ip4_handle(brmctx, pg, &eht_host_addr, srcs, in br_multicast_eht_handle()
801 changed = __eht_ip6_handle(brmctx, pg, &eht_host_addr, srcs, in br_multicast_eht_handle()