xref: /linux/include/uapi/linux/if_link.h (revision 87cd83714f30ef2f19f0390e98beb8d78e173f0f)
16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2607ca46eSDavid Howells #ifndef _UAPI_LINUX_IF_LINK_H
3607ca46eSDavid Howells #define _UAPI_LINUX_IF_LINK_H
4607ca46eSDavid Howells 
5607ca46eSDavid Howells #include <linux/types.h>
6607ca46eSDavid Howells #include <linux/netlink.h>
7607ca46eSDavid Howells 
8607ca46eSDavid Howells /* This struct should be in sync with struct rtnl_link_stats64 */
9607ca46eSDavid Howells struct rtnl_link_stats {
1078a3ea55SJakub Kicinski 	__u32	rx_packets;
1178a3ea55SJakub Kicinski 	__u32	tx_packets;
1278a3ea55SJakub Kicinski 	__u32	rx_bytes;
1378a3ea55SJakub Kicinski 	__u32	tx_bytes;
1478a3ea55SJakub Kicinski 	__u32	rx_errors;
1578a3ea55SJakub Kicinski 	__u32	tx_errors;
1678a3ea55SJakub Kicinski 	__u32	rx_dropped;
1778a3ea55SJakub Kicinski 	__u32	tx_dropped;
1878a3ea55SJakub Kicinski 	__u32	multicast;
19607ca46eSDavid Howells 	__u32	collisions;
20607ca46eSDavid Howells 	/* detailed rx_errors: */
21607ca46eSDavid Howells 	__u32	rx_length_errors;
2278a3ea55SJakub Kicinski 	__u32	rx_over_errors;
2378a3ea55SJakub Kicinski 	__u32	rx_crc_errors;
2478a3ea55SJakub Kicinski 	__u32	rx_frame_errors;
2578a3ea55SJakub Kicinski 	__u32	rx_fifo_errors;
2678a3ea55SJakub Kicinski 	__u32	rx_missed_errors;
27607ca46eSDavid Howells 
28607ca46eSDavid Howells 	/* detailed tx_errors */
29607ca46eSDavid Howells 	__u32	tx_aborted_errors;
30607ca46eSDavid Howells 	__u32	tx_carrier_errors;
31607ca46eSDavid Howells 	__u32	tx_fifo_errors;
32607ca46eSDavid Howells 	__u32	tx_heartbeat_errors;
33607ca46eSDavid Howells 	__u32	tx_window_errors;
34607ca46eSDavid Howells 
35607ca46eSDavid Howells 	/* for cslip etc */
36607ca46eSDavid Howells 	__u32	rx_compressed;
37607ca46eSDavid Howells 	__u32	tx_compressed;
386e7333d3SJarod Wilson 
3978a3ea55SJakub Kicinski 	__u32	rx_nohandler;
40607ca46eSDavid Howells };
41607ca46eSDavid Howells 
420db0c34cSJakub Kicinski /**
430db0c34cSJakub Kicinski  * struct rtnl_link_stats64 - The main device statistics structure.
440db0c34cSJakub Kicinski  *
450db0c34cSJakub Kicinski  * @rx_packets: Number of good packets received by the interface.
460db0c34cSJakub Kicinski  *   For hardware interfaces counts all good packets received from the device
470db0c34cSJakub Kicinski  *   by the host, including packets which host had to drop at various stages
480db0c34cSJakub Kicinski  *   of processing (even in the driver).
490db0c34cSJakub Kicinski  *
500db0c34cSJakub Kicinski  * @tx_packets: Number of packets successfully transmitted.
510db0c34cSJakub Kicinski  *   For hardware interfaces counts packets which host was able to successfully
520db0c34cSJakub Kicinski  *   hand over to the device, which does not necessarily mean that packets
530db0c34cSJakub Kicinski  *   had been successfully transmitted out of the device, only that device
540db0c34cSJakub Kicinski  *   acknowledged it copied them out of host memory.
550db0c34cSJakub Kicinski  *
560db0c34cSJakub Kicinski  * @rx_bytes: Number of good received bytes, corresponding to @rx_packets.
570db0c34cSJakub Kicinski  *
580db0c34cSJakub Kicinski  *   For IEEE 802.3 devices should count the length of Ethernet Frames
590db0c34cSJakub Kicinski  *   excluding the FCS.
600db0c34cSJakub Kicinski  *
610db0c34cSJakub Kicinski  * @tx_bytes: Number of good transmitted bytes, corresponding to @tx_packets.
620db0c34cSJakub Kicinski  *
630db0c34cSJakub Kicinski  *   For IEEE 802.3 devices should count the length of Ethernet Frames
640db0c34cSJakub Kicinski  *   excluding the FCS.
650db0c34cSJakub Kicinski  *
660db0c34cSJakub Kicinski  * @rx_errors: Total number of bad packets received on this network device.
670db0c34cSJakub Kicinski  *   This counter must include events counted by @rx_length_errors,
680db0c34cSJakub Kicinski  *   @rx_crc_errors, @rx_frame_errors and other errors not otherwise
690db0c34cSJakub Kicinski  *   counted.
700db0c34cSJakub Kicinski  *
710db0c34cSJakub Kicinski  * @tx_errors: Total number of transmit problems.
720db0c34cSJakub Kicinski  *   This counter must include events counter by @tx_aborted_errors,
730db0c34cSJakub Kicinski  *   @tx_carrier_errors, @tx_fifo_errors, @tx_heartbeat_errors,
740db0c34cSJakub Kicinski  *   @tx_window_errors and other errors not otherwise counted.
750db0c34cSJakub Kicinski  *
760db0c34cSJakub Kicinski  * @rx_dropped: Number of packets received but not processed,
770db0c34cSJakub Kicinski  *   e.g. due to lack of resources or unsupported protocol.
78cf072069SJakub Kicinski  *   For hardware interfaces this counter may include packets discarded
79cf072069SJakub Kicinski  *   due to L2 address filtering but should not include packets dropped
80cf072069SJakub Kicinski  *   by the device due to buffer exhaustion which are counted separately in
810db0c34cSJakub Kicinski  *   @rx_missed_errors (since procfs folds those two counters together).
820db0c34cSJakub Kicinski  *
830db0c34cSJakub Kicinski  * @tx_dropped: Number of packets dropped on their way to transmission,
840db0c34cSJakub Kicinski  *   e.g. due to lack of resources.
850db0c34cSJakub Kicinski  *
860db0c34cSJakub Kicinski  * @multicast: Multicast packets received.
870db0c34cSJakub Kicinski  *   For hardware interfaces this statistic is commonly calculated
880db0c34cSJakub Kicinski  *   at the device level (unlike @rx_packets) and therefore may include
890db0c34cSJakub Kicinski  *   packets which did not reach the host.
900db0c34cSJakub Kicinski  *
910db0c34cSJakub Kicinski  *   For IEEE 802.3 devices this counter may be equivalent to:
920db0c34cSJakub Kicinski  *
930db0c34cSJakub Kicinski  *    - 30.3.1.1.21 aMulticastFramesReceivedOK
940db0c34cSJakub Kicinski  *
950db0c34cSJakub Kicinski  * @collisions: Number of collisions during packet transmissions.
960db0c34cSJakub Kicinski  *
970db0c34cSJakub Kicinski  * @rx_length_errors: Number of packets dropped due to invalid length.
980db0c34cSJakub Kicinski  *   Part of aggregate "frame" errors in `/proc/net/dev`.
990db0c34cSJakub Kicinski  *
1000db0c34cSJakub Kicinski  *   For IEEE 802.3 devices this counter should be equivalent to a sum
1010db0c34cSJakub Kicinski  *   of the following attributes:
1020db0c34cSJakub Kicinski  *
1030db0c34cSJakub Kicinski  *    - 30.3.1.1.23 aInRangeLengthErrors
1040db0c34cSJakub Kicinski  *    - 30.3.1.1.24 aOutOfRangeLengthField
1050db0c34cSJakub Kicinski  *    - 30.3.1.1.25 aFrameTooLongErrors
1060db0c34cSJakub Kicinski  *
1070db0c34cSJakub Kicinski  * @rx_over_errors: Receiver FIFO overflow event counter.
1080db0c34cSJakub Kicinski  *
1090db0c34cSJakub Kicinski  *   Historically the count of overflow events. Such events may be
1100db0c34cSJakub Kicinski  *   reported in the receive descriptors or via interrupts, and may
1110db0c34cSJakub Kicinski  *   not correspond one-to-one with dropped packets.
1120db0c34cSJakub Kicinski  *
1130db0c34cSJakub Kicinski  *   The recommended interpretation for high speed interfaces is -
1140db0c34cSJakub Kicinski  *   number of packets dropped because they did not fit into buffers
1150db0c34cSJakub Kicinski  *   provided by the host, e.g. packets larger than MTU or next buffer
1160db0c34cSJakub Kicinski  *   in the ring was not available for a scatter transfer.
1170db0c34cSJakub Kicinski  *
1180db0c34cSJakub Kicinski  *   Part of aggregate "frame" errors in `/proc/net/dev`.
1190db0c34cSJakub Kicinski  *
1200db0c34cSJakub Kicinski  *   This statistics was historically used interchangeably with
1210db0c34cSJakub Kicinski  *   @rx_fifo_errors.
1220db0c34cSJakub Kicinski  *
1230db0c34cSJakub Kicinski  *   This statistic corresponds to hardware events and is not commonly used
1240db0c34cSJakub Kicinski  *   on software devices.
1250db0c34cSJakub Kicinski  *
1260db0c34cSJakub Kicinski  * @rx_crc_errors: Number of packets received with a CRC error.
1270db0c34cSJakub Kicinski  *   Part of aggregate "frame" errors in `/proc/net/dev`.
1280db0c34cSJakub Kicinski  *
1290db0c34cSJakub Kicinski  *   For IEEE 802.3 devices this counter must be equivalent to:
1300db0c34cSJakub Kicinski  *
1310db0c34cSJakub Kicinski  *    - 30.3.1.1.6 aFrameCheckSequenceErrors
1320db0c34cSJakub Kicinski  *
1330db0c34cSJakub Kicinski  * @rx_frame_errors: Receiver frame alignment errors.
1340db0c34cSJakub Kicinski  *   Part of aggregate "frame" errors in `/proc/net/dev`.
1350db0c34cSJakub Kicinski  *
1360db0c34cSJakub Kicinski  *   For IEEE 802.3 devices this counter should be equivalent to:
1370db0c34cSJakub Kicinski  *
1380db0c34cSJakub Kicinski  *    - 30.3.1.1.7 aAlignmentErrors
1390db0c34cSJakub Kicinski  *
1400db0c34cSJakub Kicinski  * @rx_fifo_errors: Receiver FIFO error counter.
1410db0c34cSJakub Kicinski  *
1420db0c34cSJakub Kicinski  *   Historically the count of overflow events. Those events may be
1430db0c34cSJakub Kicinski  *   reported in the receive descriptors or via interrupts, and may
1440db0c34cSJakub Kicinski  *   not correspond one-to-one with dropped packets.
1450db0c34cSJakub Kicinski  *
1460db0c34cSJakub Kicinski  *   This statistics was used interchangeably with @rx_over_errors.
1470db0c34cSJakub Kicinski  *   Not recommended for use in drivers for high speed interfaces.
1480db0c34cSJakub Kicinski  *
1490db0c34cSJakub Kicinski  *   This statistic is used on software devices, e.g. to count software
1500db0c34cSJakub Kicinski  *   packet queue overflow (can) or sequencing errors (GRE).
1510db0c34cSJakub Kicinski  *
1520db0c34cSJakub Kicinski  * @rx_missed_errors: Count of packets missed by the host.
1530db0c34cSJakub Kicinski  *   Folded into the "drop" counter in `/proc/net/dev`.
1540db0c34cSJakub Kicinski  *
1550db0c34cSJakub Kicinski  *   Counts number of packets dropped by the device due to lack
1560db0c34cSJakub Kicinski  *   of buffer space. This usually indicates that the host interface
1570db0c34cSJakub Kicinski  *   is slower than the network interface, or host is not keeping up
1580db0c34cSJakub Kicinski  *   with the receive packet rate.
1590db0c34cSJakub Kicinski  *
1600db0c34cSJakub Kicinski  *   This statistic corresponds to hardware events and is not used
1610db0c34cSJakub Kicinski  *   on software devices.
1620db0c34cSJakub Kicinski  *
1630db0c34cSJakub Kicinski  * @tx_aborted_errors:
1640db0c34cSJakub Kicinski  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
1650db0c34cSJakub Kicinski  *   For IEEE 802.3 devices capable of half-duplex operation this counter
1660db0c34cSJakub Kicinski  *   must be equivalent to:
1670db0c34cSJakub Kicinski  *
1680db0c34cSJakub Kicinski  *    - 30.3.1.1.11 aFramesAbortedDueToXSColls
1690db0c34cSJakub Kicinski  *
1700db0c34cSJakub Kicinski  *   High speed interfaces may use this counter as a general device
1710db0c34cSJakub Kicinski  *   discard counter.
1720db0c34cSJakub Kicinski  *
1730db0c34cSJakub Kicinski  * @tx_carrier_errors: Number of frame transmission errors due to loss
1740db0c34cSJakub Kicinski  *   of carrier during transmission.
1750db0c34cSJakub Kicinski  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
1760db0c34cSJakub Kicinski  *
1770db0c34cSJakub Kicinski  *   For IEEE 802.3 devices this counter must be equivalent to:
1780db0c34cSJakub Kicinski  *
1790db0c34cSJakub Kicinski  *    - 30.3.1.1.13 aCarrierSenseErrors
1800db0c34cSJakub Kicinski  *
1810db0c34cSJakub Kicinski  * @tx_fifo_errors: Number of frame transmission errors due to device
1820db0c34cSJakub Kicinski  *   FIFO underrun / underflow. This condition occurs when the device
1830db0c34cSJakub Kicinski  *   begins transmission of a frame but is unable to deliver the
1840db0c34cSJakub Kicinski  *   entire frame to the transmitter in time for transmission.
1850db0c34cSJakub Kicinski  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
1860db0c34cSJakub Kicinski  *
1870db0c34cSJakub Kicinski  * @tx_heartbeat_errors: Number of Heartbeat / SQE Test errors for
1880db0c34cSJakub Kicinski  *   old half-duplex Ethernet.
1890db0c34cSJakub Kicinski  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
1900db0c34cSJakub Kicinski  *
1910db0c34cSJakub Kicinski  *   For IEEE 802.3 devices possibly equivalent to:
1920db0c34cSJakub Kicinski  *
1930db0c34cSJakub Kicinski  *    - 30.3.2.1.4 aSQETestErrors
1940db0c34cSJakub Kicinski  *
1950db0c34cSJakub Kicinski  * @tx_window_errors: Number of frame transmission errors due
1960db0c34cSJakub Kicinski  *   to late collisions (for Ethernet - after the first 64B of transmission).
1970db0c34cSJakub Kicinski  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
1980db0c34cSJakub Kicinski  *
1990db0c34cSJakub Kicinski  *   For IEEE 802.3 devices this counter must be equivalent to:
2000db0c34cSJakub Kicinski  *
2010db0c34cSJakub Kicinski  *    - 30.3.1.1.10 aLateCollisions
2020db0c34cSJakub Kicinski  *
2030db0c34cSJakub Kicinski  * @rx_compressed: Number of correctly received compressed packets.
2040db0c34cSJakub Kicinski  *   This counters is only meaningful for interfaces which support
2050db0c34cSJakub Kicinski  *   packet compression (e.g. CSLIP, PPP).
2060db0c34cSJakub Kicinski  *
2070db0c34cSJakub Kicinski  * @tx_compressed: Number of transmitted compressed packets.
2080db0c34cSJakub Kicinski  *   This counters is only meaningful for interfaces which support
2090db0c34cSJakub Kicinski  *   packet compression (e.g. CSLIP, PPP).
2100db0c34cSJakub Kicinski  *
2110db0c34cSJakub Kicinski  * @rx_nohandler: Number of packets received on the interface
2120db0c34cSJakub Kicinski  *   but dropped by the networking stack because the device is
2130db0c34cSJakub Kicinski  *   not designated to receive packets (e.g. backup link in a bond).
214794c24e9SJeffrey Ji  *
215794c24e9SJeffrey Ji  * @rx_otherhost_dropped: Number of packets dropped due to mismatch
216794c24e9SJeffrey Ji  *   in destination MAC address.
2170db0c34cSJakub Kicinski  */
218607ca46eSDavid Howells struct rtnl_link_stats64 {
2190db0c34cSJakub Kicinski 	__u64	rx_packets;
2200db0c34cSJakub Kicinski 	__u64	tx_packets;
2210db0c34cSJakub Kicinski 	__u64	rx_bytes;
2220db0c34cSJakub Kicinski 	__u64	tx_bytes;
2230db0c34cSJakub Kicinski 	__u64	rx_errors;
2240db0c34cSJakub Kicinski 	__u64	tx_errors;
2250db0c34cSJakub Kicinski 	__u64	rx_dropped;
2260db0c34cSJakub Kicinski 	__u64	tx_dropped;
2270db0c34cSJakub Kicinski 	__u64	multicast;
228607ca46eSDavid Howells 	__u64	collisions;
229607ca46eSDavid Howells 
230607ca46eSDavid Howells 	/* detailed rx_errors: */
231607ca46eSDavid Howells 	__u64	rx_length_errors;
2320db0c34cSJakub Kicinski 	__u64	rx_over_errors;
2330db0c34cSJakub Kicinski 	__u64	rx_crc_errors;
2340db0c34cSJakub Kicinski 	__u64	rx_frame_errors;
2350db0c34cSJakub Kicinski 	__u64	rx_fifo_errors;
2360db0c34cSJakub Kicinski 	__u64	rx_missed_errors;
237607ca46eSDavid Howells 
238607ca46eSDavid Howells 	/* detailed tx_errors */
239607ca46eSDavid Howells 	__u64	tx_aborted_errors;
240607ca46eSDavid Howells 	__u64	tx_carrier_errors;
241607ca46eSDavid Howells 	__u64	tx_fifo_errors;
242607ca46eSDavid Howells 	__u64	tx_heartbeat_errors;
243607ca46eSDavid Howells 	__u64	tx_window_errors;
244607ca46eSDavid Howells 
245607ca46eSDavid Howells 	/* for cslip etc */
246607ca46eSDavid Howells 	__u64	rx_compressed;
247607ca46eSDavid Howells 	__u64	tx_compressed;
2480db0c34cSJakub Kicinski 	__u64	rx_nohandler;
249794c24e9SJeffrey Ji 
250794c24e9SJeffrey Ji 	__u64	rx_otherhost_dropped;
251607ca46eSDavid Howells };
252607ca46eSDavid Howells 
2539309f97aSPetr Machata /* Subset of link stats useful for in-HW collection. Meaning of the fields is as
2549309f97aSPetr Machata  * for struct rtnl_link_stats64.
2559309f97aSPetr Machata  */
2569309f97aSPetr Machata struct rtnl_hw_stats64 {
2579309f97aSPetr Machata 	__u64	rx_packets;
2589309f97aSPetr Machata 	__u64	tx_packets;
2599309f97aSPetr Machata 	__u64	rx_bytes;
2609309f97aSPetr Machata 	__u64	tx_bytes;
2619309f97aSPetr Machata 	__u64	rx_errors;
2629309f97aSPetr Machata 	__u64	tx_errors;
2639309f97aSPetr Machata 	__u64	rx_dropped;
2649309f97aSPetr Machata 	__u64	tx_dropped;
2659309f97aSPetr Machata 	__u64	multicast;
2669309f97aSPetr Machata };
2679309f97aSPetr Machata 
268607ca46eSDavid Howells /* The struct should be in sync with struct ifmap */
269607ca46eSDavid Howells struct rtnl_link_ifmap {
270607ca46eSDavid Howells 	__u64	mem_start;
271607ca46eSDavid Howells 	__u64	mem_end;
272607ca46eSDavid Howells 	__u64	base_addr;
273607ca46eSDavid Howells 	__u16	irq;
274607ca46eSDavid Howells 	__u8	dma;
275607ca46eSDavid Howells 	__u8	port;
276607ca46eSDavid Howells };
277607ca46eSDavid Howells 
278607ca46eSDavid Howells /*
279607ca46eSDavid Howells  * IFLA_AF_SPEC
280607ca46eSDavid Howells  *   Contains nested attributes for address family specific attributes.
281607ca46eSDavid Howells  *   Each address family may create a attribute with the address family
282607ca46eSDavid Howells  *   number as type and create its own attribute structure in it.
283607ca46eSDavid Howells  *
284607ca46eSDavid Howells  *   Example:
285607ca46eSDavid Howells  *   [IFLA_AF_SPEC] = {
286607ca46eSDavid Howells  *       [AF_INET] = {
287607ca46eSDavid Howells  *           [IFLA_INET_CONF] = ...,
288607ca46eSDavid Howells  *       },
289607ca46eSDavid Howells  *       [AF_INET6] = {
290607ca46eSDavid Howells  *           [IFLA_INET6_FLAGS] = ...,
291607ca46eSDavid Howells  *           [IFLA_INET6_CONF] = ...,
292607ca46eSDavid Howells  *       }
293607ca46eSDavid Howells  *   }
294607ca46eSDavid Howells  */
295607ca46eSDavid Howells 
296607ca46eSDavid Howells enum {
297607ca46eSDavid Howells 	IFLA_UNSPEC,
298607ca46eSDavid Howells 	IFLA_ADDRESS,
299607ca46eSDavid Howells 	IFLA_BROADCAST,
300607ca46eSDavid Howells 	IFLA_IFNAME,
301607ca46eSDavid Howells 	IFLA_MTU,
302607ca46eSDavid Howells 	IFLA_LINK,
303607ca46eSDavid Howells 	IFLA_QDISC,
304607ca46eSDavid Howells 	IFLA_STATS,
305607ca46eSDavid Howells 	IFLA_COST,
306607ca46eSDavid Howells #define IFLA_COST IFLA_COST
307607ca46eSDavid Howells 	IFLA_PRIORITY,
308607ca46eSDavid Howells #define IFLA_PRIORITY IFLA_PRIORITY
309607ca46eSDavid Howells 	IFLA_MASTER,
310607ca46eSDavid Howells #define IFLA_MASTER IFLA_MASTER
311607ca46eSDavid Howells 	IFLA_WIRELESS,		/* Wireless Extension event - see wireless.h */
312607ca46eSDavid Howells #define IFLA_WIRELESS IFLA_WIRELESS
313607ca46eSDavid Howells 	IFLA_PROTINFO,		/* Protocol specific information for a link */
314607ca46eSDavid Howells #define IFLA_PROTINFO IFLA_PROTINFO
315607ca46eSDavid Howells 	IFLA_TXQLEN,
316607ca46eSDavid Howells #define IFLA_TXQLEN IFLA_TXQLEN
317607ca46eSDavid Howells 	IFLA_MAP,
318607ca46eSDavid Howells #define IFLA_MAP IFLA_MAP
319607ca46eSDavid Howells 	IFLA_WEIGHT,
320607ca46eSDavid Howells #define IFLA_WEIGHT IFLA_WEIGHT
321607ca46eSDavid Howells 	IFLA_OPERSTATE,
322607ca46eSDavid Howells 	IFLA_LINKMODE,
323607ca46eSDavid Howells 	IFLA_LINKINFO,
324607ca46eSDavid Howells #define IFLA_LINKINFO IFLA_LINKINFO
325607ca46eSDavid Howells 	IFLA_NET_NS_PID,
326607ca46eSDavid Howells 	IFLA_IFALIAS,
327607ca46eSDavid Howells 	IFLA_NUM_VF,		/* Number of VFs if device is SR-IOV PF */
328607ca46eSDavid Howells 	IFLA_VFINFO_LIST,
329607ca46eSDavid Howells 	IFLA_STATS64,
330607ca46eSDavid Howells 	IFLA_VF_PORTS,
331607ca46eSDavid Howells 	IFLA_PORT_SELF,
332607ca46eSDavid Howells 	IFLA_AF_SPEC,
333607ca46eSDavid Howells 	IFLA_GROUP,		/* Group the device belongs to */
334607ca46eSDavid Howells 	IFLA_NET_NS_FD,
335607ca46eSDavid Howells 	IFLA_EXT_MASK,		/* Extended info mask, VFs, etc */
336607ca46eSDavid Howells 	IFLA_PROMISCUITY,	/* Promiscuity count: > 0 means acts PROMISC */
337607ca46eSDavid Howells #define IFLA_PROMISCUITY IFLA_PROMISCUITY
338607ca46eSDavid Howells 	IFLA_NUM_TX_QUEUES,
339607ca46eSDavid Howells 	IFLA_NUM_RX_QUEUES,
3409a57247fSJiri Pirko 	IFLA_CARRIER,
34166cae9edSJiri Pirko 	IFLA_PHYS_PORT_ID,
3422d3b479dSdavid decotigny 	IFLA_CARRIER_CHANGES,
34382f28412SJiri Pirko 	IFLA_PHYS_SWITCH_ID,
344d37512a2SNicolas Dichtel 	IFLA_LINK_NETNSID,
345db24a904SDavid Ahern 	IFLA_PHYS_PORT_NAME,
34688d6378bSAnuradha Karuppiah 	IFLA_PROTO_DOWN,
347c70ce028SEric Dumazet 	IFLA_GSO_MAX_SEGS,
348c70ce028SEric Dumazet 	IFLA_GSO_MAX_SIZE,
34918402843SDavid S. Miller 	IFLA_PAD,
350d1fdd913SBrenden Blanco 	IFLA_XDP,
3513d3ea5afSVlad Yasevich 	IFLA_EVENT,
3526621dd29SNicolas Dichtel 	IFLA_NEW_NETNSID,
35379e1ad14SJiri Benc 	IFLA_IF_NETNSID,
35419d8f1adSChristian Brauner 	IFLA_TARGET_NETNSID = IFLA_IF_NETNSID, /* new alias */
355b2d3bcfaSDavid Decotigny 	IFLA_CARRIER_UP_COUNT,
356b2d3bcfaSDavid Decotigny 	IFLA_CARRIER_DOWN_COUNT,
35738e01b30SNicolas Dichtel 	IFLA_NEW_IFINDEX,
3583e7a50ceSStephen Hemminger 	IFLA_MIN_MTU,
3593e7a50ceSStephen Hemminger 	IFLA_MAX_MTU,
36036fbf1e5SJiri Pirko 	IFLA_PROP_LIST,
36136fbf1e5SJiri Pirko 	IFLA_ALT_IFNAME, /* Alternative ifname */
362f74877a5SMichal Kubecek 	IFLA_PERM_ADDRESS,
363829eb208SRoopa Prabhu 	IFLA_PROTO_DOWN_REASON,
36400e77ed8SJohannes Berg 
36500e77ed8SJohannes Berg 	/* device (sysfs) name as parent, used instead
36600e77ed8SJohannes Berg 	 * of IFLA_LINK where there's no parent netdev
36700e77ed8SJohannes Berg 	 */
36800e77ed8SJohannes Berg 	IFLA_PARENT_DEV_NAME,
36900e77ed8SJohannes Berg 	IFLA_PARENT_DEV_BUS_NAME,
370eac1b93cSCoco Li 	IFLA_GRO_MAX_SIZE,
37189527be8SEric Dumazet 	IFLA_TSO_MAX_SIZE,
37289527be8SEric Dumazet 	IFLA_TSO_MAX_SEGS,
3737e6e1b57SNicolas Dichtel 	IFLA_ALLMULTI,		/* Allmulti count: > 0 means acts ALLMULTI */
37400e77ed8SJohannes Berg 
375dca56c30SJiri Pirko 	IFLA_DEVLINK_PORT,
376dca56c30SJiri Pirko 
3779eefedd5SXin Long 	IFLA_GSO_IPV4_MAX_SIZE,
3789eefedd5SXin Long 	IFLA_GRO_IPV4_MAX_SIZE,
3795f184269SJiri Pirko 	IFLA_DPLL_PIN,
380607ca46eSDavid Howells 	__IFLA_MAX
381607ca46eSDavid Howells };
382607ca46eSDavid Howells 
383607ca46eSDavid Howells 
384607ca46eSDavid Howells #define IFLA_MAX (__IFLA_MAX - 1)
385607ca46eSDavid Howells 
386829eb208SRoopa Prabhu enum {
387829eb208SRoopa Prabhu 	IFLA_PROTO_DOWN_REASON_UNSPEC,
388829eb208SRoopa Prabhu 	IFLA_PROTO_DOWN_REASON_MASK,	/* u32, mask for reason bits */
389829eb208SRoopa Prabhu 	IFLA_PROTO_DOWN_REASON_VALUE,   /* u32, reason bit value */
390829eb208SRoopa Prabhu 
391829eb208SRoopa Prabhu 	__IFLA_PROTO_DOWN_REASON_CNT,
392829eb208SRoopa Prabhu 	IFLA_PROTO_DOWN_REASON_MAX = __IFLA_PROTO_DOWN_REASON_CNT - 1
393829eb208SRoopa Prabhu };
394829eb208SRoopa Prabhu 
395607ca46eSDavid Howells /* backwards compatibility for userspace */
396607ca46eSDavid Howells #ifndef __KERNEL__
397607ca46eSDavid Howells #define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
398607ca46eSDavid Howells #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
399607ca46eSDavid Howells #endif
400607ca46eSDavid Howells 
401607ca46eSDavid Howells enum {
402607ca46eSDavid Howells 	IFLA_INET_UNSPEC,
403607ca46eSDavid Howells 	IFLA_INET_CONF,
404607ca46eSDavid Howells 	__IFLA_INET_MAX,
405607ca46eSDavid Howells };
406607ca46eSDavid Howells 
407607ca46eSDavid Howells #define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
408607ca46eSDavid Howells 
409607ca46eSDavid Howells /* ifi_flags.
410607ca46eSDavid Howells 
411607ca46eSDavid Howells    IFF_* flags.
412607ca46eSDavid Howells 
413607ca46eSDavid Howells    The only change is:
414607ca46eSDavid Howells    IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
415607ca46eSDavid Howells    more not changeable by user. They describe link media
416607ca46eSDavid Howells    characteristics and set by device driver.
417607ca46eSDavid Howells 
418607ca46eSDavid Howells    Comments:
419607ca46eSDavid Howells    - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
420607ca46eSDavid Howells    - If neither of these three flags are set;
421607ca46eSDavid Howells      the interface is NBMA.
422607ca46eSDavid Howells 
423607ca46eSDavid Howells    - IFF_MULTICAST does not mean anything special:
424607ca46eSDavid Howells    multicasts can be used on all not-NBMA links.
425607ca46eSDavid Howells    IFF_MULTICAST means that this media uses special encapsulation
426607ca46eSDavid Howells    for multicast frames. Apparently, all IFF_POINTOPOINT and
427607ca46eSDavid Howells    IFF_BROADCAST devices are able to use multicasts too.
428607ca46eSDavid Howells  */
429607ca46eSDavid Howells 
430607ca46eSDavid Howells /* IFLA_LINK.
431607ca46eSDavid Howells    For usual devices it is equal ifi_index.
432607ca46eSDavid Howells    If it is a "virtual interface" (f.e. tunnel), ifi_link
433607ca46eSDavid Howells    can point to real physical interface (f.e. for bandwidth calculations),
434607ca46eSDavid Howells    or maybe 0, what means, that real media is unknown (usual
435607ca46eSDavid Howells    for IPIP tunnels, when route to endpoint is allowed to change)
436607ca46eSDavid Howells  */
437607ca46eSDavid Howells 
438607ca46eSDavid Howells /* Subtype attributes for IFLA_PROTINFO */
439607ca46eSDavid Howells enum {
440607ca46eSDavid Howells 	IFLA_INET6_UNSPEC,
441607ca46eSDavid Howells 	IFLA_INET6_FLAGS,	/* link flags			*/
442607ca46eSDavid Howells 	IFLA_INET6_CONF,	/* sysctl parameters		*/
443607ca46eSDavid Howells 	IFLA_INET6_STATS,	/* statistics			*/
444607ca46eSDavid Howells 	IFLA_INET6_MCAST,	/* MC things. What of them?	*/
445607ca46eSDavid Howells 	IFLA_INET6_CACHEINFO,	/* time values and max reasm size */
446607ca46eSDavid Howells 	IFLA_INET6_ICMP6STATS,	/* statistics (icmpv6)		*/
447f53adae4SDaniel Borkmann 	IFLA_INET6_TOKEN,	/* device token			*/
448bc91b0f0SJiri Pirko 	IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
44949b99da2SRocco Yue 	IFLA_INET6_RA_MTU,	/* mtu carried in the RA message */
450607ca46eSDavid Howells 	__IFLA_INET6_MAX
451607ca46eSDavid Howells };
452607ca46eSDavid Howells 
453607ca46eSDavid Howells #define IFLA_INET6_MAX	(__IFLA_INET6_MAX - 1)
454607ca46eSDavid Howells 
455bc91b0f0SJiri Pirko enum in6_addr_gen_mode {
456bc91b0f0SJiri Pirko 	IN6_ADDR_GEN_MODE_EUI64,
457bc91b0f0SJiri Pirko 	IN6_ADDR_GEN_MODE_NONE,
458622c81d5SHannes Frederic Sowa 	IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
459cc9da6ccSBjørn Mork 	IN6_ADDR_GEN_MODE_RANDOM,
460bc91b0f0SJiri Pirko };
461bc91b0f0SJiri Pirko 
462e5c3ea5cSJiri Pirko /* Bridge section */
463e5c3ea5cSJiri Pirko 
464e5c3ea5cSJiri Pirko enum {
465e5c3ea5cSJiri Pirko 	IFLA_BR_UNSPEC,
466e5c3ea5cSJiri Pirko 	IFLA_BR_FORWARD_DELAY,
467e5c3ea5cSJiri Pirko 	IFLA_BR_HELLO_TIME,
468e5c3ea5cSJiri Pirko 	IFLA_BR_MAX_AGE,
469af615762SJörg Thalheim 	IFLA_BR_AGEING_TIME,
470af615762SJörg Thalheim 	IFLA_BR_STP_STATE,
471af615762SJörg Thalheim 	IFLA_BR_PRIORITY,
472a7854037SNikolay Aleksandrov 	IFLA_BR_VLAN_FILTERING,
473d2d427b3SToshiaki Makita 	IFLA_BR_VLAN_PROTOCOL,
4747910228bSNikolay Aleksandrov 	IFLA_BR_GROUP_FWD_MASK,
4755127c81fSNikolay Aleksandrov 	IFLA_BR_ROOT_ID,
4767599a220SNikolay Aleksandrov 	IFLA_BR_BRIDGE_ID,
4778762ba68SNikolay Aleksandrov 	IFLA_BR_ROOT_PORT,
478684dd248SNikolay Aleksandrov 	IFLA_BR_ROOT_PATH_COST,
479ed416309SNikolay Aleksandrov 	IFLA_BR_TOPOLOGY_CHANGE,
480ed416309SNikolay Aleksandrov 	IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
481d76bd14eSNikolay Aleksandrov 	IFLA_BR_HELLO_TIMER,
482d76bd14eSNikolay Aleksandrov 	IFLA_BR_TCN_TIMER,
483d76bd14eSNikolay Aleksandrov 	IFLA_BR_TOPOLOGY_CHANGE_TIMER,
484d76bd14eSNikolay Aleksandrov 	IFLA_BR_GC_TIMER,
485111189abSNikolay Aleksandrov 	IFLA_BR_GROUP_ADDR,
486150217c6SNikolay Aleksandrov 	IFLA_BR_FDB_FLUSH,
487a9a6bc70SNikolay Aleksandrov 	IFLA_BR_MCAST_ROUTER,
48889126327SNikolay Aleksandrov 	IFLA_BR_MCAST_SNOOPING,
489295141d9SNikolay Aleksandrov 	IFLA_BR_MCAST_QUERY_USE_IFADDR,
490ba062d7cSNikolay Aleksandrov 	IFLA_BR_MCAST_QUERIER,
491431db3c0SNikolay Aleksandrov 	IFLA_BR_MCAST_HASH_ELASTICITY,
492858079fdSNikolay Aleksandrov 	IFLA_BR_MCAST_HASH_MAX,
49379b859f5SNikolay Aleksandrov 	IFLA_BR_MCAST_LAST_MEMBER_CNT,
494b89e6babSNikolay Aleksandrov 	IFLA_BR_MCAST_STARTUP_QUERY_CNT,
4957e4df51eSNikolay Aleksandrov 	IFLA_BR_MCAST_LAST_MEMBER_INTVL,
4967e4df51eSNikolay Aleksandrov 	IFLA_BR_MCAST_MEMBERSHIP_INTVL,
4977e4df51eSNikolay Aleksandrov 	IFLA_BR_MCAST_QUERIER_INTVL,
4987e4df51eSNikolay Aleksandrov 	IFLA_BR_MCAST_QUERY_INTVL,
4997e4df51eSNikolay Aleksandrov 	IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
5007e4df51eSNikolay Aleksandrov 	IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
50193870cc0SNikolay Aleksandrov 	IFLA_BR_NF_CALL_IPTABLES,
50293870cc0SNikolay Aleksandrov 	IFLA_BR_NF_CALL_IP6TABLES,
50393870cc0SNikolay Aleksandrov 	IFLA_BR_NF_CALL_ARPTABLES,
5040f963b75SNikolay Aleksandrov 	IFLA_BR_VLAN_DEFAULT_PVID,
50512a0faa3SNicolas Dichtel 	IFLA_BR_PAD,
5066dada9b1SNikolay Aleksandrov 	IFLA_BR_VLAN_STATS_ENABLED,
5071080ab95SNikolay Aleksandrov 	IFLA_BR_MCAST_STATS_ENABLED,
5085e923585SNikolay Aleksandrov 	IFLA_BR_MCAST_IGMP_VERSION,
509aa2ae3e7SNikolay Aleksandrov 	IFLA_BR_MCAST_MLD_VERSION,
5109163a0fcSNikolay Aleksandrov 	IFLA_BR_VLAN_STATS_PER_PORT,
511a428afe8SNikolay Aleksandrov 	IFLA_BR_MULTI_BOOLOPT,
512c7fa1d9bSNikolay Aleksandrov 	IFLA_BR_MCAST_QUERIER_STATE,
513ddd1ad68SJohannes Nixdorf 	IFLA_BR_FDB_N_LEARNED,
514ddd1ad68SJohannes Nixdorf 	IFLA_BR_FDB_MAX_LEARNED,
515e5c3ea5cSJiri Pirko 	__IFLA_BR_MAX,
516e5c3ea5cSJiri Pirko };
517e5c3ea5cSJiri Pirko 
518e5c3ea5cSJiri Pirko #define IFLA_BR_MAX	(__IFLA_BR_MAX - 1)
519e5c3ea5cSJiri Pirko 
5205127c81fSNikolay Aleksandrov struct ifla_bridge_id {
5215127c81fSNikolay Aleksandrov 	__u8	prio[2];
5225127c81fSNikolay Aleksandrov 	__u8	addr[6]; /* ETH_ALEN */
5235127c81fSNikolay Aleksandrov };
5245127c81fSNikolay Aleksandrov 
52525c71c75Sstephen hemminger enum {
52625c71c75Sstephen hemminger 	BRIDGE_MODE_UNSPEC,
52725c71c75Sstephen hemminger 	BRIDGE_MODE_HAIRPIN,
52825c71c75Sstephen hemminger };
52925c71c75Sstephen hemminger 
53025c71c75Sstephen hemminger enum {
53125c71c75Sstephen hemminger 	IFLA_BRPORT_UNSPEC,
53225c71c75Sstephen hemminger 	IFLA_BRPORT_STATE,	/* Spanning tree state     */
53325c71c75Sstephen hemminger 	IFLA_BRPORT_PRIORITY,	/* "             priority  */
53425c71c75Sstephen hemminger 	IFLA_BRPORT_COST,	/* "             cost      */
53525c71c75Sstephen hemminger 	IFLA_BRPORT_MODE,	/* mode (hairpin)          */
536a2e01a65Sstephen hemminger 	IFLA_BRPORT_GUARD,	/* bpdu guard              */
5371007dd1aSstephen hemminger 	IFLA_BRPORT_PROTECT,	/* root port protection    */
538c2d3babfSDavid S. Miller 	IFLA_BRPORT_FAST_LEAVE,	/* multicast fast leave    */
5399ba18891SVlad Yasevich 	IFLA_BRPORT_LEARNING,	/* mac learning */
540867a5943SVlad Yasevich 	IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
54195850116SKyeyoon Park 	IFLA_BRPORT_PROXYARP,	/* proxy ARP */
542efacacdaSScott Feldman 	IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
543842a9ae0SJouni Malinen 	IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
5444ebc7660SNikolay Aleksandrov 	IFLA_BRPORT_ROOT_ID,	/* designated root */
54580df9a26SNikolay Aleksandrov 	IFLA_BRPORT_BRIDGE_ID,	/* designated bridge */
54696f94e7fSNikolay Aleksandrov 	IFLA_BRPORT_DESIGNATED_PORT,
54796f94e7fSNikolay Aleksandrov 	IFLA_BRPORT_DESIGNATED_COST,
54842d452c4SNikolay Aleksandrov 	IFLA_BRPORT_ID,
54942d452c4SNikolay Aleksandrov 	IFLA_BRPORT_NO,
550e08e838aSNikolay Aleksandrov 	IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,
551e08e838aSNikolay Aleksandrov 	IFLA_BRPORT_CONFIG_PENDING,
55261c0a9a8SNikolay Aleksandrov 	IFLA_BRPORT_MESSAGE_AGE_TIMER,
55361c0a9a8SNikolay Aleksandrov 	IFLA_BRPORT_FORWARD_DELAY_TIMER,
55461c0a9a8SNikolay Aleksandrov 	IFLA_BRPORT_HOLD_TIMER,
5559b0c6e4dSNikolay Aleksandrov 	IFLA_BRPORT_FLUSH,
5565d6ae479SNikolay Aleksandrov 	IFLA_BRPORT_MULTICAST_ROUTER,
55712a0faa3SNicolas Dichtel 	IFLA_BRPORT_PAD,
558b6cb5ac8SNikolay Aleksandrov 	IFLA_BRPORT_MCAST_FLOOD,
5596db6f0eaSFelix Fietkau 	IFLA_BRPORT_MCAST_TO_UCAST,
560b3c7ef0aSRoopa Prabhu 	IFLA_BRPORT_VLAN_TUNNEL,
56199f906e9SMike Manning 	IFLA_BRPORT_BCAST_FLOOD,
5625af48b59SNikolay Aleksandrov 	IFLA_BRPORT_GROUP_FWD_MASK,
563821f1b21SRoopa Prabhu 	IFLA_BRPORT_NEIGH_SUPPRESS,
5647d850abdSNikolay Aleksandrov 	IFLA_BRPORT_ISOLATED,
5652756f68cSNikolay Aleksandrov 	IFLA_BRPORT_BACKUP_PORT,
5663e54442cSHoratiu Vultur 	IFLA_BRPORT_MRP_RING_OPEN,
567ffb3adbaSHoratiu Vultur 	IFLA_BRPORT_MRP_IN_OPEN,
5682dba407fSNikolay Aleksandrov 	IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
5692dba407fSNikolay Aleksandrov 	IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
570a21d9a67SHans Schultz 	IFLA_BRPORT_LOCKED,
571a35ec8e3SHans J. Schultz 	IFLA_BRPORT_MAB,
572a1aee20dSPetr Machata 	IFLA_BRPORT_MCAST_N_GROUPS,
573a1aee20dSPetr Machata 	IFLA_BRPORT_MCAST_MAX_GROUPS,
574160656d7SIdo Schimmel 	IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
57529cfb2aaSIdo Schimmel 	IFLA_BRPORT_BACKUP_NHID,
57625c71c75Sstephen hemminger 	__IFLA_BRPORT_MAX
57725c71c75Sstephen hemminger };
57825c71c75Sstephen hemminger #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
57925c71c75Sstephen hemminger 
580607ca46eSDavid Howells struct ifla_cacheinfo {
581607ca46eSDavid Howells 	__u32	max_reasm_len;
582607ca46eSDavid Howells 	__u32	tstamp;		/* ipv6InterfaceTable updated timestamp */
583607ca46eSDavid Howells 	__u32	reachable_time;
584607ca46eSDavid Howells 	__u32	retrans_time;
585607ca46eSDavid Howells };
586607ca46eSDavid Howells 
587607ca46eSDavid Howells enum {
588607ca46eSDavid Howells 	IFLA_INFO_UNSPEC,
589607ca46eSDavid Howells 	IFLA_INFO_KIND,
590607ca46eSDavid Howells 	IFLA_INFO_DATA,
591607ca46eSDavid Howells 	IFLA_INFO_XSTATS,
592ba7d49b1SJiri Pirko 	IFLA_INFO_SLAVE_KIND,
593ba7d49b1SJiri Pirko 	IFLA_INFO_SLAVE_DATA,
594607ca46eSDavid Howells 	__IFLA_INFO_MAX,
595607ca46eSDavid Howells };
596607ca46eSDavid Howells 
597607ca46eSDavid Howells #define IFLA_INFO_MAX	(__IFLA_INFO_MAX - 1)
598607ca46eSDavid Howells 
599607ca46eSDavid Howells /* VLAN section */
600607ca46eSDavid Howells 
601607ca46eSDavid Howells enum {
602607ca46eSDavid Howells 	IFLA_VLAN_UNSPEC,
603607ca46eSDavid Howells 	IFLA_VLAN_ID,
604607ca46eSDavid Howells 	IFLA_VLAN_FLAGS,
605607ca46eSDavid Howells 	IFLA_VLAN_EGRESS_QOS,
606607ca46eSDavid Howells 	IFLA_VLAN_INGRESS_QOS,
6078ad227ffSPatrick McHardy 	IFLA_VLAN_PROTOCOL,
608607ca46eSDavid Howells 	__IFLA_VLAN_MAX,
609607ca46eSDavid Howells };
610607ca46eSDavid Howells 
611607ca46eSDavid Howells #define IFLA_VLAN_MAX	(__IFLA_VLAN_MAX - 1)
612607ca46eSDavid Howells 
613607ca46eSDavid Howells struct ifla_vlan_flags {
614607ca46eSDavid Howells 	__u32	flags;
615607ca46eSDavid Howells 	__u32	mask;
616607ca46eSDavid Howells };
617607ca46eSDavid Howells 
618607ca46eSDavid Howells enum {
619607ca46eSDavid Howells 	IFLA_VLAN_QOS_UNSPEC,
620607ca46eSDavid Howells 	IFLA_VLAN_QOS_MAPPING,
621607ca46eSDavid Howells 	__IFLA_VLAN_QOS_MAX
622607ca46eSDavid Howells };
623607ca46eSDavid Howells 
624607ca46eSDavid Howells #define IFLA_VLAN_QOS_MAX	(__IFLA_VLAN_QOS_MAX - 1)
625607ca46eSDavid Howells 
626607ca46eSDavid Howells struct ifla_vlan_qos_mapping {
627607ca46eSDavid Howells 	__u32 from;
628607ca46eSDavid Howells 	__u32 to;
629607ca46eSDavid Howells };
630607ca46eSDavid Howells 
631607ca46eSDavid Howells /* MACVLAN section */
632607ca46eSDavid Howells enum {
633607ca46eSDavid Howells 	IFLA_MACVLAN_UNSPEC,
634607ca46eSDavid Howells 	IFLA_MACVLAN_MODE,
635607ca46eSDavid Howells 	IFLA_MACVLAN_FLAGS,
63679cf79abSMichael Braun 	IFLA_MACVLAN_MACADDR_MODE,
63779cf79abSMichael Braun 	IFLA_MACVLAN_MACADDR,
63879cf79abSMichael Braun 	IFLA_MACVLAN_MACADDR_DATA,
63979cf79abSMichael Braun 	IFLA_MACVLAN_MACADDR_COUNT,
640d4bff72cSThomas Karlsson 	IFLA_MACVLAN_BC_QUEUE_LEN,
641d4bff72cSThomas Karlsson 	IFLA_MACVLAN_BC_QUEUE_LEN_USED,
642954d1fa1SHerbert Xu 	IFLA_MACVLAN_BC_CUTOFF,
643607ca46eSDavid Howells 	__IFLA_MACVLAN_MAX,
644607ca46eSDavid Howells };
645607ca46eSDavid Howells 
646607ca46eSDavid Howells #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
647607ca46eSDavid Howells 
648607ca46eSDavid Howells enum macvlan_mode {
649607ca46eSDavid Howells 	MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
650607ca46eSDavid Howells 	MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
651607ca46eSDavid Howells 	MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
652607ca46eSDavid Howells 	MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
65379cf79abSMichael Braun 	MACVLAN_MODE_SOURCE  = 16,/* use source MAC address list to assign */
65479cf79abSMichael Braun };
65579cf79abSMichael Braun 
65679cf79abSMichael Braun enum macvlan_macaddr_mode {
65779cf79abSMichael Braun 	MACVLAN_MACADDR_ADD,
65879cf79abSMichael Braun 	MACVLAN_MACADDR_DEL,
65979cf79abSMichael Braun 	MACVLAN_MACADDR_FLUSH,
66079cf79abSMichael Braun 	MACVLAN_MACADDR_SET,
661607ca46eSDavid Howells };
662607ca46eSDavid Howells 
663607ca46eSDavid Howells #define MACVLAN_FLAG_NOPROMISC	1
664427f0c8cSJethro Beekman #define MACVLAN_FLAG_NODST	2 /* skip dst macvlan if matching src macvlan */
665607ca46eSDavid Howells 
6664e3c8992SDavid Ahern /* VRF section */
6674e3c8992SDavid Ahern enum {
6684e3c8992SDavid Ahern 	IFLA_VRF_UNSPEC,
6694e3c8992SDavid Ahern 	IFLA_VRF_TABLE,
6704e3c8992SDavid Ahern 	__IFLA_VRF_MAX
6714e3c8992SDavid Ahern };
6724e3c8992SDavid Ahern 
6734e3c8992SDavid Ahern #define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
6744e3c8992SDavid Ahern 
67567eb0331SDavid Ahern enum {
67667eb0331SDavid Ahern 	IFLA_VRF_PORT_UNSPEC,
67767eb0331SDavid Ahern 	IFLA_VRF_PORT_TABLE,
67867eb0331SDavid Ahern 	__IFLA_VRF_PORT_MAX
67967eb0331SDavid Ahern };
68067eb0331SDavid Ahern 
68167eb0331SDavid Ahern #define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
68267eb0331SDavid Ahern 
683dece8d2bSSabrina Dubroca /* MACSEC section */
684dece8d2bSSabrina Dubroca enum {
685dece8d2bSSabrina Dubroca 	IFLA_MACSEC_UNSPEC,
686dece8d2bSSabrina Dubroca 	IFLA_MACSEC_SCI,
687dece8d2bSSabrina Dubroca 	IFLA_MACSEC_PORT,
688dece8d2bSSabrina Dubroca 	IFLA_MACSEC_ICV_LEN,
689dece8d2bSSabrina Dubroca 	IFLA_MACSEC_CIPHER_SUITE,
690dece8d2bSSabrina Dubroca 	IFLA_MACSEC_WINDOW,
691dece8d2bSSabrina Dubroca 	IFLA_MACSEC_ENCODING_SA,
692dece8d2bSSabrina Dubroca 	IFLA_MACSEC_ENCRYPT,
693dece8d2bSSabrina Dubroca 	IFLA_MACSEC_PROTECT,
694dece8d2bSSabrina Dubroca 	IFLA_MACSEC_INC_SCI,
695dece8d2bSSabrina Dubroca 	IFLA_MACSEC_ES,
696dece8d2bSSabrina Dubroca 	IFLA_MACSEC_SCB,
697dece8d2bSSabrina Dubroca 	IFLA_MACSEC_REPLAY_PROTECT,
698dece8d2bSSabrina Dubroca 	IFLA_MACSEC_VALIDATION,
699f60d94c0SNicolas Dichtel 	IFLA_MACSEC_PAD,
700791bb3fcSMark Starovoytov 	IFLA_MACSEC_OFFLOAD,
701dece8d2bSSabrina Dubroca 	__IFLA_MACSEC_MAX,
702dece8d2bSSabrina Dubroca };
703dece8d2bSSabrina Dubroca 
704dece8d2bSSabrina Dubroca #define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
705dece8d2bSSabrina Dubroca 
706f203b76dSSteffen Klassert /* XFRM section */
707f203b76dSSteffen Klassert enum {
708f203b76dSSteffen Klassert 	IFLA_XFRM_UNSPEC,
709f203b76dSSteffen Klassert 	IFLA_XFRM_LINK,
710f203b76dSSteffen Klassert 	IFLA_XFRM_IF_ID,
711abc340b3SEyal Birger 	IFLA_XFRM_COLLECT_METADATA,
712f203b76dSSteffen Klassert 	__IFLA_XFRM_MAX
713f203b76dSSteffen Klassert };
714f203b76dSSteffen Klassert 
715f203b76dSSteffen Klassert #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
716f203b76dSSteffen Klassert 
717dece8d2bSSabrina Dubroca enum macsec_validation_type {
718dece8d2bSSabrina Dubroca 	MACSEC_VALIDATE_DISABLED = 0,
719dece8d2bSSabrina Dubroca 	MACSEC_VALIDATE_CHECK = 1,
720dece8d2bSSabrina Dubroca 	MACSEC_VALIDATE_STRICT = 2,
721dece8d2bSSabrina Dubroca 	__MACSEC_VALIDATE_END,
722dece8d2bSSabrina Dubroca 	MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
723dece8d2bSSabrina Dubroca };
724dece8d2bSSabrina Dubroca 
72576564261SAntoine Tenart enum macsec_offload {
72676564261SAntoine Tenart 	MACSEC_OFFLOAD_OFF = 0,
72776564261SAntoine Tenart 	MACSEC_OFFLOAD_PHY = 1,
72821114b7fSAntoine Tenart 	MACSEC_OFFLOAD_MAC = 2,
72976564261SAntoine Tenart 	__MACSEC_OFFLOAD_END,
73076564261SAntoine Tenart 	MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1,
73176564261SAntoine Tenart };
73276564261SAntoine Tenart 
7332ad7bf36SMahesh Bandewar /* IPVLAN section */
7342ad7bf36SMahesh Bandewar enum {
7352ad7bf36SMahesh Bandewar 	IFLA_IPVLAN_UNSPEC,
7362ad7bf36SMahesh Bandewar 	IFLA_IPVLAN_MODE,
737a190d04dSMahesh Bandewar 	IFLA_IPVLAN_FLAGS,
7382ad7bf36SMahesh Bandewar 	__IFLA_IPVLAN_MAX
7392ad7bf36SMahesh Bandewar };
7402ad7bf36SMahesh Bandewar 
7412ad7bf36SMahesh Bandewar #define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
7422ad7bf36SMahesh Bandewar 
7432ad7bf36SMahesh Bandewar enum ipvlan_mode {
7442ad7bf36SMahesh Bandewar 	IPVLAN_MODE_L2 = 0,
7452ad7bf36SMahesh Bandewar 	IPVLAN_MODE_L3,
7464fbae7d8SMahesh Bandewar 	IPVLAN_MODE_L3S,
7472ad7bf36SMahesh Bandewar 	IPVLAN_MODE_MAX
7482ad7bf36SMahesh Bandewar };
7492ad7bf36SMahesh Bandewar 
750a190d04dSMahesh Bandewar #define IPVLAN_F_PRIVATE	0x01
751fe89aa6bSMahesh Bandewar #define IPVLAN_F_VEPA		0x02
752a190d04dSMahesh Bandewar 
7537b8135f4SRoopa Prabhu /* Tunnel RTM header */
7547b8135f4SRoopa Prabhu struct tunnel_msg {
7557b8135f4SRoopa Prabhu 	__u8 family;
756445b2f36SNikolay Aleksandrov 	__u8 flags;
7577b8135f4SRoopa Prabhu 	__u16 reserved2;
7587b8135f4SRoopa Prabhu 	__u32 ifindex;
7597b8135f4SRoopa Prabhu };
7607b8135f4SRoopa Prabhu 
761607ca46eSDavid Howells /* VXLAN section */
762445b2f36SNikolay Aleksandrov 
763445b2f36SNikolay Aleksandrov /* include statistics in the dump */
764445b2f36SNikolay Aleksandrov #define TUNNEL_MSG_FLAG_STATS	0x01
765445b2f36SNikolay Aleksandrov 
766445b2f36SNikolay Aleksandrov #define TUNNEL_MSG_VALID_USER_FLAGS TUNNEL_MSG_FLAG_STATS
767445b2f36SNikolay Aleksandrov 
768445b2f36SNikolay Aleksandrov /* Embedded inside VXLAN_VNIFILTER_ENTRY_STATS */
769445b2f36SNikolay Aleksandrov enum {
770445b2f36SNikolay Aleksandrov 	VNIFILTER_ENTRY_STATS_UNSPEC,
771445b2f36SNikolay Aleksandrov 	VNIFILTER_ENTRY_STATS_RX_BYTES,
772445b2f36SNikolay Aleksandrov 	VNIFILTER_ENTRY_STATS_RX_PKTS,
773445b2f36SNikolay Aleksandrov 	VNIFILTER_ENTRY_STATS_RX_DROPS,
774445b2f36SNikolay Aleksandrov 	VNIFILTER_ENTRY_STATS_RX_ERRORS,
775445b2f36SNikolay Aleksandrov 	VNIFILTER_ENTRY_STATS_TX_BYTES,
776445b2f36SNikolay Aleksandrov 	VNIFILTER_ENTRY_STATS_TX_PKTS,
777445b2f36SNikolay Aleksandrov 	VNIFILTER_ENTRY_STATS_TX_DROPS,
778445b2f36SNikolay Aleksandrov 	VNIFILTER_ENTRY_STATS_TX_ERRORS,
779445b2f36SNikolay Aleksandrov 	VNIFILTER_ENTRY_STATS_PAD,
780445b2f36SNikolay Aleksandrov 	__VNIFILTER_ENTRY_STATS_MAX
781445b2f36SNikolay Aleksandrov };
782445b2f36SNikolay Aleksandrov #define VNIFILTER_ENTRY_STATS_MAX (__VNIFILTER_ENTRY_STATS_MAX - 1)
783445b2f36SNikolay Aleksandrov 
784607ca46eSDavid Howells enum {
7857b8135f4SRoopa Prabhu 	VXLAN_VNIFILTER_ENTRY_UNSPEC,
7867b8135f4SRoopa Prabhu 	VXLAN_VNIFILTER_ENTRY_START,
7877b8135f4SRoopa Prabhu 	VXLAN_VNIFILTER_ENTRY_END,
7887b8135f4SRoopa Prabhu 	VXLAN_VNIFILTER_ENTRY_GROUP,
7897b8135f4SRoopa Prabhu 	VXLAN_VNIFILTER_ENTRY_GROUP6,
790445b2f36SNikolay Aleksandrov 	VXLAN_VNIFILTER_ENTRY_STATS,
7917b8135f4SRoopa Prabhu 	__VXLAN_VNIFILTER_ENTRY_MAX
7927b8135f4SRoopa Prabhu };
7937b8135f4SRoopa Prabhu #define VXLAN_VNIFILTER_ENTRY_MAX	(__VXLAN_VNIFILTER_ENTRY_MAX - 1)
7947b8135f4SRoopa Prabhu 
7957b8135f4SRoopa Prabhu enum {
7967b8135f4SRoopa Prabhu 	VXLAN_VNIFILTER_UNSPEC,
7977b8135f4SRoopa Prabhu 	VXLAN_VNIFILTER_ENTRY,
7987b8135f4SRoopa Prabhu 	__VXLAN_VNIFILTER_MAX
7997b8135f4SRoopa Prabhu };
8007b8135f4SRoopa Prabhu #define VXLAN_VNIFILTER_MAX	(__VXLAN_VNIFILTER_MAX - 1)
8017b8135f4SRoopa Prabhu 
8027b8135f4SRoopa Prabhu enum {
803607ca46eSDavid Howells 	IFLA_VXLAN_UNSPEC,
804607ca46eSDavid Howells 	IFLA_VXLAN_ID,
8055d174dd8Sstephen hemminger 	IFLA_VXLAN_GROUP,	/* group or remote address */
806607ca46eSDavid Howells 	IFLA_VXLAN_LINK,
807607ca46eSDavid Howells 	IFLA_VXLAN_LOCAL,
808607ca46eSDavid Howells 	IFLA_VXLAN_TTL,
809607ca46eSDavid Howells 	IFLA_VXLAN_TOS,
810607ca46eSDavid Howells 	IFLA_VXLAN_LEARNING,
811607ca46eSDavid Howells 	IFLA_VXLAN_AGEING,
812607ca46eSDavid Howells 	IFLA_VXLAN_LIMIT,
813823aa873Sstephen hemminger 	IFLA_VXLAN_PORT_RANGE,	/* source port */
814e4f67addSDavid Stevens 	IFLA_VXLAN_PROXY,
815e4f67addSDavid Stevens 	IFLA_VXLAN_RSC,
816e4f67addSDavid Stevens 	IFLA_VXLAN_L2MISS,
817e4f67addSDavid Stevens 	IFLA_VXLAN_L3MISS,
818823aa873Sstephen hemminger 	IFLA_VXLAN_PORT,	/* destination port */
819e4c7ed41SCong Wang 	IFLA_VXLAN_GROUP6,
820e4c7ed41SCong Wang 	IFLA_VXLAN_LOCAL6,
821359a0ea9STom Herbert 	IFLA_VXLAN_UDP_CSUM,
822359a0ea9STom Herbert 	IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
823359a0ea9STom Herbert 	IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
824dfd8645eSTom Herbert 	IFLA_VXLAN_REMCSUM_TX,
825dfd8645eSTom Herbert 	IFLA_VXLAN_REMCSUM_RX,
8263511494cSThomas Graf 	IFLA_VXLAN_GBP,
8270ace2ca8STom Herbert 	IFLA_VXLAN_REMCSUM_NOPARTIAL,
828f8a9b1bcSAlexei Starovoitov 	IFLA_VXLAN_COLLECT_METADATA,
829e7f70af1SDaniel Borkmann 	IFLA_VXLAN_LABEL,
830e1e5314dSJiri Benc 	IFLA_VXLAN_GPE,
83172f6d71eSHangbin Liu 	IFLA_VXLAN_TTL_INHERIT,
832b4d30697SStefano Brivio 	IFLA_VXLAN_DF,
8337b8135f4SRoopa Prabhu 	IFLA_VXLAN_VNIFILTER, /* only applicable with COLLECT_METADATA mode */
83469474a8aSVladimir Nikishkin 	IFLA_VXLAN_LOCALBYPASS,
835607ca46eSDavid Howells 	__IFLA_VXLAN_MAX
836607ca46eSDavid Howells };
837607ca46eSDavid Howells #define IFLA_VXLAN_MAX	(__IFLA_VXLAN_MAX - 1)
838607ca46eSDavid Howells 
839607ca46eSDavid Howells struct ifla_vxlan_port_range {
840607ca46eSDavid Howells 	__be16	low;
841607ca46eSDavid Howells 	__be16	high;
842607ca46eSDavid Howells };
843607ca46eSDavid Howells 
844b4d30697SStefano Brivio enum ifla_vxlan_df {
845b4d30697SStefano Brivio 	VXLAN_DF_UNSET = 0,
846b4d30697SStefano Brivio 	VXLAN_DF_SET,
847b4d30697SStefano Brivio 	VXLAN_DF_INHERIT,
848b4d30697SStefano Brivio 	__VXLAN_DF_END,
849b4d30697SStefano Brivio 	VXLAN_DF_MAX = __VXLAN_DF_END - 1,
850b4d30697SStefano Brivio };
851b4d30697SStefano Brivio 
8522d07dc79SJohn W. Linville /* GENEVE section */
8532d07dc79SJohn W. Linville enum {
8542d07dc79SJohn W. Linville 	IFLA_GENEVE_UNSPEC,
8552d07dc79SJohn W. Linville 	IFLA_GENEVE_ID,
8562d07dc79SJohn W. Linville 	IFLA_GENEVE_REMOTE,
8578760ce58SJohn W. Linville 	IFLA_GENEVE_TTL,
858d8951125SJohn W. Linville 	IFLA_GENEVE_TOS,
859cd7918b3SPravin B Shelar 	IFLA_GENEVE_PORT,	/* destination port */
860e305ac6cSPravin B Shelar 	IFLA_GENEVE_COLLECT_METADATA,
8618ed66f0eSJohn W. Linville 	IFLA_GENEVE_REMOTE6,
862abe492b4STom Herbert 	IFLA_GENEVE_UDP_CSUM,
863abe492b4STom Herbert 	IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
864abe492b4STom Herbert 	IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
8658eb3b995SDaniel Borkmann 	IFLA_GENEVE_LABEL,
86652d0d404SHangbin Liu 	IFLA_GENEVE_TTL_INHERIT,
867a025fb5fSStefano Brivio 	IFLA_GENEVE_DF,
868435fe1c0SEyal Birger 	IFLA_GENEVE_INNER_PROTO_INHERIT,
8692d07dc79SJohn W. Linville 	__IFLA_GENEVE_MAX
8702d07dc79SJohn W. Linville };
8712d07dc79SJohn W. Linville #define IFLA_GENEVE_MAX	(__IFLA_GENEVE_MAX - 1)
8722d07dc79SJohn W. Linville 
873a025fb5fSStefano Brivio enum ifla_geneve_df {
874a025fb5fSStefano Brivio 	GENEVE_DF_UNSET = 0,
875a025fb5fSStefano Brivio 	GENEVE_DF_SET,
876a025fb5fSStefano Brivio 	GENEVE_DF_INHERIT,
877a025fb5fSStefano Brivio 	__GENEVE_DF_END,
878a025fb5fSStefano Brivio 	GENEVE_DF_MAX = __GENEVE_DF_END - 1,
879a025fb5fSStefano Brivio };
880a025fb5fSStefano Brivio 
881571912c6SMartin Varghese /* Bareudp section  */
882571912c6SMartin Varghese enum {
883571912c6SMartin Varghese 	IFLA_BAREUDP_UNSPEC,
884571912c6SMartin Varghese 	IFLA_BAREUDP_PORT,
885571912c6SMartin Varghese 	IFLA_BAREUDP_ETHERTYPE,
886571912c6SMartin Varghese 	IFLA_BAREUDP_SRCPORT_MIN,
8874b5f6723SMartin Varghese 	IFLA_BAREUDP_MULTIPROTO_MODE,
888571912c6SMartin Varghese 	__IFLA_BAREUDP_MAX
889571912c6SMartin Varghese };
890571912c6SMartin Varghese 
891571912c6SMartin Varghese #define IFLA_BAREUDP_MAX (__IFLA_BAREUDP_MAX - 1)
892571912c6SMartin Varghese 
89396d934c7SGuillaume Nault /* PPP section */
89496d934c7SGuillaume Nault enum {
89596d934c7SGuillaume Nault 	IFLA_PPP_UNSPEC,
89696d934c7SGuillaume Nault 	IFLA_PPP_DEV_FD,
89796d934c7SGuillaume Nault 	__IFLA_PPP_MAX
89896d934c7SGuillaume Nault };
89996d934c7SGuillaume Nault #define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
90096d934c7SGuillaume Nault 
901459aa660SPablo Neira /* GTP section */
90291ed81f9SJonas Bonn 
90391ed81f9SJonas Bonn enum ifla_gtp_role {
90491ed81f9SJonas Bonn 	GTP_ROLE_GGSN = 0,
90591ed81f9SJonas Bonn 	GTP_ROLE_SGSN,
90691ed81f9SJonas Bonn };
90791ed81f9SJonas Bonn 
908459aa660SPablo Neira enum {
909459aa660SPablo Neira 	IFLA_GTP_UNSPEC,
910459aa660SPablo Neira 	IFLA_GTP_FD0,
911459aa660SPablo Neira 	IFLA_GTP_FD1,
912459aa660SPablo Neira 	IFLA_GTP_PDP_HASHSIZE,
91391ed81f9SJonas Bonn 	IFLA_GTP_ROLE,
914b20dc3c6SWojciech Drewek 	IFLA_GTP_CREATE_SOCKETS,
9159af41cc3SWojciech Drewek 	IFLA_GTP_RESTART_COUNT,
916459aa660SPablo Neira 	__IFLA_GTP_MAX,
917459aa660SPablo Neira };
918459aa660SPablo Neira #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
919459aa660SPablo Neira 
92090af2311SJiri Pirko /* Bonding section */
92190af2311SJiri Pirko 
92290af2311SJiri Pirko enum {
92390af2311SJiri Pirko 	IFLA_BOND_UNSPEC,
92490af2311SJiri Pirko 	IFLA_BOND_MODE,
925ec76aa49SJiri Pirko 	IFLA_BOND_ACTIVE_SLAVE,
926eecdaa6eSsfeldma@cumulusnetworks.com 	IFLA_BOND_MIIMON,
92725852e29Ssfeldma@cumulusnetworks.com 	IFLA_BOND_UPDELAY,
928c7461f9bSsfeldma@cumulusnetworks.com 	IFLA_BOND_DOWNDELAY,
9299f53e14eSsfeldma@cumulusnetworks.com 	IFLA_BOND_USE_CARRIER,
93006151dbcSsfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_INTERVAL,
9317f28fa10Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_IP_TARGET,
93229c49482Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_VALIDATE,
933d5c84254Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_ALL_TARGETS,
9340a98a0d1Ssfeldma@cumulusnetworks.com 	IFLA_BOND_PRIMARY,
9358a41ae44Ssfeldma@cumulusnetworks.com 	IFLA_BOND_PRIMARY_RESELECT,
93689901972Ssfeldma@cumulusnetworks.com 	IFLA_BOND_FAIL_OVER_MAC,
937f70161c6Ssfeldma@cumulusnetworks.com 	IFLA_BOND_XMIT_HASH_POLICY,
938d8838de7Ssfeldma@cumulusnetworks.com 	IFLA_BOND_RESEND_IGMP,
9392c9839c1Ssfeldma@cumulusnetworks.com 	IFLA_BOND_NUM_PEER_NOTIF,
9401cc0b1e3Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ALL_SLAVES_ACTIVE,
9417d101008Ssfeldma@cumulusnetworks.com 	IFLA_BOND_MIN_LINKS,
9428d836d09Ssfeldma@cumulusnetworks.com 	IFLA_BOND_LP_INTERVAL,
943c13ab3ffSsfeldma@cumulusnetworks.com 	IFLA_BOND_PACKETS_PER_SLAVE,
944998e40bbSsfeldma@cumulusnetworks.com 	IFLA_BOND_AD_LACP_RATE,
945ec029facSsfeldma@cumulusnetworks.com 	IFLA_BOND_AD_SELECT,
9464ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO,
947171a42c3SAndy Gospodarek 	IFLA_BOND_AD_ACTOR_SYS_PRIO,
948171a42c3SAndy Gospodarek 	IFLA_BOND_AD_USER_PORT_KEY,
949171a42c3SAndy Gospodarek 	IFLA_BOND_AD_ACTOR_SYSTEM,
9500f7bffd9SNikolay Aleksandrov 	IFLA_BOND_TLB_DYNAMIC_LB,
95107a4ddecSVincent Bernat 	IFLA_BOND_PEER_NOTIF_DELAY,
9523a755cd8SHangbin Liu 	IFLA_BOND_AD_LACP_ACTIVE,
9535944b5abSHangbin Liu 	IFLA_BOND_MISSED_MAX,
954129e3c1bSHangbin Liu 	IFLA_BOND_NS_IP6_TARGET,
95590af2311SJiri Pirko 	__IFLA_BOND_MAX,
95690af2311SJiri Pirko };
95790af2311SJiri Pirko 
95890af2311SJiri Pirko #define IFLA_BOND_MAX	(__IFLA_BOND_MAX - 1)
95990af2311SJiri Pirko 
9604ee7ac75Ssfeldma@cumulusnetworks.com enum {
961237266f7SJiri Pirko 	IFLA_BOND_AD_INFO_UNSPEC,
9624ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_AGGREGATOR,
9634ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_NUM_PORTS,
9644ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_ACTOR_KEY,
9654ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_PARTNER_KEY,
9664ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_PARTNER_MAC,
9674ee7ac75Ssfeldma@cumulusnetworks.com 	__IFLA_BOND_AD_INFO_MAX,
9684ee7ac75Ssfeldma@cumulusnetworks.com };
9694ee7ac75Ssfeldma@cumulusnetworks.com 
9704ee7ac75Ssfeldma@cumulusnetworks.com #define IFLA_BOND_AD_INFO_MAX	(__IFLA_BOND_AD_INFO_MAX - 1)
9714ee7ac75Ssfeldma@cumulusnetworks.com 
9721d3ee88aSsfeldma@cumulusnetworks.com enum {
973df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_UNSPEC,
974df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_STATE,
975df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_MII_STATUS,
976df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
977df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_PERM_HWADDR,
978df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_QUEUE_ID,
979df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
980254cb6dbSNikolay Aleksandrov 	IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
98146ea297eSNikolay Aleksandrov 	IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
9820a2ff7ccSHangbin Liu 	IFLA_BOND_SLAVE_PRIO,
983df7dbcbbSJiri Pirko 	__IFLA_BOND_SLAVE_MAX,
9841d3ee88aSsfeldma@cumulusnetworks.com };
9851d3ee88aSsfeldma@cumulusnetworks.com 
986df7dbcbbSJiri Pirko #define IFLA_BOND_SLAVE_MAX	(__IFLA_BOND_SLAVE_MAX - 1)
9871d3ee88aSsfeldma@cumulusnetworks.com 
988607ca46eSDavid Howells /* SR-IOV virtual function management section */
989607ca46eSDavid Howells 
990607ca46eSDavid Howells enum {
991607ca46eSDavid Howells 	IFLA_VF_INFO_UNSPEC,
992607ca46eSDavid Howells 	IFLA_VF_INFO,
993607ca46eSDavid Howells 	__IFLA_VF_INFO_MAX,
994607ca46eSDavid Howells };
995607ca46eSDavid Howells 
996607ca46eSDavid Howells #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
997607ca46eSDavid Howells 
998607ca46eSDavid Howells enum {
999607ca46eSDavid Howells 	IFLA_VF_UNSPEC,
1000607ca46eSDavid Howells 	IFLA_VF_MAC,		/* Hardware queue specific attributes */
100179aab093SMoshe Shemesh 	IFLA_VF_VLAN,		/* VLAN ID and QoS */
1002ed616689SSucheta Chakraborty 	IFLA_VF_TX_RATE,	/* Max TX Bandwidth Allocation */
1003607ca46eSDavid Howells 	IFLA_VF_SPOOFCHK,	/* Spoof Checking on/off switch */
10041d8faf48SRony Efraim 	IFLA_VF_LINK_STATE,	/* link state enable/disable/auto switch */
1005ed616689SSucheta Chakraborty 	IFLA_VF_RATE,		/* Min and Max TX Bandwidth Allocation */
100601a3d796SVlad Zolotarov 	IFLA_VF_RSS_QUERY_EN,	/* RSS Redirection Table and Hash Key query
100701a3d796SVlad Zolotarov 				 * on/off switch
100801a3d796SVlad Zolotarov 				 */
10093b766cd8SEran Ben Elisha 	IFLA_VF_STATS,		/* network device statistics */
1010dd461d6aSHiroshi Shimamoto 	IFLA_VF_TRUST,		/* Trust VF */
1011cc8e27ccSEli Cohen 	IFLA_VF_IB_NODE_GUID,	/* VF Infiniband node GUID */
1012cc8e27ccSEli Cohen 	IFLA_VF_IB_PORT_GUID,	/* VF Infiniband port GUID */
101379aab093SMoshe Shemesh 	IFLA_VF_VLAN_LIST,	/* nested list of vlans, option for QinQ */
101475345f88SDenis Kirjanov 	IFLA_VF_BROADCAST,	/* VF broadcast */
1015607ca46eSDavid Howells 	__IFLA_VF_MAX,
1016607ca46eSDavid Howells };
1017607ca46eSDavid Howells 
1018607ca46eSDavid Howells #define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
1019607ca46eSDavid Howells 
1020607ca46eSDavid Howells struct ifla_vf_mac {
1021607ca46eSDavid Howells 	__u32 vf;
1022607ca46eSDavid Howells 	__u8 mac[32]; /* MAX_ADDR_LEN */
1023607ca46eSDavid Howells };
1024607ca46eSDavid Howells 
102575345f88SDenis Kirjanov struct ifla_vf_broadcast {
102675345f88SDenis Kirjanov 	__u8 broadcast[32];
102775345f88SDenis Kirjanov };
102875345f88SDenis Kirjanov 
1029607ca46eSDavid Howells struct ifla_vf_vlan {
1030607ca46eSDavid Howells 	__u32 vf;
1031607ca46eSDavid Howells 	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
1032607ca46eSDavid Howells 	__u32 qos;
1033607ca46eSDavid Howells };
1034607ca46eSDavid Howells 
103579aab093SMoshe Shemesh enum {
103679aab093SMoshe Shemesh 	IFLA_VF_VLAN_INFO_UNSPEC,
103779aab093SMoshe Shemesh 	IFLA_VF_VLAN_INFO,	/* VLAN ID, QoS and VLAN protocol */
103879aab093SMoshe Shemesh 	__IFLA_VF_VLAN_INFO_MAX,
103979aab093SMoshe Shemesh };
104079aab093SMoshe Shemesh 
104179aab093SMoshe Shemesh #define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
104279aab093SMoshe Shemesh #define MAX_VLAN_LIST_LEN 1
104379aab093SMoshe Shemesh 
104479aab093SMoshe Shemesh struct ifla_vf_vlan_info {
104579aab093SMoshe Shemesh 	__u32 vf;
104679aab093SMoshe Shemesh 	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
104779aab093SMoshe Shemesh 	__u32 qos;
104879aab093SMoshe Shemesh 	__be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
104979aab093SMoshe Shemesh };
105079aab093SMoshe Shemesh 
1051607ca46eSDavid Howells struct ifla_vf_tx_rate {
1052607ca46eSDavid Howells 	__u32 vf;
1053607ca46eSDavid Howells 	__u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
1054607ca46eSDavid Howells };
1055607ca46eSDavid Howells 
1056ed616689SSucheta Chakraborty struct ifla_vf_rate {
1057ed616689SSucheta Chakraborty 	__u32 vf;
1058ed616689SSucheta Chakraborty 	__u32 min_tx_rate; /* Min Bandwidth in Mbps */
1059ed616689SSucheta Chakraborty 	__u32 max_tx_rate; /* Max Bandwidth in Mbps */
1060ed616689SSucheta Chakraborty };
1061ed616689SSucheta Chakraborty 
1062607ca46eSDavid Howells struct ifla_vf_spoofchk {
1063607ca46eSDavid Howells 	__u32 vf;
1064607ca46eSDavid Howells 	__u32 setting;
1065607ca46eSDavid Howells };
1066607ca46eSDavid Howells 
1067cc8e27ccSEli Cohen struct ifla_vf_guid {
1068cc8e27ccSEli Cohen 	__u32 vf;
1069cc8e27ccSEli Cohen 	__u64 guid;
1070cc8e27ccSEli Cohen };
1071cc8e27ccSEli Cohen 
10721d8faf48SRony Efraim enum {
10731d8faf48SRony Efraim 	IFLA_VF_LINK_STATE_AUTO,	/* link state of the uplink */
10741d8faf48SRony Efraim 	IFLA_VF_LINK_STATE_ENABLE,	/* link always up */
10751d8faf48SRony Efraim 	IFLA_VF_LINK_STATE_DISABLE,	/* link always down */
10761d8faf48SRony Efraim 	__IFLA_VF_LINK_STATE_MAX,
10771d8faf48SRony Efraim };
10781d8faf48SRony Efraim 
10791d8faf48SRony Efraim struct ifla_vf_link_state {
10801d8faf48SRony Efraim 	__u32 vf;
10811d8faf48SRony Efraim 	__u32 link_state;
10821d8faf48SRony Efraim };
10831d8faf48SRony Efraim 
108401a3d796SVlad Zolotarov struct ifla_vf_rss_query_en {
108501a3d796SVlad Zolotarov 	__u32 vf;
108601a3d796SVlad Zolotarov 	__u32 setting;
108701a3d796SVlad Zolotarov };
108801a3d796SVlad Zolotarov 
10893b766cd8SEran Ben Elisha enum {
10903b766cd8SEran Ben Elisha 	IFLA_VF_STATS_RX_PACKETS,
10913b766cd8SEran Ben Elisha 	IFLA_VF_STATS_TX_PACKETS,
10923b766cd8SEran Ben Elisha 	IFLA_VF_STATS_RX_BYTES,
10933b766cd8SEran Ben Elisha 	IFLA_VF_STATS_TX_BYTES,
10943b766cd8SEran Ben Elisha 	IFLA_VF_STATS_BROADCAST,
10953b766cd8SEran Ben Elisha 	IFLA_VF_STATS_MULTICAST,
1096343a6d8eSNicolas Dichtel 	IFLA_VF_STATS_PAD,
1097c5a9f6f0SEugenia Emantayev 	IFLA_VF_STATS_RX_DROPPED,
1098c5a9f6f0SEugenia Emantayev 	IFLA_VF_STATS_TX_DROPPED,
10993b766cd8SEran Ben Elisha 	__IFLA_VF_STATS_MAX,
11003b766cd8SEran Ben Elisha };
11013b766cd8SEran Ben Elisha 
11023b766cd8SEran Ben Elisha #define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
11033b766cd8SEran Ben Elisha 
1104dd461d6aSHiroshi Shimamoto struct ifla_vf_trust {
1105dd461d6aSHiroshi Shimamoto 	__u32 vf;
1106dd461d6aSHiroshi Shimamoto 	__u32 setting;
1107dd461d6aSHiroshi Shimamoto };
1108dd461d6aSHiroshi Shimamoto 
1109607ca46eSDavid Howells /* VF ports management section
1110607ca46eSDavid Howells  *
1111607ca46eSDavid Howells  *	Nested layout of set/get msg is:
1112607ca46eSDavid Howells  *
1113607ca46eSDavid Howells  *		[IFLA_NUM_VF]
1114607ca46eSDavid Howells  *		[IFLA_VF_PORTS]
1115607ca46eSDavid Howells  *			[IFLA_VF_PORT]
1116607ca46eSDavid Howells  *				[IFLA_PORT_*], ...
1117607ca46eSDavid Howells  *			[IFLA_VF_PORT]
1118607ca46eSDavid Howells  *				[IFLA_PORT_*], ...
1119607ca46eSDavid Howells  *			...
1120607ca46eSDavid Howells  *		[IFLA_PORT_SELF]
1121607ca46eSDavid Howells  *			[IFLA_PORT_*], ...
1122607ca46eSDavid Howells  */
1123607ca46eSDavid Howells 
1124607ca46eSDavid Howells enum {
1125607ca46eSDavid Howells 	IFLA_VF_PORT_UNSPEC,
1126607ca46eSDavid Howells 	IFLA_VF_PORT,			/* nest */
1127607ca46eSDavid Howells 	__IFLA_VF_PORT_MAX,
1128607ca46eSDavid Howells };
1129607ca46eSDavid Howells 
1130607ca46eSDavid Howells #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
1131607ca46eSDavid Howells 
1132607ca46eSDavid Howells enum {
1133607ca46eSDavid Howells 	IFLA_PORT_UNSPEC,
1134607ca46eSDavid Howells 	IFLA_PORT_VF,			/* __u32 */
1135607ca46eSDavid Howells 	IFLA_PORT_PROFILE,		/* string */
1136607ca46eSDavid Howells 	IFLA_PORT_VSI_TYPE,		/* 802.1Qbg (pre-)standard VDP */
1137607ca46eSDavid Howells 	IFLA_PORT_INSTANCE_UUID,	/* binary UUID */
1138607ca46eSDavid Howells 	IFLA_PORT_HOST_UUID,		/* binary UUID */
1139607ca46eSDavid Howells 	IFLA_PORT_REQUEST,		/* __u8 */
1140607ca46eSDavid Howells 	IFLA_PORT_RESPONSE,		/* __u16, output only */
1141607ca46eSDavid Howells 	__IFLA_PORT_MAX,
1142607ca46eSDavid Howells };
1143607ca46eSDavid Howells 
1144607ca46eSDavid Howells #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
1145607ca46eSDavid Howells 
1146607ca46eSDavid Howells #define PORT_PROFILE_MAX	40
1147607ca46eSDavid Howells #define PORT_UUID_MAX		16
1148607ca46eSDavid Howells #define PORT_SELF_VF		-1
1149607ca46eSDavid Howells 
1150607ca46eSDavid Howells enum {
1151607ca46eSDavid Howells 	PORT_REQUEST_PREASSOCIATE = 0,
1152607ca46eSDavid Howells 	PORT_REQUEST_PREASSOCIATE_RR,
1153607ca46eSDavid Howells 	PORT_REQUEST_ASSOCIATE,
1154607ca46eSDavid Howells 	PORT_REQUEST_DISASSOCIATE,
1155607ca46eSDavid Howells };
1156607ca46eSDavid Howells 
1157607ca46eSDavid Howells enum {
1158607ca46eSDavid Howells 	PORT_VDP_RESPONSE_SUCCESS = 0,
1159607ca46eSDavid Howells 	PORT_VDP_RESPONSE_INVALID_FORMAT,
1160607ca46eSDavid Howells 	PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
1161607ca46eSDavid Howells 	PORT_VDP_RESPONSE_UNUSED_VTID,
1162607ca46eSDavid Howells 	PORT_VDP_RESPONSE_VTID_VIOLATION,
1163607ca46eSDavid Howells 	PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
1164607ca46eSDavid Howells 	PORT_VDP_RESPONSE_OUT_OF_SYNC,
1165607ca46eSDavid Howells 	/* 0x08-0xFF reserved for future VDP use */
1166607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
1167607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_INPROGRESS,
1168607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_INVALID,
1169607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_BADSTATE,
1170607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
1171607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_ERROR,
1172607ca46eSDavid Howells };
1173607ca46eSDavid Howells 
1174607ca46eSDavid Howells struct ifla_port_vsi {
1175607ca46eSDavid Howells 	__u8 vsi_mgr_id;
1176607ca46eSDavid Howells 	__u8 vsi_type_id[3];
1177607ca46eSDavid Howells 	__u8 vsi_type_version;
1178607ca46eSDavid Howells 	__u8 pad[3];
1179607ca46eSDavid Howells };
1180607ca46eSDavid Howells 
1181607ca46eSDavid Howells 
1182607ca46eSDavid Howells /* IPoIB section */
1183607ca46eSDavid Howells 
1184607ca46eSDavid Howells enum {
1185607ca46eSDavid Howells 	IFLA_IPOIB_UNSPEC,
1186607ca46eSDavid Howells 	IFLA_IPOIB_PKEY,
1187607ca46eSDavid Howells 	IFLA_IPOIB_MODE,
1188607ca46eSDavid Howells 	IFLA_IPOIB_UMCAST,
1189607ca46eSDavid Howells 	__IFLA_IPOIB_MAX
1190607ca46eSDavid Howells };
1191607ca46eSDavid Howells 
1192607ca46eSDavid Howells enum {
1193607ca46eSDavid Howells 	IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
1194607ca46eSDavid Howells 	IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
1195607ca46eSDavid Howells };
1196607ca46eSDavid Howells 
1197607ca46eSDavid Howells #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
1198607ca46eSDavid Howells 
1199f421436aSArvid Brodin 
12008f4c0e01SMurali Karicheri /* HSR/PRP section, both uses same interface */
12018f4c0e01SMurali Karicheri 
12028f4c0e01SMurali Karicheri /* Different redundancy protocols for hsr device */
12038f4c0e01SMurali Karicheri enum {
12048f4c0e01SMurali Karicheri 	HSR_PROTOCOL_HSR,
12058f4c0e01SMurali Karicheri 	HSR_PROTOCOL_PRP,
12068f4c0e01SMurali Karicheri 	HSR_PROTOCOL_MAX,
12078f4c0e01SMurali Karicheri };
1208f421436aSArvid Brodin 
1209f421436aSArvid Brodin enum {
1210f421436aSArvid Brodin 	IFLA_HSR_UNSPEC,
1211f421436aSArvid Brodin 	IFLA_HSR_SLAVE1,
1212f421436aSArvid Brodin 	IFLA_HSR_SLAVE2,
121398bf8362SArvid Brodin 	IFLA_HSR_MULTICAST_SPEC,	/* Last byte of supervision addr */
121498bf8362SArvid Brodin 	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
121598bf8362SArvid Brodin 	IFLA_HSR_SEQ_NR,
1216b84e9307SPeter Heise 	IFLA_HSR_VERSION,		/* HSR version */
12178f4c0e01SMurali Karicheri 	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
12188f4c0e01SMurali Karicheri 					 * HSR. For example PRP.
12198f4c0e01SMurali Karicheri 					 */
1220f421436aSArvid Brodin 	__IFLA_HSR_MAX,
1221f421436aSArvid Brodin };
1222f421436aSArvid Brodin 
1223f421436aSArvid Brodin #define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
1224f421436aSArvid Brodin 
122510c9ead9SRoopa Prabhu /* STATS section */
122610c9ead9SRoopa Prabhu 
122710c9ead9SRoopa Prabhu struct if_stats_msg {
122810c9ead9SRoopa Prabhu 	__u8  family;
122910c9ead9SRoopa Prabhu 	__u8  pad1;
123010c9ead9SRoopa Prabhu 	__u16 pad2;
123110c9ead9SRoopa Prabhu 	__u32 ifindex;
123210c9ead9SRoopa Prabhu 	__u32 filter_mask;
123310c9ead9SRoopa Prabhu };
123410c9ead9SRoopa Prabhu 
123510c9ead9SRoopa Prabhu /* A stats attribute can be netdev specific or a global stat.
123610c9ead9SRoopa Prabhu  * For netdev stats, lets use the prefix IFLA_STATS_LINK_*
123710c9ead9SRoopa Prabhu  */
123810c9ead9SRoopa Prabhu enum {
123910c9ead9SRoopa Prabhu 	IFLA_STATS_UNSPEC, /* also used as 64bit pad attribute */
124010c9ead9SRoopa Prabhu 	IFLA_STATS_LINK_64,
124197a47facSNikolay Aleksandrov 	IFLA_STATS_LINK_XSTATS,
124280e73cc5SNikolay Aleksandrov 	IFLA_STATS_LINK_XSTATS_SLAVE,
124369ae6ad2SNogah Frankel 	IFLA_STATS_LINK_OFFLOAD_XSTATS,
1244aefb4d4aSRobert Shearman 	IFLA_STATS_AF_SPEC,
124510c9ead9SRoopa Prabhu 	__IFLA_STATS_MAX,
124610c9ead9SRoopa Prabhu };
124710c9ead9SRoopa Prabhu 
124810c9ead9SRoopa Prabhu #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
124910c9ead9SRoopa Prabhu 
125010c9ead9SRoopa Prabhu #define IFLA_STATS_FILTER_BIT(ATTR)	(1 << (ATTR - 1))
125110c9ead9SRoopa Prabhu 
125246efc97bSPetr Machata enum {
125346efc97bSPetr Machata 	IFLA_STATS_GETSET_UNSPEC,
125446efc97bSPetr Machata 	IFLA_STATS_GET_FILTERS, /* Nest of IFLA_STATS_LINK_xxx, each a u32 with
125546efc97bSPetr Machata 				 * a filter mask for the corresponding group.
125646efc97bSPetr Machata 				 */
12575fd0b838SPetr Machata 	IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS, /* 0 or 1 as u8 */
125846efc97bSPetr Machata 	__IFLA_STATS_GETSET_MAX,
125946efc97bSPetr Machata };
126046efc97bSPetr Machata 
126146efc97bSPetr Machata #define IFLA_STATS_GETSET_MAX (__IFLA_STATS_GETSET_MAX - 1)
126246efc97bSPetr Machata 
126397a47facSNikolay Aleksandrov /* These are embedded into IFLA_STATS_LINK_XSTATS:
126497a47facSNikolay Aleksandrov  * [IFLA_STATS_LINK_XSTATS]
126597a47facSNikolay Aleksandrov  * -> [LINK_XSTATS_TYPE_xxx]
126697a47facSNikolay Aleksandrov  *    -> [rtnl link type specific attributes]
126797a47facSNikolay Aleksandrov  */
126897a47facSNikolay Aleksandrov enum {
126997a47facSNikolay Aleksandrov 	LINK_XSTATS_TYPE_UNSPEC,
1270a60c0903SNikolay Aleksandrov 	LINK_XSTATS_TYPE_BRIDGE,
1271a258aeacSNikolay Aleksandrov 	LINK_XSTATS_TYPE_BOND,
127297a47facSNikolay Aleksandrov 	__LINK_XSTATS_TYPE_MAX
127397a47facSNikolay Aleksandrov };
127497a47facSNikolay Aleksandrov #define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
127597a47facSNikolay Aleksandrov 
127669ae6ad2SNogah Frankel /* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
127769ae6ad2SNogah Frankel enum {
127869ae6ad2SNogah Frankel 	IFLA_OFFLOAD_XSTATS_UNSPEC,
127969ae6ad2SNogah Frankel 	IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
12800e7788fdSPetr Machata 	IFLA_OFFLOAD_XSTATS_HW_S_INFO,	/* HW stats info. A nest */
12810e7788fdSPetr Machata 	IFLA_OFFLOAD_XSTATS_L3_STATS,	/* struct rtnl_hw_stats64 */
128269ae6ad2SNogah Frankel 	__IFLA_OFFLOAD_XSTATS_MAX
128369ae6ad2SNogah Frankel };
128469ae6ad2SNogah Frankel #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
128569ae6ad2SNogah Frankel 
12860e7788fdSPetr Machata enum {
12870e7788fdSPetr Machata 	IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC,
12880e7788fdSPetr Machata 	IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST,		/* u8 */
12890e7788fdSPetr Machata 	IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED,		/* u8 */
12900e7788fdSPetr Machata 	__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX,
12910e7788fdSPetr Machata };
12920e7788fdSPetr Machata #define IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX \
12930e7788fdSPetr Machata 	(__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX - 1)
12940e7788fdSPetr Machata 
1295d1fdd913SBrenden Blanco /* XDP section */
1296d1fdd913SBrenden Blanco 
129785de8576SDaniel Borkmann #define XDP_FLAGS_UPDATE_IF_NOEXIST	(1U << 0)
12980489df9aSDaniel Borkmann #define XDP_FLAGS_SKB_MODE		(1U << 1)
12990489df9aSDaniel Borkmann #define XDP_FLAGS_DRV_MODE		(1U << 2)
1300ee5d032fSJakub Kicinski #define XDP_FLAGS_HW_MODE		(1U << 3)
130192234c8fSToke Høiland-Jørgensen #define XDP_FLAGS_REPLACE		(1U << 4)
1302ee5d032fSJakub Kicinski #define XDP_FLAGS_MODES			(XDP_FLAGS_SKB_MODE | \
1303ee5d032fSJakub Kicinski 					 XDP_FLAGS_DRV_MODE | \
1304ee5d032fSJakub Kicinski 					 XDP_FLAGS_HW_MODE)
1305b5cdae32SDavid S. Miller #define XDP_FLAGS_MASK			(XDP_FLAGS_UPDATE_IF_NOEXIST | \
130692234c8fSToke Høiland-Jørgensen 					 XDP_FLAGS_MODES | XDP_FLAGS_REPLACE)
130785de8576SDaniel Borkmann 
1308d67b9cd2SDaniel Borkmann /* These are stored into IFLA_XDP_ATTACHED on dump. */
1309d67b9cd2SDaniel Borkmann enum {
1310d67b9cd2SDaniel Borkmann 	XDP_ATTACHED_NONE = 0,
1311d67b9cd2SDaniel Borkmann 	XDP_ATTACHED_DRV,
1312d67b9cd2SDaniel Borkmann 	XDP_ATTACHED_SKB,
1313ce158e58SJakub Kicinski 	XDP_ATTACHED_HW,
1314a25717d2SJakub Kicinski 	XDP_ATTACHED_MULTI,
1315d67b9cd2SDaniel Borkmann };
1316d67b9cd2SDaniel Borkmann 
1317d1fdd913SBrenden Blanco enum {
1318d1fdd913SBrenden Blanco 	IFLA_XDP_UNSPEC,
1319d1fdd913SBrenden Blanco 	IFLA_XDP_FD,
1320d1fdd913SBrenden Blanco 	IFLA_XDP_ATTACHED,
132185de8576SDaniel Borkmann 	IFLA_XDP_FLAGS,
132258038695SMartin KaFai Lau 	IFLA_XDP_PROG_ID,
13234f91da26SJakub Kicinski 	IFLA_XDP_DRV_PROG_ID,
13244f91da26SJakub Kicinski 	IFLA_XDP_SKB_PROG_ID,
13254f91da26SJakub Kicinski 	IFLA_XDP_HW_PROG_ID,
132692234c8fSToke Høiland-Jørgensen 	IFLA_XDP_EXPECTED_FD,
1327d1fdd913SBrenden Blanco 	__IFLA_XDP_MAX,
1328d1fdd913SBrenden Blanco };
1329d1fdd913SBrenden Blanco 
1330d1fdd913SBrenden Blanco #define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
1331d1fdd913SBrenden Blanco 
13323d3ea5afSVlad Yasevich enum {
13333d3ea5afSVlad Yasevich 	IFLA_EVENT_NONE,
13343d3ea5afSVlad Yasevich 	IFLA_EVENT_REBOOT,		/* internal reset / reboot */
13353d3ea5afSVlad Yasevich 	IFLA_EVENT_FEATURES,		/* change in offload features */
13363d3ea5afSVlad Yasevich 	IFLA_EVENT_BONDING_FAILOVER,	/* change in active slave */
13373d3ea5afSVlad Yasevich 	IFLA_EVENT_NOTIFY_PEERS,	/* re-sent grat. arp/ndisc */
13383d3ea5afSVlad Yasevich 	IFLA_EVENT_IGMP_RESEND,		/* re-sent IGMP JOIN */
13393d3ea5afSVlad Yasevich 	IFLA_EVENT_BONDING_OPTIONS,	/* change in bonding options */
13403d3ea5afSVlad Yasevich };
13413d3ea5afSVlad Yasevich 
13421ec010e7SSabrina Dubroca /* tun section */
13431ec010e7SSabrina Dubroca 
13441ec010e7SSabrina Dubroca enum {
13451ec010e7SSabrina Dubroca 	IFLA_TUN_UNSPEC,
13461ec010e7SSabrina Dubroca 	IFLA_TUN_OWNER,
13471ec010e7SSabrina Dubroca 	IFLA_TUN_GROUP,
13481ec010e7SSabrina Dubroca 	IFLA_TUN_TYPE,
13491ec010e7SSabrina Dubroca 	IFLA_TUN_PI,
13501ec010e7SSabrina Dubroca 	IFLA_TUN_VNET_HDR,
13511ec010e7SSabrina Dubroca 	IFLA_TUN_PERSIST,
13521ec010e7SSabrina Dubroca 	IFLA_TUN_MULTI_QUEUE,
13531ec010e7SSabrina Dubroca 	IFLA_TUN_NUM_QUEUES,
13541ec010e7SSabrina Dubroca 	IFLA_TUN_NUM_DISABLED_QUEUES,
13551ec010e7SSabrina Dubroca 	__IFLA_TUN_MAX,
13561ec010e7SSabrina Dubroca };
13571ec010e7SSabrina Dubroca 
13581ec010e7SSabrina Dubroca #define IFLA_TUN_MAX (__IFLA_TUN_MAX - 1)
13591ec010e7SSabrina Dubroca 
136014452ca3SSubash Abhinov Kasiviswanathan /* rmnet section */
136114452ca3SSubash Abhinov Kasiviswanathan 
136214452ca3SSubash Abhinov Kasiviswanathan #define RMNET_FLAGS_INGRESS_DEAGGREGATION         (1U << 0)
136314452ca3SSubash Abhinov Kasiviswanathan #define RMNET_FLAGS_INGRESS_MAP_COMMANDS          (1U << 1)
136414452ca3SSubash Abhinov Kasiviswanathan #define RMNET_FLAGS_INGRESS_MAP_CKSUMV4           (1U << 2)
136514452ca3SSubash Abhinov Kasiviswanathan #define RMNET_FLAGS_EGRESS_MAP_CKSUMV4            (1U << 3)
1366e1d9a90aSSharath Chandra Vurukala #define RMNET_FLAGS_INGRESS_MAP_CKSUMV5           (1U << 4)
1367b6e5d27eSSharath Chandra Vurukala #define RMNET_FLAGS_EGRESS_MAP_CKSUMV5            (1U << 5)
136814452ca3SSubash Abhinov Kasiviswanathan 
136914452ca3SSubash Abhinov Kasiviswanathan enum {
137014452ca3SSubash Abhinov Kasiviswanathan 	IFLA_RMNET_UNSPEC,
137114452ca3SSubash Abhinov Kasiviswanathan 	IFLA_RMNET_MUX_ID,
137214452ca3SSubash Abhinov Kasiviswanathan 	IFLA_RMNET_FLAGS,
137314452ca3SSubash Abhinov Kasiviswanathan 	__IFLA_RMNET_MAX,
137414452ca3SSubash Abhinov Kasiviswanathan };
137514452ca3SSubash Abhinov Kasiviswanathan 
137614452ca3SSubash Abhinov Kasiviswanathan #define IFLA_RMNET_MAX	(__IFLA_RMNET_MAX - 1)
137714452ca3SSubash Abhinov Kasiviswanathan 
137814452ca3SSubash Abhinov Kasiviswanathan struct ifla_rmnet_flags {
137914452ca3SSubash Abhinov Kasiviswanathan 	__u32	flags;
138014452ca3SSubash Abhinov Kasiviswanathan 	__u32	mask;
138114452ca3SSubash Abhinov Kasiviswanathan };
138214452ca3SSubash Abhinov Kasiviswanathan 
1383583be982SJeremy Kerr /* MCTP section */
1384583be982SJeremy Kerr 
1385583be982SJeremy Kerr enum {
1386583be982SJeremy Kerr 	IFLA_MCTP_UNSPEC,
1387583be982SJeremy Kerr 	IFLA_MCTP_NET,
1388583be982SJeremy Kerr 	__IFLA_MCTP_MAX,
1389583be982SJeremy Kerr };
1390583be982SJeremy Kerr 
1391583be982SJeremy Kerr #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
1392583be982SJeremy Kerr 
139395f510d0SVladimir Oltean /* DSA section */
139495f510d0SVladimir Oltean 
139595f510d0SVladimir Oltean enum {
139695f510d0SVladimir Oltean 	IFLA_DSA_UNSPEC,
1397*87cd8371SFlorian Fainelli 	IFLA_DSA_CONDUIT,
1398*87cd8371SFlorian Fainelli 	/* Deprecated, use IFLA_DSA_CONDUIT instead */
1399*87cd8371SFlorian Fainelli 	IFLA_DSA_MASTER = IFLA_DSA_CONDUIT,
140095f510d0SVladimir Oltean 	__IFLA_DSA_MAX,
140195f510d0SVladimir Oltean };
140295f510d0SVladimir Oltean 
140395f510d0SVladimir Oltean #define IFLA_DSA_MAX	(__IFLA_DSA_MAX - 1)
140495f510d0SVladimir Oltean 
1405607ca46eSDavid Howells #endif /* _UAPI_LINUX_IF_LINK_H */
1406