]> git.proxmox.com Git - mirror_iproute2.git/blob - include/uapi/linux/if_link.h
e1ef848aed011d3fc4f7cbefb30ee528c0a027bc
[mirror_iproute2.git] / include / uapi / linux / if_link.h
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _LINUX_IF_LINK_H
3 #define _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; /* total packets received */
11 __u32 tx_packets; /* total packets transmitted */
12 __u32 rx_bytes; /* total bytes received */
13 __u32 tx_bytes; /* total bytes transmitted */
14 __u32 rx_errors; /* bad packets received */
15 __u32 tx_errors; /* packet transmit problems */
16 __u32 rx_dropped; /* no space in linux buffers */
17 __u32 tx_dropped; /* no space available in linux */
18 __u32 multicast; /* multicast packets received */
19 __u32 collisions;
20
21 /* detailed rx_errors: */
22 __u32 rx_length_errors;
23 __u32 rx_over_errors; /* receiver ring buff overflow */
24 __u32 rx_crc_errors; /* recved pkt with crc error */
25 __u32 rx_frame_errors; /* recv'd frame alignment error */
26 __u32 rx_fifo_errors; /* recv'r fifo overrun */
27 __u32 rx_missed_errors; /* receiver missed packet */
28
29 /* detailed tx_errors */
30 __u32 tx_aborted_errors;
31 __u32 tx_carrier_errors;
32 __u32 tx_fifo_errors;
33 __u32 tx_heartbeat_errors;
34 __u32 tx_window_errors;
35
36 /* for cslip etc */
37 __u32 rx_compressed;
38 __u32 tx_compressed;
39
40 __u32 rx_nohandler; /* dropped, no handler found */
41 };
42
43 /* The main device statistics structure */
44 struct rtnl_link_stats64 {
45 __u64 rx_packets; /* total packets received */
46 __u64 tx_packets; /* total packets transmitted */
47 __u64 rx_bytes; /* total bytes received */
48 __u64 tx_bytes; /* total bytes transmitted */
49 __u64 rx_errors; /* bad packets received */
50 __u64 tx_errors; /* packet transmit problems */
51 __u64 rx_dropped; /* no space in linux buffers */
52 __u64 tx_dropped; /* no space available in linux */
53 __u64 multicast; /* multicast packets received */
54 __u64 collisions;
55
56 /* detailed rx_errors: */
57 __u64 rx_length_errors;
58 __u64 rx_over_errors; /* receiver ring buff overflow */
59 __u64 rx_crc_errors; /* recved pkt with crc error */
60 __u64 rx_frame_errors; /* recv'd frame alignment error */
61 __u64 rx_fifo_errors; /* recv'r fifo overrun */
62 __u64 rx_missed_errors; /* receiver missed packet */
63
64 /* detailed tx_errors */
65 __u64 tx_aborted_errors;
66 __u64 tx_carrier_errors;
67 __u64 tx_fifo_errors;
68 __u64 tx_heartbeat_errors;
69 __u64 tx_window_errors;
70
71 /* for cslip etc */
72 __u64 rx_compressed;
73 __u64 tx_compressed;
74
75 __u64 rx_nohandler; /* dropped, no handler found */
76 };
77
78 /* The struct should be in sync with struct ifmap */
79 struct rtnl_link_ifmap {
80 __u64 mem_start;
81 __u64 mem_end;
82 __u64 base_addr;
83 __u16 irq;
84 __u8 dma;
85 __u8 port;
86 };
87
88 /*
89 * IFLA_AF_SPEC
90 * Contains nested attributes for address family specific attributes.
91 * Each address family may create a attribute with the address family
92 * number as type and create its own attribute structure in it.
93 *
94 * Example:
95 * [IFLA_AF_SPEC] = {
96 * [AF_INET] = {
97 * [IFLA_INET_CONF] = ...,
98 * },
99 * [AF_INET6] = {
100 * [IFLA_INET6_FLAGS] = ...,
101 * [IFLA_INET6_CONF] = ...,
102 * }
103 * }
104 */
105
106 enum {
107 IFLA_UNSPEC,
108 IFLA_ADDRESS,
109 IFLA_BROADCAST,
110 IFLA_IFNAME,
111 IFLA_MTU,
112 IFLA_LINK,
113 IFLA_QDISC,
114 IFLA_STATS,
115 IFLA_COST,
116 #define IFLA_COST IFLA_COST
117 IFLA_PRIORITY,
118 #define IFLA_PRIORITY IFLA_PRIORITY
119 IFLA_MASTER,
120 #define IFLA_MASTER IFLA_MASTER
121 IFLA_WIRELESS, /* Wireless Extension event - see wireless.h */
122 #define IFLA_WIRELESS IFLA_WIRELESS
123 IFLA_PROTINFO, /* Protocol specific information for a link */
124 #define IFLA_PROTINFO IFLA_PROTINFO
125 IFLA_TXQLEN,
126 #define IFLA_TXQLEN IFLA_TXQLEN
127 IFLA_MAP,
128 #define IFLA_MAP IFLA_MAP
129 IFLA_WEIGHT,
130 #define IFLA_WEIGHT IFLA_WEIGHT
131 IFLA_OPERSTATE,
132 IFLA_LINKMODE,
133 IFLA_LINKINFO,
134 #define IFLA_LINKINFO IFLA_LINKINFO
135 IFLA_NET_NS_PID,
136 IFLA_IFALIAS,
137 IFLA_NUM_VF, /* Number of VFs if device is SR-IOV PF */
138 IFLA_VFINFO_LIST,
139 IFLA_STATS64,
140 IFLA_VF_PORTS,
141 IFLA_PORT_SELF,
142 IFLA_AF_SPEC,
143 IFLA_GROUP, /* Group the device belongs to */
144 IFLA_NET_NS_FD,
145 IFLA_EXT_MASK, /* Extended info mask, VFs, etc */
146 IFLA_PROMISCUITY, /* Promiscuity count: > 0 means acts PROMISC */
147 #define IFLA_PROMISCUITY IFLA_PROMISCUITY
148 IFLA_NUM_TX_QUEUES,
149 IFLA_NUM_RX_QUEUES,
150 IFLA_CARRIER,
151 IFLA_PHYS_PORT_ID,
152 IFLA_CARRIER_CHANGES,
153 IFLA_PHYS_SWITCH_ID,
154 IFLA_LINK_NETNSID,
155 IFLA_PHYS_PORT_NAME,
156 IFLA_PROTO_DOWN,
157 IFLA_GSO_MAX_SEGS,
158 IFLA_GSO_MAX_SIZE,
159 IFLA_PAD,
160 IFLA_XDP,
161 IFLA_EVENT,
162 IFLA_NEW_NETNSID,
163 IFLA_IF_NETNSID,
164 IFLA_TARGET_NETNSID = IFLA_IF_NETNSID, /* new alias */
165 IFLA_CARRIER_UP_COUNT,
166 IFLA_CARRIER_DOWN_COUNT,
167 IFLA_NEW_IFINDEX,
168 IFLA_MIN_MTU,
169 IFLA_MAX_MTU,
170 __IFLA_MAX
171 };
172
173
174 #define IFLA_MAX (__IFLA_MAX - 1)
175
176 /* backwards compatibility for userspace */
177 #define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
178 #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
179
180 enum {
181 IFLA_INET_UNSPEC,
182 IFLA_INET_CONF,
183 __IFLA_INET_MAX,
184 };
185
186 #define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
187
188 /* ifi_flags.
189
190 IFF_* flags.
191
192 The only change is:
193 IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
194 more not changeable by user. They describe link media
195 characteristics and set by device driver.
196
197 Comments:
198 - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
199 - If neither of these three flags are set;
200 the interface is NBMA.
201
202 - IFF_MULTICAST does not mean anything special:
203 multicasts can be used on all not-NBMA links.
204 IFF_MULTICAST means that this media uses special encapsulation
205 for multicast frames. Apparently, all IFF_POINTOPOINT and
206 IFF_BROADCAST devices are able to use multicasts too.
207 */
208
209 /* IFLA_LINK.
210 For usual devices it is equal ifi_index.
211 If it is a "virtual interface" (f.e. tunnel), ifi_link
212 can point to real physical interface (f.e. for bandwidth calculations),
213 or maybe 0, what means, that real media is unknown (usual
214 for IPIP tunnels, when route to endpoint is allowed to change)
215 */
216
217 /* Subtype attributes for IFLA_PROTINFO */
218 enum {
219 IFLA_INET6_UNSPEC,
220 IFLA_INET6_FLAGS, /* link flags */
221 IFLA_INET6_CONF, /* sysctl parameters */
222 IFLA_INET6_STATS, /* statistics */
223 IFLA_INET6_MCAST, /* MC things. What of them? */
224 IFLA_INET6_CACHEINFO, /* time values and max reasm size */
225 IFLA_INET6_ICMP6STATS, /* statistics (icmpv6) */
226 IFLA_INET6_TOKEN, /* device token */
227 IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
228 __IFLA_INET6_MAX
229 };
230
231 #define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1)
232
233 enum in6_addr_gen_mode {
234 IN6_ADDR_GEN_MODE_EUI64,
235 IN6_ADDR_GEN_MODE_NONE,
236 IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
237 IN6_ADDR_GEN_MODE_RANDOM,
238 };
239
240 /* Bridge section */
241
242 enum {
243 IFLA_BR_UNSPEC,
244 IFLA_BR_FORWARD_DELAY,
245 IFLA_BR_HELLO_TIME,
246 IFLA_BR_MAX_AGE,
247 IFLA_BR_AGEING_TIME,
248 IFLA_BR_STP_STATE,
249 IFLA_BR_PRIORITY,
250 IFLA_BR_VLAN_FILTERING,
251 IFLA_BR_VLAN_PROTOCOL,
252 IFLA_BR_GROUP_FWD_MASK,
253 IFLA_BR_ROOT_ID,
254 IFLA_BR_BRIDGE_ID,
255 IFLA_BR_ROOT_PORT,
256 IFLA_BR_ROOT_PATH_COST,
257 IFLA_BR_TOPOLOGY_CHANGE,
258 IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
259 IFLA_BR_HELLO_TIMER,
260 IFLA_BR_TCN_TIMER,
261 IFLA_BR_TOPOLOGY_CHANGE_TIMER,
262 IFLA_BR_GC_TIMER,
263 IFLA_BR_GROUP_ADDR,
264 IFLA_BR_FDB_FLUSH,
265 IFLA_BR_MCAST_ROUTER,
266 IFLA_BR_MCAST_SNOOPING,
267 IFLA_BR_MCAST_QUERY_USE_IFADDR,
268 IFLA_BR_MCAST_QUERIER,
269 IFLA_BR_MCAST_HASH_ELASTICITY,
270 IFLA_BR_MCAST_HASH_MAX,
271 IFLA_BR_MCAST_LAST_MEMBER_CNT,
272 IFLA_BR_MCAST_STARTUP_QUERY_CNT,
273 IFLA_BR_MCAST_LAST_MEMBER_INTVL,
274 IFLA_BR_MCAST_MEMBERSHIP_INTVL,
275 IFLA_BR_MCAST_QUERIER_INTVL,
276 IFLA_BR_MCAST_QUERY_INTVL,
277 IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
278 IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
279 IFLA_BR_NF_CALL_IPTABLES,
280 IFLA_BR_NF_CALL_IP6TABLES,
281 IFLA_BR_NF_CALL_ARPTABLES,
282 IFLA_BR_VLAN_DEFAULT_PVID,
283 IFLA_BR_PAD,
284 IFLA_BR_VLAN_STATS_ENABLED,
285 IFLA_BR_MCAST_STATS_ENABLED,
286 IFLA_BR_MCAST_IGMP_VERSION,
287 IFLA_BR_MCAST_MLD_VERSION,
288 IFLA_BR_VLAN_STATS_PER_PORT,
289 __IFLA_BR_MAX,
290 };
291
292 #define IFLA_BR_MAX (__IFLA_BR_MAX - 1)
293
294 struct ifla_bridge_id {
295 __u8 prio[2];
296 __u8 addr[6]; /* ETH_ALEN */
297 };
298
299 enum {
300 BRIDGE_MODE_UNSPEC,
301 BRIDGE_MODE_HAIRPIN,
302 };
303
304 enum {
305 IFLA_BRPORT_UNSPEC,
306 IFLA_BRPORT_STATE, /* Spanning tree state */
307 IFLA_BRPORT_PRIORITY, /* " priority */
308 IFLA_BRPORT_COST, /* " cost */
309 IFLA_BRPORT_MODE, /* mode (hairpin) */
310 IFLA_BRPORT_GUARD, /* bpdu guard */
311 IFLA_BRPORT_PROTECT, /* root port protection */
312 IFLA_BRPORT_FAST_LEAVE, /* multicast fast leave */
313 IFLA_BRPORT_LEARNING, /* mac learning */
314 IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
315 IFLA_BRPORT_PROXYARP, /* proxy ARP */
316 IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
317 IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
318 IFLA_BRPORT_ROOT_ID, /* designated root */
319 IFLA_BRPORT_BRIDGE_ID, /* designated bridge */
320 IFLA_BRPORT_DESIGNATED_PORT,
321 IFLA_BRPORT_DESIGNATED_COST,
322 IFLA_BRPORT_ID,
323 IFLA_BRPORT_NO,
324 IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,
325 IFLA_BRPORT_CONFIG_PENDING,
326 IFLA_BRPORT_MESSAGE_AGE_TIMER,
327 IFLA_BRPORT_FORWARD_DELAY_TIMER,
328 IFLA_BRPORT_HOLD_TIMER,
329 IFLA_BRPORT_FLUSH,
330 IFLA_BRPORT_MULTICAST_ROUTER,
331 IFLA_BRPORT_PAD,
332 IFLA_BRPORT_MCAST_FLOOD,
333 IFLA_BRPORT_MCAST_TO_UCAST,
334 IFLA_BRPORT_VLAN_TUNNEL,
335 IFLA_BRPORT_BCAST_FLOOD,
336 IFLA_BRPORT_GROUP_FWD_MASK,
337 IFLA_BRPORT_NEIGH_SUPPRESS,
338 IFLA_BRPORT_ISOLATED,
339 IFLA_BRPORT_BACKUP_PORT,
340 __IFLA_BRPORT_MAX
341 };
342 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
343
344 struct ifla_cacheinfo {
345 __u32 max_reasm_len;
346 __u32 tstamp; /* ipv6InterfaceTable updated timestamp */
347 __u32 reachable_time;
348 __u32 retrans_time;
349 };
350
351 enum {
352 IFLA_INFO_UNSPEC,
353 IFLA_INFO_KIND,
354 IFLA_INFO_DATA,
355 IFLA_INFO_XSTATS,
356 IFLA_INFO_SLAVE_KIND,
357 IFLA_INFO_SLAVE_DATA,
358 __IFLA_INFO_MAX,
359 };
360
361 #define IFLA_INFO_MAX (__IFLA_INFO_MAX - 1)
362
363 /* VLAN section */
364
365 enum {
366 IFLA_VLAN_UNSPEC,
367 IFLA_VLAN_ID,
368 IFLA_VLAN_FLAGS,
369 IFLA_VLAN_EGRESS_QOS,
370 IFLA_VLAN_INGRESS_QOS,
371 IFLA_VLAN_PROTOCOL,
372 __IFLA_VLAN_MAX,
373 };
374
375 #define IFLA_VLAN_MAX (__IFLA_VLAN_MAX - 1)
376
377 struct ifla_vlan_flags {
378 __u32 flags;
379 __u32 mask;
380 };
381
382 enum {
383 IFLA_VLAN_QOS_UNSPEC,
384 IFLA_VLAN_QOS_MAPPING,
385 __IFLA_VLAN_QOS_MAX
386 };
387
388 #define IFLA_VLAN_QOS_MAX (__IFLA_VLAN_QOS_MAX - 1)
389
390 struct ifla_vlan_qos_mapping {
391 __u32 from;
392 __u32 to;
393 };
394
395 /* MACVLAN section */
396 enum {
397 IFLA_MACVLAN_UNSPEC,
398 IFLA_MACVLAN_MODE,
399 IFLA_MACVLAN_FLAGS,
400 IFLA_MACVLAN_MACADDR_MODE,
401 IFLA_MACVLAN_MACADDR,
402 IFLA_MACVLAN_MACADDR_DATA,
403 IFLA_MACVLAN_MACADDR_COUNT,
404 __IFLA_MACVLAN_MAX,
405 };
406
407 #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
408
409 enum macvlan_mode {
410 MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
411 MACVLAN_MODE_VEPA = 2, /* talk to other ports through ext bridge */
412 MACVLAN_MODE_BRIDGE = 4, /* talk to bridge ports directly */
413 MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
414 MACVLAN_MODE_SOURCE = 16,/* use source MAC address list to assign */
415 };
416
417 enum macvlan_macaddr_mode {
418 MACVLAN_MACADDR_ADD,
419 MACVLAN_MACADDR_DEL,
420 MACVLAN_MACADDR_FLUSH,
421 MACVLAN_MACADDR_SET,
422 };
423
424 #define MACVLAN_FLAG_NOPROMISC 1
425
426 /* VRF section */
427 enum {
428 IFLA_VRF_UNSPEC,
429 IFLA_VRF_TABLE,
430 __IFLA_VRF_MAX
431 };
432
433 #define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
434
435 enum {
436 IFLA_VRF_PORT_UNSPEC,
437 IFLA_VRF_PORT_TABLE,
438 __IFLA_VRF_PORT_MAX
439 };
440
441 #define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
442
443 /* MACSEC section */
444 enum {
445 IFLA_MACSEC_UNSPEC,
446 IFLA_MACSEC_SCI,
447 IFLA_MACSEC_PORT,
448 IFLA_MACSEC_ICV_LEN,
449 IFLA_MACSEC_CIPHER_SUITE,
450 IFLA_MACSEC_WINDOW,
451 IFLA_MACSEC_ENCODING_SA,
452 IFLA_MACSEC_ENCRYPT,
453 IFLA_MACSEC_PROTECT,
454 IFLA_MACSEC_INC_SCI,
455 IFLA_MACSEC_ES,
456 IFLA_MACSEC_SCB,
457 IFLA_MACSEC_REPLAY_PROTECT,
458 IFLA_MACSEC_VALIDATION,
459 IFLA_MACSEC_PAD,
460 __IFLA_MACSEC_MAX,
461 };
462
463 #define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
464
465 /* XFRM section */
466 enum {
467 IFLA_XFRM_UNSPEC,
468 IFLA_XFRM_LINK,
469 IFLA_XFRM_IF_ID,
470 __IFLA_XFRM_MAX
471 };
472
473 #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
474
475 enum macsec_validation_type {
476 MACSEC_VALIDATE_DISABLED = 0,
477 MACSEC_VALIDATE_CHECK = 1,
478 MACSEC_VALIDATE_STRICT = 2,
479 __MACSEC_VALIDATE_END,
480 MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
481 };
482
483 /* IPVLAN section */
484 enum {
485 IFLA_IPVLAN_UNSPEC,
486 IFLA_IPVLAN_MODE,
487 IFLA_IPVLAN_FLAGS,
488 __IFLA_IPVLAN_MAX
489 };
490
491 #define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
492
493 enum ipvlan_mode {
494 IPVLAN_MODE_L2 = 0,
495 IPVLAN_MODE_L3,
496 IPVLAN_MODE_L3S,
497 IPVLAN_MODE_MAX
498 };
499
500 #define IPVLAN_F_PRIVATE 0x01
501 #define IPVLAN_F_VEPA 0x02
502
503 /* VXLAN section */
504 enum {
505 IFLA_VXLAN_UNSPEC,
506 IFLA_VXLAN_ID,
507 IFLA_VXLAN_GROUP, /* group or remote address */
508 IFLA_VXLAN_LINK,
509 IFLA_VXLAN_LOCAL,
510 IFLA_VXLAN_TTL,
511 IFLA_VXLAN_TOS,
512 IFLA_VXLAN_LEARNING,
513 IFLA_VXLAN_AGEING,
514 IFLA_VXLAN_LIMIT,
515 IFLA_VXLAN_PORT_RANGE, /* source port */
516 IFLA_VXLAN_PROXY,
517 IFLA_VXLAN_RSC,
518 IFLA_VXLAN_L2MISS,
519 IFLA_VXLAN_L3MISS,
520 IFLA_VXLAN_PORT, /* destination port */
521 IFLA_VXLAN_GROUP6,
522 IFLA_VXLAN_LOCAL6,
523 IFLA_VXLAN_UDP_CSUM,
524 IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
525 IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
526 IFLA_VXLAN_REMCSUM_TX,
527 IFLA_VXLAN_REMCSUM_RX,
528 IFLA_VXLAN_GBP,
529 IFLA_VXLAN_REMCSUM_NOPARTIAL,
530 IFLA_VXLAN_COLLECT_METADATA,
531 IFLA_VXLAN_LABEL,
532 IFLA_VXLAN_GPE,
533 IFLA_VXLAN_TTL_INHERIT,
534 IFLA_VXLAN_DF,
535 __IFLA_VXLAN_MAX
536 };
537 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
538
539 struct ifla_vxlan_port_range {
540 __be16 low;
541 __be16 high;
542 };
543
544 enum ifla_vxlan_df {
545 VXLAN_DF_UNSET = 0,
546 VXLAN_DF_SET,
547 VXLAN_DF_INHERIT,
548 __VXLAN_DF_END,
549 VXLAN_DF_MAX = __VXLAN_DF_END - 1,
550 };
551
552 /* GENEVE section */
553 enum {
554 IFLA_GENEVE_UNSPEC,
555 IFLA_GENEVE_ID,
556 IFLA_GENEVE_REMOTE,
557 IFLA_GENEVE_TTL,
558 IFLA_GENEVE_TOS,
559 IFLA_GENEVE_PORT, /* destination port */
560 IFLA_GENEVE_COLLECT_METADATA,
561 IFLA_GENEVE_REMOTE6,
562 IFLA_GENEVE_UDP_CSUM,
563 IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
564 IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
565 IFLA_GENEVE_LABEL,
566 IFLA_GENEVE_TTL_INHERIT,
567 IFLA_GENEVE_DF,
568 __IFLA_GENEVE_MAX
569 };
570 #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
571
572 enum ifla_geneve_df {
573 GENEVE_DF_UNSET = 0,
574 GENEVE_DF_SET,
575 GENEVE_DF_INHERIT,
576 __GENEVE_DF_END,
577 GENEVE_DF_MAX = __GENEVE_DF_END - 1,
578 };
579
580 /* PPP section */
581 enum {
582 IFLA_PPP_UNSPEC,
583 IFLA_PPP_DEV_FD,
584 __IFLA_PPP_MAX
585 };
586 #define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
587
588 /* GTP section */
589
590 enum ifla_gtp_role {
591 GTP_ROLE_GGSN = 0,
592 GTP_ROLE_SGSN,
593 };
594
595 enum {
596 IFLA_GTP_UNSPEC,
597 IFLA_GTP_FD0,
598 IFLA_GTP_FD1,
599 IFLA_GTP_PDP_HASHSIZE,
600 IFLA_GTP_ROLE,
601 __IFLA_GTP_MAX,
602 };
603 #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
604
605 /* Bonding section */
606
607 enum {
608 IFLA_BOND_UNSPEC,
609 IFLA_BOND_MODE,
610 IFLA_BOND_ACTIVE_SLAVE,
611 IFLA_BOND_MIIMON,
612 IFLA_BOND_UPDELAY,
613 IFLA_BOND_DOWNDELAY,
614 IFLA_BOND_USE_CARRIER,
615 IFLA_BOND_ARP_INTERVAL,
616 IFLA_BOND_ARP_IP_TARGET,
617 IFLA_BOND_ARP_VALIDATE,
618 IFLA_BOND_ARP_ALL_TARGETS,
619 IFLA_BOND_PRIMARY,
620 IFLA_BOND_PRIMARY_RESELECT,
621 IFLA_BOND_FAIL_OVER_MAC,
622 IFLA_BOND_XMIT_HASH_POLICY,
623 IFLA_BOND_RESEND_IGMP,
624 IFLA_BOND_NUM_PEER_NOTIF,
625 IFLA_BOND_ALL_SLAVES_ACTIVE,
626 IFLA_BOND_MIN_LINKS,
627 IFLA_BOND_LP_INTERVAL,
628 IFLA_BOND_PACKETS_PER_SLAVE,
629 IFLA_BOND_AD_LACP_RATE,
630 IFLA_BOND_AD_SELECT,
631 IFLA_BOND_AD_INFO,
632 IFLA_BOND_AD_ACTOR_SYS_PRIO,
633 IFLA_BOND_AD_USER_PORT_KEY,
634 IFLA_BOND_AD_ACTOR_SYSTEM,
635 IFLA_BOND_TLB_DYNAMIC_LB,
636 __IFLA_BOND_MAX,
637 };
638
639 #define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
640
641 enum {
642 IFLA_BOND_AD_INFO_UNSPEC,
643 IFLA_BOND_AD_INFO_AGGREGATOR,
644 IFLA_BOND_AD_INFO_NUM_PORTS,
645 IFLA_BOND_AD_INFO_ACTOR_KEY,
646 IFLA_BOND_AD_INFO_PARTNER_KEY,
647 IFLA_BOND_AD_INFO_PARTNER_MAC,
648 __IFLA_BOND_AD_INFO_MAX,
649 };
650
651 #define IFLA_BOND_AD_INFO_MAX (__IFLA_BOND_AD_INFO_MAX - 1)
652
653 enum {
654 IFLA_BOND_SLAVE_UNSPEC,
655 IFLA_BOND_SLAVE_STATE,
656 IFLA_BOND_SLAVE_MII_STATUS,
657 IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
658 IFLA_BOND_SLAVE_PERM_HWADDR,
659 IFLA_BOND_SLAVE_QUEUE_ID,
660 IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
661 IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
662 IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
663 __IFLA_BOND_SLAVE_MAX,
664 };
665
666 #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
667
668 /* SR-IOV virtual function management section */
669
670 enum {
671 IFLA_VF_INFO_UNSPEC,
672 IFLA_VF_INFO,
673 __IFLA_VF_INFO_MAX,
674 };
675
676 #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
677
678 enum {
679 IFLA_VF_UNSPEC,
680 IFLA_VF_MAC, /* Hardware queue specific attributes */
681 IFLA_VF_VLAN, /* VLAN ID and QoS */
682 IFLA_VF_TX_RATE, /* Max TX Bandwidth Allocation */
683 IFLA_VF_SPOOFCHK, /* Spoof Checking on/off switch */
684 IFLA_VF_LINK_STATE, /* link state enable/disable/auto switch */
685 IFLA_VF_RATE, /* Min and Max TX Bandwidth Allocation */
686 IFLA_VF_RSS_QUERY_EN, /* RSS Redirection Table and Hash Key query
687 * on/off switch
688 */
689 IFLA_VF_STATS, /* network device statistics */
690 IFLA_VF_TRUST, /* Trust VF */
691 IFLA_VF_IB_NODE_GUID, /* VF Infiniband node GUID */
692 IFLA_VF_IB_PORT_GUID, /* VF Infiniband port GUID */
693 IFLA_VF_VLAN_LIST, /* nested list of vlans, option for QinQ */
694 __IFLA_VF_MAX,
695 };
696
697 #define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
698
699 struct ifla_vf_mac {
700 __u32 vf;
701 __u8 mac[32]; /* MAX_ADDR_LEN */
702 };
703
704 struct ifla_vf_vlan {
705 __u32 vf;
706 __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
707 __u32 qos;
708 };
709
710 enum {
711 IFLA_VF_VLAN_INFO_UNSPEC,
712 IFLA_VF_VLAN_INFO, /* VLAN ID, QoS and VLAN protocol */
713 __IFLA_VF_VLAN_INFO_MAX,
714 };
715
716 #define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
717 #define MAX_VLAN_LIST_LEN 1
718
719 struct ifla_vf_vlan_info {
720 __u32 vf;
721 __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
722 __u32 qos;
723 __be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
724 };
725
726 struct ifla_vf_tx_rate {
727 __u32 vf;
728 __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
729 };
730
731 struct ifla_vf_rate {
732 __u32 vf;
733 __u32 min_tx_rate; /* Min Bandwidth in Mbps */
734 __u32 max_tx_rate; /* Max Bandwidth in Mbps */
735 };
736
737 struct ifla_vf_spoofchk {
738 __u32 vf;
739 __u32 setting;
740 };
741
742 struct ifla_vf_guid {
743 __u32 vf;
744 __u64 guid;
745 };
746
747 enum {
748 IFLA_VF_LINK_STATE_AUTO, /* link state of the uplink */
749 IFLA_VF_LINK_STATE_ENABLE, /* link always up */
750 IFLA_VF_LINK_STATE_DISABLE, /* link always down */
751 __IFLA_VF_LINK_STATE_MAX,
752 };
753
754 struct ifla_vf_link_state {
755 __u32 vf;
756 __u32 link_state;
757 };
758
759 struct ifla_vf_rss_query_en {
760 __u32 vf;
761 __u32 setting;
762 };
763
764 enum {
765 IFLA_VF_STATS_RX_PACKETS,
766 IFLA_VF_STATS_TX_PACKETS,
767 IFLA_VF_STATS_RX_BYTES,
768 IFLA_VF_STATS_TX_BYTES,
769 IFLA_VF_STATS_BROADCAST,
770 IFLA_VF_STATS_MULTICAST,
771 IFLA_VF_STATS_PAD,
772 IFLA_VF_STATS_RX_DROPPED,
773 IFLA_VF_STATS_TX_DROPPED,
774 __IFLA_VF_STATS_MAX,
775 };
776
777 #define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
778
779 struct ifla_vf_trust {
780 __u32 vf;
781 __u32 setting;
782 };
783
784 /* VF ports management section
785 *
786 * Nested layout of set/get msg is:
787 *
788 * [IFLA_NUM_VF]
789 * [IFLA_VF_PORTS]
790 * [IFLA_VF_PORT]
791 * [IFLA_PORT_*], ...
792 * [IFLA_VF_PORT]
793 * [IFLA_PORT_*], ...
794 * ...
795 * [IFLA_PORT_SELF]
796 * [IFLA_PORT_*], ...
797 */
798
799 enum {
800 IFLA_VF_PORT_UNSPEC,
801 IFLA_VF_PORT, /* nest */
802 __IFLA_VF_PORT_MAX,
803 };
804
805 #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
806
807 enum {
808 IFLA_PORT_UNSPEC,
809 IFLA_PORT_VF, /* __u32 */
810 IFLA_PORT_PROFILE, /* string */
811 IFLA_PORT_VSI_TYPE, /* 802.1Qbg (pre-)standard VDP */
812 IFLA_PORT_INSTANCE_UUID, /* binary UUID */
813 IFLA_PORT_HOST_UUID, /* binary UUID */
814 IFLA_PORT_REQUEST, /* __u8 */
815 IFLA_PORT_RESPONSE, /* __u16, output only */
816 __IFLA_PORT_MAX,
817 };
818
819 #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
820
821 #define PORT_PROFILE_MAX 40
822 #define PORT_UUID_MAX 16
823 #define PORT_SELF_VF -1
824
825 enum {
826 PORT_REQUEST_PREASSOCIATE = 0,
827 PORT_REQUEST_PREASSOCIATE_RR,
828 PORT_REQUEST_ASSOCIATE,
829 PORT_REQUEST_DISASSOCIATE,
830 };
831
832 enum {
833 PORT_VDP_RESPONSE_SUCCESS = 0,
834 PORT_VDP_RESPONSE_INVALID_FORMAT,
835 PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
836 PORT_VDP_RESPONSE_UNUSED_VTID,
837 PORT_VDP_RESPONSE_VTID_VIOLATION,
838 PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
839 PORT_VDP_RESPONSE_OUT_OF_SYNC,
840 /* 0x08-0xFF reserved for future VDP use */
841 PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
842 PORT_PROFILE_RESPONSE_INPROGRESS,
843 PORT_PROFILE_RESPONSE_INVALID,
844 PORT_PROFILE_RESPONSE_BADSTATE,
845 PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
846 PORT_PROFILE_RESPONSE_ERROR,
847 };
848
849 struct ifla_port_vsi {
850 __u8 vsi_mgr_id;
851 __u8 vsi_type_id[3];
852 __u8 vsi_type_version;
853 __u8 pad[3];
854 };
855
856
857 /* IPoIB section */
858
859 enum {
860 IFLA_IPOIB_UNSPEC,
861 IFLA_IPOIB_PKEY,
862 IFLA_IPOIB_MODE,
863 IFLA_IPOIB_UMCAST,
864 __IFLA_IPOIB_MAX
865 };
866
867 enum {
868 IPOIB_MODE_DATAGRAM = 0, /* using unreliable datagram QPs */
869 IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
870 };
871
872 #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
873
874
875 /* HSR section */
876
877 enum {
878 IFLA_HSR_UNSPEC,
879 IFLA_HSR_SLAVE1,
880 IFLA_HSR_SLAVE2,
881 IFLA_HSR_MULTICAST_SPEC, /* Last byte of supervision addr */
882 IFLA_HSR_SUPERVISION_ADDR, /* Supervision frame multicast addr */
883 IFLA_HSR_SEQ_NR,
884 IFLA_HSR_VERSION, /* HSR version */
885 __IFLA_HSR_MAX,
886 };
887
888 #define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
889
890 /* STATS section */
891
892 struct if_stats_msg {
893 __u8 family;
894 __u8 pad1;
895 __u16 pad2;
896 __u32 ifindex;
897 __u32 filter_mask;
898 };
899
900 /* A stats attribute can be netdev specific or a global stat.
901 * For netdev stats, lets use the prefix IFLA_STATS_LINK_*
902 */
903 enum {
904 IFLA_STATS_UNSPEC, /* also used as 64bit pad attribute */
905 IFLA_STATS_LINK_64,
906 IFLA_STATS_LINK_XSTATS,
907 IFLA_STATS_LINK_XSTATS_SLAVE,
908 IFLA_STATS_LINK_OFFLOAD_XSTATS,
909 IFLA_STATS_AF_SPEC,
910 __IFLA_STATS_MAX,
911 };
912
913 #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
914
915 #define IFLA_STATS_FILTER_BIT(ATTR) (1 << (ATTR - 1))
916
917 /* These are embedded into IFLA_STATS_LINK_XSTATS:
918 * [IFLA_STATS_LINK_XSTATS]
919 * -> [LINK_XSTATS_TYPE_xxx]
920 * -> [rtnl link type specific attributes]
921 */
922 enum {
923 LINK_XSTATS_TYPE_UNSPEC,
924 LINK_XSTATS_TYPE_BRIDGE,
925 __LINK_XSTATS_TYPE_MAX
926 };
927 #define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
928
929 /* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
930 enum {
931 IFLA_OFFLOAD_XSTATS_UNSPEC,
932 IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
933 __IFLA_OFFLOAD_XSTATS_MAX
934 };
935 #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
936
937 /* XDP section */
938
939 #define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0)
940 #define XDP_FLAGS_SKB_MODE (1U << 1)
941 #define XDP_FLAGS_DRV_MODE (1U << 2)
942 #define XDP_FLAGS_HW_MODE (1U << 3)
943 #define XDP_FLAGS_MODES (XDP_FLAGS_SKB_MODE | \
944 XDP_FLAGS_DRV_MODE | \
945 XDP_FLAGS_HW_MODE)
946 #define XDP_FLAGS_MASK (XDP_FLAGS_UPDATE_IF_NOEXIST | \
947 XDP_FLAGS_MODES)
948
949 /* These are stored into IFLA_XDP_ATTACHED on dump. */
950 enum {
951 XDP_ATTACHED_NONE = 0,
952 XDP_ATTACHED_DRV,
953 XDP_ATTACHED_SKB,
954 XDP_ATTACHED_HW,
955 XDP_ATTACHED_MULTI,
956 };
957
958 enum {
959 IFLA_XDP_UNSPEC,
960 IFLA_XDP_FD,
961 IFLA_XDP_ATTACHED,
962 IFLA_XDP_FLAGS,
963 IFLA_XDP_PROG_ID,
964 IFLA_XDP_DRV_PROG_ID,
965 IFLA_XDP_SKB_PROG_ID,
966 IFLA_XDP_HW_PROG_ID,
967 __IFLA_XDP_MAX,
968 };
969
970 #define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
971
972 enum {
973 IFLA_EVENT_NONE,
974 IFLA_EVENT_REBOOT, /* internal reset / reboot */
975 IFLA_EVENT_FEATURES, /* change in offload features */
976 IFLA_EVENT_BONDING_FAILOVER, /* change in active slave */
977 IFLA_EVENT_NOTIFY_PEERS, /* re-sent grat. arp/ndisc */
978 IFLA_EVENT_IGMP_RESEND, /* re-sent IGMP JOIN */
979 IFLA_EVENT_BONDING_OPTIONS, /* change in bonding options */
980 };
981
982 /* tun section */
983
984 enum {
985 IFLA_TUN_UNSPEC,
986 IFLA_TUN_OWNER,
987 IFLA_TUN_GROUP,
988 IFLA_TUN_TYPE,
989 IFLA_TUN_PI,
990 IFLA_TUN_VNET_HDR,
991 IFLA_TUN_PERSIST,
992 IFLA_TUN_MULTI_QUEUE,
993 IFLA_TUN_NUM_QUEUES,
994 IFLA_TUN_NUM_DISABLED_QUEUES,
995 __IFLA_TUN_MAX,
996 };
997
998 #define IFLA_TUN_MAX (__IFLA_TUN_MAX - 1)
999
1000 /* rmnet section */
1001
1002 #define RMNET_FLAGS_INGRESS_DEAGGREGATION (1U << 0)
1003 #define RMNET_FLAGS_INGRESS_MAP_COMMANDS (1U << 1)
1004 #define RMNET_FLAGS_INGRESS_MAP_CKSUMV4 (1U << 2)
1005 #define RMNET_FLAGS_EGRESS_MAP_CKSUMV4 (1U << 3)
1006
1007 enum {
1008 IFLA_RMNET_UNSPEC,
1009 IFLA_RMNET_MUX_ID,
1010 IFLA_RMNET_FLAGS,
1011 __IFLA_RMNET_MAX,
1012 };
1013
1014 #define IFLA_RMNET_MAX (__IFLA_RMNET_MAX - 1)
1015
1016 struct ifla_rmnet_flags {
1017 __u32 flags;
1018 __u32 mask;
1019 };
1020
1021 #endif /* _LINUX_IF_LINK_H */