xref: /openbmc/linux/include/uapi/linux/if_link.h (revision d63670d2)
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _UAPI_LINUX_IF_LINK_H
3 #define _UAPI_LINUX_IF_LINK_H
4 
5 #include <linux/types.h>
6 #include <linux/netlink.h>
7 
8 /* This struct should be in sync with struct rtnl_link_stats64 */
9 struct rtnl_link_stats {
10 	__u32	rx_packets;
11 	__u32	tx_packets;
12 	__u32	rx_bytes;
13 	__u32	tx_bytes;
14 	__u32	rx_errors;
15 	__u32	tx_errors;
16 	__u32	rx_dropped;
17 	__u32	tx_dropped;
18 	__u32	multicast;
19 	__u32	collisions;
20 	/* detailed rx_errors: */
21 	__u32	rx_length_errors;
22 	__u32	rx_over_errors;
23 	__u32	rx_crc_errors;
24 	__u32	rx_frame_errors;
25 	__u32	rx_fifo_errors;
26 	__u32	rx_missed_errors;
27 
28 	/* detailed tx_errors */
29 	__u32	tx_aborted_errors;
30 	__u32	tx_carrier_errors;
31 	__u32	tx_fifo_errors;
32 	__u32	tx_heartbeat_errors;
33 	__u32	tx_window_errors;
34 
35 	/* for cslip etc */
36 	__u32	rx_compressed;
37 	__u32	tx_compressed;
38 
39 	__u32	rx_nohandler;
40 };
41 
42 /**
43  * struct rtnl_link_stats64 - The main device statistics structure.
44  *
45  * @rx_packets: Number of good packets received by the interface.
46  *   For hardware interfaces counts all good packets received from the device
47  *   by the host, including packets which host had to drop at various stages
48  *   of processing (even in the driver).
49  *
50  * @tx_packets: Number of packets successfully transmitted.
51  *   For hardware interfaces counts packets which host was able to successfully
52  *   hand over to the device, which does not necessarily mean that packets
53  *   had been successfully transmitted out of the device, only that device
54  *   acknowledged it copied them out of host memory.
55  *
56  * @rx_bytes: Number of good received bytes, corresponding to @rx_packets.
57  *
58  *   For IEEE 802.3 devices should count the length of Ethernet Frames
59  *   excluding the FCS.
60  *
61  * @tx_bytes: Number of good transmitted bytes, corresponding to @tx_packets.
62  *
63  *   For IEEE 802.3 devices should count the length of Ethernet Frames
64  *   excluding the FCS.
65  *
66  * @rx_errors: Total number of bad packets received on this network device.
67  *   This counter must include events counted by @rx_length_errors,
68  *   @rx_crc_errors, @rx_frame_errors and other errors not otherwise
69  *   counted.
70  *
71  * @tx_errors: Total number of transmit problems.
72  *   This counter must include events counter by @tx_aborted_errors,
73  *   @tx_carrier_errors, @tx_fifo_errors, @tx_heartbeat_errors,
74  *   @tx_window_errors and other errors not otherwise counted.
75  *
76  * @rx_dropped: Number of packets received but not processed,
77  *   e.g. due to lack of resources or unsupported protocol.
78  *   For hardware interfaces this counter may include packets discarded
79  *   due to L2 address filtering but should not include packets dropped
80  *   by the device due to buffer exhaustion which are counted separately in
81  *   @rx_missed_errors (since procfs folds those two counters together).
82  *
83  * @tx_dropped: Number of packets dropped on their way to transmission,
84  *   e.g. due to lack of resources.
85  *
86  * @multicast: Multicast packets received.
87  *   For hardware interfaces this statistic is commonly calculated
88  *   at the device level (unlike @rx_packets) and therefore may include
89  *   packets which did not reach the host.
90  *
91  *   For IEEE 802.3 devices this counter may be equivalent to:
92  *
93  *    - 30.3.1.1.21 aMulticastFramesReceivedOK
94  *
95  * @collisions: Number of collisions during packet transmissions.
96  *
97  * @rx_length_errors: Number of packets dropped due to invalid length.
98  *   Part of aggregate "frame" errors in `/proc/net/dev`.
99  *
100  *   For IEEE 802.3 devices this counter should be equivalent to a sum
101  *   of the following attributes:
102  *
103  *    - 30.3.1.1.23 aInRangeLengthErrors
104  *    - 30.3.1.1.24 aOutOfRangeLengthField
105  *    - 30.3.1.1.25 aFrameTooLongErrors
106  *
107  * @rx_over_errors: Receiver FIFO overflow event counter.
108  *
109  *   Historically the count of overflow events. Such events may be
110  *   reported in the receive descriptors or via interrupts, and may
111  *   not correspond one-to-one with dropped packets.
112  *
113  *   The recommended interpretation for high speed interfaces is -
114  *   number of packets dropped because they did not fit into buffers
115  *   provided by the host, e.g. packets larger than MTU or next buffer
116  *   in the ring was not available for a scatter transfer.
117  *
118  *   Part of aggregate "frame" errors in `/proc/net/dev`.
119  *
120  *   This statistics was historically used interchangeably with
121  *   @rx_fifo_errors.
122  *
123  *   This statistic corresponds to hardware events and is not commonly used
124  *   on software devices.
125  *
126  * @rx_crc_errors: Number of packets received with a CRC error.
127  *   Part of aggregate "frame" errors in `/proc/net/dev`.
128  *
129  *   For IEEE 802.3 devices this counter must be equivalent to:
130  *
131  *    - 30.3.1.1.6 aFrameCheckSequenceErrors
132  *
133  * @rx_frame_errors: Receiver frame alignment errors.
134  *   Part of aggregate "frame" errors in `/proc/net/dev`.
135  *
136  *   For IEEE 802.3 devices this counter should be equivalent to:
137  *
138  *    - 30.3.1.1.7 aAlignmentErrors
139  *
140  * @rx_fifo_errors: Receiver FIFO error counter.
141  *
142  *   Historically the count of overflow events. Those events may be
143  *   reported in the receive descriptors or via interrupts, and may
144  *   not correspond one-to-one with dropped packets.
145  *
146  *   This statistics was used interchangeably with @rx_over_errors.
147  *   Not recommended for use in drivers for high speed interfaces.
148  *
149  *   This statistic is used on software devices, e.g. to count software
150  *   packet queue overflow (can) or sequencing errors (GRE).
151  *
152  * @rx_missed_errors: Count of packets missed by the host.
153  *   Folded into the "drop" counter in `/proc/net/dev`.
154  *
155  *   Counts number of packets dropped by the device due to lack
156  *   of buffer space. This usually indicates that the host interface
157  *   is slower than the network interface, or host is not keeping up
158  *   with the receive packet rate.
159  *
160  *   This statistic corresponds to hardware events and is not used
161  *   on software devices.
162  *
163  * @tx_aborted_errors:
164  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
165  *   For IEEE 802.3 devices capable of half-duplex operation this counter
166  *   must be equivalent to:
167  *
168  *    - 30.3.1.1.11 aFramesAbortedDueToXSColls
169  *
170  *   High speed interfaces may use this counter as a general device
171  *   discard counter.
172  *
173  * @tx_carrier_errors: Number of frame transmission errors due to loss
174  *   of carrier during transmission.
175  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
176  *
177  *   For IEEE 802.3 devices this counter must be equivalent to:
178  *
179  *    - 30.3.1.1.13 aCarrierSenseErrors
180  *
181  * @tx_fifo_errors: Number of frame transmission errors due to device
182  *   FIFO underrun / underflow. This condition occurs when the device
183  *   begins transmission of a frame but is unable to deliver the
184  *   entire frame to the transmitter in time for transmission.
185  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
186  *
187  * @tx_heartbeat_errors: Number of Heartbeat / SQE Test errors for
188  *   old half-duplex Ethernet.
189  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
190  *
191  *   For IEEE 802.3 devices possibly equivalent to:
192  *
193  *    - 30.3.2.1.4 aSQETestErrors
194  *
195  * @tx_window_errors: Number of frame transmission errors due
196  *   to late collisions (for Ethernet - after the first 64B of transmission).
197  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
198  *
199  *   For IEEE 802.3 devices this counter must be equivalent to:
200  *
201  *    - 30.3.1.1.10 aLateCollisions
202  *
203  * @rx_compressed: Number of correctly received compressed packets.
204  *   This counters is only meaningful for interfaces which support
205  *   packet compression (e.g. CSLIP, PPP).
206  *
207  * @tx_compressed: Number of transmitted compressed packets.
208  *   This counters is only meaningful for interfaces which support
209  *   packet compression (e.g. CSLIP, PPP).
210  *
211  * @rx_nohandler: Number of packets received on the interface
212  *   but dropped by the networking stack because the device is
213  *   not designated to receive packets (e.g. backup link in a bond).
214  */
215 struct rtnl_link_stats64 {
216 	__u64	rx_packets;
217 	__u64	tx_packets;
218 	__u64	rx_bytes;
219 	__u64	tx_bytes;
220 	__u64	rx_errors;
221 	__u64	tx_errors;
222 	__u64	rx_dropped;
223 	__u64	tx_dropped;
224 	__u64	multicast;
225 	__u64	collisions;
226 
227 	/* detailed rx_errors: */
228 	__u64	rx_length_errors;
229 	__u64	rx_over_errors;
230 	__u64	rx_crc_errors;
231 	__u64	rx_frame_errors;
232 	__u64	rx_fifo_errors;
233 	__u64	rx_missed_errors;
234 
235 	/* detailed tx_errors */
236 	__u64	tx_aborted_errors;
237 	__u64	tx_carrier_errors;
238 	__u64	tx_fifo_errors;
239 	__u64	tx_heartbeat_errors;
240 	__u64	tx_window_errors;
241 
242 	/* for cslip etc */
243 	__u64	rx_compressed;
244 	__u64	tx_compressed;
245 	__u64	rx_nohandler;
246 };
247 
248 /* Subset of link stats useful for in-HW collection. Meaning of the fields is as
249  * for struct rtnl_link_stats64.
250  */
251 struct rtnl_hw_stats64 {
252 	__u64	rx_packets;
253 	__u64	tx_packets;
254 	__u64	rx_bytes;
255 	__u64	tx_bytes;
256 	__u64	rx_errors;
257 	__u64	tx_errors;
258 	__u64	rx_dropped;
259 	__u64	tx_dropped;
260 	__u64	multicast;
261 };
262 
263 /* The struct should be in sync with struct ifmap */
264 struct rtnl_link_ifmap {
265 	__u64	mem_start;
266 	__u64	mem_end;
267 	__u64	base_addr;
268 	__u16	irq;
269 	__u8	dma;
270 	__u8	port;
271 };
272 
273 /*
274  * IFLA_AF_SPEC
275  *   Contains nested attributes for address family specific attributes.
276  *   Each address family may create a attribute with the address family
277  *   number as type and create its own attribute structure in it.
278  *
279  *   Example:
280  *   [IFLA_AF_SPEC] = {
281  *       [AF_INET] = {
282  *           [IFLA_INET_CONF] = ...,
283  *       },
284  *       [AF_INET6] = {
285  *           [IFLA_INET6_FLAGS] = ...,
286  *           [IFLA_INET6_CONF] = ...,
287  *       }
288  *   }
289  */
290 
291 enum {
292 	IFLA_UNSPEC,
293 	IFLA_ADDRESS,
294 	IFLA_BROADCAST,
295 	IFLA_IFNAME,
296 	IFLA_MTU,
297 	IFLA_LINK,
298 	IFLA_QDISC,
299 	IFLA_STATS,
300 	IFLA_COST,
301 #define IFLA_COST IFLA_COST
302 	IFLA_PRIORITY,
303 #define IFLA_PRIORITY IFLA_PRIORITY
304 	IFLA_MASTER,
305 #define IFLA_MASTER IFLA_MASTER
306 	IFLA_WIRELESS,		/* Wireless Extension event - see wireless.h */
307 #define IFLA_WIRELESS IFLA_WIRELESS
308 	IFLA_PROTINFO,		/* Protocol specific information for a link */
309 #define IFLA_PROTINFO IFLA_PROTINFO
310 	IFLA_TXQLEN,
311 #define IFLA_TXQLEN IFLA_TXQLEN
312 	IFLA_MAP,
313 #define IFLA_MAP IFLA_MAP
314 	IFLA_WEIGHT,
315 #define IFLA_WEIGHT IFLA_WEIGHT
316 	IFLA_OPERSTATE,
317 	IFLA_LINKMODE,
318 	IFLA_LINKINFO,
319 #define IFLA_LINKINFO IFLA_LINKINFO
320 	IFLA_NET_NS_PID,
321 	IFLA_IFALIAS,
322 	IFLA_NUM_VF,		/* Number of VFs if device is SR-IOV PF */
323 	IFLA_VFINFO_LIST,
324 	IFLA_STATS64,
325 	IFLA_VF_PORTS,
326 	IFLA_PORT_SELF,
327 	IFLA_AF_SPEC,
328 	IFLA_GROUP,		/* Group the device belongs to */
329 	IFLA_NET_NS_FD,
330 	IFLA_EXT_MASK,		/* Extended info mask, VFs, etc */
331 	IFLA_PROMISCUITY,	/* Promiscuity count: > 0 means acts PROMISC */
332 #define IFLA_PROMISCUITY IFLA_PROMISCUITY
333 	IFLA_NUM_TX_QUEUES,
334 	IFLA_NUM_RX_QUEUES,
335 	IFLA_CARRIER,
336 	IFLA_PHYS_PORT_ID,
337 	IFLA_CARRIER_CHANGES,
338 	IFLA_PHYS_SWITCH_ID,
339 	IFLA_LINK_NETNSID,
340 	IFLA_PHYS_PORT_NAME,
341 	IFLA_PROTO_DOWN,
342 	IFLA_GSO_MAX_SEGS,
343 	IFLA_GSO_MAX_SIZE,
344 	IFLA_PAD,
345 	IFLA_XDP,
346 	IFLA_EVENT,
347 	IFLA_NEW_NETNSID,
348 	IFLA_IF_NETNSID,
349 	IFLA_TARGET_NETNSID = IFLA_IF_NETNSID, /* new alias */
350 	IFLA_CARRIER_UP_COUNT,
351 	IFLA_CARRIER_DOWN_COUNT,
352 	IFLA_NEW_IFINDEX,
353 	IFLA_MIN_MTU,
354 	IFLA_MAX_MTU,
355 	IFLA_PROP_LIST,
356 	IFLA_ALT_IFNAME, /* Alternative ifname */
357 	IFLA_PERM_ADDRESS,
358 	IFLA_PROTO_DOWN_REASON,
359 
360 	/* device (sysfs) name as parent, used instead
361 	 * of IFLA_LINK where there's no parent netdev
362 	 */
363 	IFLA_PARENT_DEV_NAME,
364 	IFLA_PARENT_DEV_BUS_NAME,
365 	IFLA_GRO_MAX_SIZE,
366 
367 	__IFLA_MAX
368 };
369 
370 
371 #define IFLA_MAX (__IFLA_MAX - 1)
372 
373 enum {
374 	IFLA_PROTO_DOWN_REASON_UNSPEC,
375 	IFLA_PROTO_DOWN_REASON_MASK,	/* u32, mask for reason bits */
376 	IFLA_PROTO_DOWN_REASON_VALUE,   /* u32, reason bit value */
377 
378 	__IFLA_PROTO_DOWN_REASON_CNT,
379 	IFLA_PROTO_DOWN_REASON_MAX = __IFLA_PROTO_DOWN_REASON_CNT - 1
380 };
381 
382 /* backwards compatibility for userspace */
383 #ifndef __KERNEL__
384 #define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
385 #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
386 #endif
387 
388 enum {
389 	IFLA_INET_UNSPEC,
390 	IFLA_INET_CONF,
391 	__IFLA_INET_MAX,
392 };
393 
394 #define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
395 
396 /* ifi_flags.
397 
398    IFF_* flags.
399 
400    The only change is:
401    IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
402    more not changeable by user. They describe link media
403    characteristics and set by device driver.
404 
405    Comments:
406    - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
407    - If neither of these three flags are set;
408      the interface is NBMA.
409 
410    - IFF_MULTICAST does not mean anything special:
411    multicasts can be used on all not-NBMA links.
412    IFF_MULTICAST means that this media uses special encapsulation
413    for multicast frames. Apparently, all IFF_POINTOPOINT and
414    IFF_BROADCAST devices are able to use multicasts too.
415  */
416 
417 /* IFLA_LINK.
418    For usual devices it is equal ifi_index.
419    If it is a "virtual interface" (f.e. tunnel), ifi_link
420    can point to real physical interface (f.e. for bandwidth calculations),
421    or maybe 0, what means, that real media is unknown (usual
422    for IPIP tunnels, when route to endpoint is allowed to change)
423  */
424 
425 /* Subtype attributes for IFLA_PROTINFO */
426 enum {
427 	IFLA_INET6_UNSPEC,
428 	IFLA_INET6_FLAGS,	/* link flags			*/
429 	IFLA_INET6_CONF,	/* sysctl parameters		*/
430 	IFLA_INET6_STATS,	/* statistics			*/
431 	IFLA_INET6_MCAST,	/* MC things. What of them?	*/
432 	IFLA_INET6_CACHEINFO,	/* time values and max reasm size */
433 	IFLA_INET6_ICMP6STATS,	/* statistics (icmpv6)		*/
434 	IFLA_INET6_TOKEN,	/* device token			*/
435 	IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
436 	IFLA_INET6_RA_MTU,	/* mtu carried in the RA message */
437 	__IFLA_INET6_MAX
438 };
439 
440 #define IFLA_INET6_MAX	(__IFLA_INET6_MAX - 1)
441 
442 enum in6_addr_gen_mode {
443 	IN6_ADDR_GEN_MODE_EUI64,
444 	IN6_ADDR_GEN_MODE_NONE,
445 	IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
446 	IN6_ADDR_GEN_MODE_RANDOM,
447 };
448 
449 /* Bridge section */
450 
451 enum {
452 	IFLA_BR_UNSPEC,
453 	IFLA_BR_FORWARD_DELAY,
454 	IFLA_BR_HELLO_TIME,
455 	IFLA_BR_MAX_AGE,
456 	IFLA_BR_AGEING_TIME,
457 	IFLA_BR_STP_STATE,
458 	IFLA_BR_PRIORITY,
459 	IFLA_BR_VLAN_FILTERING,
460 	IFLA_BR_VLAN_PROTOCOL,
461 	IFLA_BR_GROUP_FWD_MASK,
462 	IFLA_BR_ROOT_ID,
463 	IFLA_BR_BRIDGE_ID,
464 	IFLA_BR_ROOT_PORT,
465 	IFLA_BR_ROOT_PATH_COST,
466 	IFLA_BR_TOPOLOGY_CHANGE,
467 	IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
468 	IFLA_BR_HELLO_TIMER,
469 	IFLA_BR_TCN_TIMER,
470 	IFLA_BR_TOPOLOGY_CHANGE_TIMER,
471 	IFLA_BR_GC_TIMER,
472 	IFLA_BR_GROUP_ADDR,
473 	IFLA_BR_FDB_FLUSH,
474 	IFLA_BR_MCAST_ROUTER,
475 	IFLA_BR_MCAST_SNOOPING,
476 	IFLA_BR_MCAST_QUERY_USE_IFADDR,
477 	IFLA_BR_MCAST_QUERIER,
478 	IFLA_BR_MCAST_HASH_ELASTICITY,
479 	IFLA_BR_MCAST_HASH_MAX,
480 	IFLA_BR_MCAST_LAST_MEMBER_CNT,
481 	IFLA_BR_MCAST_STARTUP_QUERY_CNT,
482 	IFLA_BR_MCAST_LAST_MEMBER_INTVL,
483 	IFLA_BR_MCAST_MEMBERSHIP_INTVL,
484 	IFLA_BR_MCAST_QUERIER_INTVL,
485 	IFLA_BR_MCAST_QUERY_INTVL,
486 	IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
487 	IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
488 	IFLA_BR_NF_CALL_IPTABLES,
489 	IFLA_BR_NF_CALL_IP6TABLES,
490 	IFLA_BR_NF_CALL_ARPTABLES,
491 	IFLA_BR_VLAN_DEFAULT_PVID,
492 	IFLA_BR_PAD,
493 	IFLA_BR_VLAN_STATS_ENABLED,
494 	IFLA_BR_MCAST_STATS_ENABLED,
495 	IFLA_BR_MCAST_IGMP_VERSION,
496 	IFLA_BR_MCAST_MLD_VERSION,
497 	IFLA_BR_VLAN_STATS_PER_PORT,
498 	IFLA_BR_MULTI_BOOLOPT,
499 	IFLA_BR_MCAST_QUERIER_STATE,
500 	__IFLA_BR_MAX,
501 };
502 
503 #define IFLA_BR_MAX	(__IFLA_BR_MAX - 1)
504 
505 struct ifla_bridge_id {
506 	__u8	prio[2];
507 	__u8	addr[6]; /* ETH_ALEN */
508 };
509 
510 enum {
511 	BRIDGE_MODE_UNSPEC,
512 	BRIDGE_MODE_HAIRPIN,
513 };
514 
515 enum {
516 	IFLA_BRPORT_UNSPEC,
517 	IFLA_BRPORT_STATE,	/* Spanning tree state     */
518 	IFLA_BRPORT_PRIORITY,	/* "             priority  */
519 	IFLA_BRPORT_COST,	/* "             cost      */
520 	IFLA_BRPORT_MODE,	/* mode (hairpin)          */
521 	IFLA_BRPORT_GUARD,	/* bpdu guard              */
522 	IFLA_BRPORT_PROTECT,	/* root port protection    */
523 	IFLA_BRPORT_FAST_LEAVE,	/* multicast fast leave    */
524 	IFLA_BRPORT_LEARNING,	/* mac learning */
525 	IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
526 	IFLA_BRPORT_PROXYARP,	/* proxy ARP */
527 	IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
528 	IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
529 	IFLA_BRPORT_ROOT_ID,	/* designated root */
530 	IFLA_BRPORT_BRIDGE_ID,	/* designated bridge */
531 	IFLA_BRPORT_DESIGNATED_PORT,
532 	IFLA_BRPORT_DESIGNATED_COST,
533 	IFLA_BRPORT_ID,
534 	IFLA_BRPORT_NO,
535 	IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,
536 	IFLA_BRPORT_CONFIG_PENDING,
537 	IFLA_BRPORT_MESSAGE_AGE_TIMER,
538 	IFLA_BRPORT_FORWARD_DELAY_TIMER,
539 	IFLA_BRPORT_HOLD_TIMER,
540 	IFLA_BRPORT_FLUSH,
541 	IFLA_BRPORT_MULTICAST_ROUTER,
542 	IFLA_BRPORT_PAD,
543 	IFLA_BRPORT_MCAST_FLOOD,
544 	IFLA_BRPORT_MCAST_TO_UCAST,
545 	IFLA_BRPORT_VLAN_TUNNEL,
546 	IFLA_BRPORT_BCAST_FLOOD,
547 	IFLA_BRPORT_GROUP_FWD_MASK,
548 	IFLA_BRPORT_NEIGH_SUPPRESS,
549 	IFLA_BRPORT_ISOLATED,
550 	IFLA_BRPORT_BACKUP_PORT,
551 	IFLA_BRPORT_MRP_RING_OPEN,
552 	IFLA_BRPORT_MRP_IN_OPEN,
553 	IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
554 	IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
555 	IFLA_BRPORT_LOCKED,
556 	__IFLA_BRPORT_MAX
557 };
558 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
559 
560 struct ifla_cacheinfo {
561 	__u32	max_reasm_len;
562 	__u32	tstamp;		/* ipv6InterfaceTable updated timestamp */
563 	__u32	reachable_time;
564 	__u32	retrans_time;
565 };
566 
567 enum {
568 	IFLA_INFO_UNSPEC,
569 	IFLA_INFO_KIND,
570 	IFLA_INFO_DATA,
571 	IFLA_INFO_XSTATS,
572 	IFLA_INFO_SLAVE_KIND,
573 	IFLA_INFO_SLAVE_DATA,
574 	__IFLA_INFO_MAX,
575 };
576 
577 #define IFLA_INFO_MAX	(__IFLA_INFO_MAX - 1)
578 
579 /* VLAN section */
580 
581 enum {
582 	IFLA_VLAN_UNSPEC,
583 	IFLA_VLAN_ID,
584 	IFLA_VLAN_FLAGS,
585 	IFLA_VLAN_EGRESS_QOS,
586 	IFLA_VLAN_INGRESS_QOS,
587 	IFLA_VLAN_PROTOCOL,
588 	__IFLA_VLAN_MAX,
589 };
590 
591 #define IFLA_VLAN_MAX	(__IFLA_VLAN_MAX - 1)
592 
593 struct ifla_vlan_flags {
594 	__u32	flags;
595 	__u32	mask;
596 };
597 
598 enum {
599 	IFLA_VLAN_QOS_UNSPEC,
600 	IFLA_VLAN_QOS_MAPPING,
601 	__IFLA_VLAN_QOS_MAX
602 };
603 
604 #define IFLA_VLAN_QOS_MAX	(__IFLA_VLAN_QOS_MAX - 1)
605 
606 struct ifla_vlan_qos_mapping {
607 	__u32 from;
608 	__u32 to;
609 };
610 
611 /* MACVLAN section */
612 enum {
613 	IFLA_MACVLAN_UNSPEC,
614 	IFLA_MACVLAN_MODE,
615 	IFLA_MACVLAN_FLAGS,
616 	IFLA_MACVLAN_MACADDR_MODE,
617 	IFLA_MACVLAN_MACADDR,
618 	IFLA_MACVLAN_MACADDR_DATA,
619 	IFLA_MACVLAN_MACADDR_COUNT,
620 	IFLA_MACVLAN_BC_QUEUE_LEN,
621 	IFLA_MACVLAN_BC_QUEUE_LEN_USED,
622 	__IFLA_MACVLAN_MAX,
623 };
624 
625 #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
626 
627 enum macvlan_mode {
628 	MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
629 	MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
630 	MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
631 	MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
632 	MACVLAN_MODE_SOURCE  = 16,/* use source MAC address list to assign */
633 };
634 
635 enum macvlan_macaddr_mode {
636 	MACVLAN_MACADDR_ADD,
637 	MACVLAN_MACADDR_DEL,
638 	MACVLAN_MACADDR_FLUSH,
639 	MACVLAN_MACADDR_SET,
640 };
641 
642 #define MACVLAN_FLAG_NOPROMISC	1
643 #define MACVLAN_FLAG_NODST	2 /* skip dst macvlan if matching src macvlan */
644 
645 /* VRF section */
646 enum {
647 	IFLA_VRF_UNSPEC,
648 	IFLA_VRF_TABLE,
649 	__IFLA_VRF_MAX
650 };
651 
652 #define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
653 
654 enum {
655 	IFLA_VRF_PORT_UNSPEC,
656 	IFLA_VRF_PORT_TABLE,
657 	__IFLA_VRF_PORT_MAX
658 };
659 
660 #define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
661 
662 /* MACSEC section */
663 enum {
664 	IFLA_MACSEC_UNSPEC,
665 	IFLA_MACSEC_SCI,
666 	IFLA_MACSEC_PORT,
667 	IFLA_MACSEC_ICV_LEN,
668 	IFLA_MACSEC_CIPHER_SUITE,
669 	IFLA_MACSEC_WINDOW,
670 	IFLA_MACSEC_ENCODING_SA,
671 	IFLA_MACSEC_ENCRYPT,
672 	IFLA_MACSEC_PROTECT,
673 	IFLA_MACSEC_INC_SCI,
674 	IFLA_MACSEC_ES,
675 	IFLA_MACSEC_SCB,
676 	IFLA_MACSEC_REPLAY_PROTECT,
677 	IFLA_MACSEC_VALIDATION,
678 	IFLA_MACSEC_PAD,
679 	IFLA_MACSEC_OFFLOAD,
680 	__IFLA_MACSEC_MAX,
681 };
682 
683 #define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
684 
685 /* XFRM section */
686 enum {
687 	IFLA_XFRM_UNSPEC,
688 	IFLA_XFRM_LINK,
689 	IFLA_XFRM_IF_ID,
690 	__IFLA_XFRM_MAX
691 };
692 
693 #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
694 
695 enum macsec_validation_type {
696 	MACSEC_VALIDATE_DISABLED = 0,
697 	MACSEC_VALIDATE_CHECK = 1,
698 	MACSEC_VALIDATE_STRICT = 2,
699 	__MACSEC_VALIDATE_END,
700 	MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
701 };
702 
703 enum macsec_offload {
704 	MACSEC_OFFLOAD_OFF = 0,
705 	MACSEC_OFFLOAD_PHY = 1,
706 	MACSEC_OFFLOAD_MAC = 2,
707 	__MACSEC_OFFLOAD_END,
708 	MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1,
709 };
710 
711 /* IPVLAN section */
712 enum {
713 	IFLA_IPVLAN_UNSPEC,
714 	IFLA_IPVLAN_MODE,
715 	IFLA_IPVLAN_FLAGS,
716 	__IFLA_IPVLAN_MAX
717 };
718 
719 #define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
720 
721 enum ipvlan_mode {
722 	IPVLAN_MODE_L2 = 0,
723 	IPVLAN_MODE_L3,
724 	IPVLAN_MODE_L3S,
725 	IPVLAN_MODE_MAX
726 };
727 
728 #define IPVLAN_F_PRIVATE	0x01
729 #define IPVLAN_F_VEPA		0x02
730 
731 /* Tunnel RTM header */
732 struct tunnel_msg {
733 	__u8 family;
734 	__u8 flags;
735 	__u16 reserved2;
736 	__u32 ifindex;
737 };
738 
739 /* VXLAN section */
740 
741 /* include statistics in the dump */
742 #define TUNNEL_MSG_FLAG_STATS	0x01
743 
744 #define TUNNEL_MSG_VALID_USER_FLAGS TUNNEL_MSG_FLAG_STATS
745 
746 /* Embedded inside VXLAN_VNIFILTER_ENTRY_STATS */
747 enum {
748 	VNIFILTER_ENTRY_STATS_UNSPEC,
749 	VNIFILTER_ENTRY_STATS_RX_BYTES,
750 	VNIFILTER_ENTRY_STATS_RX_PKTS,
751 	VNIFILTER_ENTRY_STATS_RX_DROPS,
752 	VNIFILTER_ENTRY_STATS_RX_ERRORS,
753 	VNIFILTER_ENTRY_STATS_TX_BYTES,
754 	VNIFILTER_ENTRY_STATS_TX_PKTS,
755 	VNIFILTER_ENTRY_STATS_TX_DROPS,
756 	VNIFILTER_ENTRY_STATS_TX_ERRORS,
757 	VNIFILTER_ENTRY_STATS_PAD,
758 	__VNIFILTER_ENTRY_STATS_MAX
759 };
760 #define VNIFILTER_ENTRY_STATS_MAX (__VNIFILTER_ENTRY_STATS_MAX - 1)
761 
762 enum {
763 	VXLAN_VNIFILTER_ENTRY_UNSPEC,
764 	VXLAN_VNIFILTER_ENTRY_START,
765 	VXLAN_VNIFILTER_ENTRY_END,
766 	VXLAN_VNIFILTER_ENTRY_GROUP,
767 	VXLAN_VNIFILTER_ENTRY_GROUP6,
768 	VXLAN_VNIFILTER_ENTRY_STATS,
769 	__VXLAN_VNIFILTER_ENTRY_MAX
770 };
771 #define VXLAN_VNIFILTER_ENTRY_MAX	(__VXLAN_VNIFILTER_ENTRY_MAX - 1)
772 
773 enum {
774 	VXLAN_VNIFILTER_UNSPEC,
775 	VXLAN_VNIFILTER_ENTRY,
776 	__VXLAN_VNIFILTER_MAX
777 };
778 #define VXLAN_VNIFILTER_MAX	(__VXLAN_VNIFILTER_MAX - 1)
779 
780 enum {
781 	IFLA_VXLAN_UNSPEC,
782 	IFLA_VXLAN_ID,
783 	IFLA_VXLAN_GROUP,	/* group or remote address */
784 	IFLA_VXLAN_LINK,
785 	IFLA_VXLAN_LOCAL,
786 	IFLA_VXLAN_TTL,
787 	IFLA_VXLAN_TOS,
788 	IFLA_VXLAN_LEARNING,
789 	IFLA_VXLAN_AGEING,
790 	IFLA_VXLAN_LIMIT,
791 	IFLA_VXLAN_PORT_RANGE,	/* source port */
792 	IFLA_VXLAN_PROXY,
793 	IFLA_VXLAN_RSC,
794 	IFLA_VXLAN_L2MISS,
795 	IFLA_VXLAN_L3MISS,
796 	IFLA_VXLAN_PORT,	/* destination port */
797 	IFLA_VXLAN_GROUP6,
798 	IFLA_VXLAN_LOCAL6,
799 	IFLA_VXLAN_UDP_CSUM,
800 	IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
801 	IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
802 	IFLA_VXLAN_REMCSUM_TX,
803 	IFLA_VXLAN_REMCSUM_RX,
804 	IFLA_VXLAN_GBP,
805 	IFLA_VXLAN_REMCSUM_NOPARTIAL,
806 	IFLA_VXLAN_COLLECT_METADATA,
807 	IFLA_VXLAN_LABEL,
808 	IFLA_VXLAN_GPE,
809 	IFLA_VXLAN_TTL_INHERIT,
810 	IFLA_VXLAN_DF,
811 	IFLA_VXLAN_VNIFILTER, /* only applicable with COLLECT_METADATA mode */
812 	__IFLA_VXLAN_MAX
813 };
814 #define IFLA_VXLAN_MAX	(__IFLA_VXLAN_MAX - 1)
815 
816 struct ifla_vxlan_port_range {
817 	__be16	low;
818 	__be16	high;
819 };
820 
821 enum ifla_vxlan_df {
822 	VXLAN_DF_UNSET = 0,
823 	VXLAN_DF_SET,
824 	VXLAN_DF_INHERIT,
825 	__VXLAN_DF_END,
826 	VXLAN_DF_MAX = __VXLAN_DF_END - 1,
827 };
828 
829 /* GENEVE section */
830 enum {
831 	IFLA_GENEVE_UNSPEC,
832 	IFLA_GENEVE_ID,
833 	IFLA_GENEVE_REMOTE,
834 	IFLA_GENEVE_TTL,
835 	IFLA_GENEVE_TOS,
836 	IFLA_GENEVE_PORT,	/* destination port */
837 	IFLA_GENEVE_COLLECT_METADATA,
838 	IFLA_GENEVE_REMOTE6,
839 	IFLA_GENEVE_UDP_CSUM,
840 	IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
841 	IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
842 	IFLA_GENEVE_LABEL,
843 	IFLA_GENEVE_TTL_INHERIT,
844 	IFLA_GENEVE_DF,
845 	IFLA_GENEVE_INNER_PROTO_INHERIT,
846 	__IFLA_GENEVE_MAX
847 };
848 #define IFLA_GENEVE_MAX	(__IFLA_GENEVE_MAX - 1)
849 
850 enum ifla_geneve_df {
851 	GENEVE_DF_UNSET = 0,
852 	GENEVE_DF_SET,
853 	GENEVE_DF_INHERIT,
854 	__GENEVE_DF_END,
855 	GENEVE_DF_MAX = __GENEVE_DF_END - 1,
856 };
857 
858 /* Bareudp section  */
859 enum {
860 	IFLA_BAREUDP_UNSPEC,
861 	IFLA_BAREUDP_PORT,
862 	IFLA_BAREUDP_ETHERTYPE,
863 	IFLA_BAREUDP_SRCPORT_MIN,
864 	IFLA_BAREUDP_MULTIPROTO_MODE,
865 	__IFLA_BAREUDP_MAX
866 };
867 
868 #define IFLA_BAREUDP_MAX (__IFLA_BAREUDP_MAX - 1)
869 
870 /* PPP section */
871 enum {
872 	IFLA_PPP_UNSPEC,
873 	IFLA_PPP_DEV_FD,
874 	__IFLA_PPP_MAX
875 };
876 #define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
877 
878 /* GTP section */
879 
880 enum ifla_gtp_role {
881 	GTP_ROLE_GGSN = 0,
882 	GTP_ROLE_SGSN,
883 };
884 
885 enum {
886 	IFLA_GTP_UNSPEC,
887 	IFLA_GTP_FD0,
888 	IFLA_GTP_FD1,
889 	IFLA_GTP_PDP_HASHSIZE,
890 	IFLA_GTP_ROLE,
891 	IFLA_GTP_CREATE_SOCKETS,
892 	IFLA_GTP_RESTART_COUNT,
893 	__IFLA_GTP_MAX,
894 };
895 #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
896 
897 /* Bonding section */
898 
899 enum {
900 	IFLA_BOND_UNSPEC,
901 	IFLA_BOND_MODE,
902 	IFLA_BOND_ACTIVE_SLAVE,
903 	IFLA_BOND_MIIMON,
904 	IFLA_BOND_UPDELAY,
905 	IFLA_BOND_DOWNDELAY,
906 	IFLA_BOND_USE_CARRIER,
907 	IFLA_BOND_ARP_INTERVAL,
908 	IFLA_BOND_ARP_IP_TARGET,
909 	IFLA_BOND_ARP_VALIDATE,
910 	IFLA_BOND_ARP_ALL_TARGETS,
911 	IFLA_BOND_PRIMARY,
912 	IFLA_BOND_PRIMARY_RESELECT,
913 	IFLA_BOND_FAIL_OVER_MAC,
914 	IFLA_BOND_XMIT_HASH_POLICY,
915 	IFLA_BOND_RESEND_IGMP,
916 	IFLA_BOND_NUM_PEER_NOTIF,
917 	IFLA_BOND_ALL_SLAVES_ACTIVE,
918 	IFLA_BOND_MIN_LINKS,
919 	IFLA_BOND_LP_INTERVAL,
920 	IFLA_BOND_PACKETS_PER_SLAVE,
921 	IFLA_BOND_AD_LACP_RATE,
922 	IFLA_BOND_AD_SELECT,
923 	IFLA_BOND_AD_INFO,
924 	IFLA_BOND_AD_ACTOR_SYS_PRIO,
925 	IFLA_BOND_AD_USER_PORT_KEY,
926 	IFLA_BOND_AD_ACTOR_SYSTEM,
927 	IFLA_BOND_TLB_DYNAMIC_LB,
928 	IFLA_BOND_PEER_NOTIF_DELAY,
929 	IFLA_BOND_AD_LACP_ACTIVE,
930 	IFLA_BOND_MISSED_MAX,
931 	IFLA_BOND_NS_IP6_TARGET,
932 	__IFLA_BOND_MAX,
933 };
934 
935 #define IFLA_BOND_MAX	(__IFLA_BOND_MAX - 1)
936 
937 enum {
938 	IFLA_BOND_AD_INFO_UNSPEC,
939 	IFLA_BOND_AD_INFO_AGGREGATOR,
940 	IFLA_BOND_AD_INFO_NUM_PORTS,
941 	IFLA_BOND_AD_INFO_ACTOR_KEY,
942 	IFLA_BOND_AD_INFO_PARTNER_KEY,
943 	IFLA_BOND_AD_INFO_PARTNER_MAC,
944 	__IFLA_BOND_AD_INFO_MAX,
945 };
946 
947 #define IFLA_BOND_AD_INFO_MAX	(__IFLA_BOND_AD_INFO_MAX - 1)
948 
949 enum {
950 	IFLA_BOND_SLAVE_UNSPEC,
951 	IFLA_BOND_SLAVE_STATE,
952 	IFLA_BOND_SLAVE_MII_STATUS,
953 	IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
954 	IFLA_BOND_SLAVE_PERM_HWADDR,
955 	IFLA_BOND_SLAVE_QUEUE_ID,
956 	IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
957 	IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
958 	IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
959 	__IFLA_BOND_SLAVE_MAX,
960 };
961 
962 #define IFLA_BOND_SLAVE_MAX	(__IFLA_BOND_SLAVE_MAX - 1)
963 
964 /* SR-IOV virtual function management section */
965 
966 enum {
967 	IFLA_VF_INFO_UNSPEC,
968 	IFLA_VF_INFO,
969 	__IFLA_VF_INFO_MAX,
970 };
971 
972 #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
973 
974 enum {
975 	IFLA_VF_UNSPEC,
976 	IFLA_VF_MAC,		/* Hardware queue specific attributes */
977 	IFLA_VF_VLAN,		/* VLAN ID and QoS */
978 	IFLA_VF_TX_RATE,	/* Max TX Bandwidth Allocation */
979 	IFLA_VF_SPOOFCHK,	/* Spoof Checking on/off switch */
980 	IFLA_VF_LINK_STATE,	/* link state enable/disable/auto switch */
981 	IFLA_VF_RATE,		/* Min and Max TX Bandwidth Allocation */
982 	IFLA_VF_RSS_QUERY_EN,	/* RSS Redirection Table and Hash Key query
983 				 * on/off switch
984 				 */
985 	IFLA_VF_STATS,		/* network device statistics */
986 	IFLA_VF_TRUST,		/* Trust VF */
987 	IFLA_VF_IB_NODE_GUID,	/* VF Infiniband node GUID */
988 	IFLA_VF_IB_PORT_GUID,	/* VF Infiniband port GUID */
989 	IFLA_VF_VLAN_LIST,	/* nested list of vlans, option for QinQ */
990 	IFLA_VF_BROADCAST,	/* VF broadcast */
991 	__IFLA_VF_MAX,
992 };
993 
994 #define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
995 
996 struct ifla_vf_mac {
997 	__u32 vf;
998 	__u8 mac[32]; /* MAX_ADDR_LEN */
999 };
1000 
1001 struct ifla_vf_broadcast {
1002 	__u8 broadcast[32];
1003 };
1004 
1005 struct ifla_vf_vlan {
1006 	__u32 vf;
1007 	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
1008 	__u32 qos;
1009 };
1010 
1011 enum {
1012 	IFLA_VF_VLAN_INFO_UNSPEC,
1013 	IFLA_VF_VLAN_INFO,	/* VLAN ID, QoS and VLAN protocol */
1014 	__IFLA_VF_VLAN_INFO_MAX,
1015 };
1016 
1017 #define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
1018 #define MAX_VLAN_LIST_LEN 1
1019 
1020 struct ifla_vf_vlan_info {
1021 	__u32 vf;
1022 	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
1023 	__u32 qos;
1024 	__be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
1025 };
1026 
1027 struct ifla_vf_tx_rate {
1028 	__u32 vf;
1029 	__u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
1030 };
1031 
1032 struct ifla_vf_rate {
1033 	__u32 vf;
1034 	__u32 min_tx_rate; /* Min Bandwidth in Mbps */
1035 	__u32 max_tx_rate; /* Max Bandwidth in Mbps */
1036 };
1037 
1038 struct ifla_vf_spoofchk {
1039 	__u32 vf;
1040 	__u32 setting;
1041 };
1042 
1043 struct ifla_vf_guid {
1044 	__u32 vf;
1045 	__u64 guid;
1046 };
1047 
1048 enum {
1049 	IFLA_VF_LINK_STATE_AUTO,	/* link state of the uplink */
1050 	IFLA_VF_LINK_STATE_ENABLE,	/* link always up */
1051 	IFLA_VF_LINK_STATE_DISABLE,	/* link always down */
1052 	__IFLA_VF_LINK_STATE_MAX,
1053 };
1054 
1055 struct ifla_vf_link_state {
1056 	__u32 vf;
1057 	__u32 link_state;
1058 };
1059 
1060 struct ifla_vf_rss_query_en {
1061 	__u32 vf;
1062 	__u32 setting;
1063 };
1064 
1065 enum {
1066 	IFLA_VF_STATS_RX_PACKETS,
1067 	IFLA_VF_STATS_TX_PACKETS,
1068 	IFLA_VF_STATS_RX_BYTES,
1069 	IFLA_VF_STATS_TX_BYTES,
1070 	IFLA_VF_STATS_BROADCAST,
1071 	IFLA_VF_STATS_MULTICAST,
1072 	IFLA_VF_STATS_PAD,
1073 	IFLA_VF_STATS_RX_DROPPED,
1074 	IFLA_VF_STATS_TX_DROPPED,
1075 	__IFLA_VF_STATS_MAX,
1076 };
1077 
1078 #define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
1079 
1080 struct ifla_vf_trust {
1081 	__u32 vf;
1082 	__u32 setting;
1083 };
1084 
1085 /* VF ports management section
1086  *
1087  *	Nested layout of set/get msg is:
1088  *
1089  *		[IFLA_NUM_VF]
1090  *		[IFLA_VF_PORTS]
1091  *			[IFLA_VF_PORT]
1092  *				[IFLA_PORT_*], ...
1093  *			[IFLA_VF_PORT]
1094  *				[IFLA_PORT_*], ...
1095  *			...
1096  *		[IFLA_PORT_SELF]
1097  *			[IFLA_PORT_*], ...
1098  */
1099 
1100 enum {
1101 	IFLA_VF_PORT_UNSPEC,
1102 	IFLA_VF_PORT,			/* nest */
1103 	__IFLA_VF_PORT_MAX,
1104 };
1105 
1106 #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
1107 
1108 enum {
1109 	IFLA_PORT_UNSPEC,
1110 	IFLA_PORT_VF,			/* __u32 */
1111 	IFLA_PORT_PROFILE,		/* string */
1112 	IFLA_PORT_VSI_TYPE,		/* 802.1Qbg (pre-)standard VDP */
1113 	IFLA_PORT_INSTANCE_UUID,	/* binary UUID */
1114 	IFLA_PORT_HOST_UUID,		/* binary UUID */
1115 	IFLA_PORT_REQUEST,		/* __u8 */
1116 	IFLA_PORT_RESPONSE,		/* __u16, output only */
1117 	__IFLA_PORT_MAX,
1118 };
1119 
1120 #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
1121 
1122 #define PORT_PROFILE_MAX	40
1123 #define PORT_UUID_MAX		16
1124 #define PORT_SELF_VF		-1
1125 
1126 enum {
1127 	PORT_REQUEST_PREASSOCIATE = 0,
1128 	PORT_REQUEST_PREASSOCIATE_RR,
1129 	PORT_REQUEST_ASSOCIATE,
1130 	PORT_REQUEST_DISASSOCIATE,
1131 };
1132 
1133 enum {
1134 	PORT_VDP_RESPONSE_SUCCESS = 0,
1135 	PORT_VDP_RESPONSE_INVALID_FORMAT,
1136 	PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
1137 	PORT_VDP_RESPONSE_UNUSED_VTID,
1138 	PORT_VDP_RESPONSE_VTID_VIOLATION,
1139 	PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
1140 	PORT_VDP_RESPONSE_OUT_OF_SYNC,
1141 	/* 0x08-0xFF reserved for future VDP use */
1142 	PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
1143 	PORT_PROFILE_RESPONSE_INPROGRESS,
1144 	PORT_PROFILE_RESPONSE_INVALID,
1145 	PORT_PROFILE_RESPONSE_BADSTATE,
1146 	PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
1147 	PORT_PROFILE_RESPONSE_ERROR,
1148 };
1149 
1150 struct ifla_port_vsi {
1151 	__u8 vsi_mgr_id;
1152 	__u8 vsi_type_id[3];
1153 	__u8 vsi_type_version;
1154 	__u8 pad[3];
1155 };
1156 
1157 
1158 /* IPoIB section */
1159 
1160 enum {
1161 	IFLA_IPOIB_UNSPEC,
1162 	IFLA_IPOIB_PKEY,
1163 	IFLA_IPOIB_MODE,
1164 	IFLA_IPOIB_UMCAST,
1165 	__IFLA_IPOIB_MAX
1166 };
1167 
1168 enum {
1169 	IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
1170 	IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
1171 };
1172 
1173 #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
1174 
1175 
1176 /* HSR/PRP section, both uses same interface */
1177 
1178 /* Different redundancy protocols for hsr device */
1179 enum {
1180 	HSR_PROTOCOL_HSR,
1181 	HSR_PROTOCOL_PRP,
1182 	HSR_PROTOCOL_MAX,
1183 };
1184 
1185 enum {
1186 	IFLA_HSR_UNSPEC,
1187 	IFLA_HSR_SLAVE1,
1188 	IFLA_HSR_SLAVE2,
1189 	IFLA_HSR_MULTICAST_SPEC,	/* Last byte of supervision addr */
1190 	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
1191 	IFLA_HSR_SEQ_NR,
1192 	IFLA_HSR_VERSION,		/* HSR version */
1193 	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
1194 					 * HSR. For example PRP.
1195 					 */
1196 	__IFLA_HSR_MAX,
1197 };
1198 
1199 #define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
1200 
1201 /* STATS section */
1202 
1203 struct if_stats_msg {
1204 	__u8  family;
1205 	__u8  pad1;
1206 	__u16 pad2;
1207 	__u32 ifindex;
1208 	__u32 filter_mask;
1209 };
1210 
1211 /* A stats attribute can be netdev specific or a global stat.
1212  * For netdev stats, lets use the prefix IFLA_STATS_LINK_*
1213  */
1214 enum {
1215 	IFLA_STATS_UNSPEC, /* also used as 64bit pad attribute */
1216 	IFLA_STATS_LINK_64,
1217 	IFLA_STATS_LINK_XSTATS,
1218 	IFLA_STATS_LINK_XSTATS_SLAVE,
1219 	IFLA_STATS_LINK_OFFLOAD_XSTATS,
1220 	IFLA_STATS_AF_SPEC,
1221 	__IFLA_STATS_MAX,
1222 };
1223 
1224 #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
1225 
1226 #define IFLA_STATS_FILTER_BIT(ATTR)	(1 << (ATTR - 1))
1227 
1228 enum {
1229 	IFLA_STATS_GETSET_UNSPEC,
1230 	IFLA_STATS_GET_FILTERS, /* Nest of IFLA_STATS_LINK_xxx, each a u32 with
1231 				 * a filter mask for the corresponding group.
1232 				 */
1233 	IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS, /* 0 or 1 as u8 */
1234 	__IFLA_STATS_GETSET_MAX,
1235 };
1236 
1237 #define IFLA_STATS_GETSET_MAX (__IFLA_STATS_GETSET_MAX - 1)
1238 
1239 /* These are embedded into IFLA_STATS_LINK_XSTATS:
1240  * [IFLA_STATS_LINK_XSTATS]
1241  * -> [LINK_XSTATS_TYPE_xxx]
1242  *    -> [rtnl link type specific attributes]
1243  */
1244 enum {
1245 	LINK_XSTATS_TYPE_UNSPEC,
1246 	LINK_XSTATS_TYPE_BRIDGE,
1247 	LINK_XSTATS_TYPE_BOND,
1248 	__LINK_XSTATS_TYPE_MAX
1249 };
1250 #define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
1251 
1252 /* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
1253 enum {
1254 	IFLA_OFFLOAD_XSTATS_UNSPEC,
1255 	IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
1256 	IFLA_OFFLOAD_XSTATS_HW_S_INFO,	/* HW stats info. A nest */
1257 	IFLA_OFFLOAD_XSTATS_L3_STATS,	/* struct rtnl_hw_stats64 */
1258 	__IFLA_OFFLOAD_XSTATS_MAX
1259 };
1260 #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
1261 
1262 enum {
1263 	IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC,
1264 	IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST,		/* u8 */
1265 	IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED,		/* u8 */
1266 	__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX,
1267 };
1268 #define IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX \
1269 	(__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX - 1)
1270 
1271 /* XDP section */
1272 
1273 #define XDP_FLAGS_UPDATE_IF_NOEXIST	(1U << 0)
1274 #define XDP_FLAGS_SKB_MODE		(1U << 1)
1275 #define XDP_FLAGS_DRV_MODE		(1U << 2)
1276 #define XDP_FLAGS_HW_MODE		(1U << 3)
1277 #define XDP_FLAGS_REPLACE		(1U << 4)
1278 #define XDP_FLAGS_MODES			(XDP_FLAGS_SKB_MODE | \
1279 					 XDP_FLAGS_DRV_MODE | \
1280 					 XDP_FLAGS_HW_MODE)
1281 #define XDP_FLAGS_MASK			(XDP_FLAGS_UPDATE_IF_NOEXIST | \
1282 					 XDP_FLAGS_MODES | XDP_FLAGS_REPLACE)
1283 
1284 /* These are stored into IFLA_XDP_ATTACHED on dump. */
1285 enum {
1286 	XDP_ATTACHED_NONE = 0,
1287 	XDP_ATTACHED_DRV,
1288 	XDP_ATTACHED_SKB,
1289 	XDP_ATTACHED_HW,
1290 	XDP_ATTACHED_MULTI,
1291 };
1292 
1293 enum {
1294 	IFLA_XDP_UNSPEC,
1295 	IFLA_XDP_FD,
1296 	IFLA_XDP_ATTACHED,
1297 	IFLA_XDP_FLAGS,
1298 	IFLA_XDP_PROG_ID,
1299 	IFLA_XDP_DRV_PROG_ID,
1300 	IFLA_XDP_SKB_PROG_ID,
1301 	IFLA_XDP_HW_PROG_ID,
1302 	IFLA_XDP_EXPECTED_FD,
1303 	__IFLA_XDP_MAX,
1304 };
1305 
1306 #define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
1307 
1308 enum {
1309 	IFLA_EVENT_NONE,
1310 	IFLA_EVENT_REBOOT,		/* internal reset / reboot */
1311 	IFLA_EVENT_FEATURES,		/* change in offload features */
1312 	IFLA_EVENT_BONDING_FAILOVER,	/* change in active slave */
1313 	IFLA_EVENT_NOTIFY_PEERS,	/* re-sent grat. arp/ndisc */
1314 	IFLA_EVENT_IGMP_RESEND,		/* re-sent IGMP JOIN */
1315 	IFLA_EVENT_BONDING_OPTIONS,	/* change in bonding options */
1316 };
1317 
1318 /* tun section */
1319 
1320 enum {
1321 	IFLA_TUN_UNSPEC,
1322 	IFLA_TUN_OWNER,
1323 	IFLA_TUN_GROUP,
1324 	IFLA_TUN_TYPE,
1325 	IFLA_TUN_PI,
1326 	IFLA_TUN_VNET_HDR,
1327 	IFLA_TUN_PERSIST,
1328 	IFLA_TUN_MULTI_QUEUE,
1329 	IFLA_TUN_NUM_QUEUES,
1330 	IFLA_TUN_NUM_DISABLED_QUEUES,
1331 	__IFLA_TUN_MAX,
1332 };
1333 
1334 #define IFLA_TUN_MAX (__IFLA_TUN_MAX - 1)
1335 
1336 /* rmnet section */
1337 
1338 #define RMNET_FLAGS_INGRESS_DEAGGREGATION         (1U << 0)
1339 #define RMNET_FLAGS_INGRESS_MAP_COMMANDS          (1U << 1)
1340 #define RMNET_FLAGS_INGRESS_MAP_CKSUMV4           (1U << 2)
1341 #define RMNET_FLAGS_EGRESS_MAP_CKSUMV4            (1U << 3)
1342 #define RMNET_FLAGS_INGRESS_MAP_CKSUMV5           (1U << 4)
1343 #define RMNET_FLAGS_EGRESS_MAP_CKSUMV5            (1U << 5)
1344 
1345 enum {
1346 	IFLA_RMNET_UNSPEC,
1347 	IFLA_RMNET_MUX_ID,
1348 	IFLA_RMNET_FLAGS,
1349 	__IFLA_RMNET_MAX,
1350 };
1351 
1352 #define IFLA_RMNET_MAX	(__IFLA_RMNET_MAX - 1)
1353 
1354 struct ifla_rmnet_flags {
1355 	__u32	flags;
1356 	__u32	mask;
1357 };
1358 
1359 /* MCTP section */
1360 
1361 enum {
1362 	IFLA_MCTP_UNSPEC,
1363 	IFLA_MCTP_NET,
1364 	__IFLA_MCTP_MAX,
1365 };
1366 
1367 #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
1368 
1369 #endif /* _UAPI_LINUX_IF_LINK_H */
1370