17c2aad20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
27c2aad20Sopenharmony_ci#ifndef _UAPI_LINUX_IF_LINK_H
37c2aad20Sopenharmony_ci#define _UAPI_LINUX_IF_LINK_H
47c2aad20Sopenharmony_ci
57c2aad20Sopenharmony_ci#include <linux/types.h>
67c2aad20Sopenharmony_ci#include <linux/netlink.h>
77c2aad20Sopenharmony_ci
87c2aad20Sopenharmony_ci/* This struct should be in sync with struct rtnl_link_stats64 */
97c2aad20Sopenharmony_cistruct rtnl_link_stats {
107c2aad20Sopenharmony_ci	__u32	rx_packets;
117c2aad20Sopenharmony_ci	__u32	tx_packets;
127c2aad20Sopenharmony_ci	__u32	rx_bytes;
137c2aad20Sopenharmony_ci	__u32	tx_bytes;
147c2aad20Sopenharmony_ci	__u32	rx_errors;
157c2aad20Sopenharmony_ci	__u32	tx_errors;
167c2aad20Sopenharmony_ci	__u32	rx_dropped;
177c2aad20Sopenharmony_ci	__u32	tx_dropped;
187c2aad20Sopenharmony_ci	__u32	multicast;
197c2aad20Sopenharmony_ci	__u32	collisions;
207c2aad20Sopenharmony_ci	/* detailed rx_errors: */
217c2aad20Sopenharmony_ci	__u32	rx_length_errors;
227c2aad20Sopenharmony_ci	__u32	rx_over_errors;
237c2aad20Sopenharmony_ci	__u32	rx_crc_errors;
247c2aad20Sopenharmony_ci	__u32	rx_frame_errors;
257c2aad20Sopenharmony_ci	__u32	rx_fifo_errors;
267c2aad20Sopenharmony_ci	__u32	rx_missed_errors;
277c2aad20Sopenharmony_ci
287c2aad20Sopenharmony_ci	/* detailed tx_errors */
297c2aad20Sopenharmony_ci	__u32	tx_aborted_errors;
307c2aad20Sopenharmony_ci	__u32	tx_carrier_errors;
317c2aad20Sopenharmony_ci	__u32	tx_fifo_errors;
327c2aad20Sopenharmony_ci	__u32	tx_heartbeat_errors;
337c2aad20Sopenharmony_ci	__u32	tx_window_errors;
347c2aad20Sopenharmony_ci
357c2aad20Sopenharmony_ci	/* for cslip etc */
367c2aad20Sopenharmony_ci	__u32	rx_compressed;
377c2aad20Sopenharmony_ci	__u32	tx_compressed;
387c2aad20Sopenharmony_ci
397c2aad20Sopenharmony_ci	__u32	rx_nohandler;
407c2aad20Sopenharmony_ci};
417c2aad20Sopenharmony_ci
427c2aad20Sopenharmony_ci/**
437c2aad20Sopenharmony_ci * struct rtnl_link_stats64 - The main device statistics structure.
447c2aad20Sopenharmony_ci *
457c2aad20Sopenharmony_ci * @rx_packets: Number of good packets received by the interface.
467c2aad20Sopenharmony_ci *   For hardware interfaces counts all good packets received from the device
477c2aad20Sopenharmony_ci *   by the host, including packets which host had to drop at various stages
487c2aad20Sopenharmony_ci *   of processing (even in the driver).
497c2aad20Sopenharmony_ci *
507c2aad20Sopenharmony_ci * @tx_packets: Number of packets successfully transmitted.
517c2aad20Sopenharmony_ci *   For hardware interfaces counts packets which host was able to successfully
527c2aad20Sopenharmony_ci *   hand over to the device, which does not necessarily mean that packets
537c2aad20Sopenharmony_ci *   had been successfully transmitted out of the device, only that device
547c2aad20Sopenharmony_ci *   acknowledged it copied them out of host memory.
557c2aad20Sopenharmony_ci *
567c2aad20Sopenharmony_ci * @rx_bytes: Number of good received bytes, corresponding to @rx_packets.
577c2aad20Sopenharmony_ci *
587c2aad20Sopenharmony_ci *   For IEEE 802.3 devices should count the length of Ethernet Frames
597c2aad20Sopenharmony_ci *   excluding the FCS.
607c2aad20Sopenharmony_ci *
617c2aad20Sopenharmony_ci * @tx_bytes: Number of good transmitted bytes, corresponding to @tx_packets.
627c2aad20Sopenharmony_ci *
637c2aad20Sopenharmony_ci *   For IEEE 802.3 devices should count the length of Ethernet Frames
647c2aad20Sopenharmony_ci *   excluding the FCS.
657c2aad20Sopenharmony_ci *
667c2aad20Sopenharmony_ci * @rx_errors: Total number of bad packets received on this network device.
677c2aad20Sopenharmony_ci *   This counter must include events counted by @rx_length_errors,
687c2aad20Sopenharmony_ci *   @rx_crc_errors, @rx_frame_errors and other errors not otherwise
697c2aad20Sopenharmony_ci *   counted.
707c2aad20Sopenharmony_ci *
717c2aad20Sopenharmony_ci * @tx_errors: Total number of transmit problems.
727c2aad20Sopenharmony_ci *   This counter must include events counter by @tx_aborted_errors,
737c2aad20Sopenharmony_ci *   @tx_carrier_errors, @tx_fifo_errors, @tx_heartbeat_errors,
747c2aad20Sopenharmony_ci *   @tx_window_errors and other errors not otherwise counted.
757c2aad20Sopenharmony_ci *
767c2aad20Sopenharmony_ci * @rx_dropped: Number of packets received but not processed,
777c2aad20Sopenharmony_ci *   e.g. due to lack of resources or unsupported protocol.
787c2aad20Sopenharmony_ci *   For hardware interfaces this counter may include packets discarded
797c2aad20Sopenharmony_ci *   due to L2 address filtering but should not include packets dropped
807c2aad20Sopenharmony_ci *   by the device due to buffer exhaustion which are counted separately in
817c2aad20Sopenharmony_ci *   @rx_missed_errors (since procfs folds those two counters together).
827c2aad20Sopenharmony_ci *
837c2aad20Sopenharmony_ci * @tx_dropped: Number of packets dropped on their way to transmission,
847c2aad20Sopenharmony_ci *   e.g. due to lack of resources.
857c2aad20Sopenharmony_ci *
867c2aad20Sopenharmony_ci * @multicast: Multicast packets received.
877c2aad20Sopenharmony_ci *   For hardware interfaces this statistic is commonly calculated
887c2aad20Sopenharmony_ci *   at the device level (unlike @rx_packets) and therefore may include
897c2aad20Sopenharmony_ci *   packets which did not reach the host.
907c2aad20Sopenharmony_ci *
917c2aad20Sopenharmony_ci *   For IEEE 802.3 devices this counter may be equivalent to:
927c2aad20Sopenharmony_ci *
937c2aad20Sopenharmony_ci *    - 30.3.1.1.21 aMulticastFramesReceivedOK
947c2aad20Sopenharmony_ci *
957c2aad20Sopenharmony_ci * @collisions: Number of collisions during packet transmissions.
967c2aad20Sopenharmony_ci *
977c2aad20Sopenharmony_ci * @rx_length_errors: Number of packets dropped due to invalid length.
987c2aad20Sopenharmony_ci *   Part of aggregate "frame" errors in `/proc/net/dev`.
997c2aad20Sopenharmony_ci *
1007c2aad20Sopenharmony_ci *   For IEEE 802.3 devices this counter should be equivalent to a sum
1017c2aad20Sopenharmony_ci *   of the following attributes:
1027c2aad20Sopenharmony_ci *
1037c2aad20Sopenharmony_ci *    - 30.3.1.1.23 aInRangeLengthErrors
1047c2aad20Sopenharmony_ci *    - 30.3.1.1.24 aOutOfRangeLengthField
1057c2aad20Sopenharmony_ci *    - 30.3.1.1.25 aFrameTooLongErrors
1067c2aad20Sopenharmony_ci *
1077c2aad20Sopenharmony_ci * @rx_over_errors: Receiver FIFO overflow event counter.
1087c2aad20Sopenharmony_ci *
1097c2aad20Sopenharmony_ci *   Historically the count of overflow events. Such events may be
1107c2aad20Sopenharmony_ci *   reported in the receive descriptors or via interrupts, and may
1117c2aad20Sopenharmony_ci *   not correspond one-to-one with dropped packets.
1127c2aad20Sopenharmony_ci *
1137c2aad20Sopenharmony_ci *   The recommended interpretation for high speed interfaces is -
1147c2aad20Sopenharmony_ci *   number of packets dropped because they did not fit into buffers
1157c2aad20Sopenharmony_ci *   provided by the host, e.g. packets larger than MTU or next buffer
1167c2aad20Sopenharmony_ci *   in the ring was not available for a scatter transfer.
1177c2aad20Sopenharmony_ci *
1187c2aad20Sopenharmony_ci *   Part of aggregate "frame" errors in `/proc/net/dev`.
1197c2aad20Sopenharmony_ci *
1207c2aad20Sopenharmony_ci *   This statistics was historically used interchangeably with
1217c2aad20Sopenharmony_ci *   @rx_fifo_errors.
1227c2aad20Sopenharmony_ci *
1237c2aad20Sopenharmony_ci *   This statistic corresponds to hardware events and is not commonly used
1247c2aad20Sopenharmony_ci *   on software devices.
1257c2aad20Sopenharmony_ci *
1267c2aad20Sopenharmony_ci * @rx_crc_errors: Number of packets received with a CRC error.
1277c2aad20Sopenharmony_ci *   Part of aggregate "frame" errors in `/proc/net/dev`.
1287c2aad20Sopenharmony_ci *
1297c2aad20Sopenharmony_ci *   For IEEE 802.3 devices this counter must be equivalent to:
1307c2aad20Sopenharmony_ci *
1317c2aad20Sopenharmony_ci *    - 30.3.1.1.6 aFrameCheckSequenceErrors
1327c2aad20Sopenharmony_ci *
1337c2aad20Sopenharmony_ci * @rx_frame_errors: Receiver frame alignment errors.
1347c2aad20Sopenharmony_ci *   Part of aggregate "frame" errors in `/proc/net/dev`.
1357c2aad20Sopenharmony_ci *
1367c2aad20Sopenharmony_ci *   For IEEE 802.3 devices this counter should be equivalent to:
1377c2aad20Sopenharmony_ci *
1387c2aad20Sopenharmony_ci *    - 30.3.1.1.7 aAlignmentErrors
1397c2aad20Sopenharmony_ci *
1407c2aad20Sopenharmony_ci * @rx_fifo_errors: Receiver FIFO error counter.
1417c2aad20Sopenharmony_ci *
1427c2aad20Sopenharmony_ci *   Historically the count of overflow events. Those events may be
1437c2aad20Sopenharmony_ci *   reported in the receive descriptors or via interrupts, and may
1447c2aad20Sopenharmony_ci *   not correspond one-to-one with dropped packets.
1457c2aad20Sopenharmony_ci *
1467c2aad20Sopenharmony_ci *   This statistics was used interchangeably with @rx_over_errors.
1477c2aad20Sopenharmony_ci *   Not recommended for use in drivers for high speed interfaces.
1487c2aad20Sopenharmony_ci *
1497c2aad20Sopenharmony_ci *   This statistic is used on software devices, e.g. to count software
1507c2aad20Sopenharmony_ci *   packet queue overflow (can) or sequencing errors (GRE).
1517c2aad20Sopenharmony_ci *
1527c2aad20Sopenharmony_ci * @rx_missed_errors: Count of packets missed by the host.
1537c2aad20Sopenharmony_ci *   Folded into the "drop" counter in `/proc/net/dev`.
1547c2aad20Sopenharmony_ci *
1557c2aad20Sopenharmony_ci *   Counts number of packets dropped by the device due to lack
1567c2aad20Sopenharmony_ci *   of buffer space. This usually indicates that the host interface
1577c2aad20Sopenharmony_ci *   is slower than the network interface, or host is not keeping up
1587c2aad20Sopenharmony_ci *   with the receive packet rate.
1597c2aad20Sopenharmony_ci *
1607c2aad20Sopenharmony_ci *   This statistic corresponds to hardware events and is not used
1617c2aad20Sopenharmony_ci *   on software devices.
1627c2aad20Sopenharmony_ci *
1637c2aad20Sopenharmony_ci * @tx_aborted_errors:
1647c2aad20Sopenharmony_ci *   Part of aggregate "carrier" errors in `/proc/net/dev`.
1657c2aad20Sopenharmony_ci *   For IEEE 802.3 devices capable of half-duplex operation this counter
1667c2aad20Sopenharmony_ci *   must be equivalent to:
1677c2aad20Sopenharmony_ci *
1687c2aad20Sopenharmony_ci *    - 30.3.1.1.11 aFramesAbortedDueToXSColls
1697c2aad20Sopenharmony_ci *
1707c2aad20Sopenharmony_ci *   High speed interfaces may use this counter as a general device
1717c2aad20Sopenharmony_ci *   discard counter.
1727c2aad20Sopenharmony_ci *
1737c2aad20Sopenharmony_ci * @tx_carrier_errors: Number of frame transmission errors due to loss
1747c2aad20Sopenharmony_ci *   of carrier during transmission.
1757c2aad20Sopenharmony_ci *   Part of aggregate "carrier" errors in `/proc/net/dev`.
1767c2aad20Sopenharmony_ci *
1777c2aad20Sopenharmony_ci *   For IEEE 802.3 devices this counter must be equivalent to:
1787c2aad20Sopenharmony_ci *
1797c2aad20Sopenharmony_ci *    - 30.3.1.1.13 aCarrierSenseErrors
1807c2aad20Sopenharmony_ci *
1817c2aad20Sopenharmony_ci * @tx_fifo_errors: Number of frame transmission errors due to device
1827c2aad20Sopenharmony_ci *   FIFO underrun / underflow. This condition occurs when the device
1837c2aad20Sopenharmony_ci *   begins transmission of a frame but is unable to deliver the
1847c2aad20Sopenharmony_ci *   entire frame to the transmitter in time for transmission.
1857c2aad20Sopenharmony_ci *   Part of aggregate "carrier" errors in `/proc/net/dev`.
1867c2aad20Sopenharmony_ci *
1877c2aad20Sopenharmony_ci * @tx_heartbeat_errors: Number of Heartbeat / SQE Test errors for
1887c2aad20Sopenharmony_ci *   old half-duplex Ethernet.
1897c2aad20Sopenharmony_ci *   Part of aggregate "carrier" errors in `/proc/net/dev`.
1907c2aad20Sopenharmony_ci *
1917c2aad20Sopenharmony_ci *   For IEEE 802.3 devices possibly equivalent to:
1927c2aad20Sopenharmony_ci *
1937c2aad20Sopenharmony_ci *    - 30.3.2.1.4 aSQETestErrors
1947c2aad20Sopenharmony_ci *
1957c2aad20Sopenharmony_ci * @tx_window_errors: Number of frame transmission errors due
1967c2aad20Sopenharmony_ci *   to late collisions (for Ethernet - after the first 64B of transmission).
1977c2aad20Sopenharmony_ci *   Part of aggregate "carrier" errors in `/proc/net/dev`.
1987c2aad20Sopenharmony_ci *
1997c2aad20Sopenharmony_ci *   For IEEE 802.3 devices this counter must be equivalent to:
2007c2aad20Sopenharmony_ci *
2017c2aad20Sopenharmony_ci *    - 30.3.1.1.10 aLateCollisions
2027c2aad20Sopenharmony_ci *
2037c2aad20Sopenharmony_ci * @rx_compressed: Number of correctly received compressed packets.
2047c2aad20Sopenharmony_ci *   This counters is only meaningful for interfaces which support
2057c2aad20Sopenharmony_ci *   packet compression (e.g. CSLIP, PPP).
2067c2aad20Sopenharmony_ci *
2077c2aad20Sopenharmony_ci * @tx_compressed: Number of transmitted compressed packets.
2087c2aad20Sopenharmony_ci *   This counters is only meaningful for interfaces which support
2097c2aad20Sopenharmony_ci *   packet compression (e.g. CSLIP, PPP).
2107c2aad20Sopenharmony_ci *
2117c2aad20Sopenharmony_ci * @rx_nohandler: Number of packets received on the interface
2127c2aad20Sopenharmony_ci *   but dropped by the networking stack because the device is
2137c2aad20Sopenharmony_ci *   not designated to receive packets (e.g. backup link in a bond).
2147c2aad20Sopenharmony_ci *
2157c2aad20Sopenharmony_ci * @rx_otherhost_dropped: Number of packets dropped due to mismatch
2167c2aad20Sopenharmony_ci *   in destination MAC address.
2177c2aad20Sopenharmony_ci */
2187c2aad20Sopenharmony_cistruct rtnl_link_stats64 {
2197c2aad20Sopenharmony_ci	__u64	rx_packets;
2207c2aad20Sopenharmony_ci	__u64	tx_packets;
2217c2aad20Sopenharmony_ci	__u64	rx_bytes;
2227c2aad20Sopenharmony_ci	__u64	tx_bytes;
2237c2aad20Sopenharmony_ci	__u64	rx_errors;
2247c2aad20Sopenharmony_ci	__u64	tx_errors;
2257c2aad20Sopenharmony_ci	__u64	rx_dropped;
2267c2aad20Sopenharmony_ci	__u64	tx_dropped;
2277c2aad20Sopenharmony_ci	__u64	multicast;
2287c2aad20Sopenharmony_ci	__u64	collisions;
2297c2aad20Sopenharmony_ci
2307c2aad20Sopenharmony_ci	/* detailed rx_errors: */
2317c2aad20Sopenharmony_ci	__u64	rx_length_errors;
2327c2aad20Sopenharmony_ci	__u64	rx_over_errors;
2337c2aad20Sopenharmony_ci	__u64	rx_crc_errors;
2347c2aad20Sopenharmony_ci	__u64	rx_frame_errors;
2357c2aad20Sopenharmony_ci	__u64	rx_fifo_errors;
2367c2aad20Sopenharmony_ci	__u64	rx_missed_errors;
2377c2aad20Sopenharmony_ci
2387c2aad20Sopenharmony_ci	/* detailed tx_errors */
2397c2aad20Sopenharmony_ci	__u64	tx_aborted_errors;
2407c2aad20Sopenharmony_ci	__u64	tx_carrier_errors;
2417c2aad20Sopenharmony_ci	__u64	tx_fifo_errors;
2427c2aad20Sopenharmony_ci	__u64	tx_heartbeat_errors;
2437c2aad20Sopenharmony_ci	__u64	tx_window_errors;
2447c2aad20Sopenharmony_ci
2457c2aad20Sopenharmony_ci	/* for cslip etc */
2467c2aad20Sopenharmony_ci	__u64	rx_compressed;
2477c2aad20Sopenharmony_ci	__u64	tx_compressed;
2487c2aad20Sopenharmony_ci	__u64	rx_nohandler;
2497c2aad20Sopenharmony_ci
2507c2aad20Sopenharmony_ci	__u64	rx_otherhost_dropped;
2517c2aad20Sopenharmony_ci};
2527c2aad20Sopenharmony_ci
2537c2aad20Sopenharmony_ci/* Subset of link stats useful for in-HW collection. Meaning of the fields is as
2547c2aad20Sopenharmony_ci * for struct rtnl_link_stats64.
2557c2aad20Sopenharmony_ci */
2567c2aad20Sopenharmony_cistruct rtnl_hw_stats64 {
2577c2aad20Sopenharmony_ci	__u64	rx_packets;
2587c2aad20Sopenharmony_ci	__u64	tx_packets;
2597c2aad20Sopenharmony_ci	__u64	rx_bytes;
2607c2aad20Sopenharmony_ci	__u64	tx_bytes;
2617c2aad20Sopenharmony_ci	__u64	rx_errors;
2627c2aad20Sopenharmony_ci	__u64	tx_errors;
2637c2aad20Sopenharmony_ci	__u64	rx_dropped;
2647c2aad20Sopenharmony_ci	__u64	tx_dropped;
2657c2aad20Sopenharmony_ci	__u64	multicast;
2667c2aad20Sopenharmony_ci};
2677c2aad20Sopenharmony_ci
2687c2aad20Sopenharmony_ci/* The struct should be in sync with struct ifmap */
2697c2aad20Sopenharmony_cistruct rtnl_link_ifmap {
2707c2aad20Sopenharmony_ci	__u64	mem_start;
2717c2aad20Sopenharmony_ci	__u64	mem_end;
2727c2aad20Sopenharmony_ci	__u64	base_addr;
2737c2aad20Sopenharmony_ci	__u16	irq;
2747c2aad20Sopenharmony_ci	__u8	dma;
2757c2aad20Sopenharmony_ci	__u8	port;
2767c2aad20Sopenharmony_ci};
2777c2aad20Sopenharmony_ci
2787c2aad20Sopenharmony_ci/*
2797c2aad20Sopenharmony_ci * IFLA_AF_SPEC
2807c2aad20Sopenharmony_ci *   Contains nested attributes for address family specific attributes.
2817c2aad20Sopenharmony_ci *   Each address family may create a attribute with the address family
2827c2aad20Sopenharmony_ci *   number as type and create its own attribute structure in it.
2837c2aad20Sopenharmony_ci *
2847c2aad20Sopenharmony_ci *   Example:
2857c2aad20Sopenharmony_ci *   [IFLA_AF_SPEC] = {
2867c2aad20Sopenharmony_ci *       [AF_INET] = {
2877c2aad20Sopenharmony_ci *           [IFLA_INET_CONF] = ...,
2887c2aad20Sopenharmony_ci *       },
2897c2aad20Sopenharmony_ci *       [AF_INET6] = {
2907c2aad20Sopenharmony_ci *           [IFLA_INET6_FLAGS] = ...,
2917c2aad20Sopenharmony_ci *           [IFLA_INET6_CONF] = ...,
2927c2aad20Sopenharmony_ci *       }
2937c2aad20Sopenharmony_ci *   }
2947c2aad20Sopenharmony_ci */
2957c2aad20Sopenharmony_ci
2967c2aad20Sopenharmony_cienum {
2977c2aad20Sopenharmony_ci	IFLA_UNSPEC,
2987c2aad20Sopenharmony_ci	IFLA_ADDRESS,
2997c2aad20Sopenharmony_ci	IFLA_BROADCAST,
3007c2aad20Sopenharmony_ci	IFLA_IFNAME,
3017c2aad20Sopenharmony_ci	IFLA_MTU,
3027c2aad20Sopenharmony_ci	IFLA_LINK,
3037c2aad20Sopenharmony_ci	IFLA_QDISC,
3047c2aad20Sopenharmony_ci	IFLA_STATS,
3057c2aad20Sopenharmony_ci	IFLA_COST,
3067c2aad20Sopenharmony_ci#define IFLA_COST IFLA_COST
3077c2aad20Sopenharmony_ci	IFLA_PRIORITY,
3087c2aad20Sopenharmony_ci#define IFLA_PRIORITY IFLA_PRIORITY
3097c2aad20Sopenharmony_ci	IFLA_MASTER,
3107c2aad20Sopenharmony_ci#define IFLA_MASTER IFLA_MASTER
3117c2aad20Sopenharmony_ci	IFLA_WIRELESS,		/* Wireless Extension event - see wireless.h */
3127c2aad20Sopenharmony_ci#define IFLA_WIRELESS IFLA_WIRELESS
3137c2aad20Sopenharmony_ci	IFLA_PROTINFO,		/* Protocol specific information for a link */
3147c2aad20Sopenharmony_ci#define IFLA_PROTINFO IFLA_PROTINFO
3157c2aad20Sopenharmony_ci	IFLA_TXQLEN,
3167c2aad20Sopenharmony_ci#define IFLA_TXQLEN IFLA_TXQLEN
3177c2aad20Sopenharmony_ci	IFLA_MAP,
3187c2aad20Sopenharmony_ci#define IFLA_MAP IFLA_MAP
3197c2aad20Sopenharmony_ci	IFLA_WEIGHT,
3207c2aad20Sopenharmony_ci#define IFLA_WEIGHT IFLA_WEIGHT
3217c2aad20Sopenharmony_ci	IFLA_OPERSTATE,
3227c2aad20Sopenharmony_ci	IFLA_LINKMODE,
3237c2aad20Sopenharmony_ci	IFLA_LINKINFO,
3247c2aad20Sopenharmony_ci#define IFLA_LINKINFO IFLA_LINKINFO
3257c2aad20Sopenharmony_ci	IFLA_NET_NS_PID,
3267c2aad20Sopenharmony_ci	IFLA_IFALIAS,
3277c2aad20Sopenharmony_ci	IFLA_NUM_VF,		/* Number of VFs if device is SR-IOV PF */
3287c2aad20Sopenharmony_ci	IFLA_VFINFO_LIST,
3297c2aad20Sopenharmony_ci	IFLA_STATS64,
3307c2aad20Sopenharmony_ci	IFLA_VF_PORTS,
3317c2aad20Sopenharmony_ci	IFLA_PORT_SELF,
3327c2aad20Sopenharmony_ci	IFLA_AF_SPEC,
3337c2aad20Sopenharmony_ci	IFLA_GROUP,		/* Group the device belongs to */
3347c2aad20Sopenharmony_ci	IFLA_NET_NS_FD,
3357c2aad20Sopenharmony_ci	IFLA_EXT_MASK,		/* Extended info mask, VFs, etc */
3367c2aad20Sopenharmony_ci	IFLA_PROMISCUITY,	/* Promiscuity count: > 0 means acts PROMISC */
3377c2aad20Sopenharmony_ci#define IFLA_PROMISCUITY IFLA_PROMISCUITY
3387c2aad20Sopenharmony_ci	IFLA_NUM_TX_QUEUES,
3397c2aad20Sopenharmony_ci	IFLA_NUM_RX_QUEUES,
3407c2aad20Sopenharmony_ci	IFLA_CARRIER,
3417c2aad20Sopenharmony_ci	IFLA_PHYS_PORT_ID,
3427c2aad20Sopenharmony_ci	IFLA_CARRIER_CHANGES,
3437c2aad20Sopenharmony_ci	IFLA_PHYS_SWITCH_ID,
3447c2aad20Sopenharmony_ci	IFLA_LINK_NETNSID,
3457c2aad20Sopenharmony_ci	IFLA_PHYS_PORT_NAME,
3467c2aad20Sopenharmony_ci	IFLA_PROTO_DOWN,
3477c2aad20Sopenharmony_ci	IFLA_GSO_MAX_SEGS,
3487c2aad20Sopenharmony_ci	IFLA_GSO_MAX_SIZE,
3497c2aad20Sopenharmony_ci	IFLA_PAD,
3507c2aad20Sopenharmony_ci	IFLA_XDP,
3517c2aad20Sopenharmony_ci	IFLA_EVENT,
3527c2aad20Sopenharmony_ci	IFLA_NEW_NETNSID,
3537c2aad20Sopenharmony_ci	IFLA_IF_NETNSID,
3547c2aad20Sopenharmony_ci	IFLA_TARGET_NETNSID = IFLA_IF_NETNSID, /* new alias */
3557c2aad20Sopenharmony_ci	IFLA_CARRIER_UP_COUNT,
3567c2aad20Sopenharmony_ci	IFLA_CARRIER_DOWN_COUNT,
3577c2aad20Sopenharmony_ci	IFLA_NEW_IFINDEX,
3587c2aad20Sopenharmony_ci	IFLA_MIN_MTU,
3597c2aad20Sopenharmony_ci	IFLA_MAX_MTU,
3607c2aad20Sopenharmony_ci	IFLA_PROP_LIST,
3617c2aad20Sopenharmony_ci	IFLA_ALT_IFNAME, /* Alternative ifname */
3627c2aad20Sopenharmony_ci	IFLA_PERM_ADDRESS,
3637c2aad20Sopenharmony_ci	IFLA_PROTO_DOWN_REASON,
3647c2aad20Sopenharmony_ci
3657c2aad20Sopenharmony_ci	/* device (sysfs) name as parent, used instead
3667c2aad20Sopenharmony_ci	 * of IFLA_LINK where there's no parent netdev
3677c2aad20Sopenharmony_ci	 */
3687c2aad20Sopenharmony_ci	IFLA_PARENT_DEV_NAME,
3697c2aad20Sopenharmony_ci	IFLA_PARENT_DEV_BUS_NAME,
3707c2aad20Sopenharmony_ci	IFLA_GRO_MAX_SIZE,
3717c2aad20Sopenharmony_ci	IFLA_TSO_MAX_SIZE,
3727c2aad20Sopenharmony_ci	IFLA_TSO_MAX_SEGS,
3737c2aad20Sopenharmony_ci	IFLA_ALLMULTI,		/* Allmulti count: > 0 means acts ALLMULTI */
3747c2aad20Sopenharmony_ci
3757c2aad20Sopenharmony_ci	IFLA_DEVLINK_PORT,
3767c2aad20Sopenharmony_ci
3777c2aad20Sopenharmony_ci	IFLA_GSO_IPV4_MAX_SIZE,
3787c2aad20Sopenharmony_ci	IFLA_GRO_IPV4_MAX_SIZE,
3797c2aad20Sopenharmony_ci	IFLA_DPLL_PIN,
3807c2aad20Sopenharmony_ci	__IFLA_MAX
3817c2aad20Sopenharmony_ci};
3827c2aad20Sopenharmony_ci
3837c2aad20Sopenharmony_ci
3847c2aad20Sopenharmony_ci#define IFLA_MAX (__IFLA_MAX - 1)
3857c2aad20Sopenharmony_ci
3867c2aad20Sopenharmony_cienum {
3877c2aad20Sopenharmony_ci	IFLA_PROTO_DOWN_REASON_UNSPEC,
3887c2aad20Sopenharmony_ci	IFLA_PROTO_DOWN_REASON_MASK,	/* u32, mask for reason bits */
3897c2aad20Sopenharmony_ci	IFLA_PROTO_DOWN_REASON_VALUE,   /* u32, reason bit value */
3907c2aad20Sopenharmony_ci
3917c2aad20Sopenharmony_ci	__IFLA_PROTO_DOWN_REASON_CNT,
3927c2aad20Sopenharmony_ci	IFLA_PROTO_DOWN_REASON_MAX = __IFLA_PROTO_DOWN_REASON_CNT - 1
3937c2aad20Sopenharmony_ci};
3947c2aad20Sopenharmony_ci
3957c2aad20Sopenharmony_ci/* backwards compatibility for userspace */
3967c2aad20Sopenharmony_ci#ifndef __KERNEL__
3977c2aad20Sopenharmony_ci#define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
3987c2aad20Sopenharmony_ci#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
3997c2aad20Sopenharmony_ci#endif
4007c2aad20Sopenharmony_ci
4017c2aad20Sopenharmony_cienum {
4027c2aad20Sopenharmony_ci	IFLA_INET_UNSPEC,
4037c2aad20Sopenharmony_ci	IFLA_INET_CONF,
4047c2aad20Sopenharmony_ci	__IFLA_INET_MAX,
4057c2aad20Sopenharmony_ci};
4067c2aad20Sopenharmony_ci
4077c2aad20Sopenharmony_ci#define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
4087c2aad20Sopenharmony_ci
4097c2aad20Sopenharmony_ci/* ifi_flags.
4107c2aad20Sopenharmony_ci
4117c2aad20Sopenharmony_ci   IFF_* flags.
4127c2aad20Sopenharmony_ci
4137c2aad20Sopenharmony_ci   The only change is:
4147c2aad20Sopenharmony_ci   IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
4157c2aad20Sopenharmony_ci   more not changeable by user. They describe link media
4167c2aad20Sopenharmony_ci   characteristics and set by device driver.
4177c2aad20Sopenharmony_ci
4187c2aad20Sopenharmony_ci   Comments:
4197c2aad20Sopenharmony_ci   - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
4207c2aad20Sopenharmony_ci   - If neither of these three flags are set;
4217c2aad20Sopenharmony_ci     the interface is NBMA.
4227c2aad20Sopenharmony_ci
4237c2aad20Sopenharmony_ci   - IFF_MULTICAST does not mean anything special:
4247c2aad20Sopenharmony_ci   multicasts can be used on all not-NBMA links.
4257c2aad20Sopenharmony_ci   IFF_MULTICAST means that this media uses special encapsulation
4267c2aad20Sopenharmony_ci   for multicast frames. Apparently, all IFF_POINTOPOINT and
4277c2aad20Sopenharmony_ci   IFF_BROADCAST devices are able to use multicasts too.
4287c2aad20Sopenharmony_ci */
4297c2aad20Sopenharmony_ci
4307c2aad20Sopenharmony_ci/* IFLA_LINK.
4317c2aad20Sopenharmony_ci   For usual devices it is equal ifi_index.
4327c2aad20Sopenharmony_ci   If it is a "virtual interface" (f.e. tunnel), ifi_link
4337c2aad20Sopenharmony_ci   can point to real physical interface (f.e. for bandwidth calculations),
4347c2aad20Sopenharmony_ci   or maybe 0, what means, that real media is unknown (usual
4357c2aad20Sopenharmony_ci   for IPIP tunnels, when route to endpoint is allowed to change)
4367c2aad20Sopenharmony_ci */
4377c2aad20Sopenharmony_ci
4387c2aad20Sopenharmony_ci/* Subtype attributes for IFLA_PROTINFO */
4397c2aad20Sopenharmony_cienum {
4407c2aad20Sopenharmony_ci	IFLA_INET6_UNSPEC,
4417c2aad20Sopenharmony_ci	IFLA_INET6_FLAGS,	/* link flags			*/
4427c2aad20Sopenharmony_ci	IFLA_INET6_CONF,	/* sysctl parameters		*/
4437c2aad20Sopenharmony_ci	IFLA_INET6_STATS,	/* statistics			*/
4447c2aad20Sopenharmony_ci	IFLA_INET6_MCAST,	/* MC things. What of them?	*/
4457c2aad20Sopenharmony_ci	IFLA_INET6_CACHEINFO,	/* time values and max reasm size */
4467c2aad20Sopenharmony_ci	IFLA_INET6_ICMP6STATS,	/* statistics (icmpv6)		*/
4477c2aad20Sopenharmony_ci	IFLA_INET6_TOKEN,	/* device token			*/
4487c2aad20Sopenharmony_ci	IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
4497c2aad20Sopenharmony_ci	IFLA_INET6_RA_MTU,	/* mtu carried in the RA message */
4507c2aad20Sopenharmony_ci	__IFLA_INET6_MAX
4517c2aad20Sopenharmony_ci};
4527c2aad20Sopenharmony_ci
4537c2aad20Sopenharmony_ci#define IFLA_INET6_MAX	(__IFLA_INET6_MAX - 1)
4547c2aad20Sopenharmony_ci
4557c2aad20Sopenharmony_cienum in6_addr_gen_mode {
4567c2aad20Sopenharmony_ci	IN6_ADDR_GEN_MODE_EUI64,
4577c2aad20Sopenharmony_ci	IN6_ADDR_GEN_MODE_NONE,
4587c2aad20Sopenharmony_ci	IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
4597c2aad20Sopenharmony_ci	IN6_ADDR_GEN_MODE_RANDOM,
4607c2aad20Sopenharmony_ci};
4617c2aad20Sopenharmony_ci
4627c2aad20Sopenharmony_ci/* Bridge section */
4637c2aad20Sopenharmony_ci
4647c2aad20Sopenharmony_cienum {
4657c2aad20Sopenharmony_ci	IFLA_BR_UNSPEC,
4667c2aad20Sopenharmony_ci	IFLA_BR_FORWARD_DELAY,
4677c2aad20Sopenharmony_ci	IFLA_BR_HELLO_TIME,
4687c2aad20Sopenharmony_ci	IFLA_BR_MAX_AGE,
4697c2aad20Sopenharmony_ci	IFLA_BR_AGEING_TIME,
4707c2aad20Sopenharmony_ci	IFLA_BR_STP_STATE,
4717c2aad20Sopenharmony_ci	IFLA_BR_PRIORITY,
4727c2aad20Sopenharmony_ci	IFLA_BR_VLAN_FILTERING,
4737c2aad20Sopenharmony_ci	IFLA_BR_VLAN_PROTOCOL,
4747c2aad20Sopenharmony_ci	IFLA_BR_GROUP_FWD_MASK,
4757c2aad20Sopenharmony_ci	IFLA_BR_ROOT_ID,
4767c2aad20Sopenharmony_ci	IFLA_BR_BRIDGE_ID,
4777c2aad20Sopenharmony_ci	IFLA_BR_ROOT_PORT,
4787c2aad20Sopenharmony_ci	IFLA_BR_ROOT_PATH_COST,
4797c2aad20Sopenharmony_ci	IFLA_BR_TOPOLOGY_CHANGE,
4807c2aad20Sopenharmony_ci	IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
4817c2aad20Sopenharmony_ci	IFLA_BR_HELLO_TIMER,
4827c2aad20Sopenharmony_ci	IFLA_BR_TCN_TIMER,
4837c2aad20Sopenharmony_ci	IFLA_BR_TOPOLOGY_CHANGE_TIMER,
4847c2aad20Sopenharmony_ci	IFLA_BR_GC_TIMER,
4857c2aad20Sopenharmony_ci	IFLA_BR_GROUP_ADDR,
4867c2aad20Sopenharmony_ci	IFLA_BR_FDB_FLUSH,
4877c2aad20Sopenharmony_ci	IFLA_BR_MCAST_ROUTER,
4887c2aad20Sopenharmony_ci	IFLA_BR_MCAST_SNOOPING,
4897c2aad20Sopenharmony_ci	IFLA_BR_MCAST_QUERY_USE_IFADDR,
4907c2aad20Sopenharmony_ci	IFLA_BR_MCAST_QUERIER,
4917c2aad20Sopenharmony_ci	IFLA_BR_MCAST_HASH_ELASTICITY,
4927c2aad20Sopenharmony_ci	IFLA_BR_MCAST_HASH_MAX,
4937c2aad20Sopenharmony_ci	IFLA_BR_MCAST_LAST_MEMBER_CNT,
4947c2aad20Sopenharmony_ci	IFLA_BR_MCAST_STARTUP_QUERY_CNT,
4957c2aad20Sopenharmony_ci	IFLA_BR_MCAST_LAST_MEMBER_INTVL,
4967c2aad20Sopenharmony_ci	IFLA_BR_MCAST_MEMBERSHIP_INTVL,
4977c2aad20Sopenharmony_ci	IFLA_BR_MCAST_QUERIER_INTVL,
4987c2aad20Sopenharmony_ci	IFLA_BR_MCAST_QUERY_INTVL,
4997c2aad20Sopenharmony_ci	IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
5007c2aad20Sopenharmony_ci	IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
5017c2aad20Sopenharmony_ci	IFLA_BR_NF_CALL_IPTABLES,
5027c2aad20Sopenharmony_ci	IFLA_BR_NF_CALL_IP6TABLES,
5037c2aad20Sopenharmony_ci	IFLA_BR_NF_CALL_ARPTABLES,
5047c2aad20Sopenharmony_ci	IFLA_BR_VLAN_DEFAULT_PVID,
5057c2aad20Sopenharmony_ci	IFLA_BR_PAD,
5067c2aad20Sopenharmony_ci	IFLA_BR_VLAN_STATS_ENABLED,
5077c2aad20Sopenharmony_ci	IFLA_BR_MCAST_STATS_ENABLED,
5087c2aad20Sopenharmony_ci	IFLA_BR_MCAST_IGMP_VERSION,
5097c2aad20Sopenharmony_ci	IFLA_BR_MCAST_MLD_VERSION,
5107c2aad20Sopenharmony_ci	IFLA_BR_VLAN_STATS_PER_PORT,
5117c2aad20Sopenharmony_ci	IFLA_BR_MULTI_BOOLOPT,
5127c2aad20Sopenharmony_ci	IFLA_BR_MCAST_QUERIER_STATE,
5137c2aad20Sopenharmony_ci	__IFLA_BR_MAX,
5147c2aad20Sopenharmony_ci};
5157c2aad20Sopenharmony_ci
5167c2aad20Sopenharmony_ci#define IFLA_BR_MAX	(__IFLA_BR_MAX - 1)
5177c2aad20Sopenharmony_ci
5187c2aad20Sopenharmony_cistruct ifla_bridge_id {
5197c2aad20Sopenharmony_ci	__u8	prio[2];
5207c2aad20Sopenharmony_ci	__u8	addr[6]; /* ETH_ALEN */
5217c2aad20Sopenharmony_ci};
5227c2aad20Sopenharmony_ci
5237c2aad20Sopenharmony_cienum {
5247c2aad20Sopenharmony_ci	BRIDGE_MODE_UNSPEC,
5257c2aad20Sopenharmony_ci	BRIDGE_MODE_HAIRPIN,
5267c2aad20Sopenharmony_ci};
5277c2aad20Sopenharmony_ci
5287c2aad20Sopenharmony_cienum {
5297c2aad20Sopenharmony_ci	IFLA_BRPORT_UNSPEC,
5307c2aad20Sopenharmony_ci	IFLA_BRPORT_STATE,	/* Spanning tree state     */
5317c2aad20Sopenharmony_ci	IFLA_BRPORT_PRIORITY,	/* "             priority  */
5327c2aad20Sopenharmony_ci	IFLA_BRPORT_COST,	/* "             cost      */
5337c2aad20Sopenharmony_ci	IFLA_BRPORT_MODE,	/* mode (hairpin)          */
5347c2aad20Sopenharmony_ci	IFLA_BRPORT_GUARD,	/* bpdu guard              */
5357c2aad20Sopenharmony_ci	IFLA_BRPORT_PROTECT,	/* root port protection    */
5367c2aad20Sopenharmony_ci	IFLA_BRPORT_FAST_LEAVE,	/* multicast fast leave    */
5377c2aad20Sopenharmony_ci	IFLA_BRPORT_LEARNING,	/* mac learning */
5387c2aad20Sopenharmony_ci	IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
5397c2aad20Sopenharmony_ci	IFLA_BRPORT_PROXYARP,	/* proxy ARP */
5407c2aad20Sopenharmony_ci	IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
5417c2aad20Sopenharmony_ci	IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
5427c2aad20Sopenharmony_ci	IFLA_BRPORT_ROOT_ID,	/* designated root */
5437c2aad20Sopenharmony_ci	IFLA_BRPORT_BRIDGE_ID,	/* designated bridge */
5447c2aad20Sopenharmony_ci	IFLA_BRPORT_DESIGNATED_PORT,
5457c2aad20Sopenharmony_ci	IFLA_BRPORT_DESIGNATED_COST,
5467c2aad20Sopenharmony_ci	IFLA_BRPORT_ID,
5477c2aad20Sopenharmony_ci	IFLA_BRPORT_NO,
5487c2aad20Sopenharmony_ci	IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,
5497c2aad20Sopenharmony_ci	IFLA_BRPORT_CONFIG_PENDING,
5507c2aad20Sopenharmony_ci	IFLA_BRPORT_MESSAGE_AGE_TIMER,
5517c2aad20Sopenharmony_ci	IFLA_BRPORT_FORWARD_DELAY_TIMER,
5527c2aad20Sopenharmony_ci	IFLA_BRPORT_HOLD_TIMER,
5537c2aad20Sopenharmony_ci	IFLA_BRPORT_FLUSH,
5547c2aad20Sopenharmony_ci	IFLA_BRPORT_MULTICAST_ROUTER,
5557c2aad20Sopenharmony_ci	IFLA_BRPORT_PAD,
5567c2aad20Sopenharmony_ci	IFLA_BRPORT_MCAST_FLOOD,
5577c2aad20Sopenharmony_ci	IFLA_BRPORT_MCAST_TO_UCAST,
5587c2aad20Sopenharmony_ci	IFLA_BRPORT_VLAN_TUNNEL,
5597c2aad20Sopenharmony_ci	IFLA_BRPORT_BCAST_FLOOD,
5607c2aad20Sopenharmony_ci	IFLA_BRPORT_GROUP_FWD_MASK,
5617c2aad20Sopenharmony_ci	IFLA_BRPORT_NEIGH_SUPPRESS,
5627c2aad20Sopenharmony_ci	IFLA_BRPORT_ISOLATED,
5637c2aad20Sopenharmony_ci	IFLA_BRPORT_BACKUP_PORT,
5647c2aad20Sopenharmony_ci	IFLA_BRPORT_MRP_RING_OPEN,
5657c2aad20Sopenharmony_ci	IFLA_BRPORT_MRP_IN_OPEN,
5667c2aad20Sopenharmony_ci	IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
5677c2aad20Sopenharmony_ci	IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
5687c2aad20Sopenharmony_ci	IFLA_BRPORT_LOCKED,
5697c2aad20Sopenharmony_ci	IFLA_BRPORT_MAB,
5707c2aad20Sopenharmony_ci	IFLA_BRPORT_MCAST_N_GROUPS,
5717c2aad20Sopenharmony_ci	IFLA_BRPORT_MCAST_MAX_GROUPS,
5727c2aad20Sopenharmony_ci	IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
5737c2aad20Sopenharmony_ci	IFLA_BRPORT_BACKUP_NHID,
5747c2aad20Sopenharmony_ci	__IFLA_BRPORT_MAX
5757c2aad20Sopenharmony_ci};
5767c2aad20Sopenharmony_ci#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
5777c2aad20Sopenharmony_ci
5787c2aad20Sopenharmony_cistruct ifla_cacheinfo {
5797c2aad20Sopenharmony_ci	__u32	max_reasm_len;
5807c2aad20Sopenharmony_ci	__u32	tstamp;		/* ipv6InterfaceTable updated timestamp */
5817c2aad20Sopenharmony_ci	__u32	reachable_time;
5827c2aad20Sopenharmony_ci	__u32	retrans_time;
5837c2aad20Sopenharmony_ci};
5847c2aad20Sopenharmony_ci
5857c2aad20Sopenharmony_cienum {
5867c2aad20Sopenharmony_ci	IFLA_INFO_UNSPEC,
5877c2aad20Sopenharmony_ci	IFLA_INFO_KIND,
5887c2aad20Sopenharmony_ci	IFLA_INFO_DATA,
5897c2aad20Sopenharmony_ci	IFLA_INFO_XSTATS,
5907c2aad20Sopenharmony_ci	IFLA_INFO_SLAVE_KIND,
5917c2aad20Sopenharmony_ci	IFLA_INFO_SLAVE_DATA,
5927c2aad20Sopenharmony_ci	__IFLA_INFO_MAX,
5937c2aad20Sopenharmony_ci};
5947c2aad20Sopenharmony_ci
5957c2aad20Sopenharmony_ci#define IFLA_INFO_MAX	(__IFLA_INFO_MAX - 1)
5967c2aad20Sopenharmony_ci
5977c2aad20Sopenharmony_ci/* VLAN section */
5987c2aad20Sopenharmony_ci
5997c2aad20Sopenharmony_cienum {
6007c2aad20Sopenharmony_ci	IFLA_VLAN_UNSPEC,
6017c2aad20Sopenharmony_ci	IFLA_VLAN_ID,
6027c2aad20Sopenharmony_ci	IFLA_VLAN_FLAGS,
6037c2aad20Sopenharmony_ci	IFLA_VLAN_EGRESS_QOS,
6047c2aad20Sopenharmony_ci	IFLA_VLAN_INGRESS_QOS,
6057c2aad20Sopenharmony_ci	IFLA_VLAN_PROTOCOL,
6067c2aad20Sopenharmony_ci	__IFLA_VLAN_MAX,
6077c2aad20Sopenharmony_ci};
6087c2aad20Sopenharmony_ci
6097c2aad20Sopenharmony_ci#define IFLA_VLAN_MAX	(__IFLA_VLAN_MAX - 1)
6107c2aad20Sopenharmony_ci
6117c2aad20Sopenharmony_cistruct ifla_vlan_flags {
6127c2aad20Sopenharmony_ci	__u32	flags;
6137c2aad20Sopenharmony_ci	__u32	mask;
6147c2aad20Sopenharmony_ci};
6157c2aad20Sopenharmony_ci
6167c2aad20Sopenharmony_cienum {
6177c2aad20Sopenharmony_ci	IFLA_VLAN_QOS_UNSPEC,
6187c2aad20Sopenharmony_ci	IFLA_VLAN_QOS_MAPPING,
6197c2aad20Sopenharmony_ci	__IFLA_VLAN_QOS_MAX
6207c2aad20Sopenharmony_ci};
6217c2aad20Sopenharmony_ci
6227c2aad20Sopenharmony_ci#define IFLA_VLAN_QOS_MAX	(__IFLA_VLAN_QOS_MAX - 1)
6237c2aad20Sopenharmony_ci
6247c2aad20Sopenharmony_cistruct ifla_vlan_qos_mapping {
6257c2aad20Sopenharmony_ci	__u32 from;
6267c2aad20Sopenharmony_ci	__u32 to;
6277c2aad20Sopenharmony_ci};
6287c2aad20Sopenharmony_ci
6297c2aad20Sopenharmony_ci/* MACVLAN section */
6307c2aad20Sopenharmony_cienum {
6317c2aad20Sopenharmony_ci	IFLA_MACVLAN_UNSPEC,
6327c2aad20Sopenharmony_ci	IFLA_MACVLAN_MODE,
6337c2aad20Sopenharmony_ci	IFLA_MACVLAN_FLAGS,
6347c2aad20Sopenharmony_ci	IFLA_MACVLAN_MACADDR_MODE,
6357c2aad20Sopenharmony_ci	IFLA_MACVLAN_MACADDR,
6367c2aad20Sopenharmony_ci	IFLA_MACVLAN_MACADDR_DATA,
6377c2aad20Sopenharmony_ci	IFLA_MACVLAN_MACADDR_COUNT,
6387c2aad20Sopenharmony_ci	IFLA_MACVLAN_BC_QUEUE_LEN,
6397c2aad20Sopenharmony_ci	IFLA_MACVLAN_BC_QUEUE_LEN_USED,
6407c2aad20Sopenharmony_ci	IFLA_MACVLAN_BC_CUTOFF,
6417c2aad20Sopenharmony_ci	__IFLA_MACVLAN_MAX,
6427c2aad20Sopenharmony_ci};
6437c2aad20Sopenharmony_ci
6447c2aad20Sopenharmony_ci#define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
6457c2aad20Sopenharmony_ci
6467c2aad20Sopenharmony_cienum macvlan_mode {
6477c2aad20Sopenharmony_ci	MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
6487c2aad20Sopenharmony_ci	MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
6497c2aad20Sopenharmony_ci	MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
6507c2aad20Sopenharmony_ci	MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
6517c2aad20Sopenharmony_ci	MACVLAN_MODE_SOURCE  = 16,/* use source MAC address list to assign */
6527c2aad20Sopenharmony_ci};
6537c2aad20Sopenharmony_ci
6547c2aad20Sopenharmony_cienum macvlan_macaddr_mode {
6557c2aad20Sopenharmony_ci	MACVLAN_MACADDR_ADD,
6567c2aad20Sopenharmony_ci	MACVLAN_MACADDR_DEL,
6577c2aad20Sopenharmony_ci	MACVLAN_MACADDR_FLUSH,
6587c2aad20Sopenharmony_ci	MACVLAN_MACADDR_SET,
6597c2aad20Sopenharmony_ci};
6607c2aad20Sopenharmony_ci
6617c2aad20Sopenharmony_ci#define MACVLAN_FLAG_NOPROMISC	1
6627c2aad20Sopenharmony_ci#define MACVLAN_FLAG_NODST	2 /* skip dst macvlan if matching src macvlan */
6637c2aad20Sopenharmony_ci
6647c2aad20Sopenharmony_ci/* VRF section */
6657c2aad20Sopenharmony_cienum {
6667c2aad20Sopenharmony_ci	IFLA_VRF_UNSPEC,
6677c2aad20Sopenharmony_ci	IFLA_VRF_TABLE,
6687c2aad20Sopenharmony_ci	__IFLA_VRF_MAX
6697c2aad20Sopenharmony_ci};
6707c2aad20Sopenharmony_ci
6717c2aad20Sopenharmony_ci#define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
6727c2aad20Sopenharmony_ci
6737c2aad20Sopenharmony_cienum {
6747c2aad20Sopenharmony_ci	IFLA_VRF_PORT_UNSPEC,
6757c2aad20Sopenharmony_ci	IFLA_VRF_PORT_TABLE,
6767c2aad20Sopenharmony_ci	__IFLA_VRF_PORT_MAX
6777c2aad20Sopenharmony_ci};
6787c2aad20Sopenharmony_ci
6797c2aad20Sopenharmony_ci#define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
6807c2aad20Sopenharmony_ci
6817c2aad20Sopenharmony_ci/* MACSEC section */
6827c2aad20Sopenharmony_cienum {
6837c2aad20Sopenharmony_ci	IFLA_MACSEC_UNSPEC,
6847c2aad20Sopenharmony_ci	IFLA_MACSEC_SCI,
6857c2aad20Sopenharmony_ci	IFLA_MACSEC_PORT,
6867c2aad20Sopenharmony_ci	IFLA_MACSEC_ICV_LEN,
6877c2aad20Sopenharmony_ci	IFLA_MACSEC_CIPHER_SUITE,
6887c2aad20Sopenharmony_ci	IFLA_MACSEC_WINDOW,
6897c2aad20Sopenharmony_ci	IFLA_MACSEC_ENCODING_SA,
6907c2aad20Sopenharmony_ci	IFLA_MACSEC_ENCRYPT,
6917c2aad20Sopenharmony_ci	IFLA_MACSEC_PROTECT,
6927c2aad20Sopenharmony_ci	IFLA_MACSEC_INC_SCI,
6937c2aad20Sopenharmony_ci	IFLA_MACSEC_ES,
6947c2aad20Sopenharmony_ci	IFLA_MACSEC_SCB,
6957c2aad20Sopenharmony_ci	IFLA_MACSEC_REPLAY_PROTECT,
6967c2aad20Sopenharmony_ci	IFLA_MACSEC_VALIDATION,
6977c2aad20Sopenharmony_ci	IFLA_MACSEC_PAD,
6987c2aad20Sopenharmony_ci	IFLA_MACSEC_OFFLOAD,
6997c2aad20Sopenharmony_ci	__IFLA_MACSEC_MAX,
7007c2aad20Sopenharmony_ci};
7017c2aad20Sopenharmony_ci
7027c2aad20Sopenharmony_ci#define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
7037c2aad20Sopenharmony_ci
7047c2aad20Sopenharmony_ci/* XFRM section */
7057c2aad20Sopenharmony_cienum {
7067c2aad20Sopenharmony_ci	IFLA_XFRM_UNSPEC,
7077c2aad20Sopenharmony_ci	IFLA_XFRM_LINK,
7087c2aad20Sopenharmony_ci	IFLA_XFRM_IF_ID,
7097c2aad20Sopenharmony_ci	IFLA_XFRM_COLLECT_METADATA,
7107c2aad20Sopenharmony_ci	__IFLA_XFRM_MAX
7117c2aad20Sopenharmony_ci};
7127c2aad20Sopenharmony_ci
7137c2aad20Sopenharmony_ci#define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
7147c2aad20Sopenharmony_ci
7157c2aad20Sopenharmony_cienum macsec_validation_type {
7167c2aad20Sopenharmony_ci	MACSEC_VALIDATE_DISABLED = 0,
7177c2aad20Sopenharmony_ci	MACSEC_VALIDATE_CHECK = 1,
7187c2aad20Sopenharmony_ci	MACSEC_VALIDATE_STRICT = 2,
7197c2aad20Sopenharmony_ci	__MACSEC_VALIDATE_END,
7207c2aad20Sopenharmony_ci	MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
7217c2aad20Sopenharmony_ci};
7227c2aad20Sopenharmony_ci
7237c2aad20Sopenharmony_cienum macsec_offload {
7247c2aad20Sopenharmony_ci	MACSEC_OFFLOAD_OFF = 0,
7257c2aad20Sopenharmony_ci	MACSEC_OFFLOAD_PHY = 1,
7267c2aad20Sopenharmony_ci	MACSEC_OFFLOAD_MAC = 2,
7277c2aad20Sopenharmony_ci	__MACSEC_OFFLOAD_END,
7287c2aad20Sopenharmony_ci	MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1,
7297c2aad20Sopenharmony_ci};
7307c2aad20Sopenharmony_ci
7317c2aad20Sopenharmony_ci/* IPVLAN section */
7327c2aad20Sopenharmony_cienum {
7337c2aad20Sopenharmony_ci	IFLA_IPVLAN_UNSPEC,
7347c2aad20Sopenharmony_ci	IFLA_IPVLAN_MODE,
7357c2aad20Sopenharmony_ci	IFLA_IPVLAN_FLAGS,
7367c2aad20Sopenharmony_ci	__IFLA_IPVLAN_MAX
7377c2aad20Sopenharmony_ci};
7387c2aad20Sopenharmony_ci
7397c2aad20Sopenharmony_ci#define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
7407c2aad20Sopenharmony_ci
7417c2aad20Sopenharmony_cienum ipvlan_mode {
7427c2aad20Sopenharmony_ci	IPVLAN_MODE_L2 = 0,
7437c2aad20Sopenharmony_ci	IPVLAN_MODE_L3,
7447c2aad20Sopenharmony_ci	IPVLAN_MODE_L3S,
7457c2aad20Sopenharmony_ci	IPVLAN_MODE_MAX
7467c2aad20Sopenharmony_ci};
7477c2aad20Sopenharmony_ci
7487c2aad20Sopenharmony_ci#define IPVLAN_F_PRIVATE	0x01
7497c2aad20Sopenharmony_ci#define IPVLAN_F_VEPA		0x02
7507c2aad20Sopenharmony_ci
7517c2aad20Sopenharmony_ci/* Tunnel RTM header */
7527c2aad20Sopenharmony_cistruct tunnel_msg {
7537c2aad20Sopenharmony_ci	__u8 family;
7547c2aad20Sopenharmony_ci	__u8 flags;
7557c2aad20Sopenharmony_ci	__u16 reserved2;
7567c2aad20Sopenharmony_ci	__u32 ifindex;
7577c2aad20Sopenharmony_ci};
7587c2aad20Sopenharmony_ci
7597c2aad20Sopenharmony_ci/* netkit section */
7607c2aad20Sopenharmony_cienum netkit_action {
7617c2aad20Sopenharmony_ci	NETKIT_NEXT	= -1,
7627c2aad20Sopenharmony_ci	NETKIT_PASS	= 0,
7637c2aad20Sopenharmony_ci	NETKIT_DROP	= 2,
7647c2aad20Sopenharmony_ci	NETKIT_REDIRECT	= 7,
7657c2aad20Sopenharmony_ci};
7667c2aad20Sopenharmony_ci
7677c2aad20Sopenharmony_cienum netkit_mode {
7687c2aad20Sopenharmony_ci	NETKIT_L2,
7697c2aad20Sopenharmony_ci	NETKIT_L3,
7707c2aad20Sopenharmony_ci};
7717c2aad20Sopenharmony_ci
7727c2aad20Sopenharmony_cienum {
7737c2aad20Sopenharmony_ci	IFLA_NETKIT_UNSPEC,
7747c2aad20Sopenharmony_ci	IFLA_NETKIT_PEER_INFO,
7757c2aad20Sopenharmony_ci	IFLA_NETKIT_PRIMARY,
7767c2aad20Sopenharmony_ci	IFLA_NETKIT_POLICY,
7777c2aad20Sopenharmony_ci	IFLA_NETKIT_PEER_POLICY,
7787c2aad20Sopenharmony_ci	IFLA_NETKIT_MODE,
7797c2aad20Sopenharmony_ci	__IFLA_NETKIT_MAX,
7807c2aad20Sopenharmony_ci};
7817c2aad20Sopenharmony_ci#define IFLA_NETKIT_MAX	(__IFLA_NETKIT_MAX - 1)
7827c2aad20Sopenharmony_ci
7837c2aad20Sopenharmony_ci/* VXLAN section */
7847c2aad20Sopenharmony_ci
7857c2aad20Sopenharmony_ci/* include statistics in the dump */
7867c2aad20Sopenharmony_ci#define TUNNEL_MSG_FLAG_STATS	0x01
7877c2aad20Sopenharmony_ci
7887c2aad20Sopenharmony_ci#define TUNNEL_MSG_VALID_USER_FLAGS TUNNEL_MSG_FLAG_STATS
7897c2aad20Sopenharmony_ci
7907c2aad20Sopenharmony_ci/* Embedded inside VXLAN_VNIFILTER_ENTRY_STATS */
7917c2aad20Sopenharmony_cienum {
7927c2aad20Sopenharmony_ci	VNIFILTER_ENTRY_STATS_UNSPEC,
7937c2aad20Sopenharmony_ci	VNIFILTER_ENTRY_STATS_RX_BYTES,
7947c2aad20Sopenharmony_ci	VNIFILTER_ENTRY_STATS_RX_PKTS,
7957c2aad20Sopenharmony_ci	VNIFILTER_ENTRY_STATS_RX_DROPS,
7967c2aad20Sopenharmony_ci	VNIFILTER_ENTRY_STATS_RX_ERRORS,
7977c2aad20Sopenharmony_ci	VNIFILTER_ENTRY_STATS_TX_BYTES,
7987c2aad20Sopenharmony_ci	VNIFILTER_ENTRY_STATS_TX_PKTS,
7997c2aad20Sopenharmony_ci	VNIFILTER_ENTRY_STATS_TX_DROPS,
8007c2aad20Sopenharmony_ci	VNIFILTER_ENTRY_STATS_TX_ERRORS,
8017c2aad20Sopenharmony_ci	VNIFILTER_ENTRY_STATS_PAD,
8027c2aad20Sopenharmony_ci	__VNIFILTER_ENTRY_STATS_MAX
8037c2aad20Sopenharmony_ci};
8047c2aad20Sopenharmony_ci#define VNIFILTER_ENTRY_STATS_MAX (__VNIFILTER_ENTRY_STATS_MAX - 1)
8057c2aad20Sopenharmony_ci
8067c2aad20Sopenharmony_cienum {
8077c2aad20Sopenharmony_ci	VXLAN_VNIFILTER_ENTRY_UNSPEC,
8087c2aad20Sopenharmony_ci	VXLAN_VNIFILTER_ENTRY_START,
8097c2aad20Sopenharmony_ci	VXLAN_VNIFILTER_ENTRY_END,
8107c2aad20Sopenharmony_ci	VXLAN_VNIFILTER_ENTRY_GROUP,
8117c2aad20Sopenharmony_ci	VXLAN_VNIFILTER_ENTRY_GROUP6,
8127c2aad20Sopenharmony_ci	VXLAN_VNIFILTER_ENTRY_STATS,
8137c2aad20Sopenharmony_ci	__VXLAN_VNIFILTER_ENTRY_MAX
8147c2aad20Sopenharmony_ci};
8157c2aad20Sopenharmony_ci#define VXLAN_VNIFILTER_ENTRY_MAX	(__VXLAN_VNIFILTER_ENTRY_MAX - 1)
8167c2aad20Sopenharmony_ci
8177c2aad20Sopenharmony_cienum {
8187c2aad20Sopenharmony_ci	VXLAN_VNIFILTER_UNSPEC,
8197c2aad20Sopenharmony_ci	VXLAN_VNIFILTER_ENTRY,
8207c2aad20Sopenharmony_ci	__VXLAN_VNIFILTER_MAX
8217c2aad20Sopenharmony_ci};
8227c2aad20Sopenharmony_ci#define VXLAN_VNIFILTER_MAX	(__VXLAN_VNIFILTER_MAX - 1)
8237c2aad20Sopenharmony_ci
8247c2aad20Sopenharmony_cienum {
8257c2aad20Sopenharmony_ci	IFLA_VXLAN_UNSPEC,
8267c2aad20Sopenharmony_ci	IFLA_VXLAN_ID,
8277c2aad20Sopenharmony_ci	IFLA_VXLAN_GROUP,	/* group or remote address */
8287c2aad20Sopenharmony_ci	IFLA_VXLAN_LINK,
8297c2aad20Sopenharmony_ci	IFLA_VXLAN_LOCAL,
8307c2aad20Sopenharmony_ci	IFLA_VXLAN_TTL,
8317c2aad20Sopenharmony_ci	IFLA_VXLAN_TOS,
8327c2aad20Sopenharmony_ci	IFLA_VXLAN_LEARNING,
8337c2aad20Sopenharmony_ci	IFLA_VXLAN_AGEING,
8347c2aad20Sopenharmony_ci	IFLA_VXLAN_LIMIT,
8357c2aad20Sopenharmony_ci	IFLA_VXLAN_PORT_RANGE,	/* source port */
8367c2aad20Sopenharmony_ci	IFLA_VXLAN_PROXY,
8377c2aad20Sopenharmony_ci	IFLA_VXLAN_RSC,
8387c2aad20Sopenharmony_ci	IFLA_VXLAN_L2MISS,
8397c2aad20Sopenharmony_ci	IFLA_VXLAN_L3MISS,
8407c2aad20Sopenharmony_ci	IFLA_VXLAN_PORT,	/* destination port */
8417c2aad20Sopenharmony_ci	IFLA_VXLAN_GROUP6,
8427c2aad20Sopenharmony_ci	IFLA_VXLAN_LOCAL6,
8437c2aad20Sopenharmony_ci	IFLA_VXLAN_UDP_CSUM,
8447c2aad20Sopenharmony_ci	IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
8457c2aad20Sopenharmony_ci	IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
8467c2aad20Sopenharmony_ci	IFLA_VXLAN_REMCSUM_TX,
8477c2aad20Sopenharmony_ci	IFLA_VXLAN_REMCSUM_RX,
8487c2aad20Sopenharmony_ci	IFLA_VXLAN_GBP,
8497c2aad20Sopenharmony_ci	IFLA_VXLAN_REMCSUM_NOPARTIAL,
8507c2aad20Sopenharmony_ci	IFLA_VXLAN_COLLECT_METADATA,
8517c2aad20Sopenharmony_ci	IFLA_VXLAN_LABEL,
8527c2aad20Sopenharmony_ci	IFLA_VXLAN_GPE,
8537c2aad20Sopenharmony_ci	IFLA_VXLAN_TTL_INHERIT,
8547c2aad20Sopenharmony_ci	IFLA_VXLAN_DF,
8557c2aad20Sopenharmony_ci	IFLA_VXLAN_VNIFILTER, /* only applicable with COLLECT_METADATA mode */
8567c2aad20Sopenharmony_ci	IFLA_VXLAN_LOCALBYPASS,
8577c2aad20Sopenharmony_ci	__IFLA_VXLAN_MAX
8587c2aad20Sopenharmony_ci};
8597c2aad20Sopenharmony_ci#define IFLA_VXLAN_MAX	(__IFLA_VXLAN_MAX - 1)
8607c2aad20Sopenharmony_ci
8617c2aad20Sopenharmony_cistruct ifla_vxlan_port_range {
8627c2aad20Sopenharmony_ci	__be16	low;
8637c2aad20Sopenharmony_ci	__be16	high;
8647c2aad20Sopenharmony_ci};
8657c2aad20Sopenharmony_ci
8667c2aad20Sopenharmony_cienum ifla_vxlan_df {
8677c2aad20Sopenharmony_ci	VXLAN_DF_UNSET = 0,
8687c2aad20Sopenharmony_ci	VXLAN_DF_SET,
8697c2aad20Sopenharmony_ci	VXLAN_DF_INHERIT,
8707c2aad20Sopenharmony_ci	__VXLAN_DF_END,
8717c2aad20Sopenharmony_ci	VXLAN_DF_MAX = __VXLAN_DF_END - 1,
8727c2aad20Sopenharmony_ci};
8737c2aad20Sopenharmony_ci
8747c2aad20Sopenharmony_ci/* GENEVE section */
8757c2aad20Sopenharmony_cienum {
8767c2aad20Sopenharmony_ci	IFLA_GENEVE_UNSPEC,
8777c2aad20Sopenharmony_ci	IFLA_GENEVE_ID,
8787c2aad20Sopenharmony_ci	IFLA_GENEVE_REMOTE,
8797c2aad20Sopenharmony_ci	IFLA_GENEVE_TTL,
8807c2aad20Sopenharmony_ci	IFLA_GENEVE_TOS,
8817c2aad20Sopenharmony_ci	IFLA_GENEVE_PORT,	/* destination port */
8827c2aad20Sopenharmony_ci	IFLA_GENEVE_COLLECT_METADATA,
8837c2aad20Sopenharmony_ci	IFLA_GENEVE_REMOTE6,
8847c2aad20Sopenharmony_ci	IFLA_GENEVE_UDP_CSUM,
8857c2aad20Sopenharmony_ci	IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
8867c2aad20Sopenharmony_ci	IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
8877c2aad20Sopenharmony_ci	IFLA_GENEVE_LABEL,
8887c2aad20Sopenharmony_ci	IFLA_GENEVE_TTL_INHERIT,
8897c2aad20Sopenharmony_ci	IFLA_GENEVE_DF,
8907c2aad20Sopenharmony_ci	IFLA_GENEVE_INNER_PROTO_INHERIT,
8917c2aad20Sopenharmony_ci	__IFLA_GENEVE_MAX
8927c2aad20Sopenharmony_ci};
8937c2aad20Sopenharmony_ci#define IFLA_GENEVE_MAX	(__IFLA_GENEVE_MAX - 1)
8947c2aad20Sopenharmony_ci
8957c2aad20Sopenharmony_cienum ifla_geneve_df {
8967c2aad20Sopenharmony_ci	GENEVE_DF_UNSET = 0,
8977c2aad20Sopenharmony_ci	GENEVE_DF_SET,
8987c2aad20Sopenharmony_ci	GENEVE_DF_INHERIT,
8997c2aad20Sopenharmony_ci	__GENEVE_DF_END,
9007c2aad20Sopenharmony_ci	GENEVE_DF_MAX = __GENEVE_DF_END - 1,
9017c2aad20Sopenharmony_ci};
9027c2aad20Sopenharmony_ci
9037c2aad20Sopenharmony_ci/* Bareudp section  */
9047c2aad20Sopenharmony_cienum {
9057c2aad20Sopenharmony_ci	IFLA_BAREUDP_UNSPEC,
9067c2aad20Sopenharmony_ci	IFLA_BAREUDP_PORT,
9077c2aad20Sopenharmony_ci	IFLA_BAREUDP_ETHERTYPE,
9087c2aad20Sopenharmony_ci	IFLA_BAREUDP_SRCPORT_MIN,
9097c2aad20Sopenharmony_ci	IFLA_BAREUDP_MULTIPROTO_MODE,
9107c2aad20Sopenharmony_ci	__IFLA_BAREUDP_MAX
9117c2aad20Sopenharmony_ci};
9127c2aad20Sopenharmony_ci
9137c2aad20Sopenharmony_ci#define IFLA_BAREUDP_MAX (__IFLA_BAREUDP_MAX - 1)
9147c2aad20Sopenharmony_ci
9157c2aad20Sopenharmony_ci/* PPP section */
9167c2aad20Sopenharmony_cienum {
9177c2aad20Sopenharmony_ci	IFLA_PPP_UNSPEC,
9187c2aad20Sopenharmony_ci	IFLA_PPP_DEV_FD,
9197c2aad20Sopenharmony_ci	__IFLA_PPP_MAX
9207c2aad20Sopenharmony_ci};
9217c2aad20Sopenharmony_ci#define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
9227c2aad20Sopenharmony_ci
9237c2aad20Sopenharmony_ci/* GTP section */
9247c2aad20Sopenharmony_ci
9257c2aad20Sopenharmony_cienum ifla_gtp_role {
9267c2aad20Sopenharmony_ci	GTP_ROLE_GGSN = 0,
9277c2aad20Sopenharmony_ci	GTP_ROLE_SGSN,
9287c2aad20Sopenharmony_ci};
9297c2aad20Sopenharmony_ci
9307c2aad20Sopenharmony_cienum {
9317c2aad20Sopenharmony_ci	IFLA_GTP_UNSPEC,
9327c2aad20Sopenharmony_ci	IFLA_GTP_FD0,
9337c2aad20Sopenharmony_ci	IFLA_GTP_FD1,
9347c2aad20Sopenharmony_ci	IFLA_GTP_PDP_HASHSIZE,
9357c2aad20Sopenharmony_ci	IFLA_GTP_ROLE,
9367c2aad20Sopenharmony_ci	IFLA_GTP_CREATE_SOCKETS,
9377c2aad20Sopenharmony_ci	IFLA_GTP_RESTART_COUNT,
9387c2aad20Sopenharmony_ci	__IFLA_GTP_MAX,
9397c2aad20Sopenharmony_ci};
9407c2aad20Sopenharmony_ci#define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
9417c2aad20Sopenharmony_ci
9427c2aad20Sopenharmony_ci/* Bonding section */
9437c2aad20Sopenharmony_ci
9447c2aad20Sopenharmony_cienum {
9457c2aad20Sopenharmony_ci	IFLA_BOND_UNSPEC,
9467c2aad20Sopenharmony_ci	IFLA_BOND_MODE,
9477c2aad20Sopenharmony_ci	IFLA_BOND_ACTIVE_SLAVE,
9487c2aad20Sopenharmony_ci	IFLA_BOND_MIIMON,
9497c2aad20Sopenharmony_ci	IFLA_BOND_UPDELAY,
9507c2aad20Sopenharmony_ci	IFLA_BOND_DOWNDELAY,
9517c2aad20Sopenharmony_ci	IFLA_BOND_USE_CARRIER,
9527c2aad20Sopenharmony_ci	IFLA_BOND_ARP_INTERVAL,
9537c2aad20Sopenharmony_ci	IFLA_BOND_ARP_IP_TARGET,
9547c2aad20Sopenharmony_ci	IFLA_BOND_ARP_VALIDATE,
9557c2aad20Sopenharmony_ci	IFLA_BOND_ARP_ALL_TARGETS,
9567c2aad20Sopenharmony_ci	IFLA_BOND_PRIMARY,
9577c2aad20Sopenharmony_ci	IFLA_BOND_PRIMARY_RESELECT,
9587c2aad20Sopenharmony_ci	IFLA_BOND_FAIL_OVER_MAC,
9597c2aad20Sopenharmony_ci	IFLA_BOND_XMIT_HASH_POLICY,
9607c2aad20Sopenharmony_ci	IFLA_BOND_RESEND_IGMP,
9617c2aad20Sopenharmony_ci	IFLA_BOND_NUM_PEER_NOTIF,
9627c2aad20Sopenharmony_ci	IFLA_BOND_ALL_SLAVES_ACTIVE,
9637c2aad20Sopenharmony_ci	IFLA_BOND_MIN_LINKS,
9647c2aad20Sopenharmony_ci	IFLA_BOND_LP_INTERVAL,
9657c2aad20Sopenharmony_ci	IFLA_BOND_PACKETS_PER_SLAVE,
9667c2aad20Sopenharmony_ci	IFLA_BOND_AD_LACP_RATE,
9677c2aad20Sopenharmony_ci	IFLA_BOND_AD_SELECT,
9687c2aad20Sopenharmony_ci	IFLA_BOND_AD_INFO,
9697c2aad20Sopenharmony_ci	IFLA_BOND_AD_ACTOR_SYS_PRIO,
9707c2aad20Sopenharmony_ci	IFLA_BOND_AD_USER_PORT_KEY,
9717c2aad20Sopenharmony_ci	IFLA_BOND_AD_ACTOR_SYSTEM,
9727c2aad20Sopenharmony_ci	IFLA_BOND_TLB_DYNAMIC_LB,
9737c2aad20Sopenharmony_ci	IFLA_BOND_PEER_NOTIF_DELAY,
9747c2aad20Sopenharmony_ci	IFLA_BOND_AD_LACP_ACTIVE,
9757c2aad20Sopenharmony_ci	IFLA_BOND_MISSED_MAX,
9767c2aad20Sopenharmony_ci	IFLA_BOND_NS_IP6_TARGET,
9777c2aad20Sopenharmony_ci	__IFLA_BOND_MAX,
9787c2aad20Sopenharmony_ci};
9797c2aad20Sopenharmony_ci
9807c2aad20Sopenharmony_ci#define IFLA_BOND_MAX	(__IFLA_BOND_MAX - 1)
9817c2aad20Sopenharmony_ci
9827c2aad20Sopenharmony_cienum {
9837c2aad20Sopenharmony_ci	IFLA_BOND_AD_INFO_UNSPEC,
9847c2aad20Sopenharmony_ci	IFLA_BOND_AD_INFO_AGGREGATOR,
9857c2aad20Sopenharmony_ci	IFLA_BOND_AD_INFO_NUM_PORTS,
9867c2aad20Sopenharmony_ci	IFLA_BOND_AD_INFO_ACTOR_KEY,
9877c2aad20Sopenharmony_ci	IFLA_BOND_AD_INFO_PARTNER_KEY,
9887c2aad20Sopenharmony_ci	IFLA_BOND_AD_INFO_PARTNER_MAC,
9897c2aad20Sopenharmony_ci	__IFLA_BOND_AD_INFO_MAX,
9907c2aad20Sopenharmony_ci};
9917c2aad20Sopenharmony_ci
9927c2aad20Sopenharmony_ci#define IFLA_BOND_AD_INFO_MAX	(__IFLA_BOND_AD_INFO_MAX - 1)
9937c2aad20Sopenharmony_ci
9947c2aad20Sopenharmony_cienum {
9957c2aad20Sopenharmony_ci	IFLA_BOND_SLAVE_UNSPEC,
9967c2aad20Sopenharmony_ci	IFLA_BOND_SLAVE_STATE,
9977c2aad20Sopenharmony_ci	IFLA_BOND_SLAVE_MII_STATUS,
9987c2aad20Sopenharmony_ci	IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
9997c2aad20Sopenharmony_ci	IFLA_BOND_SLAVE_PERM_HWADDR,
10007c2aad20Sopenharmony_ci	IFLA_BOND_SLAVE_QUEUE_ID,
10017c2aad20Sopenharmony_ci	IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
10027c2aad20Sopenharmony_ci	IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
10037c2aad20Sopenharmony_ci	IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
10047c2aad20Sopenharmony_ci	IFLA_BOND_SLAVE_PRIO,
10057c2aad20Sopenharmony_ci	__IFLA_BOND_SLAVE_MAX,
10067c2aad20Sopenharmony_ci};
10077c2aad20Sopenharmony_ci
10087c2aad20Sopenharmony_ci#define IFLA_BOND_SLAVE_MAX	(__IFLA_BOND_SLAVE_MAX - 1)
10097c2aad20Sopenharmony_ci
10107c2aad20Sopenharmony_ci/* SR-IOV virtual function management section */
10117c2aad20Sopenharmony_ci
10127c2aad20Sopenharmony_cienum {
10137c2aad20Sopenharmony_ci	IFLA_VF_INFO_UNSPEC,
10147c2aad20Sopenharmony_ci	IFLA_VF_INFO,
10157c2aad20Sopenharmony_ci	__IFLA_VF_INFO_MAX,
10167c2aad20Sopenharmony_ci};
10177c2aad20Sopenharmony_ci
10187c2aad20Sopenharmony_ci#define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
10197c2aad20Sopenharmony_ci
10207c2aad20Sopenharmony_cienum {
10217c2aad20Sopenharmony_ci	IFLA_VF_UNSPEC,
10227c2aad20Sopenharmony_ci	IFLA_VF_MAC,		/* Hardware queue specific attributes */
10237c2aad20Sopenharmony_ci	IFLA_VF_VLAN,		/* VLAN ID and QoS */
10247c2aad20Sopenharmony_ci	IFLA_VF_TX_RATE,	/* Max TX Bandwidth Allocation */
10257c2aad20Sopenharmony_ci	IFLA_VF_SPOOFCHK,	/* Spoof Checking on/off switch */
10267c2aad20Sopenharmony_ci	IFLA_VF_LINK_STATE,	/* link state enable/disable/auto switch */
10277c2aad20Sopenharmony_ci	IFLA_VF_RATE,		/* Min and Max TX Bandwidth Allocation */
10287c2aad20Sopenharmony_ci	IFLA_VF_RSS_QUERY_EN,	/* RSS Redirection Table and Hash Key query
10297c2aad20Sopenharmony_ci				 * on/off switch
10307c2aad20Sopenharmony_ci				 */
10317c2aad20Sopenharmony_ci	IFLA_VF_STATS,		/* network device statistics */
10327c2aad20Sopenharmony_ci	IFLA_VF_TRUST,		/* Trust VF */
10337c2aad20Sopenharmony_ci	IFLA_VF_IB_NODE_GUID,	/* VF Infiniband node GUID */
10347c2aad20Sopenharmony_ci	IFLA_VF_IB_PORT_GUID,	/* VF Infiniband port GUID */
10357c2aad20Sopenharmony_ci	IFLA_VF_VLAN_LIST,	/* nested list of vlans, option for QinQ */
10367c2aad20Sopenharmony_ci	IFLA_VF_BROADCAST,	/* VF broadcast */
10377c2aad20Sopenharmony_ci	__IFLA_VF_MAX,
10387c2aad20Sopenharmony_ci};
10397c2aad20Sopenharmony_ci
10407c2aad20Sopenharmony_ci#define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
10417c2aad20Sopenharmony_ci
10427c2aad20Sopenharmony_cistruct ifla_vf_mac {
10437c2aad20Sopenharmony_ci	__u32 vf;
10447c2aad20Sopenharmony_ci	__u8 mac[32]; /* MAX_ADDR_LEN */
10457c2aad20Sopenharmony_ci};
10467c2aad20Sopenharmony_ci
10477c2aad20Sopenharmony_cistruct ifla_vf_broadcast {
10487c2aad20Sopenharmony_ci	__u8 broadcast[32];
10497c2aad20Sopenharmony_ci};
10507c2aad20Sopenharmony_ci
10517c2aad20Sopenharmony_cistruct ifla_vf_vlan {
10527c2aad20Sopenharmony_ci	__u32 vf;
10537c2aad20Sopenharmony_ci	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
10547c2aad20Sopenharmony_ci	__u32 qos;
10557c2aad20Sopenharmony_ci};
10567c2aad20Sopenharmony_ci
10577c2aad20Sopenharmony_cienum {
10587c2aad20Sopenharmony_ci	IFLA_VF_VLAN_INFO_UNSPEC,
10597c2aad20Sopenharmony_ci	IFLA_VF_VLAN_INFO,	/* VLAN ID, QoS and VLAN protocol */
10607c2aad20Sopenharmony_ci	__IFLA_VF_VLAN_INFO_MAX,
10617c2aad20Sopenharmony_ci};
10627c2aad20Sopenharmony_ci
10637c2aad20Sopenharmony_ci#define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
10647c2aad20Sopenharmony_ci#define MAX_VLAN_LIST_LEN 1
10657c2aad20Sopenharmony_ci
10667c2aad20Sopenharmony_cistruct ifla_vf_vlan_info {
10677c2aad20Sopenharmony_ci	__u32 vf;
10687c2aad20Sopenharmony_ci	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
10697c2aad20Sopenharmony_ci	__u32 qos;
10707c2aad20Sopenharmony_ci	__be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
10717c2aad20Sopenharmony_ci};
10727c2aad20Sopenharmony_ci
10737c2aad20Sopenharmony_cistruct ifla_vf_tx_rate {
10747c2aad20Sopenharmony_ci	__u32 vf;
10757c2aad20Sopenharmony_ci	__u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
10767c2aad20Sopenharmony_ci};
10777c2aad20Sopenharmony_ci
10787c2aad20Sopenharmony_cistruct ifla_vf_rate {
10797c2aad20Sopenharmony_ci	__u32 vf;
10807c2aad20Sopenharmony_ci	__u32 min_tx_rate; /* Min Bandwidth in Mbps */
10817c2aad20Sopenharmony_ci	__u32 max_tx_rate; /* Max Bandwidth in Mbps */
10827c2aad20Sopenharmony_ci};
10837c2aad20Sopenharmony_ci
10847c2aad20Sopenharmony_cistruct ifla_vf_spoofchk {
10857c2aad20Sopenharmony_ci	__u32 vf;
10867c2aad20Sopenharmony_ci	__u32 setting;
10877c2aad20Sopenharmony_ci};
10887c2aad20Sopenharmony_ci
10897c2aad20Sopenharmony_cistruct ifla_vf_guid {
10907c2aad20Sopenharmony_ci	__u32 vf;
10917c2aad20Sopenharmony_ci	__u64 guid;
10927c2aad20Sopenharmony_ci};
10937c2aad20Sopenharmony_ci
10947c2aad20Sopenharmony_cienum {
10957c2aad20Sopenharmony_ci	IFLA_VF_LINK_STATE_AUTO,	/* link state of the uplink */
10967c2aad20Sopenharmony_ci	IFLA_VF_LINK_STATE_ENABLE,	/* link always up */
10977c2aad20Sopenharmony_ci	IFLA_VF_LINK_STATE_DISABLE,	/* link always down */
10987c2aad20Sopenharmony_ci	__IFLA_VF_LINK_STATE_MAX,
10997c2aad20Sopenharmony_ci};
11007c2aad20Sopenharmony_ci
11017c2aad20Sopenharmony_cistruct ifla_vf_link_state {
11027c2aad20Sopenharmony_ci	__u32 vf;
11037c2aad20Sopenharmony_ci	__u32 link_state;
11047c2aad20Sopenharmony_ci};
11057c2aad20Sopenharmony_ci
11067c2aad20Sopenharmony_cistruct ifla_vf_rss_query_en {
11077c2aad20Sopenharmony_ci	__u32 vf;
11087c2aad20Sopenharmony_ci	__u32 setting;
11097c2aad20Sopenharmony_ci};
11107c2aad20Sopenharmony_ci
11117c2aad20Sopenharmony_cienum {
11127c2aad20Sopenharmony_ci	IFLA_VF_STATS_RX_PACKETS,
11137c2aad20Sopenharmony_ci	IFLA_VF_STATS_TX_PACKETS,
11147c2aad20Sopenharmony_ci	IFLA_VF_STATS_RX_BYTES,
11157c2aad20Sopenharmony_ci	IFLA_VF_STATS_TX_BYTES,
11167c2aad20Sopenharmony_ci	IFLA_VF_STATS_BROADCAST,
11177c2aad20Sopenharmony_ci	IFLA_VF_STATS_MULTICAST,
11187c2aad20Sopenharmony_ci	IFLA_VF_STATS_PAD,
11197c2aad20Sopenharmony_ci	IFLA_VF_STATS_RX_DROPPED,
11207c2aad20Sopenharmony_ci	IFLA_VF_STATS_TX_DROPPED,
11217c2aad20Sopenharmony_ci	__IFLA_VF_STATS_MAX,
11227c2aad20Sopenharmony_ci};
11237c2aad20Sopenharmony_ci
11247c2aad20Sopenharmony_ci#define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
11257c2aad20Sopenharmony_ci
11267c2aad20Sopenharmony_cistruct ifla_vf_trust {
11277c2aad20Sopenharmony_ci	__u32 vf;
11287c2aad20Sopenharmony_ci	__u32 setting;
11297c2aad20Sopenharmony_ci};
11307c2aad20Sopenharmony_ci
11317c2aad20Sopenharmony_ci/* VF ports management section
11327c2aad20Sopenharmony_ci *
11337c2aad20Sopenharmony_ci *	Nested layout of set/get msg is:
11347c2aad20Sopenharmony_ci *
11357c2aad20Sopenharmony_ci *		[IFLA_NUM_VF]
11367c2aad20Sopenharmony_ci *		[IFLA_VF_PORTS]
11377c2aad20Sopenharmony_ci *			[IFLA_VF_PORT]
11387c2aad20Sopenharmony_ci *				[IFLA_PORT_*], ...
11397c2aad20Sopenharmony_ci *			[IFLA_VF_PORT]
11407c2aad20Sopenharmony_ci *				[IFLA_PORT_*], ...
11417c2aad20Sopenharmony_ci *			...
11427c2aad20Sopenharmony_ci *		[IFLA_PORT_SELF]
11437c2aad20Sopenharmony_ci *			[IFLA_PORT_*], ...
11447c2aad20Sopenharmony_ci */
11457c2aad20Sopenharmony_ci
11467c2aad20Sopenharmony_cienum {
11477c2aad20Sopenharmony_ci	IFLA_VF_PORT_UNSPEC,
11487c2aad20Sopenharmony_ci	IFLA_VF_PORT,			/* nest */
11497c2aad20Sopenharmony_ci	__IFLA_VF_PORT_MAX,
11507c2aad20Sopenharmony_ci};
11517c2aad20Sopenharmony_ci
11527c2aad20Sopenharmony_ci#define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
11537c2aad20Sopenharmony_ci
11547c2aad20Sopenharmony_cienum {
11557c2aad20Sopenharmony_ci	IFLA_PORT_UNSPEC,
11567c2aad20Sopenharmony_ci	IFLA_PORT_VF,			/* __u32 */
11577c2aad20Sopenharmony_ci	IFLA_PORT_PROFILE,		/* string */
11587c2aad20Sopenharmony_ci	IFLA_PORT_VSI_TYPE,		/* 802.1Qbg (pre-)standard VDP */
11597c2aad20Sopenharmony_ci	IFLA_PORT_INSTANCE_UUID,	/* binary UUID */
11607c2aad20Sopenharmony_ci	IFLA_PORT_HOST_UUID,		/* binary UUID */
11617c2aad20Sopenharmony_ci	IFLA_PORT_REQUEST,		/* __u8 */
11627c2aad20Sopenharmony_ci	IFLA_PORT_RESPONSE,		/* __u16, output only */
11637c2aad20Sopenharmony_ci	__IFLA_PORT_MAX,
11647c2aad20Sopenharmony_ci};
11657c2aad20Sopenharmony_ci
11667c2aad20Sopenharmony_ci#define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
11677c2aad20Sopenharmony_ci
11687c2aad20Sopenharmony_ci#define PORT_PROFILE_MAX	40
11697c2aad20Sopenharmony_ci#define PORT_UUID_MAX		16
11707c2aad20Sopenharmony_ci#define PORT_SELF_VF		-1
11717c2aad20Sopenharmony_ci
11727c2aad20Sopenharmony_cienum {
11737c2aad20Sopenharmony_ci	PORT_REQUEST_PREASSOCIATE = 0,
11747c2aad20Sopenharmony_ci	PORT_REQUEST_PREASSOCIATE_RR,
11757c2aad20Sopenharmony_ci	PORT_REQUEST_ASSOCIATE,
11767c2aad20Sopenharmony_ci	PORT_REQUEST_DISASSOCIATE,
11777c2aad20Sopenharmony_ci};
11787c2aad20Sopenharmony_ci
11797c2aad20Sopenharmony_cienum {
11807c2aad20Sopenharmony_ci	PORT_VDP_RESPONSE_SUCCESS = 0,
11817c2aad20Sopenharmony_ci	PORT_VDP_RESPONSE_INVALID_FORMAT,
11827c2aad20Sopenharmony_ci	PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
11837c2aad20Sopenharmony_ci	PORT_VDP_RESPONSE_UNUSED_VTID,
11847c2aad20Sopenharmony_ci	PORT_VDP_RESPONSE_VTID_VIOLATION,
11857c2aad20Sopenharmony_ci	PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
11867c2aad20Sopenharmony_ci	PORT_VDP_RESPONSE_OUT_OF_SYNC,
11877c2aad20Sopenharmony_ci	/* 0x08-0xFF reserved for future VDP use */
11887c2aad20Sopenharmony_ci	PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
11897c2aad20Sopenharmony_ci	PORT_PROFILE_RESPONSE_INPROGRESS,
11907c2aad20Sopenharmony_ci	PORT_PROFILE_RESPONSE_INVALID,
11917c2aad20Sopenharmony_ci	PORT_PROFILE_RESPONSE_BADSTATE,
11927c2aad20Sopenharmony_ci	PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
11937c2aad20Sopenharmony_ci	PORT_PROFILE_RESPONSE_ERROR,
11947c2aad20Sopenharmony_ci};
11957c2aad20Sopenharmony_ci
11967c2aad20Sopenharmony_cistruct ifla_port_vsi {
11977c2aad20Sopenharmony_ci	__u8 vsi_mgr_id;
11987c2aad20Sopenharmony_ci	__u8 vsi_type_id[3];
11997c2aad20Sopenharmony_ci	__u8 vsi_type_version;
12007c2aad20Sopenharmony_ci	__u8 pad[3];
12017c2aad20Sopenharmony_ci};
12027c2aad20Sopenharmony_ci
12037c2aad20Sopenharmony_ci
12047c2aad20Sopenharmony_ci/* IPoIB section */
12057c2aad20Sopenharmony_ci
12067c2aad20Sopenharmony_cienum {
12077c2aad20Sopenharmony_ci	IFLA_IPOIB_UNSPEC,
12087c2aad20Sopenharmony_ci	IFLA_IPOIB_PKEY,
12097c2aad20Sopenharmony_ci	IFLA_IPOIB_MODE,
12107c2aad20Sopenharmony_ci	IFLA_IPOIB_UMCAST,
12117c2aad20Sopenharmony_ci	__IFLA_IPOIB_MAX
12127c2aad20Sopenharmony_ci};
12137c2aad20Sopenharmony_ci
12147c2aad20Sopenharmony_cienum {
12157c2aad20Sopenharmony_ci	IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
12167c2aad20Sopenharmony_ci	IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
12177c2aad20Sopenharmony_ci};
12187c2aad20Sopenharmony_ci
12197c2aad20Sopenharmony_ci#define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
12207c2aad20Sopenharmony_ci
12217c2aad20Sopenharmony_ci
12227c2aad20Sopenharmony_ci/* HSR/PRP section, both uses same interface */
12237c2aad20Sopenharmony_ci
12247c2aad20Sopenharmony_ci/* Different redundancy protocols for hsr device */
12257c2aad20Sopenharmony_cienum {
12267c2aad20Sopenharmony_ci	HSR_PROTOCOL_HSR,
12277c2aad20Sopenharmony_ci	HSR_PROTOCOL_PRP,
12287c2aad20Sopenharmony_ci	HSR_PROTOCOL_MAX,
12297c2aad20Sopenharmony_ci};
12307c2aad20Sopenharmony_ci
12317c2aad20Sopenharmony_cienum {
12327c2aad20Sopenharmony_ci	IFLA_HSR_UNSPEC,
12337c2aad20Sopenharmony_ci	IFLA_HSR_SLAVE1,
12347c2aad20Sopenharmony_ci	IFLA_HSR_SLAVE2,
12357c2aad20Sopenharmony_ci	IFLA_HSR_MULTICAST_SPEC,	/* Last byte of supervision addr */
12367c2aad20Sopenharmony_ci	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
12377c2aad20Sopenharmony_ci	IFLA_HSR_SEQ_NR,
12387c2aad20Sopenharmony_ci	IFLA_HSR_VERSION,		/* HSR version */
12397c2aad20Sopenharmony_ci	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
12407c2aad20Sopenharmony_ci					 * HSR. For example PRP.
12417c2aad20Sopenharmony_ci					 */
12427c2aad20Sopenharmony_ci	__IFLA_HSR_MAX,
12437c2aad20Sopenharmony_ci};
12447c2aad20Sopenharmony_ci
12457c2aad20Sopenharmony_ci#define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
12467c2aad20Sopenharmony_ci
12477c2aad20Sopenharmony_ci/* STATS section */
12487c2aad20Sopenharmony_ci
12497c2aad20Sopenharmony_cistruct if_stats_msg {
12507c2aad20Sopenharmony_ci	__u8  family;
12517c2aad20Sopenharmony_ci	__u8  pad1;
12527c2aad20Sopenharmony_ci	__u16 pad2;
12537c2aad20Sopenharmony_ci	__u32 ifindex;
12547c2aad20Sopenharmony_ci	__u32 filter_mask;
12557c2aad20Sopenharmony_ci};
12567c2aad20Sopenharmony_ci
12577c2aad20Sopenharmony_ci/* A stats attribute can be netdev specific or a global stat.
12587c2aad20Sopenharmony_ci * For netdev stats, lets use the prefix IFLA_STATS_LINK_*
12597c2aad20Sopenharmony_ci */
12607c2aad20Sopenharmony_cienum {
12617c2aad20Sopenharmony_ci	IFLA_STATS_UNSPEC, /* also used as 64bit pad attribute */
12627c2aad20Sopenharmony_ci	IFLA_STATS_LINK_64,
12637c2aad20Sopenharmony_ci	IFLA_STATS_LINK_XSTATS,
12647c2aad20Sopenharmony_ci	IFLA_STATS_LINK_XSTATS_SLAVE,
12657c2aad20Sopenharmony_ci	IFLA_STATS_LINK_OFFLOAD_XSTATS,
12667c2aad20Sopenharmony_ci	IFLA_STATS_AF_SPEC,
12677c2aad20Sopenharmony_ci	__IFLA_STATS_MAX,
12687c2aad20Sopenharmony_ci};
12697c2aad20Sopenharmony_ci
12707c2aad20Sopenharmony_ci#define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
12717c2aad20Sopenharmony_ci
12727c2aad20Sopenharmony_ci#define IFLA_STATS_FILTER_BIT(ATTR)	(1 << (ATTR - 1))
12737c2aad20Sopenharmony_ci
12747c2aad20Sopenharmony_cienum {
12757c2aad20Sopenharmony_ci	IFLA_STATS_GETSET_UNSPEC,
12767c2aad20Sopenharmony_ci	IFLA_STATS_GET_FILTERS, /* Nest of IFLA_STATS_LINK_xxx, each a u32 with
12777c2aad20Sopenharmony_ci				 * a filter mask for the corresponding group.
12787c2aad20Sopenharmony_ci				 */
12797c2aad20Sopenharmony_ci	IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS, /* 0 or 1 as u8 */
12807c2aad20Sopenharmony_ci	__IFLA_STATS_GETSET_MAX,
12817c2aad20Sopenharmony_ci};
12827c2aad20Sopenharmony_ci
12837c2aad20Sopenharmony_ci#define IFLA_STATS_GETSET_MAX (__IFLA_STATS_GETSET_MAX - 1)
12847c2aad20Sopenharmony_ci
12857c2aad20Sopenharmony_ci/* These are embedded into IFLA_STATS_LINK_XSTATS:
12867c2aad20Sopenharmony_ci * [IFLA_STATS_LINK_XSTATS]
12877c2aad20Sopenharmony_ci * -> [LINK_XSTATS_TYPE_xxx]
12887c2aad20Sopenharmony_ci *    -> [rtnl link type specific attributes]
12897c2aad20Sopenharmony_ci */
12907c2aad20Sopenharmony_cienum {
12917c2aad20Sopenharmony_ci	LINK_XSTATS_TYPE_UNSPEC,
12927c2aad20Sopenharmony_ci	LINK_XSTATS_TYPE_BRIDGE,
12937c2aad20Sopenharmony_ci	LINK_XSTATS_TYPE_BOND,
12947c2aad20Sopenharmony_ci	__LINK_XSTATS_TYPE_MAX
12957c2aad20Sopenharmony_ci};
12967c2aad20Sopenharmony_ci#define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
12977c2aad20Sopenharmony_ci
12987c2aad20Sopenharmony_ci/* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
12997c2aad20Sopenharmony_cienum {
13007c2aad20Sopenharmony_ci	IFLA_OFFLOAD_XSTATS_UNSPEC,
13017c2aad20Sopenharmony_ci	IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
13027c2aad20Sopenharmony_ci	IFLA_OFFLOAD_XSTATS_HW_S_INFO,	/* HW stats info. A nest */
13037c2aad20Sopenharmony_ci	IFLA_OFFLOAD_XSTATS_L3_STATS,	/* struct rtnl_hw_stats64 */
13047c2aad20Sopenharmony_ci	__IFLA_OFFLOAD_XSTATS_MAX
13057c2aad20Sopenharmony_ci};
13067c2aad20Sopenharmony_ci#define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
13077c2aad20Sopenharmony_ci
13087c2aad20Sopenharmony_cienum {
13097c2aad20Sopenharmony_ci	IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC,
13107c2aad20Sopenharmony_ci	IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST,		/* u8 */
13117c2aad20Sopenharmony_ci	IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED,		/* u8 */
13127c2aad20Sopenharmony_ci	__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX,
13137c2aad20Sopenharmony_ci};
13147c2aad20Sopenharmony_ci#define IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX \
13157c2aad20Sopenharmony_ci	(__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX - 1)
13167c2aad20Sopenharmony_ci
13177c2aad20Sopenharmony_ci/* XDP section */
13187c2aad20Sopenharmony_ci
13197c2aad20Sopenharmony_ci#define XDP_FLAGS_UPDATE_IF_NOEXIST	(1U << 0)
13207c2aad20Sopenharmony_ci#define XDP_FLAGS_SKB_MODE		(1U << 1)
13217c2aad20Sopenharmony_ci#define XDP_FLAGS_DRV_MODE		(1U << 2)
13227c2aad20Sopenharmony_ci#define XDP_FLAGS_HW_MODE		(1U << 3)
13237c2aad20Sopenharmony_ci#define XDP_FLAGS_REPLACE		(1U << 4)
13247c2aad20Sopenharmony_ci#define XDP_FLAGS_MODES			(XDP_FLAGS_SKB_MODE | \
13257c2aad20Sopenharmony_ci					 XDP_FLAGS_DRV_MODE | \
13267c2aad20Sopenharmony_ci					 XDP_FLAGS_HW_MODE)
13277c2aad20Sopenharmony_ci#define XDP_FLAGS_MASK			(XDP_FLAGS_UPDATE_IF_NOEXIST | \
13287c2aad20Sopenharmony_ci					 XDP_FLAGS_MODES | XDP_FLAGS_REPLACE)
13297c2aad20Sopenharmony_ci
13307c2aad20Sopenharmony_ci/* These are stored into IFLA_XDP_ATTACHED on dump. */
13317c2aad20Sopenharmony_cienum {
13327c2aad20Sopenharmony_ci	XDP_ATTACHED_NONE = 0,
13337c2aad20Sopenharmony_ci	XDP_ATTACHED_DRV,
13347c2aad20Sopenharmony_ci	XDP_ATTACHED_SKB,
13357c2aad20Sopenharmony_ci	XDP_ATTACHED_HW,
13367c2aad20Sopenharmony_ci	XDP_ATTACHED_MULTI,
13377c2aad20Sopenharmony_ci};
13387c2aad20Sopenharmony_ci
13397c2aad20Sopenharmony_cienum {
13407c2aad20Sopenharmony_ci	IFLA_XDP_UNSPEC,
13417c2aad20Sopenharmony_ci	IFLA_XDP_FD,
13427c2aad20Sopenharmony_ci	IFLA_XDP_ATTACHED,
13437c2aad20Sopenharmony_ci	IFLA_XDP_FLAGS,
13447c2aad20Sopenharmony_ci	IFLA_XDP_PROG_ID,
13457c2aad20Sopenharmony_ci	IFLA_XDP_DRV_PROG_ID,
13467c2aad20Sopenharmony_ci	IFLA_XDP_SKB_PROG_ID,
13477c2aad20Sopenharmony_ci	IFLA_XDP_HW_PROG_ID,
13487c2aad20Sopenharmony_ci	IFLA_XDP_EXPECTED_FD,
13497c2aad20Sopenharmony_ci	__IFLA_XDP_MAX,
13507c2aad20Sopenharmony_ci};
13517c2aad20Sopenharmony_ci
13527c2aad20Sopenharmony_ci#define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
13537c2aad20Sopenharmony_ci
13547c2aad20Sopenharmony_cienum {
13557c2aad20Sopenharmony_ci	IFLA_EVENT_NONE,
13567c2aad20Sopenharmony_ci	IFLA_EVENT_REBOOT,		/* internal reset / reboot */
13577c2aad20Sopenharmony_ci	IFLA_EVENT_FEATURES,		/* change in offload features */
13587c2aad20Sopenharmony_ci	IFLA_EVENT_BONDING_FAILOVER,	/* change in active slave */
13597c2aad20Sopenharmony_ci	IFLA_EVENT_NOTIFY_PEERS,	/* re-sent grat. arp/ndisc */
13607c2aad20Sopenharmony_ci	IFLA_EVENT_IGMP_RESEND,		/* re-sent IGMP JOIN */
13617c2aad20Sopenharmony_ci	IFLA_EVENT_BONDING_OPTIONS,	/* change in bonding options */
13627c2aad20Sopenharmony_ci};
13637c2aad20Sopenharmony_ci
13647c2aad20Sopenharmony_ci/* tun section */
13657c2aad20Sopenharmony_ci
13667c2aad20Sopenharmony_cienum {
13677c2aad20Sopenharmony_ci	IFLA_TUN_UNSPEC,
13687c2aad20Sopenharmony_ci	IFLA_TUN_OWNER,
13697c2aad20Sopenharmony_ci	IFLA_TUN_GROUP,
13707c2aad20Sopenharmony_ci	IFLA_TUN_TYPE,
13717c2aad20Sopenharmony_ci	IFLA_TUN_PI,
13727c2aad20Sopenharmony_ci	IFLA_TUN_VNET_HDR,
13737c2aad20Sopenharmony_ci	IFLA_TUN_PERSIST,
13747c2aad20Sopenharmony_ci	IFLA_TUN_MULTI_QUEUE,
13757c2aad20Sopenharmony_ci	IFLA_TUN_NUM_QUEUES,
13767c2aad20Sopenharmony_ci	IFLA_TUN_NUM_DISABLED_QUEUES,
13777c2aad20Sopenharmony_ci	__IFLA_TUN_MAX,
13787c2aad20Sopenharmony_ci};
13797c2aad20Sopenharmony_ci
13807c2aad20Sopenharmony_ci#define IFLA_TUN_MAX (__IFLA_TUN_MAX - 1)
13817c2aad20Sopenharmony_ci
13827c2aad20Sopenharmony_ci/* rmnet section */
13837c2aad20Sopenharmony_ci
13847c2aad20Sopenharmony_ci#define RMNET_FLAGS_INGRESS_DEAGGREGATION         (1U << 0)
13857c2aad20Sopenharmony_ci#define RMNET_FLAGS_INGRESS_MAP_COMMANDS          (1U << 1)
13867c2aad20Sopenharmony_ci#define RMNET_FLAGS_INGRESS_MAP_CKSUMV4           (1U << 2)
13877c2aad20Sopenharmony_ci#define RMNET_FLAGS_EGRESS_MAP_CKSUMV4            (1U << 3)
13887c2aad20Sopenharmony_ci#define RMNET_FLAGS_INGRESS_MAP_CKSUMV5           (1U << 4)
13897c2aad20Sopenharmony_ci#define RMNET_FLAGS_EGRESS_MAP_CKSUMV5            (1U << 5)
13907c2aad20Sopenharmony_ci
13917c2aad20Sopenharmony_cienum {
13927c2aad20Sopenharmony_ci	IFLA_RMNET_UNSPEC,
13937c2aad20Sopenharmony_ci	IFLA_RMNET_MUX_ID,
13947c2aad20Sopenharmony_ci	IFLA_RMNET_FLAGS,
13957c2aad20Sopenharmony_ci	__IFLA_RMNET_MAX,
13967c2aad20Sopenharmony_ci};
13977c2aad20Sopenharmony_ci
13987c2aad20Sopenharmony_ci#define IFLA_RMNET_MAX	(__IFLA_RMNET_MAX - 1)
13997c2aad20Sopenharmony_ci
14007c2aad20Sopenharmony_cistruct ifla_rmnet_flags {
14017c2aad20Sopenharmony_ci	__u32	flags;
14027c2aad20Sopenharmony_ci	__u32	mask;
14037c2aad20Sopenharmony_ci};
14047c2aad20Sopenharmony_ci
14057c2aad20Sopenharmony_ci/* MCTP section */
14067c2aad20Sopenharmony_ci
14077c2aad20Sopenharmony_cienum {
14087c2aad20Sopenharmony_ci	IFLA_MCTP_UNSPEC,
14097c2aad20Sopenharmony_ci	IFLA_MCTP_NET,
14107c2aad20Sopenharmony_ci	__IFLA_MCTP_MAX,
14117c2aad20Sopenharmony_ci};
14127c2aad20Sopenharmony_ci
14137c2aad20Sopenharmony_ci#define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
14147c2aad20Sopenharmony_ci
14157c2aad20Sopenharmony_ci/* DSA section */
14167c2aad20Sopenharmony_ci
14177c2aad20Sopenharmony_cienum {
14187c2aad20Sopenharmony_ci	IFLA_DSA_UNSPEC,
14197c2aad20Sopenharmony_ci	IFLA_DSA_MASTER,
14207c2aad20Sopenharmony_ci	__IFLA_DSA_MAX,
14217c2aad20Sopenharmony_ci};
14227c2aad20Sopenharmony_ci
14237c2aad20Sopenharmony_ci#define IFLA_DSA_MAX	(__IFLA_DSA_MAX - 1)
14247c2aad20Sopenharmony_ci
14257c2aad20Sopenharmony_ci#endif /* _UAPI_LINUX_IF_LINK_H */
1426