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