xref: /aosp_15_r20/external/iproute2/include/uapi/linux/if_bridge.h (revision de1e4e894b0c224df933550f0afdecc354b238c4)
1*de1e4e89SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2*de1e4e89SAndroid Build Coastguard Worker /*
3*de1e4e89SAndroid Build Coastguard Worker  *	Linux ethernet bridge
4*de1e4e89SAndroid Build Coastguard Worker  *
5*de1e4e89SAndroid Build Coastguard Worker  *	Authors:
6*de1e4e89SAndroid Build Coastguard Worker  *	Lennert Buytenhek		<[email protected]>
7*de1e4e89SAndroid Build Coastguard Worker  *
8*de1e4e89SAndroid Build Coastguard Worker  *	This program is free software; you can redistribute it and/or
9*de1e4e89SAndroid Build Coastguard Worker  *	modify it under the terms of the GNU General Public License
10*de1e4e89SAndroid Build Coastguard Worker  *	as published by the Free Software Foundation; either version
11*de1e4e89SAndroid Build Coastguard Worker  *	2 of the License, or (at your option) any later version.
12*de1e4e89SAndroid Build Coastguard Worker  */
13*de1e4e89SAndroid Build Coastguard Worker 
14*de1e4e89SAndroid Build Coastguard Worker #ifndef _LINUX_IF_BRIDGE_H
15*de1e4e89SAndroid Build Coastguard Worker #define _LINUX_IF_BRIDGE_H
16*de1e4e89SAndroid Build Coastguard Worker 
17*de1e4e89SAndroid Build Coastguard Worker #include <linux/types.h>
18*de1e4e89SAndroid Build Coastguard Worker #include <linux/if_ether.h>
19*de1e4e89SAndroid Build Coastguard Worker #include <linux/in6.h>
20*de1e4e89SAndroid Build Coastguard Worker 
21*de1e4e89SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_ATTR	"bridge"
22*de1e4e89SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_FDB	"brforward"
23*de1e4e89SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_PORT_SUBDIR "brif"
24*de1e4e89SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_PORT_ATTR	"brport"
25*de1e4e89SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_PORT_LINK	"bridge"
26*de1e4e89SAndroid Build Coastguard Worker 
27*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_VERSION 1
28*de1e4e89SAndroid Build Coastguard Worker 
29*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_GET_VERSION 0
30*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_GET_BRIDGES 1
31*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_ADD_BRIDGE 2
32*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_DEL_BRIDGE 3
33*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_ADD_IF 4
34*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_DEL_IF 5
35*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_GET_BRIDGE_INFO 6
36*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_GET_PORT_LIST 7
37*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_FORWARD_DELAY 8
38*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_HELLO_TIME 9
39*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_MAX_AGE 10
40*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_AGEING_TIME 11
41*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_GC_INTERVAL 12
42*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_GET_PORT_INFO 13
43*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_STP_STATE 14
44*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_PRIORITY 15
45*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_PORT_PRIORITY 16
46*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_PATH_COST 17
47*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_GET_FDB_ENTRIES 18
48*de1e4e89SAndroid Build Coastguard Worker 
49*de1e4e89SAndroid Build Coastguard Worker #define BR_STATE_DISABLED 0
50*de1e4e89SAndroid Build Coastguard Worker #define BR_STATE_LISTENING 1
51*de1e4e89SAndroid Build Coastguard Worker #define BR_STATE_LEARNING 2
52*de1e4e89SAndroid Build Coastguard Worker #define BR_STATE_FORWARDING 3
53*de1e4e89SAndroid Build Coastguard Worker #define BR_STATE_BLOCKING 4
54*de1e4e89SAndroid Build Coastguard Worker 
55*de1e4e89SAndroid Build Coastguard Worker struct __bridge_info {
56*de1e4e89SAndroid Build Coastguard Worker 	__u64 designated_root;
57*de1e4e89SAndroid Build Coastguard Worker 	__u64 bridge_id;
58*de1e4e89SAndroid Build Coastguard Worker 	__u32 root_path_cost;
59*de1e4e89SAndroid Build Coastguard Worker 	__u32 max_age;
60*de1e4e89SAndroid Build Coastguard Worker 	__u32 hello_time;
61*de1e4e89SAndroid Build Coastguard Worker 	__u32 forward_delay;
62*de1e4e89SAndroid Build Coastguard Worker 	__u32 bridge_max_age;
63*de1e4e89SAndroid Build Coastguard Worker 	__u32 bridge_hello_time;
64*de1e4e89SAndroid Build Coastguard Worker 	__u32 bridge_forward_delay;
65*de1e4e89SAndroid Build Coastguard Worker 	__u8 topology_change;
66*de1e4e89SAndroid Build Coastguard Worker 	__u8 topology_change_detected;
67*de1e4e89SAndroid Build Coastguard Worker 	__u8 root_port;
68*de1e4e89SAndroid Build Coastguard Worker 	__u8 stp_enabled;
69*de1e4e89SAndroid Build Coastguard Worker 	__u32 ageing_time;
70*de1e4e89SAndroid Build Coastguard Worker 	__u32 gc_interval;
71*de1e4e89SAndroid Build Coastguard Worker 	__u32 hello_timer_value;
72*de1e4e89SAndroid Build Coastguard Worker 	__u32 tcn_timer_value;
73*de1e4e89SAndroid Build Coastguard Worker 	__u32 topology_change_timer_value;
74*de1e4e89SAndroid Build Coastguard Worker 	__u32 gc_timer_value;
75*de1e4e89SAndroid Build Coastguard Worker };
76*de1e4e89SAndroid Build Coastguard Worker 
77*de1e4e89SAndroid Build Coastguard Worker struct __port_info {
78*de1e4e89SAndroid Build Coastguard Worker 	__u64 designated_root;
79*de1e4e89SAndroid Build Coastguard Worker 	__u64 designated_bridge;
80*de1e4e89SAndroid Build Coastguard Worker 	__u16 port_id;
81*de1e4e89SAndroid Build Coastguard Worker 	__u16 designated_port;
82*de1e4e89SAndroid Build Coastguard Worker 	__u32 path_cost;
83*de1e4e89SAndroid Build Coastguard Worker 	__u32 designated_cost;
84*de1e4e89SAndroid Build Coastguard Worker 	__u8 state;
85*de1e4e89SAndroid Build Coastguard Worker 	__u8 top_change_ack;
86*de1e4e89SAndroid Build Coastguard Worker 	__u8 config_pending;
87*de1e4e89SAndroid Build Coastguard Worker 	__u8 unused0;
88*de1e4e89SAndroid Build Coastguard Worker 	__u32 message_age_timer_value;
89*de1e4e89SAndroid Build Coastguard Worker 	__u32 forward_delay_timer_value;
90*de1e4e89SAndroid Build Coastguard Worker 	__u32 hold_timer_value;
91*de1e4e89SAndroid Build Coastguard Worker };
92*de1e4e89SAndroid Build Coastguard Worker 
93*de1e4e89SAndroid Build Coastguard Worker struct __fdb_entry {
94*de1e4e89SAndroid Build Coastguard Worker 	__u8 mac_addr[ETH_ALEN];
95*de1e4e89SAndroid Build Coastguard Worker 	__u8 port_no;
96*de1e4e89SAndroid Build Coastguard Worker 	__u8 is_local;
97*de1e4e89SAndroid Build Coastguard Worker 	__u32 ageing_timer_value;
98*de1e4e89SAndroid Build Coastguard Worker 	__u8 port_hi;
99*de1e4e89SAndroid Build Coastguard Worker 	__u8 pad0;
100*de1e4e89SAndroid Build Coastguard Worker 	__u16 unused;
101*de1e4e89SAndroid Build Coastguard Worker };
102*de1e4e89SAndroid Build Coastguard Worker 
103*de1e4e89SAndroid Build Coastguard Worker /* Bridge Flags */
104*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_FLAGS_MASTER	1	/* Bridge command to/from master */
105*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_FLAGS_SELF	2	/* Bridge command to/from lowerdev */
106*de1e4e89SAndroid Build Coastguard Worker 
107*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_MODE_VEB		0	/* Default loopback mode */
108*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_MODE_VEPA	1	/* 802.1Qbg defined VEPA mode */
109*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_MODE_UNDEF	0xFFFF  /* mode undefined */
110*de1e4e89SAndroid Build Coastguard Worker 
111*de1e4e89SAndroid Build Coastguard Worker /* Bridge management nested attributes
112*de1e4e89SAndroid Build Coastguard Worker  * [IFLA_AF_SPEC] = {
113*de1e4e89SAndroid Build Coastguard Worker  *     [IFLA_BRIDGE_FLAGS]
114*de1e4e89SAndroid Build Coastguard Worker  *     [IFLA_BRIDGE_MODE]
115*de1e4e89SAndroid Build Coastguard Worker  *     [IFLA_BRIDGE_VLAN_INFO]
116*de1e4e89SAndroid Build Coastguard Worker  * }
117*de1e4e89SAndroid Build Coastguard Worker  */
118*de1e4e89SAndroid Build Coastguard Worker enum {
119*de1e4e89SAndroid Build Coastguard Worker 	IFLA_BRIDGE_FLAGS,
120*de1e4e89SAndroid Build Coastguard Worker 	IFLA_BRIDGE_MODE,
121*de1e4e89SAndroid Build Coastguard Worker 	IFLA_BRIDGE_VLAN_INFO,
122*de1e4e89SAndroid Build Coastguard Worker 	IFLA_BRIDGE_VLAN_TUNNEL_INFO,
123*de1e4e89SAndroid Build Coastguard Worker 	__IFLA_BRIDGE_MAX,
124*de1e4e89SAndroid Build Coastguard Worker };
125*de1e4e89SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
126*de1e4e89SAndroid Build Coastguard Worker 
127*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_MASTER	(1<<0)	/* Operate on Bridge device as well */
128*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_PVID	(1<<1)	/* VLAN is PVID, ingress untagged */
129*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_UNTAGGED	(1<<2)	/* VLAN egresses untagged */
130*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_RANGE_BEGIN	(1<<3) /* VLAN is start of vlan range */
131*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_RANGE_END	(1<<4) /* VLAN is end of vlan range */
132*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_BRENTRY	(1<<5) /* Global bridge VLAN entry */
133*de1e4e89SAndroid Build Coastguard Worker 
134*de1e4e89SAndroid Build Coastguard Worker struct bridge_vlan_info {
135*de1e4e89SAndroid Build Coastguard Worker 	__u16 flags;
136*de1e4e89SAndroid Build Coastguard Worker 	__u16 vid;
137*de1e4e89SAndroid Build Coastguard Worker };
138*de1e4e89SAndroid Build Coastguard Worker 
139*de1e4e89SAndroid Build Coastguard Worker enum {
140*de1e4e89SAndroid Build Coastguard Worker 	IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC,
141*de1e4e89SAndroid Build Coastguard Worker 	IFLA_BRIDGE_VLAN_TUNNEL_ID,
142*de1e4e89SAndroid Build Coastguard Worker 	IFLA_BRIDGE_VLAN_TUNNEL_VID,
143*de1e4e89SAndroid Build Coastguard Worker 	IFLA_BRIDGE_VLAN_TUNNEL_FLAGS,
144*de1e4e89SAndroid Build Coastguard Worker 	__IFLA_BRIDGE_VLAN_TUNNEL_MAX,
145*de1e4e89SAndroid Build Coastguard Worker };
146*de1e4e89SAndroid Build Coastguard Worker 
147*de1e4e89SAndroid Build Coastguard Worker #define IFLA_BRIDGE_VLAN_TUNNEL_MAX (__IFLA_BRIDGE_VLAN_TUNNEL_MAX - 1)
148*de1e4e89SAndroid Build Coastguard Worker 
149*de1e4e89SAndroid Build Coastguard Worker struct bridge_vlan_xstats {
150*de1e4e89SAndroid Build Coastguard Worker 	__u64 rx_bytes;
151*de1e4e89SAndroid Build Coastguard Worker 	__u64 rx_packets;
152*de1e4e89SAndroid Build Coastguard Worker 	__u64 tx_bytes;
153*de1e4e89SAndroid Build Coastguard Worker 	__u64 tx_packets;
154*de1e4e89SAndroid Build Coastguard Worker 	__u16 vid;
155*de1e4e89SAndroid Build Coastguard Worker 	__u16 flags;
156*de1e4e89SAndroid Build Coastguard Worker 	__u32 pad2;
157*de1e4e89SAndroid Build Coastguard Worker };
158*de1e4e89SAndroid Build Coastguard Worker 
159*de1e4e89SAndroid Build Coastguard Worker /* Bridge multicast database attributes
160*de1e4e89SAndroid Build Coastguard Worker  * [MDBA_MDB] = {
161*de1e4e89SAndroid Build Coastguard Worker  *     [MDBA_MDB_ENTRY] = {
162*de1e4e89SAndroid Build Coastguard Worker  *         [MDBA_MDB_ENTRY_INFO] {
163*de1e4e89SAndroid Build Coastguard Worker  *		struct br_mdb_entry
164*de1e4e89SAndroid Build Coastguard Worker  *		[MDBA_MDB_EATTR attributes]
165*de1e4e89SAndroid Build Coastguard Worker  *         }
166*de1e4e89SAndroid Build Coastguard Worker  *     }
167*de1e4e89SAndroid Build Coastguard Worker  * }
168*de1e4e89SAndroid Build Coastguard Worker  * [MDBA_ROUTER] = {
169*de1e4e89SAndroid Build Coastguard Worker  *    [MDBA_ROUTER_PORT] = {
170*de1e4e89SAndroid Build Coastguard Worker  *        u32 ifindex
171*de1e4e89SAndroid Build Coastguard Worker  *        [MDBA_ROUTER_PATTR attributes]
172*de1e4e89SAndroid Build Coastguard Worker  *    }
173*de1e4e89SAndroid Build Coastguard Worker  * }
174*de1e4e89SAndroid Build Coastguard Worker  */
175*de1e4e89SAndroid Build Coastguard Worker enum {
176*de1e4e89SAndroid Build Coastguard Worker 	MDBA_UNSPEC,
177*de1e4e89SAndroid Build Coastguard Worker 	MDBA_MDB,
178*de1e4e89SAndroid Build Coastguard Worker 	MDBA_ROUTER,
179*de1e4e89SAndroid Build Coastguard Worker 	__MDBA_MAX,
180*de1e4e89SAndroid Build Coastguard Worker };
181*de1e4e89SAndroid Build Coastguard Worker #define MDBA_MAX (__MDBA_MAX - 1)
182*de1e4e89SAndroid Build Coastguard Worker 
183*de1e4e89SAndroid Build Coastguard Worker enum {
184*de1e4e89SAndroid Build Coastguard Worker 	MDBA_MDB_UNSPEC,
185*de1e4e89SAndroid Build Coastguard Worker 	MDBA_MDB_ENTRY,
186*de1e4e89SAndroid Build Coastguard Worker 	__MDBA_MDB_MAX,
187*de1e4e89SAndroid Build Coastguard Worker };
188*de1e4e89SAndroid Build Coastguard Worker #define MDBA_MDB_MAX (__MDBA_MDB_MAX - 1)
189*de1e4e89SAndroid Build Coastguard Worker 
190*de1e4e89SAndroid Build Coastguard Worker enum {
191*de1e4e89SAndroid Build Coastguard Worker 	MDBA_MDB_ENTRY_UNSPEC,
192*de1e4e89SAndroid Build Coastguard Worker 	MDBA_MDB_ENTRY_INFO,
193*de1e4e89SAndroid Build Coastguard Worker 	__MDBA_MDB_ENTRY_MAX,
194*de1e4e89SAndroid Build Coastguard Worker };
195*de1e4e89SAndroid Build Coastguard Worker #define MDBA_MDB_ENTRY_MAX (__MDBA_MDB_ENTRY_MAX - 1)
196*de1e4e89SAndroid Build Coastguard Worker 
197*de1e4e89SAndroid Build Coastguard Worker /* per mdb entry additional attributes */
198*de1e4e89SAndroid Build Coastguard Worker enum {
199*de1e4e89SAndroid Build Coastguard Worker 	MDBA_MDB_EATTR_UNSPEC,
200*de1e4e89SAndroid Build Coastguard Worker 	MDBA_MDB_EATTR_TIMER,
201*de1e4e89SAndroid Build Coastguard Worker 	__MDBA_MDB_EATTR_MAX
202*de1e4e89SAndroid Build Coastguard Worker };
203*de1e4e89SAndroid Build Coastguard Worker #define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1)
204*de1e4e89SAndroid Build Coastguard Worker 
205*de1e4e89SAndroid Build Coastguard Worker /* multicast router types */
206*de1e4e89SAndroid Build Coastguard Worker enum {
207*de1e4e89SAndroid Build Coastguard Worker 	MDB_RTR_TYPE_DISABLED,
208*de1e4e89SAndroid Build Coastguard Worker 	MDB_RTR_TYPE_TEMP_QUERY,
209*de1e4e89SAndroid Build Coastguard Worker 	MDB_RTR_TYPE_PERM,
210*de1e4e89SAndroid Build Coastguard Worker 	MDB_RTR_TYPE_TEMP
211*de1e4e89SAndroid Build Coastguard Worker };
212*de1e4e89SAndroid Build Coastguard Worker 
213*de1e4e89SAndroid Build Coastguard Worker enum {
214*de1e4e89SAndroid Build Coastguard Worker 	MDBA_ROUTER_UNSPEC,
215*de1e4e89SAndroid Build Coastguard Worker 	MDBA_ROUTER_PORT,
216*de1e4e89SAndroid Build Coastguard Worker 	__MDBA_ROUTER_MAX,
217*de1e4e89SAndroid Build Coastguard Worker };
218*de1e4e89SAndroid Build Coastguard Worker #define MDBA_ROUTER_MAX (__MDBA_ROUTER_MAX - 1)
219*de1e4e89SAndroid Build Coastguard Worker 
220*de1e4e89SAndroid Build Coastguard Worker /* router port attributes */
221*de1e4e89SAndroid Build Coastguard Worker enum {
222*de1e4e89SAndroid Build Coastguard Worker 	MDBA_ROUTER_PATTR_UNSPEC,
223*de1e4e89SAndroid Build Coastguard Worker 	MDBA_ROUTER_PATTR_TIMER,
224*de1e4e89SAndroid Build Coastguard Worker 	MDBA_ROUTER_PATTR_TYPE,
225*de1e4e89SAndroid Build Coastguard Worker 	__MDBA_ROUTER_PATTR_MAX
226*de1e4e89SAndroid Build Coastguard Worker };
227*de1e4e89SAndroid Build Coastguard Worker #define MDBA_ROUTER_PATTR_MAX (__MDBA_ROUTER_PATTR_MAX - 1)
228*de1e4e89SAndroid Build Coastguard Worker 
229*de1e4e89SAndroid Build Coastguard Worker struct br_port_msg {
230*de1e4e89SAndroid Build Coastguard Worker 	__u8  family;
231*de1e4e89SAndroid Build Coastguard Worker 	__u32 ifindex;
232*de1e4e89SAndroid Build Coastguard Worker };
233*de1e4e89SAndroid Build Coastguard Worker 
234*de1e4e89SAndroid Build Coastguard Worker struct br_mdb_entry {
235*de1e4e89SAndroid Build Coastguard Worker 	__u32 ifindex;
236*de1e4e89SAndroid Build Coastguard Worker #define MDB_TEMPORARY 0
237*de1e4e89SAndroid Build Coastguard Worker #define MDB_PERMANENT 1
238*de1e4e89SAndroid Build Coastguard Worker 	__u8 state;
239*de1e4e89SAndroid Build Coastguard Worker #define MDB_FLAGS_OFFLOAD	(1 << 0)
240*de1e4e89SAndroid Build Coastguard Worker 	__u8 flags;
241*de1e4e89SAndroid Build Coastguard Worker 	__u16 vid;
242*de1e4e89SAndroid Build Coastguard Worker 	struct {
243*de1e4e89SAndroid Build Coastguard Worker 		union {
244*de1e4e89SAndroid Build Coastguard Worker 			__be32	ip4;
245*de1e4e89SAndroid Build Coastguard Worker 			struct in6_addr ip6;
246*de1e4e89SAndroid Build Coastguard Worker 		} u;
247*de1e4e89SAndroid Build Coastguard Worker 		__be16		proto;
248*de1e4e89SAndroid Build Coastguard Worker 	} addr;
249*de1e4e89SAndroid Build Coastguard Worker };
250*de1e4e89SAndroid Build Coastguard Worker 
251*de1e4e89SAndroid Build Coastguard Worker enum {
252*de1e4e89SAndroid Build Coastguard Worker 	MDBA_SET_ENTRY_UNSPEC,
253*de1e4e89SAndroid Build Coastguard Worker 	MDBA_SET_ENTRY,
254*de1e4e89SAndroid Build Coastguard Worker 	__MDBA_SET_ENTRY_MAX,
255*de1e4e89SAndroid Build Coastguard Worker };
256*de1e4e89SAndroid Build Coastguard Worker #define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1)
257*de1e4e89SAndroid Build Coastguard Worker 
258*de1e4e89SAndroid Build Coastguard Worker /* Embedded inside LINK_XSTATS_TYPE_BRIDGE */
259*de1e4e89SAndroid Build Coastguard Worker enum {
260*de1e4e89SAndroid Build Coastguard Worker 	BRIDGE_XSTATS_UNSPEC,
261*de1e4e89SAndroid Build Coastguard Worker 	BRIDGE_XSTATS_VLAN,
262*de1e4e89SAndroid Build Coastguard Worker 	BRIDGE_XSTATS_MCAST,
263*de1e4e89SAndroid Build Coastguard Worker 	BRIDGE_XSTATS_PAD,
264*de1e4e89SAndroid Build Coastguard Worker 	__BRIDGE_XSTATS_MAX
265*de1e4e89SAndroid Build Coastguard Worker };
266*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_XSTATS_MAX (__BRIDGE_XSTATS_MAX - 1)
267*de1e4e89SAndroid Build Coastguard Worker 
268*de1e4e89SAndroid Build Coastguard Worker enum {
269*de1e4e89SAndroid Build Coastguard Worker 	BR_MCAST_DIR_RX,
270*de1e4e89SAndroid Build Coastguard Worker 	BR_MCAST_DIR_TX,
271*de1e4e89SAndroid Build Coastguard Worker 	BR_MCAST_DIR_SIZE
272*de1e4e89SAndroid Build Coastguard Worker };
273*de1e4e89SAndroid Build Coastguard Worker 
274*de1e4e89SAndroid Build Coastguard Worker /* IGMP/MLD statistics */
275*de1e4e89SAndroid Build Coastguard Worker struct br_mcast_stats {
276*de1e4e89SAndroid Build Coastguard Worker 	__u64 igmp_v1queries[BR_MCAST_DIR_SIZE];
277*de1e4e89SAndroid Build Coastguard Worker 	__u64 igmp_v2queries[BR_MCAST_DIR_SIZE];
278*de1e4e89SAndroid Build Coastguard Worker 	__u64 igmp_v3queries[BR_MCAST_DIR_SIZE];
279*de1e4e89SAndroid Build Coastguard Worker 	__u64 igmp_leaves[BR_MCAST_DIR_SIZE];
280*de1e4e89SAndroid Build Coastguard Worker 	__u64 igmp_v1reports[BR_MCAST_DIR_SIZE];
281*de1e4e89SAndroid Build Coastguard Worker 	__u64 igmp_v2reports[BR_MCAST_DIR_SIZE];
282*de1e4e89SAndroid Build Coastguard Worker 	__u64 igmp_v3reports[BR_MCAST_DIR_SIZE];
283*de1e4e89SAndroid Build Coastguard Worker 	__u64 igmp_parse_errors;
284*de1e4e89SAndroid Build Coastguard Worker 
285*de1e4e89SAndroid Build Coastguard Worker 	__u64 mld_v1queries[BR_MCAST_DIR_SIZE];
286*de1e4e89SAndroid Build Coastguard Worker 	__u64 mld_v2queries[BR_MCAST_DIR_SIZE];
287*de1e4e89SAndroid Build Coastguard Worker 	__u64 mld_leaves[BR_MCAST_DIR_SIZE];
288*de1e4e89SAndroid Build Coastguard Worker 	__u64 mld_v1reports[BR_MCAST_DIR_SIZE];
289*de1e4e89SAndroid Build Coastguard Worker 	__u64 mld_v2reports[BR_MCAST_DIR_SIZE];
290*de1e4e89SAndroid Build Coastguard Worker 	__u64 mld_parse_errors;
291*de1e4e89SAndroid Build Coastguard Worker 
292*de1e4e89SAndroid Build Coastguard Worker 	__u64 mcast_bytes[BR_MCAST_DIR_SIZE];
293*de1e4e89SAndroid Build Coastguard Worker 	__u64 mcast_packets[BR_MCAST_DIR_SIZE];
294*de1e4e89SAndroid Build Coastguard Worker };
295*de1e4e89SAndroid Build Coastguard Worker #endif /* _LINUX_IF_BRIDGE_H */
296