blob: 97c0fb69dd21dd3920ef4e3d8441ea61fa8e33ff [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Ben Cheng655a7c02013-10-16 16:09:24 -07007#ifndef _UAPI_LINUX_IF_BRIDGE_H
8#define _UAPI_LINUX_IF_BRIDGE_H
9#include <linux/types.h>
Christopher Ferris38062f92014-07-09 15:33:25 -070010#include <linux/if_ether.h>
Christopher Ferris82d75042015-01-26 10:57:07 -080011#include <linux/in6.h>
Christopher Ferris38062f92014-07-09 15:33:25 -070012#define SYSFS_BRIDGE_ATTR "bridge"
Ben Cheng655a7c02013-10-16 16:09:24 -070013#define SYSFS_BRIDGE_FDB "brforward"
14#define SYSFS_BRIDGE_PORT_SUBDIR "brif"
Christopher Ferris82d75042015-01-26 10:57:07 -080015#define SYSFS_BRIDGE_PORT_ATTR "brport"
Christopher Ferris38062f92014-07-09 15:33:25 -070016#define SYSFS_BRIDGE_PORT_LINK "bridge"
Ben Cheng655a7c02013-10-16 16:09:24 -070017#define BRCTL_VERSION 1
18#define BRCTL_GET_VERSION 0
Christopher Ferris82d75042015-01-26 10:57:07 -080019#define BRCTL_GET_BRIDGES 1
Christopher Ferris38062f92014-07-09 15:33:25 -070020#define BRCTL_ADD_BRIDGE 2
Ben Cheng655a7c02013-10-16 16:09:24 -070021#define BRCTL_DEL_BRIDGE 3
22#define BRCTL_ADD_IF 4
Christopher Ferris82d75042015-01-26 10:57:07 -080023#define BRCTL_DEL_IF 5
Christopher Ferris38062f92014-07-09 15:33:25 -070024#define BRCTL_GET_BRIDGE_INFO 6
Ben Cheng655a7c02013-10-16 16:09:24 -070025#define BRCTL_GET_PORT_LIST 7
26#define BRCTL_SET_BRIDGE_FORWARD_DELAY 8
Christopher Ferris82d75042015-01-26 10:57:07 -080027#define BRCTL_SET_BRIDGE_HELLO_TIME 9
Christopher Ferris38062f92014-07-09 15:33:25 -070028#define BRCTL_SET_BRIDGE_MAX_AGE 10
Ben Cheng655a7c02013-10-16 16:09:24 -070029#define BRCTL_SET_AGEING_TIME 11
30#define BRCTL_SET_GC_INTERVAL 12
Christopher Ferris82d75042015-01-26 10:57:07 -080031#define BRCTL_GET_PORT_INFO 13
Christopher Ferris38062f92014-07-09 15:33:25 -070032#define BRCTL_SET_BRIDGE_STP_STATE 14
Ben Cheng655a7c02013-10-16 16:09:24 -070033#define BRCTL_SET_BRIDGE_PRIORITY 15
34#define BRCTL_SET_PORT_PRIORITY 16
Christopher Ferris82d75042015-01-26 10:57:07 -080035#define BRCTL_SET_PATH_COST 17
Christopher Ferris38062f92014-07-09 15:33:25 -070036#define BRCTL_GET_FDB_ENTRIES 18
Ben Cheng655a7c02013-10-16 16:09:24 -070037#define BR_STATE_DISABLED 0
38#define BR_STATE_LISTENING 1
Christopher Ferris82d75042015-01-26 10:57:07 -080039#define BR_STATE_LEARNING 2
Christopher Ferris38062f92014-07-09 15:33:25 -070040#define BR_STATE_FORWARDING 3
Ben Cheng655a7c02013-10-16 16:09:24 -070041#define BR_STATE_BLOCKING 4
42struct __bridge_info {
Tao Baod7db5942015-01-28 10:07:51 -080043 __u64 designated_root;
44 __u64 bridge_id;
45 __u32 root_path_cost;
46 __u32 max_age;
Tao Baod7db5942015-01-28 10:07:51 -080047 __u32 hello_time;
48 __u32 forward_delay;
49 __u32 bridge_max_age;
50 __u32 bridge_hello_time;
Tao Baod7db5942015-01-28 10:07:51 -080051 __u32 bridge_forward_delay;
52 __u8 topology_change;
53 __u8 topology_change_detected;
54 __u8 root_port;
Tao Baod7db5942015-01-28 10:07:51 -080055 __u8 stp_enabled;
56 __u32 ageing_time;
57 __u32 gc_interval;
58 __u32 hello_timer_value;
Tao Baod7db5942015-01-28 10:07:51 -080059 __u32 tcn_timer_value;
60 __u32 topology_change_timer_value;
61 __u32 gc_timer_value;
Ben Cheng655a7c02013-10-16 16:09:24 -070062};
Christopher Ferris82d75042015-01-26 10:57:07 -080063struct __port_info {
Tao Baod7db5942015-01-28 10:07:51 -080064 __u64 designated_root;
65 __u64 designated_bridge;
66 __u16 port_id;
Tao Baod7db5942015-01-28 10:07:51 -080067 __u16 designated_port;
68 __u32 path_cost;
69 __u32 designated_cost;
70 __u8 state;
Tao Baod7db5942015-01-28 10:07:51 -080071 __u8 top_change_ack;
72 __u8 config_pending;
73 __u8 unused0;
74 __u32 message_age_timer_value;
Tao Baod7db5942015-01-28 10:07:51 -080075 __u32 forward_delay_timer_value;
76 __u32 hold_timer_value;
Ben Cheng655a7c02013-10-16 16:09:24 -070077};
78struct __fdb_entry {
Tao Baod7db5942015-01-28 10:07:51 -080079 __u8 mac_addr[ETH_ALEN];
80 __u8 port_no;
81 __u8 is_local;
82 __u32 ageing_timer_value;
Tao Baod7db5942015-01-28 10:07:51 -080083 __u8 port_hi;
84 __u8 pad0;
85 __u16 unused;
Ben Cheng655a7c02013-10-16 16:09:24 -070086};
Christopher Ferris82d75042015-01-26 10:57:07 -080087#define BRIDGE_FLAGS_MASTER 1
Christopher Ferris38062f92014-07-09 15:33:25 -070088#define BRIDGE_FLAGS_SELF 2
Ben Cheng655a7c02013-10-16 16:09:24 -070089#define BRIDGE_MODE_VEB 0
90#define BRIDGE_MODE_VEPA 1
Christopher Ferris05d08e92016-02-04 13:16:38 -080091#define BRIDGE_MODE_UNDEF 0xFFFF
Christopher Ferris82d75042015-01-26 10:57:07 -080092enum {
Tao Baod7db5942015-01-28 10:07:51 -080093 IFLA_BRIDGE_FLAGS,
94 IFLA_BRIDGE_MODE,
Christopher Ferris05d08e92016-02-04 13:16:38 -080095 IFLA_BRIDGE_VLAN_INFO,
Christopher Ferris525ce912017-07-26 13:12:53 -070096 IFLA_BRIDGE_VLAN_TUNNEL_INFO,
Christopher Ferris8177cdf2020-08-03 11:53:55 -070097 IFLA_BRIDGE_MRP,
Christopher Ferris05667cd2021-02-16 16:01:34 -080098 IFLA_BRIDGE_CFM,
Christopher Ferris10a76e62022-06-08 13:31:52 -070099 IFLA_BRIDGE_MST,
Tao Baod7db5942015-01-28 10:07:51 -0800100 __IFLA_BRIDGE_MAX,
Christopher Ferris38062f92014-07-09 15:33:25 -0700101};
Ben Cheng655a7c02013-10-16 16:09:24 -0700102#define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800103#define BRIDGE_VLAN_INFO_MASTER (1 << 0)
Tao Baod7db5942015-01-28 10:07:51 -0800104#define BRIDGE_VLAN_INFO_PVID (1 << 1)
105#define BRIDGE_VLAN_INFO_UNTAGGED (1 << 2)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800106#define BRIDGE_VLAN_INFO_RANGE_BEGIN (1 << 3)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800107#define BRIDGE_VLAN_INFO_RANGE_END (1 << 4)
108#define BRIDGE_VLAN_INFO_BRENTRY (1 << 5)
Christopher Ferrisbb9fcb42020-04-06 11:38:04 -0700109#define BRIDGE_VLAN_INFO_ONLY_OPTS (1 << 6)
Ben Cheng655a7c02013-10-16 16:09:24 -0700110struct bridge_vlan_info {
Tao Baod7db5942015-01-28 10:07:51 -0800111 __u16 flags;
Tao Baod7db5942015-01-28 10:07:51 -0800112 __u16 vid;
Christopher Ferris38062f92014-07-09 15:33:25 -0700113};
Christopher Ferris525ce912017-07-26 13:12:53 -0700114enum {
115 IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC,
116 IFLA_BRIDGE_VLAN_TUNNEL_ID,
117 IFLA_BRIDGE_VLAN_TUNNEL_VID,
118 IFLA_BRIDGE_VLAN_TUNNEL_FLAGS,
119 __IFLA_BRIDGE_VLAN_TUNNEL_MAX,
120};
121#define IFLA_BRIDGE_VLAN_TUNNEL_MAX (__IFLA_BRIDGE_VLAN_TUNNEL_MAX - 1)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700122struct bridge_vlan_xstats {
123 __u64 rx_bytes;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700124 __u64 rx_packets;
125 __u64 tx_bytes;
126 __u64 tx_packets;
127 __u16 vid;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800128 __u16 flags;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700129 __u32 pad2;
130};
Christopher Ferris8177cdf2020-08-03 11:53:55 -0700131enum {
132 IFLA_BRIDGE_MRP_UNSPEC,
133 IFLA_BRIDGE_MRP_INSTANCE,
134 IFLA_BRIDGE_MRP_PORT_STATE,
135 IFLA_BRIDGE_MRP_PORT_ROLE,
136 IFLA_BRIDGE_MRP_RING_STATE,
137 IFLA_BRIDGE_MRP_RING_ROLE,
138 IFLA_BRIDGE_MRP_START_TEST,
Christopher Ferris25c18d42020-10-14 17:42:58 -0700139 IFLA_BRIDGE_MRP_INFO,
140 IFLA_BRIDGE_MRP_IN_ROLE,
141 IFLA_BRIDGE_MRP_IN_STATE,
142 IFLA_BRIDGE_MRP_START_IN_TEST,
Christopher Ferris8177cdf2020-08-03 11:53:55 -0700143 __IFLA_BRIDGE_MRP_MAX,
144};
145#define IFLA_BRIDGE_MRP_MAX (__IFLA_BRIDGE_MRP_MAX - 1)
146enum {
147 IFLA_BRIDGE_MRP_INSTANCE_UNSPEC,
148 IFLA_BRIDGE_MRP_INSTANCE_RING_ID,
149 IFLA_BRIDGE_MRP_INSTANCE_P_IFINDEX,
150 IFLA_BRIDGE_MRP_INSTANCE_S_IFINDEX,
151 IFLA_BRIDGE_MRP_INSTANCE_PRIO,
152 __IFLA_BRIDGE_MRP_INSTANCE_MAX,
153};
154#define IFLA_BRIDGE_MRP_INSTANCE_MAX (__IFLA_BRIDGE_MRP_INSTANCE_MAX - 1)
155enum {
156 IFLA_BRIDGE_MRP_PORT_STATE_UNSPEC,
157 IFLA_BRIDGE_MRP_PORT_STATE_STATE,
158 __IFLA_BRIDGE_MRP_PORT_STATE_MAX,
159};
160#define IFLA_BRIDGE_MRP_PORT_STATE_MAX (__IFLA_BRIDGE_MRP_PORT_STATE_MAX - 1)
161enum {
162 IFLA_BRIDGE_MRP_PORT_ROLE_UNSPEC,
163 IFLA_BRIDGE_MRP_PORT_ROLE_ROLE,
164 __IFLA_BRIDGE_MRP_PORT_ROLE_MAX,
165};
166#define IFLA_BRIDGE_MRP_PORT_ROLE_MAX (__IFLA_BRIDGE_MRP_PORT_ROLE_MAX - 1)
167enum {
168 IFLA_BRIDGE_MRP_RING_STATE_UNSPEC,
169 IFLA_BRIDGE_MRP_RING_STATE_RING_ID,
170 IFLA_BRIDGE_MRP_RING_STATE_STATE,
171 __IFLA_BRIDGE_MRP_RING_STATE_MAX,
172};
173#define IFLA_BRIDGE_MRP_RING_STATE_MAX (__IFLA_BRIDGE_MRP_RING_STATE_MAX - 1)
174enum {
175 IFLA_BRIDGE_MRP_RING_ROLE_UNSPEC,
176 IFLA_BRIDGE_MRP_RING_ROLE_RING_ID,
177 IFLA_BRIDGE_MRP_RING_ROLE_ROLE,
178 __IFLA_BRIDGE_MRP_RING_ROLE_MAX,
179};
180#define IFLA_BRIDGE_MRP_RING_ROLE_MAX (__IFLA_BRIDGE_MRP_RING_ROLE_MAX - 1)
181enum {
182 IFLA_BRIDGE_MRP_START_TEST_UNSPEC,
183 IFLA_BRIDGE_MRP_START_TEST_RING_ID,
184 IFLA_BRIDGE_MRP_START_TEST_INTERVAL,
185 IFLA_BRIDGE_MRP_START_TEST_MAX_MISS,
186 IFLA_BRIDGE_MRP_START_TEST_PERIOD,
187 IFLA_BRIDGE_MRP_START_TEST_MONITOR,
188 __IFLA_BRIDGE_MRP_START_TEST_MAX,
189};
190#define IFLA_BRIDGE_MRP_START_TEST_MAX (__IFLA_BRIDGE_MRP_START_TEST_MAX - 1)
Christopher Ferris25c18d42020-10-14 17:42:58 -0700191enum {
192 IFLA_BRIDGE_MRP_INFO_UNSPEC,
193 IFLA_BRIDGE_MRP_INFO_RING_ID,
194 IFLA_BRIDGE_MRP_INFO_P_IFINDEX,
195 IFLA_BRIDGE_MRP_INFO_S_IFINDEX,
196 IFLA_BRIDGE_MRP_INFO_PRIO,
197 IFLA_BRIDGE_MRP_INFO_RING_STATE,
198 IFLA_BRIDGE_MRP_INFO_RING_ROLE,
199 IFLA_BRIDGE_MRP_INFO_TEST_INTERVAL,
200 IFLA_BRIDGE_MRP_INFO_TEST_MAX_MISS,
201 IFLA_BRIDGE_MRP_INFO_TEST_MONITOR,
202 IFLA_BRIDGE_MRP_INFO_I_IFINDEX,
203 IFLA_BRIDGE_MRP_INFO_IN_STATE,
204 IFLA_BRIDGE_MRP_INFO_IN_ROLE,
205 IFLA_BRIDGE_MRP_INFO_IN_TEST_INTERVAL,
206 IFLA_BRIDGE_MRP_INFO_IN_TEST_MAX_MISS,
207 __IFLA_BRIDGE_MRP_INFO_MAX,
208};
209#define IFLA_BRIDGE_MRP_INFO_MAX (__IFLA_BRIDGE_MRP_INFO_MAX - 1)
210enum {
211 IFLA_BRIDGE_MRP_IN_STATE_UNSPEC,
212 IFLA_BRIDGE_MRP_IN_STATE_IN_ID,
213 IFLA_BRIDGE_MRP_IN_STATE_STATE,
214 __IFLA_BRIDGE_MRP_IN_STATE_MAX,
215};
216#define IFLA_BRIDGE_MRP_IN_STATE_MAX (__IFLA_BRIDGE_MRP_IN_STATE_MAX - 1)
217enum {
218 IFLA_BRIDGE_MRP_IN_ROLE_UNSPEC,
219 IFLA_BRIDGE_MRP_IN_ROLE_RING_ID,
220 IFLA_BRIDGE_MRP_IN_ROLE_IN_ID,
221 IFLA_BRIDGE_MRP_IN_ROLE_ROLE,
222 IFLA_BRIDGE_MRP_IN_ROLE_I_IFINDEX,
223 __IFLA_BRIDGE_MRP_IN_ROLE_MAX,
224};
225#define IFLA_BRIDGE_MRP_IN_ROLE_MAX (__IFLA_BRIDGE_MRP_IN_ROLE_MAX - 1)
226enum {
227 IFLA_BRIDGE_MRP_START_IN_TEST_UNSPEC,
228 IFLA_BRIDGE_MRP_START_IN_TEST_IN_ID,
229 IFLA_BRIDGE_MRP_START_IN_TEST_INTERVAL,
230 IFLA_BRIDGE_MRP_START_IN_TEST_MAX_MISS,
231 IFLA_BRIDGE_MRP_START_IN_TEST_PERIOD,
232 __IFLA_BRIDGE_MRP_START_IN_TEST_MAX,
233};
234#define IFLA_BRIDGE_MRP_START_IN_TEST_MAX (__IFLA_BRIDGE_MRP_START_IN_TEST_MAX - 1)
Christopher Ferris8177cdf2020-08-03 11:53:55 -0700235struct br_mrp_instance {
236 __u32 ring_id;
237 __u32 p_ifindex;
238 __u32 s_ifindex;
239 __u16 prio;
240};
241struct br_mrp_ring_state {
242 __u32 ring_id;
243 __u32 ring_state;
244};
245struct br_mrp_ring_role {
246 __u32 ring_id;
247 __u32 ring_role;
248};
249struct br_mrp_start_test {
250 __u32 ring_id;
251 __u32 interval;
252 __u32 max_miss;
253 __u32 period;
254 __u32 monitor;
255};
Christopher Ferris25c18d42020-10-14 17:42:58 -0700256struct br_mrp_in_state {
257 __u32 in_state;
258 __u16 in_id;
259};
260struct br_mrp_in_role {
261 __u32 ring_id;
262 __u32 in_role;
263 __u32 i_ifindex;
264 __u16 in_id;
265};
266struct br_mrp_start_in_test {
267 __u32 interval;
268 __u32 max_miss;
269 __u32 period;
270 __u16 in_id;
271};
Christopher Ferris05667cd2021-02-16 16:01:34 -0800272enum {
273 IFLA_BRIDGE_CFM_UNSPEC,
274 IFLA_BRIDGE_CFM_MEP_CREATE,
275 IFLA_BRIDGE_CFM_MEP_DELETE,
276 IFLA_BRIDGE_CFM_MEP_CONFIG,
277 IFLA_BRIDGE_CFM_CC_CONFIG,
278 IFLA_BRIDGE_CFM_CC_PEER_MEP_ADD,
279 IFLA_BRIDGE_CFM_CC_PEER_MEP_REMOVE,
280 IFLA_BRIDGE_CFM_CC_RDI,
281 IFLA_BRIDGE_CFM_CC_CCM_TX,
282 IFLA_BRIDGE_CFM_MEP_CREATE_INFO,
283 IFLA_BRIDGE_CFM_MEP_CONFIG_INFO,
284 IFLA_BRIDGE_CFM_CC_CONFIG_INFO,
285 IFLA_BRIDGE_CFM_CC_RDI_INFO,
286 IFLA_BRIDGE_CFM_CC_CCM_TX_INFO,
287 IFLA_BRIDGE_CFM_CC_PEER_MEP_INFO,
288 IFLA_BRIDGE_CFM_MEP_STATUS_INFO,
289 IFLA_BRIDGE_CFM_CC_PEER_STATUS_INFO,
290 __IFLA_BRIDGE_CFM_MAX,
291};
292#define IFLA_BRIDGE_CFM_MAX (__IFLA_BRIDGE_CFM_MAX - 1)
293enum {
294 IFLA_BRIDGE_CFM_MEP_CREATE_UNSPEC,
295 IFLA_BRIDGE_CFM_MEP_CREATE_INSTANCE,
296 IFLA_BRIDGE_CFM_MEP_CREATE_DOMAIN,
297 IFLA_BRIDGE_CFM_MEP_CREATE_DIRECTION,
298 IFLA_BRIDGE_CFM_MEP_CREATE_IFINDEX,
299 __IFLA_BRIDGE_CFM_MEP_CREATE_MAX,
300};
301#define IFLA_BRIDGE_CFM_MEP_CREATE_MAX (__IFLA_BRIDGE_CFM_MEP_CREATE_MAX - 1)
302enum {
303 IFLA_BRIDGE_CFM_MEP_DELETE_UNSPEC,
304 IFLA_BRIDGE_CFM_MEP_DELETE_INSTANCE,
305 __IFLA_BRIDGE_CFM_MEP_DELETE_MAX,
306};
307#define IFLA_BRIDGE_CFM_MEP_DELETE_MAX (__IFLA_BRIDGE_CFM_MEP_DELETE_MAX - 1)
308enum {
309 IFLA_BRIDGE_CFM_MEP_CONFIG_UNSPEC,
310 IFLA_BRIDGE_CFM_MEP_CONFIG_INSTANCE,
311 IFLA_BRIDGE_CFM_MEP_CONFIG_UNICAST_MAC,
312 IFLA_BRIDGE_CFM_MEP_CONFIG_MDLEVEL,
313 IFLA_BRIDGE_CFM_MEP_CONFIG_MEPID,
314 __IFLA_BRIDGE_CFM_MEP_CONFIG_MAX,
315};
316#define IFLA_BRIDGE_CFM_MEP_CONFIG_MAX (__IFLA_BRIDGE_CFM_MEP_CONFIG_MAX - 1)
317enum {
318 IFLA_BRIDGE_CFM_CC_CONFIG_UNSPEC,
319 IFLA_BRIDGE_CFM_CC_CONFIG_INSTANCE,
320 IFLA_BRIDGE_CFM_CC_CONFIG_ENABLE,
321 IFLA_BRIDGE_CFM_CC_CONFIG_EXP_INTERVAL,
322 IFLA_BRIDGE_CFM_CC_CONFIG_EXP_MAID,
323 __IFLA_BRIDGE_CFM_CC_CONFIG_MAX,
324};
325#define IFLA_BRIDGE_CFM_CC_CONFIG_MAX (__IFLA_BRIDGE_CFM_CC_CONFIG_MAX - 1)
326enum {
327 IFLA_BRIDGE_CFM_CC_PEER_MEP_UNSPEC,
328 IFLA_BRIDGE_CFM_CC_PEER_MEP_INSTANCE,
329 IFLA_BRIDGE_CFM_CC_PEER_MEPID,
330 __IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX,
331};
332#define IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX (__IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX - 1)
333enum {
334 IFLA_BRIDGE_CFM_CC_RDI_UNSPEC,
335 IFLA_BRIDGE_CFM_CC_RDI_INSTANCE,
336 IFLA_BRIDGE_CFM_CC_RDI_RDI,
337 __IFLA_BRIDGE_CFM_CC_RDI_MAX,
338};
339#define IFLA_BRIDGE_CFM_CC_RDI_MAX (__IFLA_BRIDGE_CFM_CC_RDI_MAX - 1)
340enum {
341 IFLA_BRIDGE_CFM_CC_CCM_TX_UNSPEC,
342 IFLA_BRIDGE_CFM_CC_CCM_TX_INSTANCE,
343 IFLA_BRIDGE_CFM_CC_CCM_TX_DMAC,
344 IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE,
345 IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD,
346 IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV,
347 IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV_VALUE,
348 IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV,
349 IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV_VALUE,
350 __IFLA_BRIDGE_CFM_CC_CCM_TX_MAX,
351};
352#define IFLA_BRIDGE_CFM_CC_CCM_TX_MAX (__IFLA_BRIDGE_CFM_CC_CCM_TX_MAX - 1)
353enum {
354 IFLA_BRIDGE_CFM_MEP_STATUS_UNSPEC,
355 IFLA_BRIDGE_CFM_MEP_STATUS_INSTANCE,
356 IFLA_BRIDGE_CFM_MEP_STATUS_OPCODE_UNEXP_SEEN,
357 IFLA_BRIDGE_CFM_MEP_STATUS_VERSION_UNEXP_SEEN,
358 IFLA_BRIDGE_CFM_MEP_STATUS_RX_LEVEL_LOW_SEEN,
359 __IFLA_BRIDGE_CFM_MEP_STATUS_MAX,
360};
361#define IFLA_BRIDGE_CFM_MEP_STATUS_MAX (__IFLA_BRIDGE_CFM_MEP_STATUS_MAX - 1)
362enum {
363 IFLA_BRIDGE_CFM_CC_PEER_STATUS_UNSPEC,
364 IFLA_BRIDGE_CFM_CC_PEER_STATUS_INSTANCE,
365 IFLA_BRIDGE_CFM_CC_PEER_STATUS_PEER_MEPID,
366 IFLA_BRIDGE_CFM_CC_PEER_STATUS_CCM_DEFECT,
367 IFLA_BRIDGE_CFM_CC_PEER_STATUS_RDI,
368 IFLA_BRIDGE_CFM_CC_PEER_STATUS_PORT_TLV_VALUE,
369 IFLA_BRIDGE_CFM_CC_PEER_STATUS_IF_TLV_VALUE,
370 IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEEN,
371 IFLA_BRIDGE_CFM_CC_PEER_STATUS_TLV_SEEN,
372 IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEQ_UNEXP_SEEN,
373 __IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX,
374};
375#define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1)
Christopher Ferris10a76e62022-06-08 13:31:52 -0700376enum {
377 IFLA_BRIDGE_MST_UNSPEC,
378 IFLA_BRIDGE_MST_ENTRY,
379 __IFLA_BRIDGE_MST_MAX,
380};
381#define IFLA_BRIDGE_MST_MAX (__IFLA_BRIDGE_MST_MAX - 1)
382enum {
383 IFLA_BRIDGE_MST_ENTRY_UNSPEC,
384 IFLA_BRIDGE_MST_ENTRY_MSTI,
385 IFLA_BRIDGE_MST_ENTRY_STATE,
386 __IFLA_BRIDGE_MST_ENTRY_MAX,
387};
388#define IFLA_BRIDGE_MST_ENTRY_MAX (__IFLA_BRIDGE_MST_ENTRY_MAX - 1)
Christopher Ferrisbb9fcb42020-04-06 11:38:04 -0700389struct bridge_stp_xstats {
390 __u64 transition_blk;
391 __u64 transition_fwd;
392 __u64 rx_bpdu;
393 __u64 tx_bpdu;
394 __u64 rx_tcn;
395 __u64 tx_tcn;
396};
397struct br_vlan_msg {
398 __u8 family;
399 __u8 reserved1;
400 __u16 reserved2;
401 __u32 ifindex;
402};
403enum {
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700404 BRIDGE_VLANDB_DUMP_UNSPEC,
405 BRIDGE_VLANDB_DUMP_FLAGS,
406 __BRIDGE_VLANDB_DUMP_MAX,
407};
408#define BRIDGE_VLANDB_DUMP_MAX (__BRIDGE_VLANDB_DUMP_MAX - 1)
409#define BRIDGE_VLANDB_DUMPF_STATS (1 << 0)
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700410#define BRIDGE_VLANDB_DUMPF_GLOBAL (1 << 1)
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700411enum {
Christopher Ferrisbb9fcb42020-04-06 11:38:04 -0700412 BRIDGE_VLANDB_UNSPEC,
413 BRIDGE_VLANDB_ENTRY,
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700414 BRIDGE_VLANDB_GLOBAL_OPTIONS,
Christopher Ferrisbb9fcb42020-04-06 11:38:04 -0700415 __BRIDGE_VLANDB_MAX,
416};
417#define BRIDGE_VLANDB_MAX (__BRIDGE_VLANDB_MAX - 1)
418enum {
419 BRIDGE_VLANDB_ENTRY_UNSPEC,
420 BRIDGE_VLANDB_ENTRY_INFO,
421 BRIDGE_VLANDB_ENTRY_RANGE,
422 BRIDGE_VLANDB_ENTRY_STATE,
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700423 BRIDGE_VLANDB_ENTRY_TUNNEL_INFO,
424 BRIDGE_VLANDB_ENTRY_STATS,
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700425 BRIDGE_VLANDB_ENTRY_MCAST_ROUTER,
Christopher Ferrisb7cef6d2023-05-09 19:04:15 +0000426 BRIDGE_VLANDB_ENTRY_MCAST_N_GROUPS,
427 BRIDGE_VLANDB_ENTRY_MCAST_MAX_GROUPS,
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700428 BRIDGE_VLANDB_ENTRY_NEIGH_SUPPRESS,
Christopher Ferrisbb9fcb42020-04-06 11:38:04 -0700429 __BRIDGE_VLANDB_ENTRY_MAX,
430};
431#define BRIDGE_VLANDB_ENTRY_MAX (__BRIDGE_VLANDB_ENTRY_MAX - 1)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700432enum {
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700433 BRIDGE_VLANDB_TINFO_UNSPEC,
434 BRIDGE_VLANDB_TINFO_ID,
435 BRIDGE_VLANDB_TINFO_CMD,
436 __BRIDGE_VLANDB_TINFO_MAX,
437};
438#define BRIDGE_VLANDB_TINFO_MAX (__BRIDGE_VLANDB_TINFO_MAX - 1)
439enum {
440 BRIDGE_VLANDB_STATS_UNSPEC,
441 BRIDGE_VLANDB_STATS_RX_BYTES,
442 BRIDGE_VLANDB_STATS_RX_PACKETS,
443 BRIDGE_VLANDB_STATS_TX_BYTES,
444 BRIDGE_VLANDB_STATS_TX_PACKETS,
445 BRIDGE_VLANDB_STATS_PAD,
446 __BRIDGE_VLANDB_STATS_MAX,
447};
448#define BRIDGE_VLANDB_STATS_MAX (__BRIDGE_VLANDB_STATS_MAX - 1)
449enum {
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700450 BRIDGE_VLANDB_GOPTS_UNSPEC,
451 BRIDGE_VLANDB_GOPTS_ID,
452 BRIDGE_VLANDB_GOPTS_RANGE,
453 BRIDGE_VLANDB_GOPTS_MCAST_SNOOPING,
454 BRIDGE_VLANDB_GOPTS_MCAST_IGMP_VERSION,
455 BRIDGE_VLANDB_GOPTS_MCAST_MLD_VERSION,
456 BRIDGE_VLANDB_GOPTS_MCAST_LAST_MEMBER_CNT,
457 BRIDGE_VLANDB_GOPTS_MCAST_STARTUP_QUERY_CNT,
458 BRIDGE_VLANDB_GOPTS_MCAST_LAST_MEMBER_INTVL,
459 BRIDGE_VLANDB_GOPTS_PAD,
460 BRIDGE_VLANDB_GOPTS_MCAST_MEMBERSHIP_INTVL,
461 BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_INTVL,
462 BRIDGE_VLANDB_GOPTS_MCAST_QUERY_INTVL,
463 BRIDGE_VLANDB_GOPTS_MCAST_QUERY_RESPONSE_INTVL,
464 BRIDGE_VLANDB_GOPTS_MCAST_STARTUP_QUERY_INTVL,
465 BRIDGE_VLANDB_GOPTS_MCAST_QUERIER,
466 BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS,
467 BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE,
Christopher Ferris10a76e62022-06-08 13:31:52 -0700468 BRIDGE_VLANDB_GOPTS_MSTI,
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700469 __BRIDGE_VLANDB_GOPTS_MAX
470};
471#define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1)
472enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700473 MDBA_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800474 MDBA_MDB,
475 MDBA_ROUTER,
476 __MDBA_MAX,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700477};
Christopher Ferris82d75042015-01-26 10:57:07 -0800478#define MDBA_MAX (__MDBA_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700479enum {
Tao Baod7db5942015-01-28 10:07:51 -0800480 MDBA_MDB_UNSPEC,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700481 MDBA_MDB_ENTRY,
Tao Baod7db5942015-01-28 10:07:51 -0800482 __MDBA_MDB_MAX,
Christopher Ferris38062f92014-07-09 15:33:25 -0700483};
Ben Cheng655a7c02013-10-16 16:09:24 -0700484#define MDBA_MDB_MAX (__MDBA_MDB_MAX - 1)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700485enum {
Tao Baod7db5942015-01-28 10:07:51 -0800486 MDBA_MDB_ENTRY_UNSPEC,
487 MDBA_MDB_ENTRY_INFO,
488 __MDBA_MDB_ENTRY_MAX,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700489};
Christopher Ferris82d75042015-01-26 10:57:07 -0800490#define MDBA_MDB_ENTRY_MAX (__MDBA_MDB_ENTRY_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700491enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700492 MDBA_MDB_EATTR_UNSPEC,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700493 MDBA_MDB_EATTR_TIMER,
Christopher Ferris32ff3f82020-12-14 13:10:04 -0800494 MDBA_MDB_EATTR_SRC_LIST,
495 MDBA_MDB_EATTR_GROUP_MODE,
496 MDBA_MDB_EATTR_SOURCE,
497 MDBA_MDB_EATTR_RTPROT,
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700498 MDBA_MDB_EATTR_DST,
499 MDBA_MDB_EATTR_DST_PORT,
500 MDBA_MDB_EATTR_VNI,
501 MDBA_MDB_EATTR_IFINDEX,
502 MDBA_MDB_EATTR_SRC_VNI,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700503 __MDBA_MDB_EATTR_MAX
504};
505#define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700506enum {
Christopher Ferris32ff3f82020-12-14 13:10:04 -0800507 MDBA_MDB_SRCLIST_UNSPEC,
508 MDBA_MDB_SRCLIST_ENTRY,
509 __MDBA_MDB_SRCLIST_MAX
510};
511#define MDBA_MDB_SRCLIST_MAX (__MDBA_MDB_SRCLIST_MAX - 1)
512enum {
513 MDBA_MDB_SRCATTR_UNSPEC,
514 MDBA_MDB_SRCATTR_ADDRESS,
515 MDBA_MDB_SRCATTR_TIMER,
516 __MDBA_MDB_SRCATTR_MAX
517};
518#define MDBA_MDB_SRCATTR_MAX (__MDBA_MDB_SRCATTR_MAX - 1)
519enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700520 MDB_RTR_TYPE_DISABLED,
521 MDB_RTR_TYPE_TEMP_QUERY,
522 MDB_RTR_TYPE_PERM,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700523 MDB_RTR_TYPE_TEMP
524};
525enum {
526 MDBA_ROUTER_UNSPEC,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700527 MDBA_ROUTER_PORT,
Tao Baod7db5942015-01-28 10:07:51 -0800528 __MDBA_ROUTER_MAX,
Christopher Ferris38062f92014-07-09 15:33:25 -0700529};
Ben Cheng655a7c02013-10-16 16:09:24 -0700530#define MDBA_ROUTER_MAX (__MDBA_ROUTER_MAX - 1)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700531enum {
532 MDBA_ROUTER_PATTR_UNSPEC,
533 MDBA_ROUTER_PATTR_TIMER,
534 MDBA_ROUTER_PATTR_TYPE,
Christopher Ferris3a39c0b2021-09-02 00:03:38 +0000535 MDBA_ROUTER_PATTR_INET_TIMER,
536 MDBA_ROUTER_PATTR_INET6_TIMER,
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700537 MDBA_ROUTER_PATTR_VID,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700538 __MDBA_ROUTER_PATTR_MAX
539};
540#define MDBA_ROUTER_PATTR_MAX (__MDBA_ROUTER_PATTR_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700541struct br_port_msg {
Tao Baod7db5942015-01-28 10:07:51 -0800542 __u8 family;
543 __u32 ifindex;
Ben Cheng655a7c02013-10-16 16:09:24 -0700544};
545struct br_mdb_entry {
Tao Baod7db5942015-01-28 10:07:51 -0800546 __u32 ifindex;
Christopher Ferris38062f92014-07-09 15:33:25 -0700547#define MDB_TEMPORARY 0
Ben Cheng655a7c02013-10-16 16:09:24 -0700548#define MDB_PERMANENT 1
Tao Baod7db5942015-01-28 10:07:51 -0800549 __u8 state;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700550#define MDB_FLAGS_OFFLOAD (1 << 0)
Christopher Ferris9584fa42019-12-09 15:36:13 -0800551#define MDB_FLAGS_FAST_LEAVE (1 << 1)
Christopher Ferris32ff3f82020-12-14 13:10:04 -0800552#define MDB_FLAGS_STAR_EXCL (1 << 2)
553#define MDB_FLAGS_BLOCKED (1 << 3)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700554 __u8 flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800555 __u16 vid;
Tao Baod7db5942015-01-28 10:07:51 -0800556 struct {
557 union {
558 __be32 ip4;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800559 struct in6_addr ip6;
Christopher Ferris05667cd2021-02-16 16:01:34 -0800560 unsigned char mac_addr[ETH_ALEN];
Tao Baod7db5942015-01-28 10:07:51 -0800561 } u;
562 __be16 proto;
563 } addr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800564};
Christopher Ferris82d75042015-01-26 10:57:07 -0800565enum {
Tao Baod7db5942015-01-28 10:07:51 -0800566 MDBA_SET_ENTRY_UNSPEC,
567 MDBA_SET_ENTRY,
Christopher Ferris32ff3f82020-12-14 13:10:04 -0800568 MDBA_SET_ENTRY_ATTRS,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800569 __MDBA_SET_ENTRY_MAX,
Christopher Ferris82d75042015-01-26 10:57:07 -0800570};
Christopher Ferris38062f92014-07-09 15:33:25 -0700571#define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700572enum {
Christopher Ferris0f795212024-01-17 14:17:28 -0800573 MDBA_GET_ENTRY_UNSPEC,
574 MDBA_GET_ENTRY,
575 MDBA_GET_ENTRY_ATTRS,
576 __MDBA_GET_ENTRY_MAX,
577};
578#define MDBA_GET_ENTRY_MAX (__MDBA_GET_ENTRY_MAX - 1)
579enum {
Christopher Ferris32ff3f82020-12-14 13:10:04 -0800580 MDBE_ATTR_UNSPEC,
581 MDBE_ATTR_SOURCE,
Christopher Ferris8b7fdc92023-02-21 13:36:32 -0800582 MDBE_ATTR_SRC_LIST,
583 MDBE_ATTR_GROUP_MODE,
584 MDBE_ATTR_RTPROT,
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700585 MDBE_ATTR_DST,
586 MDBE_ATTR_DST_PORT,
587 MDBE_ATTR_VNI,
588 MDBE_ATTR_IFINDEX,
589 MDBE_ATTR_SRC_VNI,
Christopher Ferrisb830ddf2024-03-28 11:48:08 -0700590 MDBE_ATTR_STATE_MASK,
Christopher Ferris32ff3f82020-12-14 13:10:04 -0800591 __MDBE_ATTR_MAX,
592};
593#define MDBE_ATTR_MAX (__MDBE_ATTR_MAX - 1)
594enum {
Christopher Ferris8b7fdc92023-02-21 13:36:32 -0800595 MDBE_SRC_LIST_UNSPEC,
596 MDBE_SRC_LIST_ENTRY,
597 __MDBE_SRC_LIST_MAX,
598};
599#define MDBE_SRC_LIST_MAX (__MDBE_SRC_LIST_MAX - 1)
600enum {
601 MDBE_SRCATTR_UNSPEC,
602 MDBE_SRCATTR_ADDRESS,
603 __MDBE_SRCATTR_MAX,
604};
605#define MDBE_SRCATTR_MAX (__MDBE_SRCATTR_MAX - 1)
606enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700607 BRIDGE_XSTATS_UNSPEC,
608 BRIDGE_XSTATS_VLAN,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800609 BRIDGE_XSTATS_MCAST,
610 BRIDGE_XSTATS_PAD,
Christopher Ferrisbb9fcb42020-04-06 11:38:04 -0700611 BRIDGE_XSTATS_STP,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700612 __BRIDGE_XSTATS_MAX
613};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800614#define BRIDGE_XSTATS_MAX (__BRIDGE_XSTATS_MAX - 1)
615enum {
616 BR_MCAST_DIR_RX,
617 BR_MCAST_DIR_TX,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800618 BR_MCAST_DIR_SIZE
619};
620struct br_mcast_stats {
621 __u64 igmp_v1queries[BR_MCAST_DIR_SIZE];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800622 __u64 igmp_v2queries[BR_MCAST_DIR_SIZE];
623 __u64 igmp_v3queries[BR_MCAST_DIR_SIZE];
624 __u64 igmp_leaves[BR_MCAST_DIR_SIZE];
625 __u64 igmp_v1reports[BR_MCAST_DIR_SIZE];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800626 __u64 igmp_v2reports[BR_MCAST_DIR_SIZE];
627 __u64 igmp_v3reports[BR_MCAST_DIR_SIZE];
628 __u64 igmp_parse_errors;
629 __u64 mld_v1queries[BR_MCAST_DIR_SIZE];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800630 __u64 mld_v2queries[BR_MCAST_DIR_SIZE];
631 __u64 mld_leaves[BR_MCAST_DIR_SIZE];
632 __u64 mld_v1reports[BR_MCAST_DIR_SIZE];
633 __u64 mld_v2reports[BR_MCAST_DIR_SIZE];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800634 __u64 mld_parse_errors;
635 __u64 mcast_bytes[BR_MCAST_DIR_SIZE];
636 __u64 mcast_packets[BR_MCAST_DIR_SIZE];
637};
Christopher Ferrisd842e432019-03-07 10:21:59 -0800638enum br_boolopt_id {
639 BR_BOOLOPT_NO_LL_LEARN,
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700640 BR_BOOLOPT_MCAST_VLAN_SNOOPING,
Christopher Ferris10a76e62022-06-08 13:31:52 -0700641 BR_BOOLOPT_MST_ENABLE,
Christopher Ferrisd842e432019-03-07 10:21:59 -0800642 BR_BOOLOPT_MAX
643};
644struct br_boolopt_multi {
645 __u32 optval;
646 __u32 optmask;
647};
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700648enum {
649 BRIDGE_QUERIER_UNSPEC,
650 BRIDGE_QUERIER_IP_ADDRESS,
651 BRIDGE_QUERIER_IP_PORT,
652 BRIDGE_QUERIER_IP_OTHER_TIMER,
653 BRIDGE_QUERIER_PAD,
654 BRIDGE_QUERIER_IPV6_ADDRESS,
655 BRIDGE_QUERIER_IPV6_PORT,
656 BRIDGE_QUERIER_IPV6_OTHER_TIMER,
657 __BRIDGE_QUERIER_MAX
658};
659#define BRIDGE_QUERIER_MAX (__BRIDGE_QUERIER_MAX - 1)
Christopher Ferris49f525c2016-12-12 14:55:36 -0800660#endif