1 /* SPDX-License-Identifier: GPL-2.0-or-later 2 * Copyright (c) 2020, Nikolay Aleksandrov <nikolay@nvidia.com> 3 */ 4 #ifndef _BR_PRIVATE_MCAST_EHT_H_ 5 #define _BR_PRIVATE_MCAST_EHT_H_ 6 7 union net_bridge_eht_addr { 8 __be32 ip4; 9 #if IS_ENABLED(CONFIG_IPV6) 10 struct in6_addr ip6; 11 #endif 12 }; 13 14 /* single host's list of set entries and filter_mode */ 15 struct net_bridge_group_eht_host { 16 struct rb_node rb_node; 17 18 union net_bridge_eht_addr h_addr; 19 struct hlist_head set_entries; 20 unsigned int num_entries; 21 unsigned char filter_mode; 22 struct net_bridge_port_group *pg; 23 }; 24 25 /* (host, src entry) added to a per-src set and host's list */ 26 struct net_bridge_group_eht_set_entry { 27 struct rb_node rb_node; 28 struct hlist_node host_list; 29 30 union net_bridge_eht_addr h_addr; 31 struct timer_list timer; 32 struct net_bridge *br; 33 struct net_bridge_group_eht_set *eht_set; 34 struct net_bridge_group_eht_host *h_parent; 35 struct net_bridge_mcast_gc mcast_gc; 36 }; 37 38 /* per-src set */ 39 struct net_bridge_group_eht_set { 40 struct rb_node rb_node; 41 42 union net_bridge_eht_addr src_addr; 43 struct rb_root entry_tree; 44 struct timer_list timer; 45 struct net_bridge_port_group *pg; 46 struct net_bridge *br; 47 struct net_bridge_mcast_gc mcast_gc; 48 }; 49 50 #endif /* _BR_PRIVATE_MCAST_EHT_H_ */ 51