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