xref: /linux/include/uapi/linux/if_link.h (revision 583be982d93479ea3d85091b0fd0b01201ede87d)
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).
2140db0c34cSJakub Kicinski  */
215607ca46eSDavid Howells struct rtnl_link_stats64 {
2160db0c34cSJakub Kicinski 	__u64	rx_packets;
2170db0c34cSJakub Kicinski 	__u64	tx_packets;
2180db0c34cSJakub Kicinski 	__u64	rx_bytes;
2190db0c34cSJakub Kicinski 	__u64	tx_bytes;
2200db0c34cSJakub Kicinski 	__u64	rx_errors;
2210db0c34cSJakub Kicinski 	__u64	tx_errors;
2220db0c34cSJakub Kicinski 	__u64	rx_dropped;
2230db0c34cSJakub Kicinski 	__u64	tx_dropped;
2240db0c34cSJakub Kicinski 	__u64	multicast;
225607ca46eSDavid Howells 	__u64	collisions;
226607ca46eSDavid Howells 
227607ca46eSDavid Howells 	/* detailed rx_errors: */
228607ca46eSDavid Howells 	__u64	rx_length_errors;
2290db0c34cSJakub Kicinski 	__u64	rx_over_errors;
2300db0c34cSJakub Kicinski 	__u64	rx_crc_errors;
2310db0c34cSJakub Kicinski 	__u64	rx_frame_errors;
2320db0c34cSJakub Kicinski 	__u64	rx_fifo_errors;
2330db0c34cSJakub Kicinski 	__u64	rx_missed_errors;
234607ca46eSDavid Howells 
235607ca46eSDavid Howells 	/* detailed tx_errors */
236607ca46eSDavid Howells 	__u64	tx_aborted_errors;
237607ca46eSDavid Howells 	__u64	tx_carrier_errors;
238607ca46eSDavid Howells 	__u64	tx_fifo_errors;
239607ca46eSDavid Howells 	__u64	tx_heartbeat_errors;
240607ca46eSDavid Howells 	__u64	tx_window_errors;
241607ca46eSDavid Howells 
242607ca46eSDavid Howells 	/* for cslip etc */
243607ca46eSDavid Howells 	__u64	rx_compressed;
244607ca46eSDavid Howells 	__u64	tx_compressed;
2450db0c34cSJakub Kicinski 	__u64	rx_nohandler;
246607ca46eSDavid Howells };
247607ca46eSDavid Howells 
248607ca46eSDavid Howells /* The struct should be in sync with struct ifmap */
249607ca46eSDavid Howells struct rtnl_link_ifmap {
250607ca46eSDavid Howells 	__u64	mem_start;
251607ca46eSDavid Howells 	__u64	mem_end;
252607ca46eSDavid Howells 	__u64	base_addr;
253607ca46eSDavid Howells 	__u16	irq;
254607ca46eSDavid Howells 	__u8	dma;
255607ca46eSDavid Howells 	__u8	port;
256607ca46eSDavid Howells };
257607ca46eSDavid Howells 
258607ca46eSDavid Howells /*
259607ca46eSDavid Howells  * IFLA_AF_SPEC
260607ca46eSDavid Howells  *   Contains nested attributes for address family specific attributes.
261607ca46eSDavid Howells  *   Each address family may create a attribute with the address family
262607ca46eSDavid Howells  *   number as type and create its own attribute structure in it.
263607ca46eSDavid Howells  *
264607ca46eSDavid Howells  *   Example:
265607ca46eSDavid Howells  *   [IFLA_AF_SPEC] = {
266607ca46eSDavid Howells  *       [AF_INET] = {
267607ca46eSDavid Howells  *           [IFLA_INET_CONF] = ...,
268607ca46eSDavid Howells  *       },
269607ca46eSDavid Howells  *       [AF_INET6] = {
270607ca46eSDavid Howells  *           [IFLA_INET6_FLAGS] = ...,
271607ca46eSDavid Howells  *           [IFLA_INET6_CONF] = ...,
272607ca46eSDavid Howells  *       }
273607ca46eSDavid Howells  *   }
274607ca46eSDavid Howells  */
275607ca46eSDavid Howells 
276607ca46eSDavid Howells enum {
277607ca46eSDavid Howells 	IFLA_UNSPEC,
278607ca46eSDavid Howells 	IFLA_ADDRESS,
279607ca46eSDavid Howells 	IFLA_BROADCAST,
280607ca46eSDavid Howells 	IFLA_IFNAME,
281607ca46eSDavid Howells 	IFLA_MTU,
282607ca46eSDavid Howells 	IFLA_LINK,
283607ca46eSDavid Howells 	IFLA_QDISC,
284607ca46eSDavid Howells 	IFLA_STATS,
285607ca46eSDavid Howells 	IFLA_COST,
286607ca46eSDavid Howells #define IFLA_COST IFLA_COST
287607ca46eSDavid Howells 	IFLA_PRIORITY,
288607ca46eSDavid Howells #define IFLA_PRIORITY IFLA_PRIORITY
289607ca46eSDavid Howells 	IFLA_MASTER,
290607ca46eSDavid Howells #define IFLA_MASTER IFLA_MASTER
291607ca46eSDavid Howells 	IFLA_WIRELESS,		/* Wireless Extension event - see wireless.h */
292607ca46eSDavid Howells #define IFLA_WIRELESS IFLA_WIRELESS
293607ca46eSDavid Howells 	IFLA_PROTINFO,		/* Protocol specific information for a link */
294607ca46eSDavid Howells #define IFLA_PROTINFO IFLA_PROTINFO
295607ca46eSDavid Howells 	IFLA_TXQLEN,
296607ca46eSDavid Howells #define IFLA_TXQLEN IFLA_TXQLEN
297607ca46eSDavid Howells 	IFLA_MAP,
298607ca46eSDavid Howells #define IFLA_MAP IFLA_MAP
299607ca46eSDavid Howells 	IFLA_WEIGHT,
300607ca46eSDavid Howells #define IFLA_WEIGHT IFLA_WEIGHT
301607ca46eSDavid Howells 	IFLA_OPERSTATE,
302607ca46eSDavid Howells 	IFLA_LINKMODE,
303607ca46eSDavid Howells 	IFLA_LINKINFO,
304607ca46eSDavid Howells #define IFLA_LINKINFO IFLA_LINKINFO
305607ca46eSDavid Howells 	IFLA_NET_NS_PID,
306607ca46eSDavid Howells 	IFLA_IFALIAS,
307607ca46eSDavid Howells 	IFLA_NUM_VF,		/* Number of VFs if device is SR-IOV PF */
308607ca46eSDavid Howells 	IFLA_VFINFO_LIST,
309607ca46eSDavid Howells 	IFLA_STATS64,
310607ca46eSDavid Howells 	IFLA_VF_PORTS,
311607ca46eSDavid Howells 	IFLA_PORT_SELF,
312607ca46eSDavid Howells 	IFLA_AF_SPEC,
313607ca46eSDavid Howells 	IFLA_GROUP,		/* Group the device belongs to */
314607ca46eSDavid Howells 	IFLA_NET_NS_FD,
315607ca46eSDavid Howells 	IFLA_EXT_MASK,		/* Extended info mask, VFs, etc */
316607ca46eSDavid Howells 	IFLA_PROMISCUITY,	/* Promiscuity count: > 0 means acts PROMISC */
317607ca46eSDavid Howells #define IFLA_PROMISCUITY IFLA_PROMISCUITY
318607ca46eSDavid Howells 	IFLA_NUM_TX_QUEUES,
319607ca46eSDavid Howells 	IFLA_NUM_RX_QUEUES,
3209a57247fSJiri Pirko 	IFLA_CARRIER,
32166cae9edSJiri Pirko 	IFLA_PHYS_PORT_ID,
3222d3b479dSdavid decotigny 	IFLA_CARRIER_CHANGES,
32382f28412SJiri Pirko 	IFLA_PHYS_SWITCH_ID,
324d37512a2SNicolas Dichtel 	IFLA_LINK_NETNSID,
325db24a904SDavid Ahern 	IFLA_PHYS_PORT_NAME,
32688d6378bSAnuradha Karuppiah 	IFLA_PROTO_DOWN,
327c70ce028SEric Dumazet 	IFLA_GSO_MAX_SEGS,
328c70ce028SEric Dumazet 	IFLA_GSO_MAX_SIZE,
32918402843SDavid S. Miller 	IFLA_PAD,
330d1fdd913SBrenden Blanco 	IFLA_XDP,
3313d3ea5afSVlad Yasevich 	IFLA_EVENT,
3326621dd29SNicolas Dichtel 	IFLA_NEW_NETNSID,
33379e1ad14SJiri Benc 	IFLA_IF_NETNSID,
33419d8f1adSChristian Brauner 	IFLA_TARGET_NETNSID = IFLA_IF_NETNSID, /* new alias */
335b2d3bcfaSDavid Decotigny 	IFLA_CARRIER_UP_COUNT,
336b2d3bcfaSDavid Decotigny 	IFLA_CARRIER_DOWN_COUNT,
33738e01b30SNicolas Dichtel 	IFLA_NEW_IFINDEX,
3383e7a50ceSStephen Hemminger 	IFLA_MIN_MTU,
3393e7a50ceSStephen Hemminger 	IFLA_MAX_MTU,
34036fbf1e5SJiri Pirko 	IFLA_PROP_LIST,
34136fbf1e5SJiri Pirko 	IFLA_ALT_IFNAME, /* Alternative ifname */
342f74877a5SMichal Kubecek 	IFLA_PERM_ADDRESS,
343829eb208SRoopa Prabhu 	IFLA_PROTO_DOWN_REASON,
34400e77ed8SJohannes Berg 
34500e77ed8SJohannes Berg 	/* device (sysfs) name as parent, used instead
34600e77ed8SJohannes Berg 	 * of IFLA_LINK where there's no parent netdev
34700e77ed8SJohannes Berg 	 */
34800e77ed8SJohannes Berg 	IFLA_PARENT_DEV_NAME,
34900e77ed8SJohannes Berg 	IFLA_PARENT_DEV_BUS_NAME,
35000e77ed8SJohannes Berg 
351607ca46eSDavid Howells 	__IFLA_MAX
352607ca46eSDavid Howells };
353607ca46eSDavid Howells 
354607ca46eSDavid Howells 
355607ca46eSDavid Howells #define IFLA_MAX (__IFLA_MAX - 1)
356607ca46eSDavid Howells 
357829eb208SRoopa Prabhu enum {
358829eb208SRoopa Prabhu 	IFLA_PROTO_DOWN_REASON_UNSPEC,
359829eb208SRoopa Prabhu 	IFLA_PROTO_DOWN_REASON_MASK,	/* u32, mask for reason bits */
360829eb208SRoopa Prabhu 	IFLA_PROTO_DOWN_REASON_VALUE,   /* u32, reason bit value */
361829eb208SRoopa Prabhu 
362829eb208SRoopa Prabhu 	__IFLA_PROTO_DOWN_REASON_CNT,
363829eb208SRoopa Prabhu 	IFLA_PROTO_DOWN_REASON_MAX = __IFLA_PROTO_DOWN_REASON_CNT - 1
364829eb208SRoopa Prabhu };
365829eb208SRoopa Prabhu 
366607ca46eSDavid Howells /* backwards compatibility for userspace */
367607ca46eSDavid Howells #ifndef __KERNEL__
368607ca46eSDavid Howells #define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
369607ca46eSDavid Howells #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
370607ca46eSDavid Howells #endif
371607ca46eSDavid Howells 
372607ca46eSDavid Howells enum {
373607ca46eSDavid Howells 	IFLA_INET_UNSPEC,
374607ca46eSDavid Howells 	IFLA_INET_CONF,
375607ca46eSDavid Howells 	__IFLA_INET_MAX,
376607ca46eSDavid Howells };
377607ca46eSDavid Howells 
378607ca46eSDavid Howells #define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
379607ca46eSDavid Howells 
380607ca46eSDavid Howells /* ifi_flags.
381607ca46eSDavid Howells 
382607ca46eSDavid Howells    IFF_* flags.
383607ca46eSDavid Howells 
384607ca46eSDavid Howells    The only change is:
385607ca46eSDavid Howells    IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
386607ca46eSDavid Howells    more not changeable by user. They describe link media
387607ca46eSDavid Howells    characteristics and set by device driver.
388607ca46eSDavid Howells 
389607ca46eSDavid Howells    Comments:
390607ca46eSDavid Howells    - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
391607ca46eSDavid Howells    - If neither of these three flags are set;
392607ca46eSDavid Howells      the interface is NBMA.
393607ca46eSDavid Howells 
394607ca46eSDavid Howells    - IFF_MULTICAST does not mean anything special:
395607ca46eSDavid Howells    multicasts can be used on all not-NBMA links.
396607ca46eSDavid Howells    IFF_MULTICAST means that this media uses special encapsulation
397607ca46eSDavid Howells    for multicast frames. Apparently, all IFF_POINTOPOINT and
398607ca46eSDavid Howells    IFF_BROADCAST devices are able to use multicasts too.
399607ca46eSDavid Howells  */
400607ca46eSDavid Howells 
401607ca46eSDavid Howells /* IFLA_LINK.
402607ca46eSDavid Howells    For usual devices it is equal ifi_index.
403607ca46eSDavid Howells    If it is a "virtual interface" (f.e. tunnel), ifi_link
404607ca46eSDavid Howells    can point to real physical interface (f.e. for bandwidth calculations),
405607ca46eSDavid Howells    or maybe 0, what means, that real media is unknown (usual
406607ca46eSDavid Howells    for IPIP tunnels, when route to endpoint is allowed to change)
407607ca46eSDavid Howells  */
408607ca46eSDavid Howells 
409607ca46eSDavid Howells /* Subtype attributes for IFLA_PROTINFO */
410607ca46eSDavid Howells enum {
411607ca46eSDavid Howells 	IFLA_INET6_UNSPEC,
412607ca46eSDavid Howells 	IFLA_INET6_FLAGS,	/* link flags			*/
413607ca46eSDavid Howells 	IFLA_INET6_CONF,	/* sysctl parameters		*/
414607ca46eSDavid Howells 	IFLA_INET6_STATS,	/* statistics			*/
415607ca46eSDavid Howells 	IFLA_INET6_MCAST,	/* MC things. What of them?	*/
416607ca46eSDavid Howells 	IFLA_INET6_CACHEINFO,	/* time values and max reasm size */
417607ca46eSDavid Howells 	IFLA_INET6_ICMP6STATS,	/* statistics (icmpv6)		*/
418f53adae4SDaniel Borkmann 	IFLA_INET6_TOKEN,	/* device token			*/
419bc91b0f0SJiri Pirko 	IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
420607ca46eSDavid Howells 	__IFLA_INET6_MAX
421607ca46eSDavid Howells };
422607ca46eSDavid Howells 
423607ca46eSDavid Howells #define IFLA_INET6_MAX	(__IFLA_INET6_MAX - 1)
424607ca46eSDavid Howells 
425bc91b0f0SJiri Pirko enum in6_addr_gen_mode {
426bc91b0f0SJiri Pirko 	IN6_ADDR_GEN_MODE_EUI64,
427bc91b0f0SJiri Pirko 	IN6_ADDR_GEN_MODE_NONE,
428622c81d5SHannes Frederic Sowa 	IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
429cc9da6ccSBjørn Mork 	IN6_ADDR_GEN_MODE_RANDOM,
430bc91b0f0SJiri Pirko };
431bc91b0f0SJiri Pirko 
432e5c3ea5cSJiri Pirko /* Bridge section */
433e5c3ea5cSJiri Pirko 
434e5c3ea5cSJiri Pirko enum {
435e5c3ea5cSJiri Pirko 	IFLA_BR_UNSPEC,
436e5c3ea5cSJiri Pirko 	IFLA_BR_FORWARD_DELAY,
437e5c3ea5cSJiri Pirko 	IFLA_BR_HELLO_TIME,
438e5c3ea5cSJiri Pirko 	IFLA_BR_MAX_AGE,
439af615762SJörg Thalheim 	IFLA_BR_AGEING_TIME,
440af615762SJörg Thalheim 	IFLA_BR_STP_STATE,
441af615762SJörg Thalheim 	IFLA_BR_PRIORITY,
442a7854037SNikolay Aleksandrov 	IFLA_BR_VLAN_FILTERING,
443d2d427b3SToshiaki Makita 	IFLA_BR_VLAN_PROTOCOL,
4447910228bSNikolay Aleksandrov 	IFLA_BR_GROUP_FWD_MASK,
4455127c81fSNikolay Aleksandrov 	IFLA_BR_ROOT_ID,
4467599a220SNikolay Aleksandrov 	IFLA_BR_BRIDGE_ID,
4478762ba68SNikolay Aleksandrov 	IFLA_BR_ROOT_PORT,
448684dd248SNikolay Aleksandrov 	IFLA_BR_ROOT_PATH_COST,
449ed416309SNikolay Aleksandrov 	IFLA_BR_TOPOLOGY_CHANGE,
450ed416309SNikolay Aleksandrov 	IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
451d76bd14eSNikolay Aleksandrov 	IFLA_BR_HELLO_TIMER,
452d76bd14eSNikolay Aleksandrov 	IFLA_BR_TCN_TIMER,
453d76bd14eSNikolay Aleksandrov 	IFLA_BR_TOPOLOGY_CHANGE_TIMER,
454d76bd14eSNikolay Aleksandrov 	IFLA_BR_GC_TIMER,
455111189abSNikolay Aleksandrov 	IFLA_BR_GROUP_ADDR,
456150217c6SNikolay Aleksandrov 	IFLA_BR_FDB_FLUSH,
457a9a6bc70SNikolay Aleksandrov 	IFLA_BR_MCAST_ROUTER,
45889126327SNikolay Aleksandrov 	IFLA_BR_MCAST_SNOOPING,
459295141d9SNikolay Aleksandrov 	IFLA_BR_MCAST_QUERY_USE_IFADDR,
460ba062d7cSNikolay Aleksandrov 	IFLA_BR_MCAST_QUERIER,
461431db3c0SNikolay Aleksandrov 	IFLA_BR_MCAST_HASH_ELASTICITY,
462858079fdSNikolay Aleksandrov 	IFLA_BR_MCAST_HASH_MAX,
46379b859f5SNikolay Aleksandrov 	IFLA_BR_MCAST_LAST_MEMBER_CNT,
464b89e6babSNikolay Aleksandrov 	IFLA_BR_MCAST_STARTUP_QUERY_CNT,
4657e4df51eSNikolay Aleksandrov 	IFLA_BR_MCAST_LAST_MEMBER_INTVL,
4667e4df51eSNikolay Aleksandrov 	IFLA_BR_MCAST_MEMBERSHIP_INTVL,
4677e4df51eSNikolay Aleksandrov 	IFLA_BR_MCAST_QUERIER_INTVL,
4687e4df51eSNikolay Aleksandrov 	IFLA_BR_MCAST_QUERY_INTVL,
4697e4df51eSNikolay Aleksandrov 	IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
4707e4df51eSNikolay Aleksandrov 	IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
47193870cc0SNikolay Aleksandrov 	IFLA_BR_NF_CALL_IPTABLES,
47293870cc0SNikolay Aleksandrov 	IFLA_BR_NF_CALL_IP6TABLES,
47393870cc0SNikolay Aleksandrov 	IFLA_BR_NF_CALL_ARPTABLES,
4740f963b75SNikolay Aleksandrov 	IFLA_BR_VLAN_DEFAULT_PVID,
47512a0faa3SNicolas Dichtel 	IFLA_BR_PAD,
4766dada9b1SNikolay Aleksandrov 	IFLA_BR_VLAN_STATS_ENABLED,
4771080ab95SNikolay Aleksandrov 	IFLA_BR_MCAST_STATS_ENABLED,
4785e923585SNikolay Aleksandrov 	IFLA_BR_MCAST_IGMP_VERSION,
479aa2ae3e7SNikolay Aleksandrov 	IFLA_BR_MCAST_MLD_VERSION,
4809163a0fcSNikolay Aleksandrov 	IFLA_BR_VLAN_STATS_PER_PORT,
481a428afe8SNikolay Aleksandrov 	IFLA_BR_MULTI_BOOLOPT,
482e5c3ea5cSJiri Pirko 	__IFLA_BR_MAX,
483e5c3ea5cSJiri Pirko };
484e5c3ea5cSJiri Pirko 
485e5c3ea5cSJiri Pirko #define IFLA_BR_MAX	(__IFLA_BR_MAX - 1)
486e5c3ea5cSJiri Pirko 
4875127c81fSNikolay Aleksandrov struct ifla_bridge_id {
4885127c81fSNikolay Aleksandrov 	__u8	prio[2];
4895127c81fSNikolay Aleksandrov 	__u8	addr[6]; /* ETH_ALEN */
4905127c81fSNikolay Aleksandrov };
4915127c81fSNikolay Aleksandrov 
49225c71c75Sstephen hemminger enum {
49325c71c75Sstephen hemminger 	BRIDGE_MODE_UNSPEC,
49425c71c75Sstephen hemminger 	BRIDGE_MODE_HAIRPIN,
49525c71c75Sstephen hemminger };
49625c71c75Sstephen hemminger 
49725c71c75Sstephen hemminger enum {
49825c71c75Sstephen hemminger 	IFLA_BRPORT_UNSPEC,
49925c71c75Sstephen hemminger 	IFLA_BRPORT_STATE,	/* Spanning tree state     */
50025c71c75Sstephen hemminger 	IFLA_BRPORT_PRIORITY,	/* "             priority  */
50125c71c75Sstephen hemminger 	IFLA_BRPORT_COST,	/* "             cost      */
50225c71c75Sstephen hemminger 	IFLA_BRPORT_MODE,	/* mode (hairpin)          */
503a2e01a65Sstephen hemminger 	IFLA_BRPORT_GUARD,	/* bpdu guard              */
5041007dd1aSstephen hemminger 	IFLA_BRPORT_PROTECT,	/* root port protection    */
505c2d3babfSDavid S. Miller 	IFLA_BRPORT_FAST_LEAVE,	/* multicast fast leave    */
5069ba18891SVlad Yasevich 	IFLA_BRPORT_LEARNING,	/* mac learning */
507867a5943SVlad Yasevich 	IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
50895850116SKyeyoon Park 	IFLA_BRPORT_PROXYARP,	/* proxy ARP */
509efacacdaSScott Feldman 	IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
510842a9ae0SJouni Malinen 	IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
5114ebc7660SNikolay Aleksandrov 	IFLA_BRPORT_ROOT_ID,	/* designated root */
51280df9a26SNikolay Aleksandrov 	IFLA_BRPORT_BRIDGE_ID,	/* designated bridge */
51396f94e7fSNikolay Aleksandrov 	IFLA_BRPORT_DESIGNATED_PORT,
51496f94e7fSNikolay Aleksandrov 	IFLA_BRPORT_DESIGNATED_COST,
51542d452c4SNikolay Aleksandrov 	IFLA_BRPORT_ID,
51642d452c4SNikolay Aleksandrov 	IFLA_BRPORT_NO,
517e08e838aSNikolay Aleksandrov 	IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,
518e08e838aSNikolay Aleksandrov 	IFLA_BRPORT_CONFIG_PENDING,
51961c0a9a8SNikolay Aleksandrov 	IFLA_BRPORT_MESSAGE_AGE_TIMER,
52061c0a9a8SNikolay Aleksandrov 	IFLA_BRPORT_FORWARD_DELAY_TIMER,
52161c0a9a8SNikolay Aleksandrov 	IFLA_BRPORT_HOLD_TIMER,
5229b0c6e4dSNikolay Aleksandrov 	IFLA_BRPORT_FLUSH,
5235d6ae479SNikolay Aleksandrov 	IFLA_BRPORT_MULTICAST_ROUTER,
52412a0faa3SNicolas Dichtel 	IFLA_BRPORT_PAD,
525b6cb5ac8SNikolay Aleksandrov 	IFLA_BRPORT_MCAST_FLOOD,
5266db6f0eaSFelix Fietkau 	IFLA_BRPORT_MCAST_TO_UCAST,
527b3c7ef0aSRoopa Prabhu 	IFLA_BRPORT_VLAN_TUNNEL,
52899f906e9SMike Manning 	IFLA_BRPORT_BCAST_FLOOD,
5295af48b59SNikolay Aleksandrov 	IFLA_BRPORT_GROUP_FWD_MASK,
530821f1b21SRoopa Prabhu 	IFLA_BRPORT_NEIGH_SUPPRESS,
5317d850abdSNikolay Aleksandrov 	IFLA_BRPORT_ISOLATED,
5322756f68cSNikolay Aleksandrov 	IFLA_BRPORT_BACKUP_PORT,
5333e54442cSHoratiu Vultur 	IFLA_BRPORT_MRP_RING_OPEN,
534ffb3adbaSHoratiu Vultur 	IFLA_BRPORT_MRP_IN_OPEN,
5352dba407fSNikolay Aleksandrov 	IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
5362dba407fSNikolay Aleksandrov 	IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
53725c71c75Sstephen hemminger 	__IFLA_BRPORT_MAX
53825c71c75Sstephen hemminger };
53925c71c75Sstephen hemminger #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
54025c71c75Sstephen hemminger 
541607ca46eSDavid Howells struct ifla_cacheinfo {
542607ca46eSDavid Howells 	__u32	max_reasm_len;
543607ca46eSDavid Howells 	__u32	tstamp;		/* ipv6InterfaceTable updated timestamp */
544607ca46eSDavid Howells 	__u32	reachable_time;
545607ca46eSDavid Howells 	__u32	retrans_time;
546607ca46eSDavid Howells };
547607ca46eSDavid Howells 
548607ca46eSDavid Howells enum {
549607ca46eSDavid Howells 	IFLA_INFO_UNSPEC,
550607ca46eSDavid Howells 	IFLA_INFO_KIND,
551607ca46eSDavid Howells 	IFLA_INFO_DATA,
552607ca46eSDavid Howells 	IFLA_INFO_XSTATS,
553ba7d49b1SJiri Pirko 	IFLA_INFO_SLAVE_KIND,
554ba7d49b1SJiri Pirko 	IFLA_INFO_SLAVE_DATA,
555607ca46eSDavid Howells 	__IFLA_INFO_MAX,
556607ca46eSDavid Howells };
557607ca46eSDavid Howells 
558607ca46eSDavid Howells #define IFLA_INFO_MAX	(__IFLA_INFO_MAX - 1)
559607ca46eSDavid Howells 
560607ca46eSDavid Howells /* VLAN section */
561607ca46eSDavid Howells 
562607ca46eSDavid Howells enum {
563607ca46eSDavid Howells 	IFLA_VLAN_UNSPEC,
564607ca46eSDavid Howells 	IFLA_VLAN_ID,
565607ca46eSDavid Howells 	IFLA_VLAN_FLAGS,
566607ca46eSDavid Howells 	IFLA_VLAN_EGRESS_QOS,
567607ca46eSDavid Howells 	IFLA_VLAN_INGRESS_QOS,
5688ad227ffSPatrick McHardy 	IFLA_VLAN_PROTOCOL,
569607ca46eSDavid Howells 	__IFLA_VLAN_MAX,
570607ca46eSDavid Howells };
571607ca46eSDavid Howells 
572607ca46eSDavid Howells #define IFLA_VLAN_MAX	(__IFLA_VLAN_MAX - 1)
573607ca46eSDavid Howells 
574607ca46eSDavid Howells struct ifla_vlan_flags {
575607ca46eSDavid Howells 	__u32	flags;
576607ca46eSDavid Howells 	__u32	mask;
577607ca46eSDavid Howells };
578607ca46eSDavid Howells 
579607ca46eSDavid Howells enum {
580607ca46eSDavid Howells 	IFLA_VLAN_QOS_UNSPEC,
581607ca46eSDavid Howells 	IFLA_VLAN_QOS_MAPPING,
582607ca46eSDavid Howells 	__IFLA_VLAN_QOS_MAX
583607ca46eSDavid Howells };
584607ca46eSDavid Howells 
585607ca46eSDavid Howells #define IFLA_VLAN_QOS_MAX	(__IFLA_VLAN_QOS_MAX - 1)
586607ca46eSDavid Howells 
587607ca46eSDavid Howells struct ifla_vlan_qos_mapping {
588607ca46eSDavid Howells 	__u32 from;
589607ca46eSDavid Howells 	__u32 to;
590607ca46eSDavid Howells };
591607ca46eSDavid Howells 
592607ca46eSDavid Howells /* MACVLAN section */
593607ca46eSDavid Howells enum {
594607ca46eSDavid Howells 	IFLA_MACVLAN_UNSPEC,
595607ca46eSDavid Howells 	IFLA_MACVLAN_MODE,
596607ca46eSDavid Howells 	IFLA_MACVLAN_FLAGS,
59779cf79abSMichael Braun 	IFLA_MACVLAN_MACADDR_MODE,
59879cf79abSMichael Braun 	IFLA_MACVLAN_MACADDR,
59979cf79abSMichael Braun 	IFLA_MACVLAN_MACADDR_DATA,
60079cf79abSMichael Braun 	IFLA_MACVLAN_MACADDR_COUNT,
601d4bff72cSThomas Karlsson 	IFLA_MACVLAN_BC_QUEUE_LEN,
602d4bff72cSThomas Karlsson 	IFLA_MACVLAN_BC_QUEUE_LEN_USED,
603607ca46eSDavid Howells 	__IFLA_MACVLAN_MAX,
604607ca46eSDavid Howells };
605607ca46eSDavid Howells 
606607ca46eSDavid Howells #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
607607ca46eSDavid Howells 
608607ca46eSDavid Howells enum macvlan_mode {
609607ca46eSDavid Howells 	MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
610607ca46eSDavid Howells 	MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
611607ca46eSDavid Howells 	MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
612607ca46eSDavid Howells 	MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
61379cf79abSMichael Braun 	MACVLAN_MODE_SOURCE  = 16,/* use source MAC address list to assign */
61479cf79abSMichael Braun };
61579cf79abSMichael Braun 
61679cf79abSMichael Braun enum macvlan_macaddr_mode {
61779cf79abSMichael Braun 	MACVLAN_MACADDR_ADD,
61879cf79abSMichael Braun 	MACVLAN_MACADDR_DEL,
61979cf79abSMichael Braun 	MACVLAN_MACADDR_FLUSH,
62079cf79abSMichael Braun 	MACVLAN_MACADDR_SET,
621607ca46eSDavid Howells };
622607ca46eSDavid Howells 
623607ca46eSDavid Howells #define MACVLAN_FLAG_NOPROMISC	1
624427f0c8cSJethro Beekman #define MACVLAN_FLAG_NODST	2 /* skip dst macvlan if matching src macvlan */
625607ca46eSDavid Howells 
6264e3c8992SDavid Ahern /* VRF section */
6274e3c8992SDavid Ahern enum {
6284e3c8992SDavid Ahern 	IFLA_VRF_UNSPEC,
6294e3c8992SDavid Ahern 	IFLA_VRF_TABLE,
6304e3c8992SDavid Ahern 	__IFLA_VRF_MAX
6314e3c8992SDavid Ahern };
6324e3c8992SDavid Ahern 
6334e3c8992SDavid Ahern #define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
6344e3c8992SDavid Ahern 
63567eb0331SDavid Ahern enum {
63667eb0331SDavid Ahern 	IFLA_VRF_PORT_UNSPEC,
63767eb0331SDavid Ahern 	IFLA_VRF_PORT_TABLE,
63867eb0331SDavid Ahern 	__IFLA_VRF_PORT_MAX
63967eb0331SDavid Ahern };
64067eb0331SDavid Ahern 
64167eb0331SDavid Ahern #define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
64267eb0331SDavid Ahern 
643dece8d2bSSabrina Dubroca /* MACSEC section */
644dece8d2bSSabrina Dubroca enum {
645dece8d2bSSabrina Dubroca 	IFLA_MACSEC_UNSPEC,
646dece8d2bSSabrina Dubroca 	IFLA_MACSEC_SCI,
647dece8d2bSSabrina Dubroca 	IFLA_MACSEC_PORT,
648dece8d2bSSabrina Dubroca 	IFLA_MACSEC_ICV_LEN,
649dece8d2bSSabrina Dubroca 	IFLA_MACSEC_CIPHER_SUITE,
650dece8d2bSSabrina Dubroca 	IFLA_MACSEC_WINDOW,
651dece8d2bSSabrina Dubroca 	IFLA_MACSEC_ENCODING_SA,
652dece8d2bSSabrina Dubroca 	IFLA_MACSEC_ENCRYPT,
653dece8d2bSSabrina Dubroca 	IFLA_MACSEC_PROTECT,
654dece8d2bSSabrina Dubroca 	IFLA_MACSEC_INC_SCI,
655dece8d2bSSabrina Dubroca 	IFLA_MACSEC_ES,
656dece8d2bSSabrina Dubroca 	IFLA_MACSEC_SCB,
657dece8d2bSSabrina Dubroca 	IFLA_MACSEC_REPLAY_PROTECT,
658dece8d2bSSabrina Dubroca 	IFLA_MACSEC_VALIDATION,
659f60d94c0SNicolas Dichtel 	IFLA_MACSEC_PAD,
660791bb3fcSMark Starovoytov 	IFLA_MACSEC_OFFLOAD,
661dece8d2bSSabrina Dubroca 	__IFLA_MACSEC_MAX,
662dece8d2bSSabrina Dubroca };
663dece8d2bSSabrina Dubroca 
664dece8d2bSSabrina Dubroca #define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
665dece8d2bSSabrina Dubroca 
666f203b76dSSteffen Klassert /* XFRM section */
667f203b76dSSteffen Klassert enum {
668f203b76dSSteffen Klassert 	IFLA_XFRM_UNSPEC,
669f203b76dSSteffen Klassert 	IFLA_XFRM_LINK,
670f203b76dSSteffen Klassert 	IFLA_XFRM_IF_ID,
671f203b76dSSteffen Klassert 	__IFLA_XFRM_MAX
672f203b76dSSteffen Klassert };
673f203b76dSSteffen Klassert 
674f203b76dSSteffen Klassert #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
675f203b76dSSteffen Klassert 
676dece8d2bSSabrina Dubroca enum macsec_validation_type {
677dece8d2bSSabrina Dubroca 	MACSEC_VALIDATE_DISABLED = 0,
678dece8d2bSSabrina Dubroca 	MACSEC_VALIDATE_CHECK = 1,
679dece8d2bSSabrina Dubroca 	MACSEC_VALIDATE_STRICT = 2,
680dece8d2bSSabrina Dubroca 	__MACSEC_VALIDATE_END,
681dece8d2bSSabrina Dubroca 	MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
682dece8d2bSSabrina Dubroca };
683dece8d2bSSabrina Dubroca 
68476564261SAntoine Tenart enum macsec_offload {
68576564261SAntoine Tenart 	MACSEC_OFFLOAD_OFF = 0,
68676564261SAntoine Tenart 	MACSEC_OFFLOAD_PHY = 1,
68721114b7fSAntoine Tenart 	MACSEC_OFFLOAD_MAC = 2,
68876564261SAntoine Tenart 	__MACSEC_OFFLOAD_END,
68976564261SAntoine Tenart 	MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1,
69076564261SAntoine Tenart };
69176564261SAntoine Tenart 
6922ad7bf36SMahesh Bandewar /* IPVLAN section */
6932ad7bf36SMahesh Bandewar enum {
6942ad7bf36SMahesh Bandewar 	IFLA_IPVLAN_UNSPEC,
6952ad7bf36SMahesh Bandewar 	IFLA_IPVLAN_MODE,
696a190d04dSMahesh Bandewar 	IFLA_IPVLAN_FLAGS,
6972ad7bf36SMahesh Bandewar 	__IFLA_IPVLAN_MAX
6982ad7bf36SMahesh Bandewar };
6992ad7bf36SMahesh Bandewar 
7002ad7bf36SMahesh Bandewar #define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
7012ad7bf36SMahesh Bandewar 
7022ad7bf36SMahesh Bandewar enum ipvlan_mode {
7032ad7bf36SMahesh Bandewar 	IPVLAN_MODE_L2 = 0,
7042ad7bf36SMahesh Bandewar 	IPVLAN_MODE_L3,
7054fbae7d8SMahesh Bandewar 	IPVLAN_MODE_L3S,
7062ad7bf36SMahesh Bandewar 	IPVLAN_MODE_MAX
7072ad7bf36SMahesh Bandewar };
7082ad7bf36SMahesh Bandewar 
709a190d04dSMahesh Bandewar #define IPVLAN_F_PRIVATE	0x01
710fe89aa6bSMahesh Bandewar #define IPVLAN_F_VEPA		0x02
711a190d04dSMahesh Bandewar 
712607ca46eSDavid Howells /* VXLAN section */
713607ca46eSDavid Howells enum {
714607ca46eSDavid Howells 	IFLA_VXLAN_UNSPEC,
715607ca46eSDavid Howells 	IFLA_VXLAN_ID,
7165d174dd8Sstephen hemminger 	IFLA_VXLAN_GROUP,	/* group or remote address */
717607ca46eSDavid Howells 	IFLA_VXLAN_LINK,
718607ca46eSDavid Howells 	IFLA_VXLAN_LOCAL,
719607ca46eSDavid Howells 	IFLA_VXLAN_TTL,
720607ca46eSDavid Howells 	IFLA_VXLAN_TOS,
721607ca46eSDavid Howells 	IFLA_VXLAN_LEARNING,
722607ca46eSDavid Howells 	IFLA_VXLAN_AGEING,
723607ca46eSDavid Howells 	IFLA_VXLAN_LIMIT,
724823aa873Sstephen hemminger 	IFLA_VXLAN_PORT_RANGE,	/* source port */
725e4f67addSDavid Stevens 	IFLA_VXLAN_PROXY,
726e4f67addSDavid Stevens 	IFLA_VXLAN_RSC,
727e4f67addSDavid Stevens 	IFLA_VXLAN_L2MISS,
728e4f67addSDavid Stevens 	IFLA_VXLAN_L3MISS,
729823aa873Sstephen hemminger 	IFLA_VXLAN_PORT,	/* destination port */
730e4c7ed41SCong Wang 	IFLA_VXLAN_GROUP6,
731e4c7ed41SCong Wang 	IFLA_VXLAN_LOCAL6,
732359a0ea9STom Herbert 	IFLA_VXLAN_UDP_CSUM,
733359a0ea9STom Herbert 	IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
734359a0ea9STom Herbert 	IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
735dfd8645eSTom Herbert 	IFLA_VXLAN_REMCSUM_TX,
736dfd8645eSTom Herbert 	IFLA_VXLAN_REMCSUM_RX,
7373511494cSThomas Graf 	IFLA_VXLAN_GBP,
7380ace2ca8STom Herbert 	IFLA_VXLAN_REMCSUM_NOPARTIAL,
739f8a9b1bcSAlexei Starovoitov 	IFLA_VXLAN_COLLECT_METADATA,
740e7f70af1SDaniel Borkmann 	IFLA_VXLAN_LABEL,
741e1e5314dSJiri Benc 	IFLA_VXLAN_GPE,
74272f6d71eSHangbin Liu 	IFLA_VXLAN_TTL_INHERIT,
743b4d30697SStefano Brivio 	IFLA_VXLAN_DF,
744607ca46eSDavid Howells 	__IFLA_VXLAN_MAX
745607ca46eSDavid Howells };
746607ca46eSDavid Howells #define IFLA_VXLAN_MAX	(__IFLA_VXLAN_MAX - 1)
747607ca46eSDavid Howells 
748607ca46eSDavid Howells struct ifla_vxlan_port_range {
749607ca46eSDavid Howells 	__be16	low;
750607ca46eSDavid Howells 	__be16	high;
751607ca46eSDavid Howells };
752607ca46eSDavid Howells 
753b4d30697SStefano Brivio enum ifla_vxlan_df {
754b4d30697SStefano Brivio 	VXLAN_DF_UNSET = 0,
755b4d30697SStefano Brivio 	VXLAN_DF_SET,
756b4d30697SStefano Brivio 	VXLAN_DF_INHERIT,
757b4d30697SStefano Brivio 	__VXLAN_DF_END,
758b4d30697SStefano Brivio 	VXLAN_DF_MAX = __VXLAN_DF_END - 1,
759b4d30697SStefano Brivio };
760b4d30697SStefano Brivio 
7612d07dc79SJohn W. Linville /* GENEVE section */
7622d07dc79SJohn W. Linville enum {
7632d07dc79SJohn W. Linville 	IFLA_GENEVE_UNSPEC,
7642d07dc79SJohn W. Linville 	IFLA_GENEVE_ID,
7652d07dc79SJohn W. Linville 	IFLA_GENEVE_REMOTE,
7668760ce58SJohn W. Linville 	IFLA_GENEVE_TTL,
767d8951125SJohn W. Linville 	IFLA_GENEVE_TOS,
768cd7918b3SPravin B Shelar 	IFLA_GENEVE_PORT,	/* destination port */
769e305ac6cSPravin B Shelar 	IFLA_GENEVE_COLLECT_METADATA,
7708ed66f0eSJohn W. Linville 	IFLA_GENEVE_REMOTE6,
771abe492b4STom Herbert 	IFLA_GENEVE_UDP_CSUM,
772abe492b4STom Herbert 	IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
773abe492b4STom Herbert 	IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
7748eb3b995SDaniel Borkmann 	IFLA_GENEVE_LABEL,
77552d0d404SHangbin Liu 	IFLA_GENEVE_TTL_INHERIT,
776a025fb5fSStefano Brivio 	IFLA_GENEVE_DF,
7772d07dc79SJohn W. Linville 	__IFLA_GENEVE_MAX
7782d07dc79SJohn W. Linville };
7792d07dc79SJohn W. Linville #define IFLA_GENEVE_MAX	(__IFLA_GENEVE_MAX - 1)
7802d07dc79SJohn W. Linville 
781a025fb5fSStefano Brivio enum ifla_geneve_df {
782a025fb5fSStefano Brivio 	GENEVE_DF_UNSET = 0,
783a025fb5fSStefano Brivio 	GENEVE_DF_SET,
784a025fb5fSStefano Brivio 	GENEVE_DF_INHERIT,
785a025fb5fSStefano Brivio 	__GENEVE_DF_END,
786a025fb5fSStefano Brivio 	GENEVE_DF_MAX = __GENEVE_DF_END - 1,
787a025fb5fSStefano Brivio };
788a025fb5fSStefano Brivio 
789571912c6SMartin Varghese /* Bareudp section  */
790571912c6SMartin Varghese enum {
791571912c6SMartin Varghese 	IFLA_BAREUDP_UNSPEC,
792571912c6SMartin Varghese 	IFLA_BAREUDP_PORT,
793571912c6SMartin Varghese 	IFLA_BAREUDP_ETHERTYPE,
794571912c6SMartin Varghese 	IFLA_BAREUDP_SRCPORT_MIN,
7954b5f6723SMartin Varghese 	IFLA_BAREUDP_MULTIPROTO_MODE,
796571912c6SMartin Varghese 	__IFLA_BAREUDP_MAX
797571912c6SMartin Varghese };
798571912c6SMartin Varghese 
799571912c6SMartin Varghese #define IFLA_BAREUDP_MAX (__IFLA_BAREUDP_MAX - 1)
800571912c6SMartin Varghese 
80196d934c7SGuillaume Nault /* PPP section */
80296d934c7SGuillaume Nault enum {
80396d934c7SGuillaume Nault 	IFLA_PPP_UNSPEC,
80496d934c7SGuillaume Nault 	IFLA_PPP_DEV_FD,
80596d934c7SGuillaume Nault 	__IFLA_PPP_MAX
80696d934c7SGuillaume Nault };
80796d934c7SGuillaume Nault #define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
80896d934c7SGuillaume Nault 
809459aa660SPablo Neira /* GTP section */
81091ed81f9SJonas Bonn 
81191ed81f9SJonas Bonn enum ifla_gtp_role {
81291ed81f9SJonas Bonn 	GTP_ROLE_GGSN = 0,
81391ed81f9SJonas Bonn 	GTP_ROLE_SGSN,
81491ed81f9SJonas Bonn };
81591ed81f9SJonas Bonn 
816459aa660SPablo Neira enum {
817459aa660SPablo Neira 	IFLA_GTP_UNSPEC,
818459aa660SPablo Neira 	IFLA_GTP_FD0,
819459aa660SPablo Neira 	IFLA_GTP_FD1,
820459aa660SPablo Neira 	IFLA_GTP_PDP_HASHSIZE,
82191ed81f9SJonas Bonn 	IFLA_GTP_ROLE,
822459aa660SPablo Neira 	__IFLA_GTP_MAX,
823459aa660SPablo Neira };
824459aa660SPablo Neira #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
825459aa660SPablo Neira 
82690af2311SJiri Pirko /* Bonding section */
82790af2311SJiri Pirko 
82890af2311SJiri Pirko enum {
82990af2311SJiri Pirko 	IFLA_BOND_UNSPEC,
83090af2311SJiri Pirko 	IFLA_BOND_MODE,
831ec76aa49SJiri Pirko 	IFLA_BOND_ACTIVE_SLAVE,
832eecdaa6eSsfeldma@cumulusnetworks.com 	IFLA_BOND_MIIMON,
83325852e29Ssfeldma@cumulusnetworks.com 	IFLA_BOND_UPDELAY,
834c7461f9bSsfeldma@cumulusnetworks.com 	IFLA_BOND_DOWNDELAY,
8359f53e14eSsfeldma@cumulusnetworks.com 	IFLA_BOND_USE_CARRIER,
83606151dbcSsfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_INTERVAL,
8377f28fa10Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_IP_TARGET,
83829c49482Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_VALIDATE,
839d5c84254Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_ALL_TARGETS,
8400a98a0d1Ssfeldma@cumulusnetworks.com 	IFLA_BOND_PRIMARY,
8418a41ae44Ssfeldma@cumulusnetworks.com 	IFLA_BOND_PRIMARY_RESELECT,
84289901972Ssfeldma@cumulusnetworks.com 	IFLA_BOND_FAIL_OVER_MAC,
843f70161c6Ssfeldma@cumulusnetworks.com 	IFLA_BOND_XMIT_HASH_POLICY,
844d8838de7Ssfeldma@cumulusnetworks.com 	IFLA_BOND_RESEND_IGMP,
8452c9839c1Ssfeldma@cumulusnetworks.com 	IFLA_BOND_NUM_PEER_NOTIF,
8461cc0b1e3Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ALL_SLAVES_ACTIVE,
8477d101008Ssfeldma@cumulusnetworks.com 	IFLA_BOND_MIN_LINKS,
8488d836d09Ssfeldma@cumulusnetworks.com 	IFLA_BOND_LP_INTERVAL,
849c13ab3ffSsfeldma@cumulusnetworks.com 	IFLA_BOND_PACKETS_PER_SLAVE,
850998e40bbSsfeldma@cumulusnetworks.com 	IFLA_BOND_AD_LACP_RATE,
851ec029facSsfeldma@cumulusnetworks.com 	IFLA_BOND_AD_SELECT,
8524ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO,
853171a42c3SAndy Gospodarek 	IFLA_BOND_AD_ACTOR_SYS_PRIO,
854171a42c3SAndy Gospodarek 	IFLA_BOND_AD_USER_PORT_KEY,
855171a42c3SAndy Gospodarek 	IFLA_BOND_AD_ACTOR_SYSTEM,
8560f7bffd9SNikolay Aleksandrov 	IFLA_BOND_TLB_DYNAMIC_LB,
85707a4ddecSVincent Bernat 	IFLA_BOND_PEER_NOTIF_DELAY,
85890af2311SJiri Pirko 	__IFLA_BOND_MAX,
85990af2311SJiri Pirko };
86090af2311SJiri Pirko 
86190af2311SJiri Pirko #define IFLA_BOND_MAX	(__IFLA_BOND_MAX - 1)
86290af2311SJiri Pirko 
8634ee7ac75Ssfeldma@cumulusnetworks.com enum {
864237266f7SJiri Pirko 	IFLA_BOND_AD_INFO_UNSPEC,
8654ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_AGGREGATOR,
8664ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_NUM_PORTS,
8674ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_ACTOR_KEY,
8684ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_PARTNER_KEY,
8694ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_PARTNER_MAC,
8704ee7ac75Ssfeldma@cumulusnetworks.com 	__IFLA_BOND_AD_INFO_MAX,
8714ee7ac75Ssfeldma@cumulusnetworks.com };
8724ee7ac75Ssfeldma@cumulusnetworks.com 
8734ee7ac75Ssfeldma@cumulusnetworks.com #define IFLA_BOND_AD_INFO_MAX	(__IFLA_BOND_AD_INFO_MAX - 1)
8744ee7ac75Ssfeldma@cumulusnetworks.com 
8751d3ee88aSsfeldma@cumulusnetworks.com enum {
876df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_UNSPEC,
877df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_STATE,
878df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_MII_STATUS,
879df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
880df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_PERM_HWADDR,
881df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_QUEUE_ID,
882df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
883254cb6dbSNikolay Aleksandrov 	IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
88446ea297eSNikolay Aleksandrov 	IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
885df7dbcbbSJiri Pirko 	__IFLA_BOND_SLAVE_MAX,
8861d3ee88aSsfeldma@cumulusnetworks.com };
8871d3ee88aSsfeldma@cumulusnetworks.com 
888df7dbcbbSJiri Pirko #define IFLA_BOND_SLAVE_MAX	(__IFLA_BOND_SLAVE_MAX - 1)
8891d3ee88aSsfeldma@cumulusnetworks.com 
890607ca46eSDavid Howells /* SR-IOV virtual function management section */
891607ca46eSDavid Howells 
892607ca46eSDavid Howells enum {
893607ca46eSDavid Howells 	IFLA_VF_INFO_UNSPEC,
894607ca46eSDavid Howells 	IFLA_VF_INFO,
895607ca46eSDavid Howells 	__IFLA_VF_INFO_MAX,
896607ca46eSDavid Howells };
897607ca46eSDavid Howells 
898607ca46eSDavid Howells #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
899607ca46eSDavid Howells 
900607ca46eSDavid Howells enum {
901607ca46eSDavid Howells 	IFLA_VF_UNSPEC,
902607ca46eSDavid Howells 	IFLA_VF_MAC,		/* Hardware queue specific attributes */
90379aab093SMoshe Shemesh 	IFLA_VF_VLAN,		/* VLAN ID and QoS */
904ed616689SSucheta Chakraborty 	IFLA_VF_TX_RATE,	/* Max TX Bandwidth Allocation */
905607ca46eSDavid Howells 	IFLA_VF_SPOOFCHK,	/* Spoof Checking on/off switch */
9061d8faf48SRony Efraim 	IFLA_VF_LINK_STATE,	/* link state enable/disable/auto switch */
907ed616689SSucheta Chakraborty 	IFLA_VF_RATE,		/* Min and Max TX Bandwidth Allocation */
90801a3d796SVlad Zolotarov 	IFLA_VF_RSS_QUERY_EN,	/* RSS Redirection Table and Hash Key query
90901a3d796SVlad Zolotarov 				 * on/off switch
91001a3d796SVlad Zolotarov 				 */
9113b766cd8SEran Ben Elisha 	IFLA_VF_STATS,		/* network device statistics */
912dd461d6aSHiroshi Shimamoto 	IFLA_VF_TRUST,		/* Trust VF */
913cc8e27ccSEli Cohen 	IFLA_VF_IB_NODE_GUID,	/* VF Infiniband node GUID */
914cc8e27ccSEli Cohen 	IFLA_VF_IB_PORT_GUID,	/* VF Infiniband port GUID */
91579aab093SMoshe Shemesh 	IFLA_VF_VLAN_LIST,	/* nested list of vlans, option for QinQ */
91675345f88SDenis Kirjanov 	IFLA_VF_BROADCAST,	/* VF broadcast */
917607ca46eSDavid Howells 	__IFLA_VF_MAX,
918607ca46eSDavid Howells };
919607ca46eSDavid Howells 
920607ca46eSDavid Howells #define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
921607ca46eSDavid Howells 
922607ca46eSDavid Howells struct ifla_vf_mac {
923607ca46eSDavid Howells 	__u32 vf;
924607ca46eSDavid Howells 	__u8 mac[32]; /* MAX_ADDR_LEN */
925607ca46eSDavid Howells };
926607ca46eSDavid Howells 
92775345f88SDenis Kirjanov struct ifla_vf_broadcast {
92875345f88SDenis Kirjanov 	__u8 broadcast[32];
92975345f88SDenis Kirjanov };
93075345f88SDenis Kirjanov 
931607ca46eSDavid Howells struct ifla_vf_vlan {
932607ca46eSDavid Howells 	__u32 vf;
933607ca46eSDavid Howells 	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
934607ca46eSDavid Howells 	__u32 qos;
935607ca46eSDavid Howells };
936607ca46eSDavid Howells 
93779aab093SMoshe Shemesh enum {
93879aab093SMoshe Shemesh 	IFLA_VF_VLAN_INFO_UNSPEC,
93979aab093SMoshe Shemesh 	IFLA_VF_VLAN_INFO,	/* VLAN ID, QoS and VLAN protocol */
94079aab093SMoshe Shemesh 	__IFLA_VF_VLAN_INFO_MAX,
94179aab093SMoshe Shemesh };
94279aab093SMoshe Shemesh 
94379aab093SMoshe Shemesh #define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
94479aab093SMoshe Shemesh #define MAX_VLAN_LIST_LEN 1
94579aab093SMoshe Shemesh 
94679aab093SMoshe Shemesh struct ifla_vf_vlan_info {
94779aab093SMoshe Shemesh 	__u32 vf;
94879aab093SMoshe Shemesh 	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
94979aab093SMoshe Shemesh 	__u32 qos;
95079aab093SMoshe Shemesh 	__be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
95179aab093SMoshe Shemesh };
95279aab093SMoshe Shemesh 
953607ca46eSDavid Howells struct ifla_vf_tx_rate {
954607ca46eSDavid Howells 	__u32 vf;
955607ca46eSDavid Howells 	__u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
956607ca46eSDavid Howells };
957607ca46eSDavid Howells 
958ed616689SSucheta Chakraborty struct ifla_vf_rate {
959ed616689SSucheta Chakraborty 	__u32 vf;
960ed616689SSucheta Chakraborty 	__u32 min_tx_rate; /* Min Bandwidth in Mbps */
961ed616689SSucheta Chakraborty 	__u32 max_tx_rate; /* Max Bandwidth in Mbps */
962ed616689SSucheta Chakraborty };
963ed616689SSucheta Chakraborty 
964607ca46eSDavid Howells struct ifla_vf_spoofchk {
965607ca46eSDavid Howells 	__u32 vf;
966607ca46eSDavid Howells 	__u32 setting;
967607ca46eSDavid Howells };
968607ca46eSDavid Howells 
969cc8e27ccSEli Cohen struct ifla_vf_guid {
970cc8e27ccSEli Cohen 	__u32 vf;
971cc8e27ccSEli Cohen 	__u64 guid;
972cc8e27ccSEli Cohen };
973cc8e27ccSEli Cohen 
9741d8faf48SRony Efraim enum {
9751d8faf48SRony Efraim 	IFLA_VF_LINK_STATE_AUTO,	/* link state of the uplink */
9761d8faf48SRony Efraim 	IFLA_VF_LINK_STATE_ENABLE,	/* link always up */
9771d8faf48SRony Efraim 	IFLA_VF_LINK_STATE_DISABLE,	/* link always down */
9781d8faf48SRony Efraim 	__IFLA_VF_LINK_STATE_MAX,
9791d8faf48SRony Efraim };
9801d8faf48SRony Efraim 
9811d8faf48SRony Efraim struct ifla_vf_link_state {
9821d8faf48SRony Efraim 	__u32 vf;
9831d8faf48SRony Efraim 	__u32 link_state;
9841d8faf48SRony Efraim };
9851d8faf48SRony Efraim 
98601a3d796SVlad Zolotarov struct ifla_vf_rss_query_en {
98701a3d796SVlad Zolotarov 	__u32 vf;
98801a3d796SVlad Zolotarov 	__u32 setting;
98901a3d796SVlad Zolotarov };
99001a3d796SVlad Zolotarov 
9913b766cd8SEran Ben Elisha enum {
9923b766cd8SEran Ben Elisha 	IFLA_VF_STATS_RX_PACKETS,
9933b766cd8SEran Ben Elisha 	IFLA_VF_STATS_TX_PACKETS,
9943b766cd8SEran Ben Elisha 	IFLA_VF_STATS_RX_BYTES,
9953b766cd8SEran Ben Elisha 	IFLA_VF_STATS_TX_BYTES,
9963b766cd8SEran Ben Elisha 	IFLA_VF_STATS_BROADCAST,
9973b766cd8SEran Ben Elisha 	IFLA_VF_STATS_MULTICAST,
998343a6d8eSNicolas Dichtel 	IFLA_VF_STATS_PAD,
999c5a9f6f0SEugenia Emantayev 	IFLA_VF_STATS_RX_DROPPED,
1000c5a9f6f0SEugenia Emantayev 	IFLA_VF_STATS_TX_DROPPED,
10013b766cd8SEran Ben Elisha 	__IFLA_VF_STATS_MAX,
10023b766cd8SEran Ben Elisha };
10033b766cd8SEran Ben Elisha 
10043b766cd8SEran Ben Elisha #define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
10053b766cd8SEran Ben Elisha 
1006dd461d6aSHiroshi Shimamoto struct ifla_vf_trust {
1007dd461d6aSHiroshi Shimamoto 	__u32 vf;
1008dd461d6aSHiroshi Shimamoto 	__u32 setting;
1009dd461d6aSHiroshi Shimamoto };
1010dd461d6aSHiroshi Shimamoto 
1011607ca46eSDavid Howells /* VF ports management section
1012607ca46eSDavid Howells  *
1013607ca46eSDavid Howells  *	Nested layout of set/get msg is:
1014607ca46eSDavid Howells  *
1015607ca46eSDavid Howells  *		[IFLA_NUM_VF]
1016607ca46eSDavid Howells  *		[IFLA_VF_PORTS]
1017607ca46eSDavid Howells  *			[IFLA_VF_PORT]
1018607ca46eSDavid Howells  *				[IFLA_PORT_*], ...
1019607ca46eSDavid Howells  *			[IFLA_VF_PORT]
1020607ca46eSDavid Howells  *				[IFLA_PORT_*], ...
1021607ca46eSDavid Howells  *			...
1022607ca46eSDavid Howells  *		[IFLA_PORT_SELF]
1023607ca46eSDavid Howells  *			[IFLA_PORT_*], ...
1024607ca46eSDavid Howells  */
1025607ca46eSDavid Howells 
1026607ca46eSDavid Howells enum {
1027607ca46eSDavid Howells 	IFLA_VF_PORT_UNSPEC,
1028607ca46eSDavid Howells 	IFLA_VF_PORT,			/* nest */
1029607ca46eSDavid Howells 	__IFLA_VF_PORT_MAX,
1030607ca46eSDavid Howells };
1031607ca46eSDavid Howells 
1032607ca46eSDavid Howells #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
1033607ca46eSDavid Howells 
1034607ca46eSDavid Howells enum {
1035607ca46eSDavid Howells 	IFLA_PORT_UNSPEC,
1036607ca46eSDavid Howells 	IFLA_PORT_VF,			/* __u32 */
1037607ca46eSDavid Howells 	IFLA_PORT_PROFILE,		/* string */
1038607ca46eSDavid Howells 	IFLA_PORT_VSI_TYPE,		/* 802.1Qbg (pre-)standard VDP */
1039607ca46eSDavid Howells 	IFLA_PORT_INSTANCE_UUID,	/* binary UUID */
1040607ca46eSDavid Howells 	IFLA_PORT_HOST_UUID,		/* binary UUID */
1041607ca46eSDavid Howells 	IFLA_PORT_REQUEST,		/* __u8 */
1042607ca46eSDavid Howells 	IFLA_PORT_RESPONSE,		/* __u16, output only */
1043607ca46eSDavid Howells 	__IFLA_PORT_MAX,
1044607ca46eSDavid Howells };
1045607ca46eSDavid Howells 
1046607ca46eSDavid Howells #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
1047607ca46eSDavid Howells 
1048607ca46eSDavid Howells #define PORT_PROFILE_MAX	40
1049607ca46eSDavid Howells #define PORT_UUID_MAX		16
1050607ca46eSDavid Howells #define PORT_SELF_VF		-1
1051607ca46eSDavid Howells 
1052607ca46eSDavid Howells enum {
1053607ca46eSDavid Howells 	PORT_REQUEST_PREASSOCIATE = 0,
1054607ca46eSDavid Howells 	PORT_REQUEST_PREASSOCIATE_RR,
1055607ca46eSDavid Howells 	PORT_REQUEST_ASSOCIATE,
1056607ca46eSDavid Howells 	PORT_REQUEST_DISASSOCIATE,
1057607ca46eSDavid Howells };
1058607ca46eSDavid Howells 
1059607ca46eSDavid Howells enum {
1060607ca46eSDavid Howells 	PORT_VDP_RESPONSE_SUCCESS = 0,
1061607ca46eSDavid Howells 	PORT_VDP_RESPONSE_INVALID_FORMAT,
1062607ca46eSDavid Howells 	PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
1063607ca46eSDavid Howells 	PORT_VDP_RESPONSE_UNUSED_VTID,
1064607ca46eSDavid Howells 	PORT_VDP_RESPONSE_VTID_VIOLATION,
1065607ca46eSDavid Howells 	PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
1066607ca46eSDavid Howells 	PORT_VDP_RESPONSE_OUT_OF_SYNC,
1067607ca46eSDavid Howells 	/* 0x08-0xFF reserved for future VDP use */
1068607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
1069607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_INPROGRESS,
1070607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_INVALID,
1071607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_BADSTATE,
1072607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
1073607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_ERROR,
1074607ca46eSDavid Howells };
1075607ca46eSDavid Howells 
1076607ca46eSDavid Howells struct ifla_port_vsi {
1077607ca46eSDavid Howells 	__u8 vsi_mgr_id;
1078607ca46eSDavid Howells 	__u8 vsi_type_id[3];
1079607ca46eSDavid Howells 	__u8 vsi_type_version;
1080607ca46eSDavid Howells 	__u8 pad[3];
1081607ca46eSDavid Howells };
1082607ca46eSDavid Howells 
1083607ca46eSDavid Howells 
1084607ca46eSDavid Howells /* IPoIB section */
1085607ca46eSDavid Howells 
1086607ca46eSDavid Howells enum {
1087607ca46eSDavid Howells 	IFLA_IPOIB_UNSPEC,
1088607ca46eSDavid Howells 	IFLA_IPOIB_PKEY,
1089607ca46eSDavid Howells 	IFLA_IPOIB_MODE,
1090607ca46eSDavid Howells 	IFLA_IPOIB_UMCAST,
1091607ca46eSDavid Howells 	__IFLA_IPOIB_MAX
1092607ca46eSDavid Howells };
1093607ca46eSDavid Howells 
1094607ca46eSDavid Howells enum {
1095607ca46eSDavid Howells 	IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
1096607ca46eSDavid Howells 	IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
1097607ca46eSDavid Howells };
1098607ca46eSDavid Howells 
1099607ca46eSDavid Howells #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
1100607ca46eSDavid Howells 
1101f421436aSArvid Brodin 
11028f4c0e01SMurali Karicheri /* HSR/PRP section, both uses same interface */
11038f4c0e01SMurali Karicheri 
11048f4c0e01SMurali Karicheri /* Different redundancy protocols for hsr device */
11058f4c0e01SMurali Karicheri enum {
11068f4c0e01SMurali Karicheri 	HSR_PROTOCOL_HSR,
11078f4c0e01SMurali Karicheri 	HSR_PROTOCOL_PRP,
11088f4c0e01SMurali Karicheri 	HSR_PROTOCOL_MAX,
11098f4c0e01SMurali Karicheri };
1110f421436aSArvid Brodin 
1111f421436aSArvid Brodin enum {
1112f421436aSArvid Brodin 	IFLA_HSR_UNSPEC,
1113f421436aSArvid Brodin 	IFLA_HSR_SLAVE1,
1114f421436aSArvid Brodin 	IFLA_HSR_SLAVE2,
111598bf8362SArvid Brodin 	IFLA_HSR_MULTICAST_SPEC,	/* Last byte of supervision addr */
111698bf8362SArvid Brodin 	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
111798bf8362SArvid Brodin 	IFLA_HSR_SEQ_NR,
1118b84e9307SPeter Heise 	IFLA_HSR_VERSION,		/* HSR version */
11198f4c0e01SMurali Karicheri 	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
11208f4c0e01SMurali Karicheri 					 * HSR. For example PRP.
11218f4c0e01SMurali Karicheri 					 */
1122f421436aSArvid Brodin 	__IFLA_HSR_MAX,
1123f421436aSArvid Brodin };
1124f421436aSArvid Brodin 
1125f421436aSArvid Brodin #define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
1126f421436aSArvid Brodin 
112710c9ead9SRoopa Prabhu /* STATS section */
112810c9ead9SRoopa Prabhu 
112910c9ead9SRoopa Prabhu struct if_stats_msg {
113010c9ead9SRoopa Prabhu 	__u8  family;
113110c9ead9SRoopa Prabhu 	__u8  pad1;
113210c9ead9SRoopa Prabhu 	__u16 pad2;
113310c9ead9SRoopa Prabhu 	__u32 ifindex;
113410c9ead9SRoopa Prabhu 	__u32 filter_mask;
113510c9ead9SRoopa Prabhu };
113610c9ead9SRoopa Prabhu 
113710c9ead9SRoopa Prabhu /* A stats attribute can be netdev specific or a global stat.
113810c9ead9SRoopa Prabhu  * For netdev stats, lets use the prefix IFLA_STATS_LINK_*
113910c9ead9SRoopa Prabhu  */
114010c9ead9SRoopa Prabhu enum {
114110c9ead9SRoopa Prabhu 	IFLA_STATS_UNSPEC, /* also used as 64bit pad attribute */
114210c9ead9SRoopa Prabhu 	IFLA_STATS_LINK_64,
114397a47facSNikolay Aleksandrov 	IFLA_STATS_LINK_XSTATS,
114480e73cc5SNikolay Aleksandrov 	IFLA_STATS_LINK_XSTATS_SLAVE,
114569ae6ad2SNogah Frankel 	IFLA_STATS_LINK_OFFLOAD_XSTATS,
1146aefb4d4aSRobert Shearman 	IFLA_STATS_AF_SPEC,
114710c9ead9SRoopa Prabhu 	__IFLA_STATS_MAX,
114810c9ead9SRoopa Prabhu };
114910c9ead9SRoopa Prabhu 
115010c9ead9SRoopa Prabhu #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
115110c9ead9SRoopa Prabhu 
115210c9ead9SRoopa Prabhu #define IFLA_STATS_FILTER_BIT(ATTR)	(1 << (ATTR - 1))
115310c9ead9SRoopa Prabhu 
115497a47facSNikolay Aleksandrov /* These are embedded into IFLA_STATS_LINK_XSTATS:
115597a47facSNikolay Aleksandrov  * [IFLA_STATS_LINK_XSTATS]
115697a47facSNikolay Aleksandrov  * -> [LINK_XSTATS_TYPE_xxx]
115797a47facSNikolay Aleksandrov  *    -> [rtnl link type specific attributes]
115897a47facSNikolay Aleksandrov  */
115997a47facSNikolay Aleksandrov enum {
116097a47facSNikolay Aleksandrov 	LINK_XSTATS_TYPE_UNSPEC,
1161a60c0903SNikolay Aleksandrov 	LINK_XSTATS_TYPE_BRIDGE,
1162a258aeacSNikolay Aleksandrov 	LINK_XSTATS_TYPE_BOND,
116397a47facSNikolay Aleksandrov 	__LINK_XSTATS_TYPE_MAX
116497a47facSNikolay Aleksandrov };
116597a47facSNikolay Aleksandrov #define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
116697a47facSNikolay Aleksandrov 
116769ae6ad2SNogah Frankel /* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
116869ae6ad2SNogah Frankel enum {
116969ae6ad2SNogah Frankel 	IFLA_OFFLOAD_XSTATS_UNSPEC,
117069ae6ad2SNogah Frankel 	IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
117169ae6ad2SNogah Frankel 	__IFLA_OFFLOAD_XSTATS_MAX
117269ae6ad2SNogah Frankel };
117369ae6ad2SNogah Frankel #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
117469ae6ad2SNogah Frankel 
1175d1fdd913SBrenden Blanco /* XDP section */
1176d1fdd913SBrenden Blanco 
117785de8576SDaniel Borkmann #define XDP_FLAGS_UPDATE_IF_NOEXIST	(1U << 0)
11780489df9aSDaniel Borkmann #define XDP_FLAGS_SKB_MODE		(1U << 1)
11790489df9aSDaniel Borkmann #define XDP_FLAGS_DRV_MODE		(1U << 2)
1180ee5d032fSJakub Kicinski #define XDP_FLAGS_HW_MODE		(1U << 3)
118192234c8fSToke Høiland-Jørgensen #define XDP_FLAGS_REPLACE		(1U << 4)
1182ee5d032fSJakub Kicinski #define XDP_FLAGS_MODES			(XDP_FLAGS_SKB_MODE | \
1183ee5d032fSJakub Kicinski 					 XDP_FLAGS_DRV_MODE | \
1184ee5d032fSJakub Kicinski 					 XDP_FLAGS_HW_MODE)
1185b5cdae32SDavid S. Miller #define XDP_FLAGS_MASK			(XDP_FLAGS_UPDATE_IF_NOEXIST | \
118692234c8fSToke Høiland-Jørgensen 					 XDP_FLAGS_MODES | XDP_FLAGS_REPLACE)
118785de8576SDaniel Borkmann 
1188d67b9cd2SDaniel Borkmann /* These are stored into IFLA_XDP_ATTACHED on dump. */
1189d67b9cd2SDaniel Borkmann enum {
1190d67b9cd2SDaniel Borkmann 	XDP_ATTACHED_NONE = 0,
1191d67b9cd2SDaniel Borkmann 	XDP_ATTACHED_DRV,
1192d67b9cd2SDaniel Borkmann 	XDP_ATTACHED_SKB,
1193ce158e58SJakub Kicinski 	XDP_ATTACHED_HW,
1194a25717d2SJakub Kicinski 	XDP_ATTACHED_MULTI,
1195d67b9cd2SDaniel Borkmann };
1196d67b9cd2SDaniel Borkmann 
1197d1fdd913SBrenden Blanco enum {
1198d1fdd913SBrenden Blanco 	IFLA_XDP_UNSPEC,
1199d1fdd913SBrenden Blanco 	IFLA_XDP_FD,
1200d1fdd913SBrenden Blanco 	IFLA_XDP_ATTACHED,
120185de8576SDaniel Borkmann 	IFLA_XDP_FLAGS,
120258038695SMartin KaFai Lau 	IFLA_XDP_PROG_ID,
12034f91da26SJakub Kicinski 	IFLA_XDP_DRV_PROG_ID,
12044f91da26SJakub Kicinski 	IFLA_XDP_SKB_PROG_ID,
12054f91da26SJakub Kicinski 	IFLA_XDP_HW_PROG_ID,
120692234c8fSToke Høiland-Jørgensen 	IFLA_XDP_EXPECTED_FD,
1207d1fdd913SBrenden Blanco 	__IFLA_XDP_MAX,
1208d1fdd913SBrenden Blanco };
1209d1fdd913SBrenden Blanco 
1210d1fdd913SBrenden Blanco #define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
1211d1fdd913SBrenden Blanco 
12123d3ea5afSVlad Yasevich enum {
12133d3ea5afSVlad Yasevich 	IFLA_EVENT_NONE,
12143d3ea5afSVlad Yasevich 	IFLA_EVENT_REBOOT,		/* internal reset / reboot */
12153d3ea5afSVlad Yasevich 	IFLA_EVENT_FEATURES,		/* change in offload features */
12163d3ea5afSVlad Yasevich 	IFLA_EVENT_BONDING_FAILOVER,	/* change in active slave */
12173d3ea5afSVlad Yasevich 	IFLA_EVENT_NOTIFY_PEERS,	/* re-sent grat. arp/ndisc */
12183d3ea5afSVlad Yasevich 	IFLA_EVENT_IGMP_RESEND,		/* re-sent IGMP JOIN */
12193d3ea5afSVlad Yasevich 	IFLA_EVENT_BONDING_OPTIONS,	/* change in bonding options */
12203d3ea5afSVlad Yasevich };
12213d3ea5afSVlad Yasevich 
12221ec010e7SSabrina Dubroca /* tun section */
12231ec010e7SSabrina Dubroca 
12241ec010e7SSabrina Dubroca enum {
12251ec010e7SSabrina Dubroca 	IFLA_TUN_UNSPEC,
12261ec010e7SSabrina Dubroca 	IFLA_TUN_OWNER,
12271ec010e7SSabrina Dubroca 	IFLA_TUN_GROUP,
12281ec010e7SSabrina Dubroca 	IFLA_TUN_TYPE,
12291ec010e7SSabrina Dubroca 	IFLA_TUN_PI,
12301ec010e7SSabrina Dubroca 	IFLA_TUN_VNET_HDR,
12311ec010e7SSabrina Dubroca 	IFLA_TUN_PERSIST,
12321ec010e7SSabrina Dubroca 	IFLA_TUN_MULTI_QUEUE,
12331ec010e7SSabrina Dubroca 	IFLA_TUN_NUM_QUEUES,
12341ec010e7SSabrina Dubroca 	IFLA_TUN_NUM_DISABLED_QUEUES,
12351ec010e7SSabrina Dubroca 	__IFLA_TUN_MAX,
12361ec010e7SSabrina Dubroca };
12371ec010e7SSabrina Dubroca 
12381ec010e7SSabrina Dubroca #define IFLA_TUN_MAX (__IFLA_TUN_MAX - 1)
12391ec010e7SSabrina Dubroca 
124014452ca3SSubash Abhinov Kasiviswanathan /* rmnet section */
124114452ca3SSubash Abhinov Kasiviswanathan 
124214452ca3SSubash Abhinov Kasiviswanathan #define RMNET_FLAGS_INGRESS_DEAGGREGATION         (1U << 0)
124314452ca3SSubash Abhinov Kasiviswanathan #define RMNET_FLAGS_INGRESS_MAP_COMMANDS          (1U << 1)
124414452ca3SSubash Abhinov Kasiviswanathan #define RMNET_FLAGS_INGRESS_MAP_CKSUMV4           (1U << 2)
124514452ca3SSubash Abhinov Kasiviswanathan #define RMNET_FLAGS_EGRESS_MAP_CKSUMV4            (1U << 3)
1246e1d9a90aSSharath Chandra Vurukala #define RMNET_FLAGS_INGRESS_MAP_CKSUMV5           (1U << 4)
1247b6e5d27eSSharath Chandra Vurukala #define RMNET_FLAGS_EGRESS_MAP_CKSUMV5            (1U << 5)
124814452ca3SSubash Abhinov Kasiviswanathan 
124914452ca3SSubash Abhinov Kasiviswanathan enum {
125014452ca3SSubash Abhinov Kasiviswanathan 	IFLA_RMNET_UNSPEC,
125114452ca3SSubash Abhinov Kasiviswanathan 	IFLA_RMNET_MUX_ID,
125214452ca3SSubash Abhinov Kasiviswanathan 	IFLA_RMNET_FLAGS,
125314452ca3SSubash Abhinov Kasiviswanathan 	__IFLA_RMNET_MAX,
125414452ca3SSubash Abhinov Kasiviswanathan };
125514452ca3SSubash Abhinov Kasiviswanathan 
125614452ca3SSubash Abhinov Kasiviswanathan #define IFLA_RMNET_MAX	(__IFLA_RMNET_MAX - 1)
125714452ca3SSubash Abhinov Kasiviswanathan 
125814452ca3SSubash Abhinov Kasiviswanathan struct ifla_rmnet_flags {
125914452ca3SSubash Abhinov Kasiviswanathan 	__u32	flags;
126014452ca3SSubash Abhinov Kasiviswanathan 	__u32	mask;
126114452ca3SSubash Abhinov Kasiviswanathan };
126214452ca3SSubash Abhinov Kasiviswanathan 
1263*583be982SJeremy Kerr /* MCTP section */
1264*583be982SJeremy Kerr 
1265*583be982SJeremy Kerr enum {
1266*583be982SJeremy Kerr 	IFLA_MCTP_UNSPEC,
1267*583be982SJeremy Kerr 	IFLA_MCTP_NET,
1268*583be982SJeremy Kerr 	__IFLA_MCTP_MAX,
1269*583be982SJeremy Kerr };
1270*583be982SJeremy Kerr 
1271*583be982SJeremy Kerr #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
1272*583be982SJeremy Kerr 
1273607ca46eSDavid Howells #endif /* _UAPI_LINUX_IF_LINK_H */
1274