xref: /openbmc/linux/tools/include/uapi/linux/if_link.h (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1dc2b9f19SEric Leblond /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2dc2b9f19SEric Leblond #ifndef _UAPI_LINUX_IF_LINK_H
3dc2b9f19SEric Leblond #define _UAPI_LINUX_IF_LINK_H
4dc2b9f19SEric Leblond 
5dc2b9f19SEric Leblond #include <linux/types.h>
6dc2b9f19SEric Leblond #include <linux/netlink.h>
7dc2b9f19SEric Leblond 
8dc2b9f19SEric Leblond /* This struct should be in sync with struct rtnl_link_stats64 */
9dc2b9f19SEric Leblond struct rtnl_link_stats {
10710d5835SEric Dumazet 	__u32	rx_packets;
11710d5835SEric Dumazet 	__u32	tx_packets;
12710d5835SEric Dumazet 	__u32	rx_bytes;
13710d5835SEric Dumazet 	__u32	tx_bytes;
14710d5835SEric Dumazet 	__u32	rx_errors;
15710d5835SEric Dumazet 	__u32	tx_errors;
16710d5835SEric Dumazet 	__u32	rx_dropped;
17710d5835SEric Dumazet 	__u32	tx_dropped;
18710d5835SEric Dumazet 	__u32	multicast;
19dc2b9f19SEric Leblond 	__u32	collisions;
20dc2b9f19SEric Leblond 	/* detailed rx_errors: */
21dc2b9f19SEric Leblond 	__u32	rx_length_errors;
22710d5835SEric Dumazet 	__u32	rx_over_errors;
23710d5835SEric Dumazet 	__u32	rx_crc_errors;
24710d5835SEric Dumazet 	__u32	rx_frame_errors;
25710d5835SEric Dumazet 	__u32	rx_fifo_errors;
26710d5835SEric Dumazet 	__u32	rx_missed_errors;
27dc2b9f19SEric Leblond 
28dc2b9f19SEric Leblond 	/* detailed tx_errors */
29dc2b9f19SEric Leblond 	__u32	tx_aborted_errors;
30dc2b9f19SEric Leblond 	__u32	tx_carrier_errors;
31dc2b9f19SEric Leblond 	__u32	tx_fifo_errors;
32dc2b9f19SEric Leblond 	__u32	tx_heartbeat_errors;
33dc2b9f19SEric Leblond 	__u32	tx_window_errors;
34dc2b9f19SEric Leblond 
35dc2b9f19SEric Leblond 	/* for cslip etc */
36dc2b9f19SEric Leblond 	__u32	rx_compressed;
37dc2b9f19SEric Leblond 	__u32	tx_compressed;
38dc2b9f19SEric Leblond 
39710d5835SEric Dumazet 	__u32	rx_nohandler;
40dc2b9f19SEric Leblond };
41dc2b9f19SEric Leblond 
42710d5835SEric Dumazet /**
43710d5835SEric Dumazet  * struct rtnl_link_stats64 - The main device statistics structure.
44710d5835SEric Dumazet  *
45710d5835SEric Dumazet  * @rx_packets: Number of good packets received by the interface.
46710d5835SEric Dumazet  *   For hardware interfaces counts all good packets received from the device
47710d5835SEric Dumazet  *   by the host, including packets which host had to drop at various stages
48710d5835SEric Dumazet  *   of processing (even in the driver).
49710d5835SEric Dumazet  *
50710d5835SEric Dumazet  * @tx_packets: Number of packets successfully transmitted.
51710d5835SEric Dumazet  *   For hardware interfaces counts packets which host was able to successfully
52710d5835SEric Dumazet  *   hand over to the device, which does not necessarily mean that packets
53710d5835SEric Dumazet  *   had been successfully transmitted out of the device, only that device
54710d5835SEric Dumazet  *   acknowledged it copied them out of host memory.
55710d5835SEric Dumazet  *
56710d5835SEric Dumazet  * @rx_bytes: Number of good received bytes, corresponding to @rx_packets.
57710d5835SEric Dumazet  *
58710d5835SEric Dumazet  *   For IEEE 802.3 devices should count the length of Ethernet Frames
59710d5835SEric Dumazet  *   excluding the FCS.
60710d5835SEric Dumazet  *
61710d5835SEric Dumazet  * @tx_bytes: Number of good transmitted bytes, corresponding to @tx_packets.
62710d5835SEric Dumazet  *
63710d5835SEric Dumazet  *   For IEEE 802.3 devices should count the length of Ethernet Frames
64710d5835SEric Dumazet  *   excluding the FCS.
65710d5835SEric Dumazet  *
66710d5835SEric Dumazet  * @rx_errors: Total number of bad packets received on this network device.
67710d5835SEric Dumazet  *   This counter must include events counted by @rx_length_errors,
68710d5835SEric Dumazet  *   @rx_crc_errors, @rx_frame_errors and other errors not otherwise
69710d5835SEric Dumazet  *   counted.
70710d5835SEric Dumazet  *
71710d5835SEric Dumazet  * @tx_errors: Total number of transmit problems.
72710d5835SEric Dumazet  *   This counter must include events counter by @tx_aborted_errors,
73710d5835SEric Dumazet  *   @tx_carrier_errors, @tx_fifo_errors, @tx_heartbeat_errors,
74710d5835SEric Dumazet  *   @tx_window_errors and other errors not otherwise counted.
75710d5835SEric Dumazet  *
76710d5835SEric Dumazet  * @rx_dropped: Number of packets received but not processed,
77710d5835SEric Dumazet  *   e.g. due to lack of resources or unsupported protocol.
78710d5835SEric Dumazet  *   For hardware interfaces this counter may include packets discarded
79710d5835SEric Dumazet  *   due to L2 address filtering but should not include packets dropped
80710d5835SEric Dumazet  *   by the device due to buffer exhaustion which are counted separately in
81710d5835SEric Dumazet  *   @rx_missed_errors (since procfs folds those two counters together).
82710d5835SEric Dumazet  *
83710d5835SEric Dumazet  * @tx_dropped: Number of packets dropped on their way to transmission,
84710d5835SEric Dumazet  *   e.g. due to lack of resources.
85710d5835SEric Dumazet  *
86710d5835SEric Dumazet  * @multicast: Multicast packets received.
87710d5835SEric Dumazet  *   For hardware interfaces this statistic is commonly calculated
88710d5835SEric Dumazet  *   at the device level (unlike @rx_packets) and therefore may include
89710d5835SEric Dumazet  *   packets which did not reach the host.
90710d5835SEric Dumazet  *
91710d5835SEric Dumazet  *   For IEEE 802.3 devices this counter may be equivalent to:
92710d5835SEric Dumazet  *
93710d5835SEric Dumazet  *    - 30.3.1.1.21 aMulticastFramesReceivedOK
94710d5835SEric Dumazet  *
95710d5835SEric Dumazet  * @collisions: Number of collisions during packet transmissions.
96710d5835SEric Dumazet  *
97710d5835SEric Dumazet  * @rx_length_errors: Number of packets dropped due to invalid length.
98710d5835SEric Dumazet  *   Part of aggregate "frame" errors in `/proc/net/dev`.
99710d5835SEric Dumazet  *
100710d5835SEric Dumazet  *   For IEEE 802.3 devices this counter should be equivalent to a sum
101710d5835SEric Dumazet  *   of the following attributes:
102710d5835SEric Dumazet  *
103710d5835SEric Dumazet  *    - 30.3.1.1.23 aInRangeLengthErrors
104710d5835SEric Dumazet  *    - 30.3.1.1.24 aOutOfRangeLengthField
105710d5835SEric Dumazet  *    - 30.3.1.1.25 aFrameTooLongErrors
106710d5835SEric Dumazet  *
107710d5835SEric Dumazet  * @rx_over_errors: Receiver FIFO overflow event counter.
108710d5835SEric Dumazet  *
109710d5835SEric Dumazet  *   Historically the count of overflow events. Such events may be
110710d5835SEric Dumazet  *   reported in the receive descriptors or via interrupts, and may
111710d5835SEric Dumazet  *   not correspond one-to-one with dropped packets.
112710d5835SEric Dumazet  *
113710d5835SEric Dumazet  *   The recommended interpretation for high speed interfaces is -
114710d5835SEric Dumazet  *   number of packets dropped because they did not fit into buffers
115710d5835SEric Dumazet  *   provided by the host, e.g. packets larger than MTU or next buffer
116710d5835SEric Dumazet  *   in the ring was not available for a scatter transfer.
117710d5835SEric Dumazet  *
118710d5835SEric Dumazet  *   Part of aggregate "frame" errors in `/proc/net/dev`.
119710d5835SEric Dumazet  *
120710d5835SEric Dumazet  *   This statistics was historically used interchangeably with
121710d5835SEric Dumazet  *   @rx_fifo_errors.
122710d5835SEric Dumazet  *
123710d5835SEric Dumazet  *   This statistic corresponds to hardware events and is not commonly used
124710d5835SEric Dumazet  *   on software devices.
125710d5835SEric Dumazet  *
126710d5835SEric Dumazet  * @rx_crc_errors: Number of packets received with a CRC error.
127710d5835SEric Dumazet  *   Part of aggregate "frame" errors in `/proc/net/dev`.
128710d5835SEric Dumazet  *
129710d5835SEric Dumazet  *   For IEEE 802.3 devices this counter must be equivalent to:
130710d5835SEric Dumazet  *
131710d5835SEric Dumazet  *    - 30.3.1.1.6 aFrameCheckSequenceErrors
132710d5835SEric Dumazet  *
133710d5835SEric Dumazet  * @rx_frame_errors: Receiver frame alignment errors.
134710d5835SEric Dumazet  *   Part of aggregate "frame" errors in `/proc/net/dev`.
135710d5835SEric Dumazet  *
136710d5835SEric Dumazet  *   For IEEE 802.3 devices this counter should be equivalent to:
137710d5835SEric Dumazet  *
138710d5835SEric Dumazet  *    - 30.3.1.1.7 aAlignmentErrors
139710d5835SEric Dumazet  *
140710d5835SEric Dumazet  * @rx_fifo_errors: Receiver FIFO error counter.
141710d5835SEric Dumazet  *
142710d5835SEric Dumazet  *   Historically the count of overflow events. Those events may be
143710d5835SEric Dumazet  *   reported in the receive descriptors or via interrupts, and may
144710d5835SEric Dumazet  *   not correspond one-to-one with dropped packets.
145710d5835SEric Dumazet  *
146710d5835SEric Dumazet  *   This statistics was used interchangeably with @rx_over_errors.
147710d5835SEric Dumazet  *   Not recommended for use in drivers for high speed interfaces.
148710d5835SEric Dumazet  *
149710d5835SEric Dumazet  *   This statistic is used on software devices, e.g. to count software
150710d5835SEric Dumazet  *   packet queue overflow (can) or sequencing errors (GRE).
151710d5835SEric Dumazet  *
152710d5835SEric Dumazet  * @rx_missed_errors: Count of packets missed by the host.
153710d5835SEric Dumazet  *   Folded into the "drop" counter in `/proc/net/dev`.
154710d5835SEric Dumazet  *
155710d5835SEric Dumazet  *   Counts number of packets dropped by the device due to lack
156710d5835SEric Dumazet  *   of buffer space. This usually indicates that the host interface
157710d5835SEric Dumazet  *   is slower than the network interface, or host is not keeping up
158710d5835SEric Dumazet  *   with the receive packet rate.
159710d5835SEric Dumazet  *
160710d5835SEric Dumazet  *   This statistic corresponds to hardware events and is not used
161710d5835SEric Dumazet  *   on software devices.
162710d5835SEric Dumazet  *
163710d5835SEric Dumazet  * @tx_aborted_errors:
164710d5835SEric Dumazet  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
165710d5835SEric Dumazet  *   For IEEE 802.3 devices capable of half-duplex operation this counter
166710d5835SEric Dumazet  *   must be equivalent to:
167710d5835SEric Dumazet  *
168710d5835SEric Dumazet  *    - 30.3.1.1.11 aFramesAbortedDueToXSColls
169710d5835SEric Dumazet  *
170710d5835SEric Dumazet  *   High speed interfaces may use this counter as a general device
171710d5835SEric Dumazet  *   discard counter.
172710d5835SEric Dumazet  *
173710d5835SEric Dumazet  * @tx_carrier_errors: Number of frame transmission errors due to loss
174710d5835SEric Dumazet  *   of carrier during transmission.
175710d5835SEric Dumazet  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
176710d5835SEric Dumazet  *
177710d5835SEric Dumazet  *   For IEEE 802.3 devices this counter must be equivalent to:
178710d5835SEric Dumazet  *
179710d5835SEric Dumazet  *    - 30.3.1.1.13 aCarrierSenseErrors
180710d5835SEric Dumazet  *
181710d5835SEric Dumazet  * @tx_fifo_errors: Number of frame transmission errors due to device
182710d5835SEric Dumazet  *   FIFO underrun / underflow. This condition occurs when the device
183710d5835SEric Dumazet  *   begins transmission of a frame but is unable to deliver the
184710d5835SEric Dumazet  *   entire frame to the transmitter in time for transmission.
185710d5835SEric Dumazet  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
186710d5835SEric Dumazet  *
187710d5835SEric Dumazet  * @tx_heartbeat_errors: Number of Heartbeat / SQE Test errors for
188710d5835SEric Dumazet  *   old half-duplex Ethernet.
189710d5835SEric Dumazet  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
190710d5835SEric Dumazet  *
191710d5835SEric Dumazet  *   For IEEE 802.3 devices possibly equivalent to:
192710d5835SEric Dumazet  *
193710d5835SEric Dumazet  *    - 30.3.2.1.4 aSQETestErrors
194710d5835SEric Dumazet  *
195710d5835SEric Dumazet  * @tx_window_errors: Number of frame transmission errors due
196710d5835SEric Dumazet  *   to late collisions (for Ethernet - after the first 64B of transmission).
197710d5835SEric Dumazet  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
198710d5835SEric Dumazet  *
199710d5835SEric Dumazet  *   For IEEE 802.3 devices this counter must be equivalent to:
200710d5835SEric Dumazet  *
201710d5835SEric Dumazet  *    - 30.3.1.1.10 aLateCollisions
202710d5835SEric Dumazet  *
203710d5835SEric Dumazet  * @rx_compressed: Number of correctly received compressed packets.
204710d5835SEric Dumazet  *   This counters is only meaningful for interfaces which support
205710d5835SEric Dumazet  *   packet compression (e.g. CSLIP, PPP).
206710d5835SEric Dumazet  *
207710d5835SEric Dumazet  * @tx_compressed: Number of transmitted compressed packets.
208710d5835SEric Dumazet  *   This counters is only meaningful for interfaces which support
209710d5835SEric Dumazet  *   packet compression (e.g. CSLIP, PPP).
210710d5835SEric Dumazet  *
211710d5835SEric Dumazet  * @rx_nohandler: Number of packets received on the interface
212710d5835SEric Dumazet  *   but dropped by the networking stack because the device is
213710d5835SEric Dumazet  *   not designated to receive packets (e.g. backup link in a bond).
214710d5835SEric Dumazet  */
215dc2b9f19SEric Leblond struct rtnl_link_stats64 {
216710d5835SEric Dumazet 	__u64	rx_packets;
217710d5835SEric Dumazet 	__u64	tx_packets;
218710d5835SEric Dumazet 	__u64	rx_bytes;
219710d5835SEric Dumazet 	__u64	tx_bytes;
220710d5835SEric Dumazet 	__u64	rx_errors;
221710d5835SEric Dumazet 	__u64	tx_errors;
222710d5835SEric Dumazet 	__u64	rx_dropped;
223710d5835SEric Dumazet 	__u64	tx_dropped;
224710d5835SEric Dumazet 	__u64	multicast;
225dc2b9f19SEric Leblond 	__u64	collisions;
226dc2b9f19SEric Leblond 
227dc2b9f19SEric Leblond 	/* detailed rx_errors: */
228dc2b9f19SEric Leblond 	__u64	rx_length_errors;
229710d5835SEric Dumazet 	__u64	rx_over_errors;
230710d5835SEric Dumazet 	__u64	rx_crc_errors;
231710d5835SEric Dumazet 	__u64	rx_frame_errors;
232710d5835SEric Dumazet 	__u64	rx_fifo_errors;
233710d5835SEric Dumazet 	__u64	rx_missed_errors;
234dc2b9f19SEric Leblond 
235dc2b9f19SEric Leblond 	/* detailed tx_errors */
236dc2b9f19SEric Leblond 	__u64	tx_aborted_errors;
237dc2b9f19SEric Leblond 	__u64	tx_carrier_errors;
238dc2b9f19SEric Leblond 	__u64	tx_fifo_errors;
239dc2b9f19SEric Leblond 	__u64	tx_heartbeat_errors;
240dc2b9f19SEric Leblond 	__u64	tx_window_errors;
241dc2b9f19SEric Leblond 
242dc2b9f19SEric Leblond 	/* for cslip etc */
243dc2b9f19SEric Leblond 	__u64	rx_compressed;
244dc2b9f19SEric Leblond 	__u64	tx_compressed;
245710d5835SEric Dumazet 	__u64	rx_nohandler;
246dc2b9f19SEric Leblond };
247dc2b9f19SEric Leblond 
248dc2b9f19SEric Leblond /* The struct should be in sync with struct ifmap */
249dc2b9f19SEric Leblond struct rtnl_link_ifmap {
250dc2b9f19SEric Leblond 	__u64	mem_start;
251dc2b9f19SEric Leblond 	__u64	mem_end;
252dc2b9f19SEric Leblond 	__u64	base_addr;
253dc2b9f19SEric Leblond 	__u16	irq;
254dc2b9f19SEric Leblond 	__u8	dma;
255dc2b9f19SEric Leblond 	__u8	port;
256dc2b9f19SEric Leblond };
257dc2b9f19SEric Leblond 
258dc2b9f19SEric Leblond /*
259dc2b9f19SEric Leblond  * IFLA_AF_SPEC
260dc2b9f19SEric Leblond  *   Contains nested attributes for address family specific attributes.
261dc2b9f19SEric Leblond  *   Each address family may create a attribute with the address family
262dc2b9f19SEric Leblond  *   number as type and create its own attribute structure in it.
263dc2b9f19SEric Leblond  *
264dc2b9f19SEric Leblond  *   Example:
265dc2b9f19SEric Leblond  *   [IFLA_AF_SPEC] = {
266dc2b9f19SEric Leblond  *       [AF_INET] = {
267dc2b9f19SEric Leblond  *           [IFLA_INET_CONF] = ...,
268dc2b9f19SEric Leblond  *       },
269dc2b9f19SEric Leblond  *       [AF_INET6] = {
270dc2b9f19SEric Leblond  *           [IFLA_INET6_FLAGS] = ...,
271dc2b9f19SEric Leblond  *           [IFLA_INET6_CONF] = ...,
272dc2b9f19SEric Leblond  *       }
273dc2b9f19SEric Leblond  *   }
274dc2b9f19SEric Leblond  */
275dc2b9f19SEric Leblond 
276dc2b9f19SEric Leblond enum {
277dc2b9f19SEric Leblond 	IFLA_UNSPEC,
278dc2b9f19SEric Leblond 	IFLA_ADDRESS,
279dc2b9f19SEric Leblond 	IFLA_BROADCAST,
280dc2b9f19SEric Leblond 	IFLA_IFNAME,
281dc2b9f19SEric Leblond 	IFLA_MTU,
282dc2b9f19SEric Leblond 	IFLA_LINK,
283dc2b9f19SEric Leblond 	IFLA_QDISC,
284dc2b9f19SEric Leblond 	IFLA_STATS,
285dc2b9f19SEric Leblond 	IFLA_COST,
286dc2b9f19SEric Leblond #define IFLA_COST IFLA_COST
287dc2b9f19SEric Leblond 	IFLA_PRIORITY,
288dc2b9f19SEric Leblond #define IFLA_PRIORITY IFLA_PRIORITY
289dc2b9f19SEric Leblond 	IFLA_MASTER,
290dc2b9f19SEric Leblond #define IFLA_MASTER IFLA_MASTER
291dc2b9f19SEric Leblond 	IFLA_WIRELESS,		/* Wireless Extension event - see wireless.h */
292dc2b9f19SEric Leblond #define IFLA_WIRELESS IFLA_WIRELESS
293dc2b9f19SEric Leblond 	IFLA_PROTINFO,		/* Protocol specific information for a link */
294dc2b9f19SEric Leblond #define IFLA_PROTINFO IFLA_PROTINFO
295dc2b9f19SEric Leblond 	IFLA_TXQLEN,
296dc2b9f19SEric Leblond #define IFLA_TXQLEN IFLA_TXQLEN
297dc2b9f19SEric Leblond 	IFLA_MAP,
298dc2b9f19SEric Leblond #define IFLA_MAP IFLA_MAP
299dc2b9f19SEric Leblond 	IFLA_WEIGHT,
300dc2b9f19SEric Leblond #define IFLA_WEIGHT IFLA_WEIGHT
301dc2b9f19SEric Leblond 	IFLA_OPERSTATE,
302dc2b9f19SEric Leblond 	IFLA_LINKMODE,
303dc2b9f19SEric Leblond 	IFLA_LINKINFO,
304dc2b9f19SEric Leblond #define IFLA_LINKINFO IFLA_LINKINFO
305dc2b9f19SEric Leblond 	IFLA_NET_NS_PID,
306dc2b9f19SEric Leblond 	IFLA_IFALIAS,
307dc2b9f19SEric Leblond 	IFLA_NUM_VF,		/* Number of VFs if device is SR-IOV PF */
308dc2b9f19SEric Leblond 	IFLA_VFINFO_LIST,
309dc2b9f19SEric Leblond 	IFLA_STATS64,
310dc2b9f19SEric Leblond 	IFLA_VF_PORTS,
311dc2b9f19SEric Leblond 	IFLA_PORT_SELF,
312dc2b9f19SEric Leblond 	IFLA_AF_SPEC,
313dc2b9f19SEric Leblond 	IFLA_GROUP,		/* Group the device belongs to */
314dc2b9f19SEric Leblond 	IFLA_NET_NS_FD,
315dc2b9f19SEric Leblond 	IFLA_EXT_MASK,		/* Extended info mask, VFs, etc */
316dc2b9f19SEric Leblond 	IFLA_PROMISCUITY,	/* Promiscuity count: > 0 means acts PROMISC */
317dc2b9f19SEric Leblond #define IFLA_PROMISCUITY IFLA_PROMISCUITY
318dc2b9f19SEric Leblond 	IFLA_NUM_TX_QUEUES,
319dc2b9f19SEric Leblond 	IFLA_NUM_RX_QUEUES,
320dc2b9f19SEric Leblond 	IFLA_CARRIER,
321dc2b9f19SEric Leblond 	IFLA_PHYS_PORT_ID,
322dc2b9f19SEric Leblond 	IFLA_CARRIER_CHANGES,
323dc2b9f19SEric Leblond 	IFLA_PHYS_SWITCH_ID,
324dc2b9f19SEric Leblond 	IFLA_LINK_NETNSID,
325dc2b9f19SEric Leblond 	IFLA_PHYS_PORT_NAME,
326dc2b9f19SEric Leblond 	IFLA_PROTO_DOWN,
327dc2b9f19SEric Leblond 	IFLA_GSO_MAX_SEGS,
328dc2b9f19SEric Leblond 	IFLA_GSO_MAX_SIZE,
329dc2b9f19SEric Leblond 	IFLA_PAD,
330dc2b9f19SEric Leblond 	IFLA_XDP,
331dc2b9f19SEric Leblond 	IFLA_EVENT,
332dc2b9f19SEric Leblond 	IFLA_NEW_NETNSID,
333dc2b9f19SEric Leblond 	IFLA_IF_NETNSID,
33419d8f1adSChristian Brauner 	IFLA_TARGET_NETNSID = IFLA_IF_NETNSID, /* new alias */
335dc2b9f19SEric Leblond 	IFLA_CARRIER_UP_COUNT,
336dc2b9f19SEric Leblond 	IFLA_CARRIER_DOWN_COUNT,
337f091f1d6SIngo Molnar 	IFLA_NEW_IFINDEX,
3385db48a8dSArnaldo Carvalho de Melo 	IFLA_MIN_MTU,
3395db48a8dSArnaldo Carvalho de Melo 	IFLA_MAX_MTU,
340bc3f2956SAndrii Nakryiko 	IFLA_PROP_LIST,
341bc3f2956SAndrii Nakryiko 	IFLA_ALT_IFNAME, /* Alternative ifname */
342533420a4SAndrii Nakryiko 	IFLA_PERM_ADDRESS,
343710d5835SEric Dumazet 	IFLA_PROTO_DOWN_REASON,
344710d5835SEric Dumazet 
345710d5835SEric Dumazet 	/* device (sysfs) name as parent, used instead
346710d5835SEric Dumazet 	 * of IFLA_LINK where there's no parent netdev
347710d5835SEric Dumazet 	 */
348710d5835SEric Dumazet 	IFLA_PARENT_DEV_NAME,
349710d5835SEric Dumazet 	IFLA_PARENT_DEV_BUS_NAME,
350eac1b93cSCoco Li 	IFLA_GRO_MAX_SIZE,
35189527be8SEric Dumazet 	IFLA_TSO_MAX_SIZE,
35289527be8SEric Dumazet 	IFLA_TSO_MAX_SEGS,
353710d5835SEric Dumazet 
354dc2b9f19SEric Leblond 	__IFLA_MAX
355dc2b9f19SEric Leblond };
356dc2b9f19SEric Leblond 
357dc2b9f19SEric Leblond 
358dc2b9f19SEric Leblond #define IFLA_MAX (__IFLA_MAX - 1)
359dc2b9f19SEric Leblond 
360710d5835SEric Dumazet enum {
361710d5835SEric Dumazet 	IFLA_PROTO_DOWN_REASON_UNSPEC,
362710d5835SEric Dumazet 	IFLA_PROTO_DOWN_REASON_MASK,	/* u32, mask for reason bits */
363710d5835SEric Dumazet 	IFLA_PROTO_DOWN_REASON_VALUE,   /* u32, reason bit value */
364710d5835SEric Dumazet 
365710d5835SEric Dumazet 	__IFLA_PROTO_DOWN_REASON_CNT,
366710d5835SEric Dumazet 	IFLA_PROTO_DOWN_REASON_MAX = __IFLA_PROTO_DOWN_REASON_CNT - 1
367710d5835SEric Dumazet };
368710d5835SEric Dumazet 
369dc2b9f19SEric Leblond /* backwards compatibility for userspace */
370dc2b9f19SEric Leblond #ifndef __KERNEL__
371dc2b9f19SEric Leblond #define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
372dc2b9f19SEric Leblond #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
373dc2b9f19SEric Leblond #endif
374dc2b9f19SEric Leblond 
375dc2b9f19SEric Leblond enum {
376dc2b9f19SEric Leblond 	IFLA_INET_UNSPEC,
377dc2b9f19SEric Leblond 	IFLA_INET_CONF,
378dc2b9f19SEric Leblond 	__IFLA_INET_MAX,
379dc2b9f19SEric Leblond };
380dc2b9f19SEric Leblond 
381dc2b9f19SEric Leblond #define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
382dc2b9f19SEric Leblond 
383dc2b9f19SEric Leblond /* ifi_flags.
384dc2b9f19SEric Leblond 
385dc2b9f19SEric Leblond    IFF_* flags.
386dc2b9f19SEric Leblond 
387dc2b9f19SEric Leblond    The only change is:
388dc2b9f19SEric Leblond    IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
389dc2b9f19SEric Leblond    more not changeable by user. They describe link media
390dc2b9f19SEric Leblond    characteristics and set by device driver.
391dc2b9f19SEric Leblond 
392dc2b9f19SEric Leblond    Comments:
393dc2b9f19SEric Leblond    - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
394dc2b9f19SEric Leblond    - If neither of these three flags are set;
395dc2b9f19SEric Leblond      the interface is NBMA.
396dc2b9f19SEric Leblond 
397dc2b9f19SEric Leblond    - IFF_MULTICAST does not mean anything special:
398dc2b9f19SEric Leblond    multicasts can be used on all not-NBMA links.
399dc2b9f19SEric Leblond    IFF_MULTICAST means that this media uses special encapsulation
400dc2b9f19SEric Leblond    for multicast frames. Apparently, all IFF_POINTOPOINT and
401dc2b9f19SEric Leblond    IFF_BROADCAST devices are able to use multicasts too.
402dc2b9f19SEric Leblond  */
403dc2b9f19SEric Leblond 
404dc2b9f19SEric Leblond /* IFLA_LINK.
405dc2b9f19SEric Leblond    For usual devices it is equal ifi_index.
406dc2b9f19SEric Leblond    If it is a "virtual interface" (f.e. tunnel), ifi_link
407dc2b9f19SEric Leblond    can point to real physical interface (f.e. for bandwidth calculations),
408dc2b9f19SEric Leblond    or maybe 0, what means, that real media is unknown (usual
409dc2b9f19SEric Leblond    for IPIP tunnels, when route to endpoint is allowed to change)
410dc2b9f19SEric Leblond  */
411dc2b9f19SEric Leblond 
412dc2b9f19SEric Leblond /* Subtype attributes for IFLA_PROTINFO */
413dc2b9f19SEric Leblond enum {
414dc2b9f19SEric Leblond 	IFLA_INET6_UNSPEC,
415dc2b9f19SEric Leblond 	IFLA_INET6_FLAGS,	/* link flags			*/
416dc2b9f19SEric Leblond 	IFLA_INET6_CONF,	/* sysctl parameters		*/
417dc2b9f19SEric Leblond 	IFLA_INET6_STATS,	/* statistics			*/
418dc2b9f19SEric Leblond 	IFLA_INET6_MCAST,	/* MC things. What of them?	*/
419dc2b9f19SEric Leblond 	IFLA_INET6_CACHEINFO,	/* time values and max reasm size */
420dc2b9f19SEric Leblond 	IFLA_INET6_ICMP6STATS,	/* statistics (icmpv6)		*/
421dc2b9f19SEric Leblond 	IFLA_INET6_TOKEN,	/* device token			*/
422dc2b9f19SEric Leblond 	IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
42349b99da2SRocco Yue 	IFLA_INET6_RA_MTU,	/* mtu carried in the RA message */
424dc2b9f19SEric Leblond 	__IFLA_INET6_MAX
425dc2b9f19SEric Leblond };
426dc2b9f19SEric Leblond 
427dc2b9f19SEric Leblond #define IFLA_INET6_MAX	(__IFLA_INET6_MAX - 1)
428dc2b9f19SEric Leblond 
429dc2b9f19SEric Leblond enum in6_addr_gen_mode {
430dc2b9f19SEric Leblond 	IN6_ADDR_GEN_MODE_EUI64,
431dc2b9f19SEric Leblond 	IN6_ADDR_GEN_MODE_NONE,
432dc2b9f19SEric Leblond 	IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
433dc2b9f19SEric Leblond 	IN6_ADDR_GEN_MODE_RANDOM,
434dc2b9f19SEric Leblond };
435dc2b9f19SEric Leblond 
436dc2b9f19SEric Leblond /* Bridge section */
437dc2b9f19SEric Leblond 
438dc2b9f19SEric Leblond enum {
439dc2b9f19SEric Leblond 	IFLA_BR_UNSPEC,
440dc2b9f19SEric Leblond 	IFLA_BR_FORWARD_DELAY,
441dc2b9f19SEric Leblond 	IFLA_BR_HELLO_TIME,
442dc2b9f19SEric Leblond 	IFLA_BR_MAX_AGE,
443dc2b9f19SEric Leblond 	IFLA_BR_AGEING_TIME,
444dc2b9f19SEric Leblond 	IFLA_BR_STP_STATE,
445dc2b9f19SEric Leblond 	IFLA_BR_PRIORITY,
446dc2b9f19SEric Leblond 	IFLA_BR_VLAN_FILTERING,
447dc2b9f19SEric Leblond 	IFLA_BR_VLAN_PROTOCOL,
448dc2b9f19SEric Leblond 	IFLA_BR_GROUP_FWD_MASK,
449dc2b9f19SEric Leblond 	IFLA_BR_ROOT_ID,
450dc2b9f19SEric Leblond 	IFLA_BR_BRIDGE_ID,
451dc2b9f19SEric Leblond 	IFLA_BR_ROOT_PORT,
452dc2b9f19SEric Leblond 	IFLA_BR_ROOT_PATH_COST,
453dc2b9f19SEric Leblond 	IFLA_BR_TOPOLOGY_CHANGE,
454dc2b9f19SEric Leblond 	IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
455dc2b9f19SEric Leblond 	IFLA_BR_HELLO_TIMER,
456dc2b9f19SEric Leblond 	IFLA_BR_TCN_TIMER,
457dc2b9f19SEric Leblond 	IFLA_BR_TOPOLOGY_CHANGE_TIMER,
458dc2b9f19SEric Leblond 	IFLA_BR_GC_TIMER,
459dc2b9f19SEric Leblond 	IFLA_BR_GROUP_ADDR,
460dc2b9f19SEric Leblond 	IFLA_BR_FDB_FLUSH,
461dc2b9f19SEric Leblond 	IFLA_BR_MCAST_ROUTER,
462dc2b9f19SEric Leblond 	IFLA_BR_MCAST_SNOOPING,
463dc2b9f19SEric Leblond 	IFLA_BR_MCAST_QUERY_USE_IFADDR,
464dc2b9f19SEric Leblond 	IFLA_BR_MCAST_QUERIER,
465dc2b9f19SEric Leblond 	IFLA_BR_MCAST_HASH_ELASTICITY,
466dc2b9f19SEric Leblond 	IFLA_BR_MCAST_HASH_MAX,
467dc2b9f19SEric Leblond 	IFLA_BR_MCAST_LAST_MEMBER_CNT,
468dc2b9f19SEric Leblond 	IFLA_BR_MCAST_STARTUP_QUERY_CNT,
469dc2b9f19SEric Leblond 	IFLA_BR_MCAST_LAST_MEMBER_INTVL,
470dc2b9f19SEric Leblond 	IFLA_BR_MCAST_MEMBERSHIP_INTVL,
471dc2b9f19SEric Leblond 	IFLA_BR_MCAST_QUERIER_INTVL,
472dc2b9f19SEric Leblond 	IFLA_BR_MCAST_QUERY_INTVL,
473dc2b9f19SEric Leblond 	IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
474dc2b9f19SEric Leblond 	IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
475dc2b9f19SEric Leblond 	IFLA_BR_NF_CALL_IPTABLES,
476dc2b9f19SEric Leblond 	IFLA_BR_NF_CALL_IP6TABLES,
477dc2b9f19SEric Leblond 	IFLA_BR_NF_CALL_ARPTABLES,
478dc2b9f19SEric Leblond 	IFLA_BR_VLAN_DEFAULT_PVID,
479dc2b9f19SEric Leblond 	IFLA_BR_PAD,
480dc2b9f19SEric Leblond 	IFLA_BR_VLAN_STATS_ENABLED,
481dc2b9f19SEric Leblond 	IFLA_BR_MCAST_STATS_ENABLED,
482dc2b9f19SEric Leblond 	IFLA_BR_MCAST_IGMP_VERSION,
483dc2b9f19SEric Leblond 	IFLA_BR_MCAST_MLD_VERSION,
48476b0b801SArnaldo Carvalho de Melo 	IFLA_BR_VLAN_STATS_PER_PORT,
485498c203dSArnaldo Carvalho de Melo 	IFLA_BR_MULTI_BOOLOPT,
486710d5835SEric Dumazet 	IFLA_BR_MCAST_QUERIER_STATE,
487dc2b9f19SEric Leblond 	__IFLA_BR_MAX,
488dc2b9f19SEric Leblond };
489dc2b9f19SEric Leblond 
490dc2b9f19SEric Leblond #define IFLA_BR_MAX	(__IFLA_BR_MAX - 1)
491dc2b9f19SEric Leblond 
492dc2b9f19SEric Leblond struct ifla_bridge_id {
493dc2b9f19SEric Leblond 	__u8	prio[2];
494dc2b9f19SEric Leblond 	__u8	addr[6]; /* ETH_ALEN */
495dc2b9f19SEric Leblond };
496dc2b9f19SEric Leblond 
497dc2b9f19SEric Leblond enum {
498dc2b9f19SEric Leblond 	BRIDGE_MODE_UNSPEC,
499dc2b9f19SEric Leblond 	BRIDGE_MODE_HAIRPIN,
500dc2b9f19SEric Leblond };
501dc2b9f19SEric Leblond 
502dc2b9f19SEric Leblond enum {
503dc2b9f19SEric Leblond 	IFLA_BRPORT_UNSPEC,
504dc2b9f19SEric Leblond 	IFLA_BRPORT_STATE,	/* Spanning tree state     */
505dc2b9f19SEric Leblond 	IFLA_BRPORT_PRIORITY,	/* "             priority  */
506dc2b9f19SEric Leblond 	IFLA_BRPORT_COST,	/* "             cost      */
507dc2b9f19SEric Leblond 	IFLA_BRPORT_MODE,	/* mode (hairpin)          */
508dc2b9f19SEric Leblond 	IFLA_BRPORT_GUARD,	/* bpdu guard              */
509dc2b9f19SEric Leblond 	IFLA_BRPORT_PROTECT,	/* root port protection    */
510dc2b9f19SEric Leblond 	IFLA_BRPORT_FAST_LEAVE,	/* multicast fast leave    */
511dc2b9f19SEric Leblond 	IFLA_BRPORT_LEARNING,	/* mac learning */
512dc2b9f19SEric Leblond 	IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
513dc2b9f19SEric Leblond 	IFLA_BRPORT_PROXYARP,	/* proxy ARP */
514dc2b9f19SEric Leblond 	IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
515dc2b9f19SEric Leblond 	IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
516dc2b9f19SEric Leblond 	IFLA_BRPORT_ROOT_ID,	/* designated root */
517dc2b9f19SEric Leblond 	IFLA_BRPORT_BRIDGE_ID,	/* designated bridge */
518dc2b9f19SEric Leblond 	IFLA_BRPORT_DESIGNATED_PORT,
519dc2b9f19SEric Leblond 	IFLA_BRPORT_DESIGNATED_COST,
520dc2b9f19SEric Leblond 	IFLA_BRPORT_ID,
521dc2b9f19SEric Leblond 	IFLA_BRPORT_NO,
522dc2b9f19SEric Leblond 	IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,
523dc2b9f19SEric Leblond 	IFLA_BRPORT_CONFIG_PENDING,
524dc2b9f19SEric Leblond 	IFLA_BRPORT_MESSAGE_AGE_TIMER,
525dc2b9f19SEric Leblond 	IFLA_BRPORT_FORWARD_DELAY_TIMER,
526dc2b9f19SEric Leblond 	IFLA_BRPORT_HOLD_TIMER,
527dc2b9f19SEric Leblond 	IFLA_BRPORT_FLUSH,
528dc2b9f19SEric Leblond 	IFLA_BRPORT_MULTICAST_ROUTER,
529dc2b9f19SEric Leblond 	IFLA_BRPORT_PAD,
530dc2b9f19SEric Leblond 	IFLA_BRPORT_MCAST_FLOOD,
531dc2b9f19SEric Leblond 	IFLA_BRPORT_MCAST_TO_UCAST,
532dc2b9f19SEric Leblond 	IFLA_BRPORT_VLAN_TUNNEL,
533dc2b9f19SEric Leblond 	IFLA_BRPORT_BCAST_FLOOD,
534dc2b9f19SEric Leblond 	IFLA_BRPORT_GROUP_FWD_MASK,
535dc2b9f19SEric Leblond 	IFLA_BRPORT_NEIGH_SUPPRESS,
536bb9a33cbSArnaldo Carvalho de Melo 	IFLA_BRPORT_ISOLATED,
5375db48a8dSArnaldo Carvalho de Melo 	IFLA_BRPORT_BACKUP_PORT,
5383e54442cSHoratiu Vultur 	IFLA_BRPORT_MRP_RING_OPEN,
539ffb3adbaSHoratiu Vultur 	IFLA_BRPORT_MRP_IN_OPEN,
540710d5835SEric Dumazet 	IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
541710d5835SEric Dumazet 	IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
542dc2b9f19SEric Leblond 	__IFLA_BRPORT_MAX
543dc2b9f19SEric Leblond };
544dc2b9f19SEric Leblond #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
545dc2b9f19SEric Leblond 
546dc2b9f19SEric Leblond struct ifla_cacheinfo {
547dc2b9f19SEric Leblond 	__u32	max_reasm_len;
548dc2b9f19SEric Leblond 	__u32	tstamp;		/* ipv6InterfaceTable updated timestamp */
549dc2b9f19SEric Leblond 	__u32	reachable_time;
550dc2b9f19SEric Leblond 	__u32	retrans_time;
551dc2b9f19SEric Leblond };
552dc2b9f19SEric Leblond 
553dc2b9f19SEric Leblond enum {
554dc2b9f19SEric Leblond 	IFLA_INFO_UNSPEC,
555dc2b9f19SEric Leblond 	IFLA_INFO_KIND,
556dc2b9f19SEric Leblond 	IFLA_INFO_DATA,
557dc2b9f19SEric Leblond 	IFLA_INFO_XSTATS,
558dc2b9f19SEric Leblond 	IFLA_INFO_SLAVE_KIND,
559dc2b9f19SEric Leblond 	IFLA_INFO_SLAVE_DATA,
560dc2b9f19SEric Leblond 	__IFLA_INFO_MAX,
561dc2b9f19SEric Leblond };
562dc2b9f19SEric Leblond 
563dc2b9f19SEric Leblond #define IFLA_INFO_MAX	(__IFLA_INFO_MAX - 1)
564dc2b9f19SEric Leblond 
565dc2b9f19SEric Leblond /* VLAN section */
566dc2b9f19SEric Leblond 
567dc2b9f19SEric Leblond enum {
568dc2b9f19SEric Leblond 	IFLA_VLAN_UNSPEC,
569dc2b9f19SEric Leblond 	IFLA_VLAN_ID,
570dc2b9f19SEric Leblond 	IFLA_VLAN_FLAGS,
571dc2b9f19SEric Leblond 	IFLA_VLAN_EGRESS_QOS,
572dc2b9f19SEric Leblond 	IFLA_VLAN_INGRESS_QOS,
573dc2b9f19SEric Leblond 	IFLA_VLAN_PROTOCOL,
574dc2b9f19SEric Leblond 	__IFLA_VLAN_MAX,
575dc2b9f19SEric Leblond };
576dc2b9f19SEric Leblond 
577dc2b9f19SEric Leblond #define IFLA_VLAN_MAX	(__IFLA_VLAN_MAX - 1)
578dc2b9f19SEric Leblond 
579dc2b9f19SEric Leblond struct ifla_vlan_flags {
580dc2b9f19SEric Leblond 	__u32	flags;
581dc2b9f19SEric Leblond 	__u32	mask;
582dc2b9f19SEric Leblond };
583dc2b9f19SEric Leblond 
584dc2b9f19SEric Leblond enum {
585dc2b9f19SEric Leblond 	IFLA_VLAN_QOS_UNSPEC,
586dc2b9f19SEric Leblond 	IFLA_VLAN_QOS_MAPPING,
587dc2b9f19SEric Leblond 	__IFLA_VLAN_QOS_MAX
588dc2b9f19SEric Leblond };
589dc2b9f19SEric Leblond 
590dc2b9f19SEric Leblond #define IFLA_VLAN_QOS_MAX	(__IFLA_VLAN_QOS_MAX - 1)
591dc2b9f19SEric Leblond 
592dc2b9f19SEric Leblond struct ifla_vlan_qos_mapping {
593dc2b9f19SEric Leblond 	__u32 from;
594dc2b9f19SEric Leblond 	__u32 to;
595dc2b9f19SEric Leblond };
596dc2b9f19SEric Leblond 
597dc2b9f19SEric Leblond /* MACVLAN section */
598dc2b9f19SEric Leblond enum {
599dc2b9f19SEric Leblond 	IFLA_MACVLAN_UNSPEC,
600dc2b9f19SEric Leblond 	IFLA_MACVLAN_MODE,
601dc2b9f19SEric Leblond 	IFLA_MACVLAN_FLAGS,
602dc2b9f19SEric Leblond 	IFLA_MACVLAN_MACADDR_MODE,
603dc2b9f19SEric Leblond 	IFLA_MACVLAN_MACADDR,
604dc2b9f19SEric Leblond 	IFLA_MACVLAN_MACADDR_DATA,
605dc2b9f19SEric Leblond 	IFLA_MACVLAN_MACADDR_COUNT,
606d4bff72cSThomas Karlsson 	IFLA_MACVLAN_BC_QUEUE_LEN,
607d4bff72cSThomas Karlsson 	IFLA_MACVLAN_BC_QUEUE_LEN_USED,
608*954d1fa1SHerbert Xu 	IFLA_MACVLAN_BC_CUTOFF,
609dc2b9f19SEric Leblond 	__IFLA_MACVLAN_MAX,
610dc2b9f19SEric Leblond };
611dc2b9f19SEric Leblond 
612dc2b9f19SEric Leblond #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
613dc2b9f19SEric Leblond 
614dc2b9f19SEric Leblond enum macvlan_mode {
615dc2b9f19SEric Leblond 	MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
616dc2b9f19SEric Leblond 	MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
617dc2b9f19SEric Leblond 	MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
618dc2b9f19SEric Leblond 	MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
619dc2b9f19SEric Leblond 	MACVLAN_MODE_SOURCE  = 16,/* use source MAC address list to assign */
620dc2b9f19SEric Leblond };
621dc2b9f19SEric Leblond 
622dc2b9f19SEric Leblond enum macvlan_macaddr_mode {
623dc2b9f19SEric Leblond 	MACVLAN_MACADDR_ADD,
624dc2b9f19SEric Leblond 	MACVLAN_MACADDR_DEL,
625dc2b9f19SEric Leblond 	MACVLAN_MACADDR_FLUSH,
626dc2b9f19SEric Leblond 	MACVLAN_MACADDR_SET,
627dc2b9f19SEric Leblond };
628dc2b9f19SEric Leblond 
629dc2b9f19SEric Leblond #define MACVLAN_FLAG_NOPROMISC	1
630710d5835SEric Dumazet #define MACVLAN_FLAG_NODST	2 /* skip dst macvlan if matching src macvlan */
631dc2b9f19SEric Leblond 
632dc2b9f19SEric Leblond /* VRF section */
633dc2b9f19SEric Leblond enum {
634dc2b9f19SEric Leblond 	IFLA_VRF_UNSPEC,
635dc2b9f19SEric Leblond 	IFLA_VRF_TABLE,
636dc2b9f19SEric Leblond 	__IFLA_VRF_MAX
637dc2b9f19SEric Leblond };
638dc2b9f19SEric Leblond 
639dc2b9f19SEric Leblond #define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
640dc2b9f19SEric Leblond 
641dc2b9f19SEric Leblond enum {
642dc2b9f19SEric Leblond 	IFLA_VRF_PORT_UNSPEC,
643dc2b9f19SEric Leblond 	IFLA_VRF_PORT_TABLE,
644dc2b9f19SEric Leblond 	__IFLA_VRF_PORT_MAX
645dc2b9f19SEric Leblond };
646dc2b9f19SEric Leblond 
647dc2b9f19SEric Leblond #define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
648dc2b9f19SEric Leblond 
649dc2b9f19SEric Leblond /* MACSEC section */
650dc2b9f19SEric Leblond enum {
651dc2b9f19SEric Leblond 	IFLA_MACSEC_UNSPEC,
652dc2b9f19SEric Leblond 	IFLA_MACSEC_SCI,
653dc2b9f19SEric Leblond 	IFLA_MACSEC_PORT,
654dc2b9f19SEric Leblond 	IFLA_MACSEC_ICV_LEN,
655dc2b9f19SEric Leblond 	IFLA_MACSEC_CIPHER_SUITE,
656dc2b9f19SEric Leblond 	IFLA_MACSEC_WINDOW,
657dc2b9f19SEric Leblond 	IFLA_MACSEC_ENCODING_SA,
658dc2b9f19SEric Leblond 	IFLA_MACSEC_ENCRYPT,
659dc2b9f19SEric Leblond 	IFLA_MACSEC_PROTECT,
660dc2b9f19SEric Leblond 	IFLA_MACSEC_INC_SCI,
661dc2b9f19SEric Leblond 	IFLA_MACSEC_ES,
662dc2b9f19SEric Leblond 	IFLA_MACSEC_SCB,
663dc2b9f19SEric Leblond 	IFLA_MACSEC_REPLAY_PROTECT,
664dc2b9f19SEric Leblond 	IFLA_MACSEC_VALIDATION,
665dc2b9f19SEric Leblond 	IFLA_MACSEC_PAD,
666791bb3fcSMark Starovoytov 	IFLA_MACSEC_OFFLOAD,
667dc2b9f19SEric Leblond 	__IFLA_MACSEC_MAX,
668dc2b9f19SEric Leblond };
669dc2b9f19SEric Leblond 
670dc2b9f19SEric Leblond #define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
671dc2b9f19SEric Leblond 
6725db48a8dSArnaldo Carvalho de Melo /* XFRM section */
6735db48a8dSArnaldo Carvalho de Melo enum {
6745db48a8dSArnaldo Carvalho de Melo 	IFLA_XFRM_UNSPEC,
6755db48a8dSArnaldo Carvalho de Melo 	IFLA_XFRM_LINK,
6765db48a8dSArnaldo Carvalho de Melo 	IFLA_XFRM_IF_ID,
6774f4ac4d9SEyal Birger 	IFLA_XFRM_COLLECT_METADATA,
6785db48a8dSArnaldo Carvalho de Melo 	__IFLA_XFRM_MAX
6795db48a8dSArnaldo Carvalho de Melo };
6805db48a8dSArnaldo Carvalho de Melo 
6815db48a8dSArnaldo Carvalho de Melo #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
6825db48a8dSArnaldo Carvalho de Melo 
683dc2b9f19SEric Leblond enum macsec_validation_type {
684dc2b9f19SEric Leblond 	MACSEC_VALIDATE_DISABLED = 0,
685dc2b9f19SEric Leblond 	MACSEC_VALIDATE_CHECK = 1,
686dc2b9f19SEric Leblond 	MACSEC_VALIDATE_STRICT = 2,
687dc2b9f19SEric Leblond 	__MACSEC_VALIDATE_END,
688dc2b9f19SEric Leblond 	MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
689dc2b9f19SEric Leblond };
690dc2b9f19SEric Leblond 
69176564261SAntoine Tenart enum macsec_offload {
69276564261SAntoine Tenart 	MACSEC_OFFLOAD_OFF = 0,
69376564261SAntoine Tenart 	MACSEC_OFFLOAD_PHY = 1,
69421114b7fSAntoine Tenart 	MACSEC_OFFLOAD_MAC = 2,
69576564261SAntoine Tenart 	__MACSEC_OFFLOAD_END,
69676564261SAntoine Tenart 	MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1,
69776564261SAntoine Tenart };
69876564261SAntoine Tenart 
699dc2b9f19SEric Leblond /* IPVLAN section */
700dc2b9f19SEric Leblond enum {
701dc2b9f19SEric Leblond 	IFLA_IPVLAN_UNSPEC,
702dc2b9f19SEric Leblond 	IFLA_IPVLAN_MODE,
703dc2b9f19SEric Leblond 	IFLA_IPVLAN_FLAGS,
704dc2b9f19SEric Leblond 	__IFLA_IPVLAN_MAX
705dc2b9f19SEric Leblond };
706dc2b9f19SEric Leblond 
707dc2b9f19SEric Leblond #define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
708dc2b9f19SEric Leblond 
709dc2b9f19SEric Leblond enum ipvlan_mode {
710dc2b9f19SEric Leblond 	IPVLAN_MODE_L2 = 0,
711dc2b9f19SEric Leblond 	IPVLAN_MODE_L3,
712dc2b9f19SEric Leblond 	IPVLAN_MODE_L3S,
713dc2b9f19SEric Leblond 	IPVLAN_MODE_MAX
714dc2b9f19SEric Leblond };
715dc2b9f19SEric Leblond 
716dc2b9f19SEric Leblond #define IPVLAN_F_PRIVATE	0x01
717dc2b9f19SEric Leblond #define IPVLAN_F_VEPA		0x02
718dc2b9f19SEric Leblond 
719dc2b9f19SEric Leblond /* VXLAN section */
720dc2b9f19SEric Leblond enum {
721dc2b9f19SEric Leblond 	IFLA_VXLAN_UNSPEC,
722dc2b9f19SEric Leblond 	IFLA_VXLAN_ID,
723dc2b9f19SEric Leblond 	IFLA_VXLAN_GROUP,	/* group or remote address */
724dc2b9f19SEric Leblond 	IFLA_VXLAN_LINK,
725dc2b9f19SEric Leblond 	IFLA_VXLAN_LOCAL,
726dc2b9f19SEric Leblond 	IFLA_VXLAN_TTL,
727dc2b9f19SEric Leblond 	IFLA_VXLAN_TOS,
728dc2b9f19SEric Leblond 	IFLA_VXLAN_LEARNING,
729dc2b9f19SEric Leblond 	IFLA_VXLAN_AGEING,
730dc2b9f19SEric Leblond 	IFLA_VXLAN_LIMIT,
731dc2b9f19SEric Leblond 	IFLA_VXLAN_PORT_RANGE,	/* source port */
732dc2b9f19SEric Leblond 	IFLA_VXLAN_PROXY,
733dc2b9f19SEric Leblond 	IFLA_VXLAN_RSC,
734dc2b9f19SEric Leblond 	IFLA_VXLAN_L2MISS,
735dc2b9f19SEric Leblond 	IFLA_VXLAN_L3MISS,
736dc2b9f19SEric Leblond 	IFLA_VXLAN_PORT,	/* destination port */
737dc2b9f19SEric Leblond 	IFLA_VXLAN_GROUP6,
738dc2b9f19SEric Leblond 	IFLA_VXLAN_LOCAL6,
739dc2b9f19SEric Leblond 	IFLA_VXLAN_UDP_CSUM,
740dc2b9f19SEric Leblond 	IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
741dc2b9f19SEric Leblond 	IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
742dc2b9f19SEric Leblond 	IFLA_VXLAN_REMCSUM_TX,
743dc2b9f19SEric Leblond 	IFLA_VXLAN_REMCSUM_RX,
744dc2b9f19SEric Leblond 	IFLA_VXLAN_GBP,
745dc2b9f19SEric Leblond 	IFLA_VXLAN_REMCSUM_NOPARTIAL,
746dc2b9f19SEric Leblond 	IFLA_VXLAN_COLLECT_METADATA,
747dc2b9f19SEric Leblond 	IFLA_VXLAN_LABEL,
748dc2b9f19SEric Leblond 	IFLA_VXLAN_GPE,
749bb9a33cbSArnaldo Carvalho de Melo 	IFLA_VXLAN_TTL_INHERIT,
750498c203dSArnaldo Carvalho de Melo 	IFLA_VXLAN_DF,
751dc2b9f19SEric Leblond 	__IFLA_VXLAN_MAX
752dc2b9f19SEric Leblond };
753dc2b9f19SEric Leblond #define IFLA_VXLAN_MAX	(__IFLA_VXLAN_MAX - 1)
754dc2b9f19SEric Leblond 
755dc2b9f19SEric Leblond struct ifla_vxlan_port_range {
756dc2b9f19SEric Leblond 	__be16	low;
757dc2b9f19SEric Leblond 	__be16	high;
758dc2b9f19SEric Leblond };
759dc2b9f19SEric Leblond 
760498c203dSArnaldo Carvalho de Melo enum ifla_vxlan_df {
761498c203dSArnaldo Carvalho de Melo 	VXLAN_DF_UNSET = 0,
762498c203dSArnaldo Carvalho de Melo 	VXLAN_DF_SET,
763498c203dSArnaldo Carvalho de Melo 	VXLAN_DF_INHERIT,
764498c203dSArnaldo Carvalho de Melo 	__VXLAN_DF_END,
765498c203dSArnaldo Carvalho de Melo 	VXLAN_DF_MAX = __VXLAN_DF_END - 1,
766498c203dSArnaldo Carvalho de Melo };
767498c203dSArnaldo Carvalho de Melo 
768dc2b9f19SEric Leblond /* GENEVE section */
769dc2b9f19SEric Leblond enum {
770dc2b9f19SEric Leblond 	IFLA_GENEVE_UNSPEC,
771dc2b9f19SEric Leblond 	IFLA_GENEVE_ID,
772dc2b9f19SEric Leblond 	IFLA_GENEVE_REMOTE,
773dc2b9f19SEric Leblond 	IFLA_GENEVE_TTL,
774dc2b9f19SEric Leblond 	IFLA_GENEVE_TOS,
775dc2b9f19SEric Leblond 	IFLA_GENEVE_PORT,	/* destination port */
776dc2b9f19SEric Leblond 	IFLA_GENEVE_COLLECT_METADATA,
777dc2b9f19SEric Leblond 	IFLA_GENEVE_REMOTE6,
778dc2b9f19SEric Leblond 	IFLA_GENEVE_UDP_CSUM,
779dc2b9f19SEric Leblond 	IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
780dc2b9f19SEric Leblond 	IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
781dc2b9f19SEric Leblond 	IFLA_GENEVE_LABEL,
78252d0d404SHangbin Liu 	IFLA_GENEVE_TTL_INHERIT,
783498c203dSArnaldo Carvalho de Melo 	IFLA_GENEVE_DF,
784dc2b9f19SEric Leblond 	__IFLA_GENEVE_MAX
785dc2b9f19SEric Leblond };
786dc2b9f19SEric Leblond #define IFLA_GENEVE_MAX	(__IFLA_GENEVE_MAX - 1)
787dc2b9f19SEric Leblond 
788498c203dSArnaldo Carvalho de Melo enum ifla_geneve_df {
789498c203dSArnaldo Carvalho de Melo 	GENEVE_DF_UNSET = 0,
790498c203dSArnaldo Carvalho de Melo 	GENEVE_DF_SET,
791498c203dSArnaldo Carvalho de Melo 	GENEVE_DF_INHERIT,
792498c203dSArnaldo Carvalho de Melo 	__GENEVE_DF_END,
793498c203dSArnaldo Carvalho de Melo 	GENEVE_DF_MAX = __GENEVE_DF_END - 1,
794498c203dSArnaldo Carvalho de Melo };
795498c203dSArnaldo Carvalho de Melo 
796710d5835SEric Dumazet /* Bareudp section  */
797710d5835SEric Dumazet enum {
798710d5835SEric Dumazet 	IFLA_BAREUDP_UNSPEC,
799710d5835SEric Dumazet 	IFLA_BAREUDP_PORT,
800710d5835SEric Dumazet 	IFLA_BAREUDP_ETHERTYPE,
801710d5835SEric Dumazet 	IFLA_BAREUDP_SRCPORT_MIN,
802710d5835SEric Dumazet 	IFLA_BAREUDP_MULTIPROTO_MODE,
803710d5835SEric Dumazet 	__IFLA_BAREUDP_MAX
804710d5835SEric Dumazet };
805710d5835SEric Dumazet 
806710d5835SEric Dumazet #define IFLA_BAREUDP_MAX (__IFLA_BAREUDP_MAX - 1)
807710d5835SEric Dumazet 
808dc2b9f19SEric Leblond /* PPP section */
809dc2b9f19SEric Leblond enum {
810dc2b9f19SEric Leblond 	IFLA_PPP_UNSPEC,
811dc2b9f19SEric Leblond 	IFLA_PPP_DEV_FD,
812dc2b9f19SEric Leblond 	__IFLA_PPP_MAX
813dc2b9f19SEric Leblond };
814dc2b9f19SEric Leblond #define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
815dc2b9f19SEric Leblond 
816dc2b9f19SEric Leblond /* GTP section */
817dc2b9f19SEric Leblond 
818dc2b9f19SEric Leblond enum ifla_gtp_role {
819dc2b9f19SEric Leblond 	GTP_ROLE_GGSN = 0,
820dc2b9f19SEric Leblond 	GTP_ROLE_SGSN,
821dc2b9f19SEric Leblond };
822dc2b9f19SEric Leblond 
823dc2b9f19SEric Leblond enum {
824dc2b9f19SEric Leblond 	IFLA_GTP_UNSPEC,
825dc2b9f19SEric Leblond 	IFLA_GTP_FD0,
826dc2b9f19SEric Leblond 	IFLA_GTP_FD1,
827dc2b9f19SEric Leblond 	IFLA_GTP_PDP_HASHSIZE,
828dc2b9f19SEric Leblond 	IFLA_GTP_ROLE,
829dc2b9f19SEric Leblond 	__IFLA_GTP_MAX,
830dc2b9f19SEric Leblond };
831dc2b9f19SEric Leblond #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
832dc2b9f19SEric Leblond 
833dc2b9f19SEric Leblond /* Bonding section */
834dc2b9f19SEric Leblond 
835dc2b9f19SEric Leblond enum {
836dc2b9f19SEric Leblond 	IFLA_BOND_UNSPEC,
837dc2b9f19SEric Leblond 	IFLA_BOND_MODE,
838dc2b9f19SEric Leblond 	IFLA_BOND_ACTIVE_SLAVE,
839dc2b9f19SEric Leblond 	IFLA_BOND_MIIMON,
840dc2b9f19SEric Leblond 	IFLA_BOND_UPDELAY,
841dc2b9f19SEric Leblond 	IFLA_BOND_DOWNDELAY,
842dc2b9f19SEric Leblond 	IFLA_BOND_USE_CARRIER,
843dc2b9f19SEric Leblond 	IFLA_BOND_ARP_INTERVAL,
844dc2b9f19SEric Leblond 	IFLA_BOND_ARP_IP_TARGET,
845dc2b9f19SEric Leblond 	IFLA_BOND_ARP_VALIDATE,
846dc2b9f19SEric Leblond 	IFLA_BOND_ARP_ALL_TARGETS,
847dc2b9f19SEric Leblond 	IFLA_BOND_PRIMARY,
848dc2b9f19SEric Leblond 	IFLA_BOND_PRIMARY_RESELECT,
849dc2b9f19SEric Leblond 	IFLA_BOND_FAIL_OVER_MAC,
850dc2b9f19SEric Leblond 	IFLA_BOND_XMIT_HASH_POLICY,
851dc2b9f19SEric Leblond 	IFLA_BOND_RESEND_IGMP,
852dc2b9f19SEric Leblond 	IFLA_BOND_NUM_PEER_NOTIF,
853dc2b9f19SEric Leblond 	IFLA_BOND_ALL_SLAVES_ACTIVE,
854dc2b9f19SEric Leblond 	IFLA_BOND_MIN_LINKS,
855dc2b9f19SEric Leblond 	IFLA_BOND_LP_INTERVAL,
856dc2b9f19SEric Leblond 	IFLA_BOND_PACKETS_PER_SLAVE,
857dc2b9f19SEric Leblond 	IFLA_BOND_AD_LACP_RATE,
858dc2b9f19SEric Leblond 	IFLA_BOND_AD_SELECT,
859dc2b9f19SEric Leblond 	IFLA_BOND_AD_INFO,
860dc2b9f19SEric Leblond 	IFLA_BOND_AD_ACTOR_SYS_PRIO,
861dc2b9f19SEric Leblond 	IFLA_BOND_AD_USER_PORT_KEY,
862dc2b9f19SEric Leblond 	IFLA_BOND_AD_ACTOR_SYSTEM,
863dc2b9f19SEric Leblond 	IFLA_BOND_TLB_DYNAMIC_LB,
86407a4ddecSVincent Bernat 	IFLA_BOND_PEER_NOTIF_DELAY,
8653a755cd8SHangbin Liu 	IFLA_BOND_AD_LACP_ACTIVE,
8665944b5abSHangbin Liu 	IFLA_BOND_MISSED_MAX,
867129e3c1bSHangbin Liu 	IFLA_BOND_NS_IP6_TARGET,
868dc2b9f19SEric Leblond 	__IFLA_BOND_MAX,
869dc2b9f19SEric Leblond };
870dc2b9f19SEric Leblond 
871dc2b9f19SEric Leblond #define IFLA_BOND_MAX	(__IFLA_BOND_MAX - 1)
872dc2b9f19SEric Leblond 
873dc2b9f19SEric Leblond enum {
874dc2b9f19SEric Leblond 	IFLA_BOND_AD_INFO_UNSPEC,
875dc2b9f19SEric Leblond 	IFLA_BOND_AD_INFO_AGGREGATOR,
876dc2b9f19SEric Leblond 	IFLA_BOND_AD_INFO_NUM_PORTS,
877dc2b9f19SEric Leblond 	IFLA_BOND_AD_INFO_ACTOR_KEY,
878dc2b9f19SEric Leblond 	IFLA_BOND_AD_INFO_PARTNER_KEY,
879dc2b9f19SEric Leblond 	IFLA_BOND_AD_INFO_PARTNER_MAC,
880dc2b9f19SEric Leblond 	__IFLA_BOND_AD_INFO_MAX,
881dc2b9f19SEric Leblond };
882dc2b9f19SEric Leblond 
883dc2b9f19SEric Leblond #define IFLA_BOND_AD_INFO_MAX	(__IFLA_BOND_AD_INFO_MAX - 1)
884dc2b9f19SEric Leblond 
885dc2b9f19SEric Leblond enum {
886dc2b9f19SEric Leblond 	IFLA_BOND_SLAVE_UNSPEC,
887dc2b9f19SEric Leblond 	IFLA_BOND_SLAVE_STATE,
888dc2b9f19SEric Leblond 	IFLA_BOND_SLAVE_MII_STATUS,
889dc2b9f19SEric Leblond 	IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
890dc2b9f19SEric Leblond 	IFLA_BOND_SLAVE_PERM_HWADDR,
891dc2b9f19SEric Leblond 	IFLA_BOND_SLAVE_QUEUE_ID,
892dc2b9f19SEric Leblond 	IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
893dc2b9f19SEric Leblond 	IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
894dc2b9f19SEric Leblond 	IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
8950a2ff7ccSHangbin Liu 	IFLA_BOND_SLAVE_PRIO,
896dc2b9f19SEric Leblond 	__IFLA_BOND_SLAVE_MAX,
897dc2b9f19SEric Leblond };
898dc2b9f19SEric Leblond 
899dc2b9f19SEric Leblond #define IFLA_BOND_SLAVE_MAX	(__IFLA_BOND_SLAVE_MAX - 1)
900dc2b9f19SEric Leblond 
901dc2b9f19SEric Leblond /* SR-IOV virtual function management section */
902dc2b9f19SEric Leblond 
903dc2b9f19SEric Leblond enum {
904dc2b9f19SEric Leblond 	IFLA_VF_INFO_UNSPEC,
905dc2b9f19SEric Leblond 	IFLA_VF_INFO,
906dc2b9f19SEric Leblond 	__IFLA_VF_INFO_MAX,
907dc2b9f19SEric Leblond };
908dc2b9f19SEric Leblond 
909dc2b9f19SEric Leblond #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
910dc2b9f19SEric Leblond 
911dc2b9f19SEric Leblond enum {
912dc2b9f19SEric Leblond 	IFLA_VF_UNSPEC,
913dc2b9f19SEric Leblond 	IFLA_VF_MAC,		/* Hardware queue specific attributes */
914dc2b9f19SEric Leblond 	IFLA_VF_VLAN,		/* VLAN ID and QoS */
915dc2b9f19SEric Leblond 	IFLA_VF_TX_RATE,	/* Max TX Bandwidth Allocation */
916dc2b9f19SEric Leblond 	IFLA_VF_SPOOFCHK,	/* Spoof Checking on/off switch */
917dc2b9f19SEric Leblond 	IFLA_VF_LINK_STATE,	/* link state enable/disable/auto switch */
918dc2b9f19SEric Leblond 	IFLA_VF_RATE,		/* Min and Max TX Bandwidth Allocation */
919dc2b9f19SEric Leblond 	IFLA_VF_RSS_QUERY_EN,	/* RSS Redirection Table and Hash Key query
920dc2b9f19SEric Leblond 				 * on/off switch
921dc2b9f19SEric Leblond 				 */
922dc2b9f19SEric Leblond 	IFLA_VF_STATS,		/* network device statistics */
923dc2b9f19SEric Leblond 	IFLA_VF_TRUST,		/* Trust VF */
924dc2b9f19SEric Leblond 	IFLA_VF_IB_NODE_GUID,	/* VF Infiniband node GUID */
925dc2b9f19SEric Leblond 	IFLA_VF_IB_PORT_GUID,	/* VF Infiniband port GUID */
926dc2b9f19SEric Leblond 	IFLA_VF_VLAN_LIST,	/* nested list of vlans, option for QinQ */
927e54599c9SArnaldo Carvalho de Melo 	IFLA_VF_BROADCAST,	/* VF broadcast */
928dc2b9f19SEric Leblond 	__IFLA_VF_MAX,
929dc2b9f19SEric Leblond };
930dc2b9f19SEric Leblond 
931dc2b9f19SEric Leblond #define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
932dc2b9f19SEric Leblond 
933dc2b9f19SEric Leblond struct ifla_vf_mac {
934dc2b9f19SEric Leblond 	__u32 vf;
935dc2b9f19SEric Leblond 	__u8 mac[32]; /* MAX_ADDR_LEN */
936dc2b9f19SEric Leblond };
937dc2b9f19SEric Leblond 
938e54599c9SArnaldo Carvalho de Melo struct ifla_vf_broadcast {
939e54599c9SArnaldo Carvalho de Melo 	__u8 broadcast[32];
940e54599c9SArnaldo Carvalho de Melo };
941e54599c9SArnaldo Carvalho de Melo 
942dc2b9f19SEric Leblond struct ifla_vf_vlan {
943dc2b9f19SEric Leblond 	__u32 vf;
944dc2b9f19SEric Leblond 	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
945dc2b9f19SEric Leblond 	__u32 qos;
946dc2b9f19SEric Leblond };
947dc2b9f19SEric Leblond 
948dc2b9f19SEric Leblond enum {
949dc2b9f19SEric Leblond 	IFLA_VF_VLAN_INFO_UNSPEC,
950dc2b9f19SEric Leblond 	IFLA_VF_VLAN_INFO,	/* VLAN ID, QoS and VLAN protocol */
951dc2b9f19SEric Leblond 	__IFLA_VF_VLAN_INFO_MAX,
952dc2b9f19SEric Leblond };
953dc2b9f19SEric Leblond 
954dc2b9f19SEric Leblond #define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
955dc2b9f19SEric Leblond #define MAX_VLAN_LIST_LEN 1
956dc2b9f19SEric Leblond 
957dc2b9f19SEric Leblond struct ifla_vf_vlan_info {
958dc2b9f19SEric Leblond 	__u32 vf;
959dc2b9f19SEric Leblond 	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
960dc2b9f19SEric Leblond 	__u32 qos;
961dc2b9f19SEric Leblond 	__be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
962dc2b9f19SEric Leblond };
963dc2b9f19SEric Leblond 
964dc2b9f19SEric Leblond struct ifla_vf_tx_rate {
965dc2b9f19SEric Leblond 	__u32 vf;
966dc2b9f19SEric Leblond 	__u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
967dc2b9f19SEric Leblond };
968dc2b9f19SEric Leblond 
969dc2b9f19SEric Leblond struct ifla_vf_rate {
970dc2b9f19SEric Leblond 	__u32 vf;
971dc2b9f19SEric Leblond 	__u32 min_tx_rate; /* Min Bandwidth in Mbps */
972dc2b9f19SEric Leblond 	__u32 max_tx_rate; /* Max Bandwidth in Mbps */
973dc2b9f19SEric Leblond };
974dc2b9f19SEric Leblond 
975dc2b9f19SEric Leblond struct ifla_vf_spoofchk {
976dc2b9f19SEric Leblond 	__u32 vf;
977dc2b9f19SEric Leblond 	__u32 setting;
978dc2b9f19SEric Leblond };
979dc2b9f19SEric Leblond 
980dc2b9f19SEric Leblond struct ifla_vf_guid {
981dc2b9f19SEric Leblond 	__u32 vf;
982dc2b9f19SEric Leblond 	__u64 guid;
983dc2b9f19SEric Leblond };
984dc2b9f19SEric Leblond 
985dc2b9f19SEric Leblond enum {
986dc2b9f19SEric Leblond 	IFLA_VF_LINK_STATE_AUTO,	/* link state of the uplink */
987dc2b9f19SEric Leblond 	IFLA_VF_LINK_STATE_ENABLE,	/* link always up */
988dc2b9f19SEric Leblond 	IFLA_VF_LINK_STATE_DISABLE,	/* link always down */
989dc2b9f19SEric Leblond 	__IFLA_VF_LINK_STATE_MAX,
990dc2b9f19SEric Leblond };
991dc2b9f19SEric Leblond 
992dc2b9f19SEric Leblond struct ifla_vf_link_state {
993dc2b9f19SEric Leblond 	__u32 vf;
994dc2b9f19SEric Leblond 	__u32 link_state;
995dc2b9f19SEric Leblond };
996dc2b9f19SEric Leblond 
997dc2b9f19SEric Leblond struct ifla_vf_rss_query_en {
998dc2b9f19SEric Leblond 	__u32 vf;
999dc2b9f19SEric Leblond 	__u32 setting;
1000dc2b9f19SEric Leblond };
1001dc2b9f19SEric Leblond 
1002dc2b9f19SEric Leblond enum {
1003dc2b9f19SEric Leblond 	IFLA_VF_STATS_RX_PACKETS,
1004dc2b9f19SEric Leblond 	IFLA_VF_STATS_TX_PACKETS,
1005dc2b9f19SEric Leblond 	IFLA_VF_STATS_RX_BYTES,
1006dc2b9f19SEric Leblond 	IFLA_VF_STATS_TX_BYTES,
1007dc2b9f19SEric Leblond 	IFLA_VF_STATS_BROADCAST,
1008dc2b9f19SEric Leblond 	IFLA_VF_STATS_MULTICAST,
1009dc2b9f19SEric Leblond 	IFLA_VF_STATS_PAD,
1010dc2b9f19SEric Leblond 	IFLA_VF_STATS_RX_DROPPED,
1011dc2b9f19SEric Leblond 	IFLA_VF_STATS_TX_DROPPED,
1012dc2b9f19SEric Leblond 	__IFLA_VF_STATS_MAX,
1013dc2b9f19SEric Leblond };
1014dc2b9f19SEric Leblond 
1015dc2b9f19SEric Leblond #define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
1016dc2b9f19SEric Leblond 
1017dc2b9f19SEric Leblond struct ifla_vf_trust {
1018dc2b9f19SEric Leblond 	__u32 vf;
1019dc2b9f19SEric Leblond 	__u32 setting;
1020dc2b9f19SEric Leblond };
1021dc2b9f19SEric Leblond 
1022dc2b9f19SEric Leblond /* VF ports management section
1023dc2b9f19SEric Leblond  *
1024dc2b9f19SEric Leblond  *	Nested layout of set/get msg is:
1025dc2b9f19SEric Leblond  *
1026dc2b9f19SEric Leblond  *		[IFLA_NUM_VF]
1027dc2b9f19SEric Leblond  *		[IFLA_VF_PORTS]
1028dc2b9f19SEric Leblond  *			[IFLA_VF_PORT]
1029dc2b9f19SEric Leblond  *				[IFLA_PORT_*], ...
1030dc2b9f19SEric Leblond  *			[IFLA_VF_PORT]
1031dc2b9f19SEric Leblond  *				[IFLA_PORT_*], ...
1032dc2b9f19SEric Leblond  *			...
1033dc2b9f19SEric Leblond  *		[IFLA_PORT_SELF]
1034dc2b9f19SEric Leblond  *			[IFLA_PORT_*], ...
1035dc2b9f19SEric Leblond  */
1036dc2b9f19SEric Leblond 
1037dc2b9f19SEric Leblond enum {
1038dc2b9f19SEric Leblond 	IFLA_VF_PORT_UNSPEC,
1039dc2b9f19SEric Leblond 	IFLA_VF_PORT,			/* nest */
1040dc2b9f19SEric Leblond 	__IFLA_VF_PORT_MAX,
1041dc2b9f19SEric Leblond };
1042dc2b9f19SEric Leblond 
1043dc2b9f19SEric Leblond #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
1044dc2b9f19SEric Leblond 
1045dc2b9f19SEric Leblond enum {
1046dc2b9f19SEric Leblond 	IFLA_PORT_UNSPEC,
1047dc2b9f19SEric Leblond 	IFLA_PORT_VF,			/* __u32 */
1048dc2b9f19SEric Leblond 	IFLA_PORT_PROFILE,		/* string */
1049dc2b9f19SEric Leblond 	IFLA_PORT_VSI_TYPE,		/* 802.1Qbg (pre-)standard VDP */
1050dc2b9f19SEric Leblond 	IFLA_PORT_INSTANCE_UUID,	/* binary UUID */
1051dc2b9f19SEric Leblond 	IFLA_PORT_HOST_UUID,		/* binary UUID */
1052dc2b9f19SEric Leblond 	IFLA_PORT_REQUEST,		/* __u8 */
1053dc2b9f19SEric Leblond 	IFLA_PORT_RESPONSE,		/* __u16, output only */
1054dc2b9f19SEric Leblond 	__IFLA_PORT_MAX,
1055dc2b9f19SEric Leblond };
1056dc2b9f19SEric Leblond 
1057dc2b9f19SEric Leblond #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
1058dc2b9f19SEric Leblond 
1059dc2b9f19SEric Leblond #define PORT_PROFILE_MAX	40
1060dc2b9f19SEric Leblond #define PORT_UUID_MAX		16
1061dc2b9f19SEric Leblond #define PORT_SELF_VF		-1
1062dc2b9f19SEric Leblond 
1063dc2b9f19SEric Leblond enum {
1064dc2b9f19SEric Leblond 	PORT_REQUEST_PREASSOCIATE = 0,
1065dc2b9f19SEric Leblond 	PORT_REQUEST_PREASSOCIATE_RR,
1066dc2b9f19SEric Leblond 	PORT_REQUEST_ASSOCIATE,
1067dc2b9f19SEric Leblond 	PORT_REQUEST_DISASSOCIATE,
1068dc2b9f19SEric Leblond };
1069dc2b9f19SEric Leblond 
1070dc2b9f19SEric Leblond enum {
1071dc2b9f19SEric Leblond 	PORT_VDP_RESPONSE_SUCCESS = 0,
1072dc2b9f19SEric Leblond 	PORT_VDP_RESPONSE_INVALID_FORMAT,
1073dc2b9f19SEric Leblond 	PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
1074dc2b9f19SEric Leblond 	PORT_VDP_RESPONSE_UNUSED_VTID,
1075dc2b9f19SEric Leblond 	PORT_VDP_RESPONSE_VTID_VIOLATION,
1076dc2b9f19SEric Leblond 	PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
1077dc2b9f19SEric Leblond 	PORT_VDP_RESPONSE_OUT_OF_SYNC,
1078dc2b9f19SEric Leblond 	/* 0x08-0xFF reserved for future VDP use */
1079dc2b9f19SEric Leblond 	PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
1080dc2b9f19SEric Leblond 	PORT_PROFILE_RESPONSE_INPROGRESS,
1081dc2b9f19SEric Leblond 	PORT_PROFILE_RESPONSE_INVALID,
1082dc2b9f19SEric Leblond 	PORT_PROFILE_RESPONSE_BADSTATE,
1083dc2b9f19SEric Leblond 	PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
1084dc2b9f19SEric Leblond 	PORT_PROFILE_RESPONSE_ERROR,
1085dc2b9f19SEric Leblond };
1086dc2b9f19SEric Leblond 
1087dc2b9f19SEric Leblond struct ifla_port_vsi {
1088dc2b9f19SEric Leblond 	__u8 vsi_mgr_id;
1089dc2b9f19SEric Leblond 	__u8 vsi_type_id[3];
1090dc2b9f19SEric Leblond 	__u8 vsi_type_version;
1091dc2b9f19SEric Leblond 	__u8 pad[3];
1092dc2b9f19SEric Leblond };
1093dc2b9f19SEric Leblond 
1094dc2b9f19SEric Leblond 
1095dc2b9f19SEric Leblond /* IPoIB section */
1096dc2b9f19SEric Leblond 
1097dc2b9f19SEric Leblond enum {
1098dc2b9f19SEric Leblond 	IFLA_IPOIB_UNSPEC,
1099dc2b9f19SEric Leblond 	IFLA_IPOIB_PKEY,
1100dc2b9f19SEric Leblond 	IFLA_IPOIB_MODE,
1101dc2b9f19SEric Leblond 	IFLA_IPOIB_UMCAST,
1102dc2b9f19SEric Leblond 	__IFLA_IPOIB_MAX
1103dc2b9f19SEric Leblond };
1104dc2b9f19SEric Leblond 
1105dc2b9f19SEric Leblond enum {
1106dc2b9f19SEric Leblond 	IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
1107dc2b9f19SEric Leblond 	IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
1108dc2b9f19SEric Leblond };
1109dc2b9f19SEric Leblond 
1110dc2b9f19SEric Leblond #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
1111dc2b9f19SEric Leblond 
1112dc2b9f19SEric Leblond 
1113710d5835SEric Dumazet /* HSR/PRP section, both uses same interface */
1114710d5835SEric Dumazet 
1115710d5835SEric Dumazet /* Different redundancy protocols for hsr device */
1116710d5835SEric Dumazet enum {
1117710d5835SEric Dumazet 	HSR_PROTOCOL_HSR,
1118710d5835SEric Dumazet 	HSR_PROTOCOL_PRP,
1119710d5835SEric Dumazet 	HSR_PROTOCOL_MAX,
1120710d5835SEric Dumazet };
1121dc2b9f19SEric Leblond 
1122dc2b9f19SEric Leblond enum {
1123dc2b9f19SEric Leblond 	IFLA_HSR_UNSPEC,
1124dc2b9f19SEric Leblond 	IFLA_HSR_SLAVE1,
1125dc2b9f19SEric Leblond 	IFLA_HSR_SLAVE2,
1126dc2b9f19SEric Leblond 	IFLA_HSR_MULTICAST_SPEC,	/* Last byte of supervision addr */
1127dc2b9f19SEric Leblond 	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
1128dc2b9f19SEric Leblond 	IFLA_HSR_SEQ_NR,
1129dc2b9f19SEric Leblond 	IFLA_HSR_VERSION,		/* HSR version */
1130710d5835SEric Dumazet 	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
1131710d5835SEric Dumazet 					 * HSR. For example PRP.
1132710d5835SEric Dumazet 					 */
1133dc2b9f19SEric Leblond 	__IFLA_HSR_MAX,
1134dc2b9f19SEric Leblond };
1135dc2b9f19SEric Leblond 
1136dc2b9f19SEric Leblond #define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
1137dc2b9f19SEric Leblond 
1138dc2b9f19SEric Leblond /* STATS section */
1139dc2b9f19SEric Leblond 
1140dc2b9f19SEric Leblond struct if_stats_msg {
1141dc2b9f19SEric Leblond 	__u8  family;
1142dc2b9f19SEric Leblond 	__u8  pad1;
1143dc2b9f19SEric Leblond 	__u16 pad2;
1144dc2b9f19SEric Leblond 	__u32 ifindex;
1145dc2b9f19SEric Leblond 	__u32 filter_mask;
1146dc2b9f19SEric Leblond };
1147dc2b9f19SEric Leblond 
1148dc2b9f19SEric Leblond /* A stats attribute can be netdev specific or a global stat.
1149dc2b9f19SEric Leblond  * For netdev stats, lets use the prefix IFLA_STATS_LINK_*
1150dc2b9f19SEric Leblond  */
1151dc2b9f19SEric Leblond enum {
1152dc2b9f19SEric Leblond 	IFLA_STATS_UNSPEC, /* also used as 64bit pad attribute */
1153dc2b9f19SEric Leblond 	IFLA_STATS_LINK_64,
1154dc2b9f19SEric Leblond 	IFLA_STATS_LINK_XSTATS,
1155dc2b9f19SEric Leblond 	IFLA_STATS_LINK_XSTATS_SLAVE,
1156dc2b9f19SEric Leblond 	IFLA_STATS_LINK_OFFLOAD_XSTATS,
1157dc2b9f19SEric Leblond 	IFLA_STATS_AF_SPEC,
1158dc2b9f19SEric Leblond 	__IFLA_STATS_MAX,
1159dc2b9f19SEric Leblond };
1160dc2b9f19SEric Leblond 
1161dc2b9f19SEric Leblond #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
1162dc2b9f19SEric Leblond 
1163dc2b9f19SEric Leblond #define IFLA_STATS_FILTER_BIT(ATTR)	(1 << (ATTR - 1))
1164dc2b9f19SEric Leblond 
1165dc2b9f19SEric Leblond /* These are embedded into IFLA_STATS_LINK_XSTATS:
1166dc2b9f19SEric Leblond  * [IFLA_STATS_LINK_XSTATS]
1167dc2b9f19SEric Leblond  * -> [LINK_XSTATS_TYPE_xxx]
1168dc2b9f19SEric Leblond  *    -> [rtnl link type specific attributes]
1169dc2b9f19SEric Leblond  */
1170dc2b9f19SEric Leblond enum {
1171dc2b9f19SEric Leblond 	LINK_XSTATS_TYPE_UNSPEC,
1172dc2b9f19SEric Leblond 	LINK_XSTATS_TYPE_BRIDGE,
1173d9312064SAndrii Nakryiko 	LINK_XSTATS_TYPE_BOND,
1174dc2b9f19SEric Leblond 	__LINK_XSTATS_TYPE_MAX
1175dc2b9f19SEric Leblond };
1176dc2b9f19SEric Leblond #define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
1177dc2b9f19SEric Leblond 
1178dc2b9f19SEric Leblond /* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
1179dc2b9f19SEric Leblond enum {
1180dc2b9f19SEric Leblond 	IFLA_OFFLOAD_XSTATS_UNSPEC,
1181dc2b9f19SEric Leblond 	IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
1182dc2b9f19SEric Leblond 	__IFLA_OFFLOAD_XSTATS_MAX
1183dc2b9f19SEric Leblond };
1184dc2b9f19SEric Leblond #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
1185dc2b9f19SEric Leblond 
1186dc2b9f19SEric Leblond /* XDP section */
1187dc2b9f19SEric Leblond 
1188dc2b9f19SEric Leblond #define XDP_FLAGS_UPDATE_IF_NOEXIST	(1U << 0)
1189dc2b9f19SEric Leblond #define XDP_FLAGS_SKB_MODE		(1U << 1)
1190dc2b9f19SEric Leblond #define XDP_FLAGS_DRV_MODE		(1U << 2)
1191dc2b9f19SEric Leblond #define XDP_FLAGS_HW_MODE		(1U << 3)
119250a3e678SToke Høiland-Jørgensen #define XDP_FLAGS_REPLACE		(1U << 4)
1193dc2b9f19SEric Leblond #define XDP_FLAGS_MODES			(XDP_FLAGS_SKB_MODE | \
1194dc2b9f19SEric Leblond 					 XDP_FLAGS_DRV_MODE | \
1195dc2b9f19SEric Leblond 					 XDP_FLAGS_HW_MODE)
1196dc2b9f19SEric Leblond #define XDP_FLAGS_MASK			(XDP_FLAGS_UPDATE_IF_NOEXIST | \
119750a3e678SToke Høiland-Jørgensen 					 XDP_FLAGS_MODES | XDP_FLAGS_REPLACE)
1198dc2b9f19SEric Leblond 
1199dc2b9f19SEric Leblond /* These are stored into IFLA_XDP_ATTACHED on dump. */
1200dc2b9f19SEric Leblond enum {
1201dc2b9f19SEric Leblond 	XDP_ATTACHED_NONE = 0,
1202dc2b9f19SEric Leblond 	XDP_ATTACHED_DRV,
1203dc2b9f19SEric Leblond 	XDP_ATTACHED_SKB,
1204dc2b9f19SEric Leblond 	XDP_ATTACHED_HW,
12055db48a8dSArnaldo Carvalho de Melo 	XDP_ATTACHED_MULTI,
1206dc2b9f19SEric Leblond };
1207dc2b9f19SEric Leblond 
1208dc2b9f19SEric Leblond enum {
1209dc2b9f19SEric Leblond 	IFLA_XDP_UNSPEC,
1210dc2b9f19SEric Leblond 	IFLA_XDP_FD,
1211dc2b9f19SEric Leblond 	IFLA_XDP_ATTACHED,
1212dc2b9f19SEric Leblond 	IFLA_XDP_FLAGS,
1213dc2b9f19SEric Leblond 	IFLA_XDP_PROG_ID,
12145db48a8dSArnaldo Carvalho de Melo 	IFLA_XDP_DRV_PROG_ID,
12155db48a8dSArnaldo Carvalho de Melo 	IFLA_XDP_SKB_PROG_ID,
12165db48a8dSArnaldo Carvalho de Melo 	IFLA_XDP_HW_PROG_ID,
121750a3e678SToke Høiland-Jørgensen 	IFLA_XDP_EXPECTED_FD,
1218dc2b9f19SEric Leblond 	__IFLA_XDP_MAX,
1219dc2b9f19SEric Leblond };
1220dc2b9f19SEric Leblond 
1221dc2b9f19SEric Leblond #define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
1222dc2b9f19SEric Leblond 
1223dc2b9f19SEric Leblond enum {
1224dc2b9f19SEric Leblond 	IFLA_EVENT_NONE,
1225dc2b9f19SEric Leblond 	IFLA_EVENT_REBOOT,		/* internal reset / reboot */
1226dc2b9f19SEric Leblond 	IFLA_EVENT_FEATURES,		/* change in offload features */
1227dc2b9f19SEric Leblond 	IFLA_EVENT_BONDING_FAILOVER,	/* change in active slave */
1228dc2b9f19SEric Leblond 	IFLA_EVENT_NOTIFY_PEERS,	/* re-sent grat. arp/ndisc */
1229dc2b9f19SEric Leblond 	IFLA_EVENT_IGMP_RESEND,		/* re-sent IGMP JOIN */
1230dc2b9f19SEric Leblond 	IFLA_EVENT_BONDING_OPTIONS,	/* change in bonding options */
1231dc2b9f19SEric Leblond };
1232dc2b9f19SEric Leblond 
1233e2f73a18SIngo Molnar /* tun section */
1234e2f73a18SIngo Molnar 
1235e2f73a18SIngo Molnar enum {
1236e2f73a18SIngo Molnar 	IFLA_TUN_UNSPEC,
1237e2f73a18SIngo Molnar 	IFLA_TUN_OWNER,
1238e2f73a18SIngo Molnar 	IFLA_TUN_GROUP,
1239e2f73a18SIngo Molnar 	IFLA_TUN_TYPE,
1240e2f73a18SIngo Molnar 	IFLA_TUN_PI,
1241e2f73a18SIngo Molnar 	IFLA_TUN_VNET_HDR,
1242e2f73a18SIngo Molnar 	IFLA_TUN_PERSIST,
1243e2f73a18SIngo Molnar 	IFLA_TUN_MULTI_QUEUE,
1244e2f73a18SIngo Molnar 	IFLA_TUN_NUM_QUEUES,
1245e2f73a18SIngo Molnar 	IFLA_TUN_NUM_DISABLED_QUEUES,
1246e2f73a18SIngo Molnar 	__IFLA_TUN_MAX,
1247e2f73a18SIngo Molnar };
1248e2f73a18SIngo Molnar 
1249e2f73a18SIngo Molnar #define IFLA_TUN_MAX (__IFLA_TUN_MAX - 1)
1250e2f73a18SIngo Molnar 
1251e2f73a18SIngo Molnar /* rmnet section */
1252e2f73a18SIngo Molnar 
1253e2f73a18SIngo Molnar #define RMNET_FLAGS_INGRESS_DEAGGREGATION         (1U << 0)
1254e2f73a18SIngo Molnar #define RMNET_FLAGS_INGRESS_MAP_COMMANDS          (1U << 1)
1255e2f73a18SIngo Molnar #define RMNET_FLAGS_INGRESS_MAP_CKSUMV4           (1U << 2)
1256e2f73a18SIngo Molnar #define RMNET_FLAGS_EGRESS_MAP_CKSUMV4            (1U << 3)
1257710d5835SEric Dumazet #define RMNET_FLAGS_INGRESS_MAP_CKSUMV5           (1U << 4)
1258710d5835SEric Dumazet #define RMNET_FLAGS_EGRESS_MAP_CKSUMV5            (1U << 5)
1259e2f73a18SIngo Molnar 
1260e2f73a18SIngo Molnar enum {
1261e2f73a18SIngo Molnar 	IFLA_RMNET_UNSPEC,
1262e2f73a18SIngo Molnar 	IFLA_RMNET_MUX_ID,
1263e2f73a18SIngo Molnar 	IFLA_RMNET_FLAGS,
1264e2f73a18SIngo Molnar 	__IFLA_RMNET_MAX,
1265e2f73a18SIngo Molnar };
1266e2f73a18SIngo Molnar 
1267e2f73a18SIngo Molnar #define IFLA_RMNET_MAX	(__IFLA_RMNET_MAX - 1)
1268e2f73a18SIngo Molnar 
1269e2f73a18SIngo Molnar struct ifla_rmnet_flags {
1270e2f73a18SIngo Molnar 	__u32	flags;
1271e2f73a18SIngo Molnar 	__u32	mask;
1272e2f73a18SIngo Molnar };
1273e2f73a18SIngo Molnar 
1274710d5835SEric Dumazet /* MCTP section */
1275710d5835SEric Dumazet 
1276710d5835SEric Dumazet enum {
1277710d5835SEric Dumazet 	IFLA_MCTP_UNSPEC,
1278710d5835SEric Dumazet 	IFLA_MCTP_NET,
1279710d5835SEric Dumazet 	__IFLA_MCTP_MAX,
1280710d5835SEric Dumazet };
1281710d5835SEric Dumazet 
1282710d5835SEric Dumazet #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
1283710d5835SEric Dumazet 
1284dc2b9f19SEric Leblond #endif /* _UAPI_LINUX_IF_LINK_H */
1285