Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 #ifndef _UAPI_LINUX_IF_LINK_H
0003 #define _UAPI_LINUX_IF_LINK_H
0004 
0005 #include <linux/types.h>
0006 #include <linux/netlink.h>
0007 
0008 /* This struct should be in sync with struct rtnl_link_stats64 */
0009 struct rtnl_link_stats {
0010     __u32   rx_packets;
0011     __u32   tx_packets;
0012     __u32   rx_bytes;
0013     __u32   tx_bytes;
0014     __u32   rx_errors;
0015     __u32   tx_errors;
0016     __u32   rx_dropped;
0017     __u32   tx_dropped;
0018     __u32   multicast;
0019     __u32   collisions;
0020     /* detailed rx_errors: */
0021     __u32   rx_length_errors;
0022     __u32   rx_over_errors;
0023     __u32   rx_crc_errors;
0024     __u32   rx_frame_errors;
0025     __u32   rx_fifo_errors;
0026     __u32   rx_missed_errors;
0027 
0028     /* detailed tx_errors */
0029     __u32   tx_aborted_errors;
0030     __u32   tx_carrier_errors;
0031     __u32   tx_fifo_errors;
0032     __u32   tx_heartbeat_errors;
0033     __u32   tx_window_errors;
0034 
0035     /* for cslip etc */
0036     __u32   rx_compressed;
0037     __u32   tx_compressed;
0038 
0039     __u32   rx_nohandler;
0040 };
0041 
0042 /**
0043  * struct rtnl_link_stats64 - The main device statistics structure.
0044  *
0045  * @rx_packets: Number of good packets received by the interface.
0046  *   For hardware interfaces counts all good packets received from the device
0047  *   by the host, including packets which host had to drop at various stages
0048  *   of processing (even in the driver).
0049  *
0050  * @tx_packets: Number of packets successfully transmitted.
0051  *   For hardware interfaces counts packets which host was able to successfully
0052  *   hand over to the device, which does not necessarily mean that packets
0053  *   had been successfully transmitted out of the device, only that device
0054  *   acknowledged it copied them out of host memory.
0055  *
0056  * @rx_bytes: Number of good received bytes, corresponding to @rx_packets.
0057  *
0058  *   For IEEE 802.3 devices should count the length of Ethernet Frames
0059  *   excluding the FCS.
0060  *
0061  * @tx_bytes: Number of good transmitted bytes, corresponding to @tx_packets.
0062  *
0063  *   For IEEE 802.3 devices should count the length of Ethernet Frames
0064  *   excluding the FCS.
0065  *
0066  * @rx_errors: Total number of bad packets received on this network device.
0067  *   This counter must include events counted by @rx_length_errors,
0068  *   @rx_crc_errors, @rx_frame_errors and other errors not otherwise
0069  *   counted.
0070  *
0071  * @tx_errors: Total number of transmit problems.
0072  *   This counter must include events counter by @tx_aborted_errors,
0073  *   @tx_carrier_errors, @tx_fifo_errors, @tx_heartbeat_errors,
0074  *   @tx_window_errors and other errors not otherwise counted.
0075  *
0076  * @rx_dropped: Number of packets received but not processed,
0077  *   e.g. due to lack of resources or unsupported protocol.
0078  *   For hardware interfaces this counter may include packets discarded
0079  *   due to L2 address filtering but should not include packets dropped
0080  *   by the device due to buffer exhaustion which are counted separately in
0081  *   @rx_missed_errors (since procfs folds those two counters together).
0082  *
0083  * @tx_dropped: Number of packets dropped on their way to transmission,
0084  *   e.g. due to lack of resources.
0085  *
0086  * @multicast: Multicast packets received.
0087  *   For hardware interfaces this statistic is commonly calculated
0088  *   at the device level (unlike @rx_packets) and therefore may include
0089  *   packets which did not reach the host.
0090  *
0091  *   For IEEE 802.3 devices this counter may be equivalent to:
0092  *
0093  *    - 30.3.1.1.21 aMulticastFramesReceivedOK
0094  *
0095  * @collisions: Number of collisions during packet transmissions.
0096  *
0097  * @rx_length_errors: Number of packets dropped due to invalid length.
0098  *   Part of aggregate "frame" errors in `/proc/net/dev`.
0099  *
0100  *   For IEEE 802.3 devices this counter should be equivalent to a sum
0101  *   of the following attributes:
0102  *
0103  *    - 30.3.1.1.23 aInRangeLengthErrors
0104  *    - 30.3.1.1.24 aOutOfRangeLengthField
0105  *    - 30.3.1.1.25 aFrameTooLongErrors
0106  *
0107  * @rx_over_errors: Receiver FIFO overflow event counter.
0108  *
0109  *   Historically the count of overflow events. Such events may be
0110  *   reported in the receive descriptors or via interrupts, and may
0111  *   not correspond one-to-one with dropped packets.
0112  *
0113  *   The recommended interpretation for high speed interfaces is -
0114  *   number of packets dropped because they did not fit into buffers
0115  *   provided by the host, e.g. packets larger than MTU or next buffer
0116  *   in the ring was not available for a scatter transfer.
0117  *
0118  *   Part of aggregate "frame" errors in `/proc/net/dev`.
0119  *
0120  *   This statistics was historically used interchangeably with
0121  *   @rx_fifo_errors.
0122  *
0123  *   This statistic corresponds to hardware events and is not commonly used
0124  *   on software devices.
0125  *
0126  * @rx_crc_errors: Number of packets received with a CRC error.
0127  *   Part of aggregate "frame" errors in `/proc/net/dev`.
0128  *
0129  *   For IEEE 802.3 devices this counter must be equivalent to:
0130  *
0131  *    - 30.3.1.1.6 aFrameCheckSequenceErrors
0132  *
0133  * @rx_frame_errors: Receiver frame alignment errors.
0134  *   Part of aggregate "frame" errors in `/proc/net/dev`.
0135  *
0136  *   For IEEE 802.3 devices this counter should be equivalent to:
0137  *
0138  *    - 30.3.1.1.7 aAlignmentErrors
0139  *
0140  * @rx_fifo_errors: Receiver FIFO error counter.
0141  *
0142  *   Historically the count of overflow events. Those events may be
0143  *   reported in the receive descriptors or via interrupts, and may
0144  *   not correspond one-to-one with dropped packets.
0145  *
0146  *   This statistics was used interchangeably with @rx_over_errors.
0147  *   Not recommended for use in drivers for high speed interfaces.
0148  *
0149  *   This statistic is used on software devices, e.g. to count software
0150  *   packet queue overflow (can) or sequencing errors (GRE).
0151  *
0152  * @rx_missed_errors: Count of packets missed by the host.
0153  *   Folded into the "drop" counter in `/proc/net/dev`.
0154  *
0155  *   Counts number of packets dropped by the device due to lack
0156  *   of buffer space. This usually indicates that the host interface
0157  *   is slower than the network interface, or host is not keeping up
0158  *   with the receive packet rate.
0159  *
0160  *   This statistic corresponds to hardware events and is not used
0161  *   on software devices.
0162  *
0163  * @tx_aborted_errors:
0164  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
0165  *   For IEEE 802.3 devices capable of half-duplex operation this counter
0166  *   must be equivalent to:
0167  *
0168  *    - 30.3.1.1.11 aFramesAbortedDueToXSColls
0169  *
0170  *   High speed interfaces may use this counter as a general device
0171  *   discard counter.
0172  *
0173  * @tx_carrier_errors: Number of frame transmission errors due to loss
0174  *   of carrier during transmission.
0175  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
0176  *
0177  *   For IEEE 802.3 devices this counter must be equivalent to:
0178  *
0179  *    - 30.3.1.1.13 aCarrierSenseErrors
0180  *
0181  * @tx_fifo_errors: Number of frame transmission errors due to device
0182  *   FIFO underrun / underflow. This condition occurs when the device
0183  *   begins transmission of a frame but is unable to deliver the
0184  *   entire frame to the transmitter in time for transmission.
0185  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
0186  *
0187  * @tx_heartbeat_errors: Number of Heartbeat / SQE Test errors for
0188  *   old half-duplex Ethernet.
0189  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
0190  *
0191  *   For IEEE 802.3 devices possibly equivalent to:
0192  *
0193  *    - 30.3.2.1.4 aSQETestErrors
0194  *
0195  * @tx_window_errors: Number of frame transmission errors due
0196  *   to late collisions (for Ethernet - after the first 64B of transmission).
0197  *   Part of aggregate "carrier" errors in `/proc/net/dev`.
0198  *
0199  *   For IEEE 802.3 devices this counter must be equivalent to:
0200  *
0201  *    - 30.3.1.1.10 aLateCollisions
0202  *
0203  * @rx_compressed: Number of correctly received compressed packets.
0204  *   This counters is only meaningful for interfaces which support
0205  *   packet compression (e.g. CSLIP, PPP).
0206  *
0207  * @tx_compressed: Number of transmitted compressed packets.
0208  *   This counters is only meaningful for interfaces which support
0209  *   packet compression (e.g. CSLIP, PPP).
0210  *
0211  * @rx_nohandler: Number of packets received on the interface
0212  *   but dropped by the networking stack because the device is
0213  *   not designated to receive packets (e.g. backup link in a bond).
0214  *
0215  * @rx_otherhost_dropped: Number of packets dropped due to mismatch
0216  *   in destination MAC address.
0217  */
0218 struct rtnl_link_stats64 {
0219     __u64   rx_packets;
0220     __u64   tx_packets;
0221     __u64   rx_bytes;
0222     __u64   tx_bytes;
0223     __u64   rx_errors;
0224     __u64   tx_errors;
0225     __u64   rx_dropped;
0226     __u64   tx_dropped;
0227     __u64   multicast;
0228     __u64   collisions;
0229 
0230     /* detailed rx_errors: */
0231     __u64   rx_length_errors;
0232     __u64   rx_over_errors;
0233     __u64   rx_crc_errors;
0234     __u64   rx_frame_errors;
0235     __u64   rx_fifo_errors;
0236     __u64   rx_missed_errors;
0237 
0238     /* detailed tx_errors */
0239     __u64   tx_aborted_errors;
0240     __u64   tx_carrier_errors;
0241     __u64   tx_fifo_errors;
0242     __u64   tx_heartbeat_errors;
0243     __u64   tx_window_errors;
0244 
0245     /* for cslip etc */
0246     __u64   rx_compressed;
0247     __u64   tx_compressed;
0248     __u64   rx_nohandler;
0249 
0250     __u64   rx_otherhost_dropped;
0251 };
0252 
0253 /* Subset of link stats useful for in-HW collection. Meaning of the fields is as
0254  * for struct rtnl_link_stats64.
0255  */
0256 struct rtnl_hw_stats64 {
0257     __u64   rx_packets;
0258     __u64   tx_packets;
0259     __u64   rx_bytes;
0260     __u64   tx_bytes;
0261     __u64   rx_errors;
0262     __u64   tx_errors;
0263     __u64   rx_dropped;
0264     __u64   tx_dropped;
0265     __u64   multicast;
0266 };
0267 
0268 /* The struct should be in sync with struct ifmap */
0269 struct rtnl_link_ifmap {
0270     __u64   mem_start;
0271     __u64   mem_end;
0272     __u64   base_addr;
0273     __u16   irq;
0274     __u8    dma;
0275     __u8    port;
0276 };
0277 
0278 /*
0279  * IFLA_AF_SPEC
0280  *   Contains nested attributes for address family specific attributes.
0281  *   Each address family may create a attribute with the address family
0282  *   number as type and create its own attribute structure in it.
0283  *
0284  *   Example:
0285  *   [IFLA_AF_SPEC] = {
0286  *       [AF_INET] = {
0287  *           [IFLA_INET_CONF] = ...,
0288  *       },
0289  *       [AF_INET6] = {
0290  *           [IFLA_INET6_FLAGS] = ...,
0291  *           [IFLA_INET6_CONF] = ...,
0292  *       }
0293  *   }
0294  */
0295 
0296 enum {
0297     IFLA_UNSPEC,
0298     IFLA_ADDRESS,
0299     IFLA_BROADCAST,
0300     IFLA_IFNAME,
0301     IFLA_MTU,
0302     IFLA_LINK,
0303     IFLA_QDISC,
0304     IFLA_STATS,
0305     IFLA_COST,
0306 #define IFLA_COST IFLA_COST
0307     IFLA_PRIORITY,
0308 #define IFLA_PRIORITY IFLA_PRIORITY
0309     IFLA_MASTER,
0310 #define IFLA_MASTER IFLA_MASTER
0311     IFLA_WIRELESS,      /* Wireless Extension event - see wireless.h */
0312 #define IFLA_WIRELESS IFLA_WIRELESS
0313     IFLA_PROTINFO,      /* Protocol specific information for a link */
0314 #define IFLA_PROTINFO IFLA_PROTINFO
0315     IFLA_TXQLEN,
0316 #define IFLA_TXQLEN IFLA_TXQLEN
0317     IFLA_MAP,
0318 #define IFLA_MAP IFLA_MAP
0319     IFLA_WEIGHT,
0320 #define IFLA_WEIGHT IFLA_WEIGHT
0321     IFLA_OPERSTATE,
0322     IFLA_LINKMODE,
0323     IFLA_LINKINFO,
0324 #define IFLA_LINKINFO IFLA_LINKINFO
0325     IFLA_NET_NS_PID,
0326     IFLA_IFALIAS,
0327     IFLA_NUM_VF,        /* Number of VFs if device is SR-IOV PF */
0328     IFLA_VFINFO_LIST,
0329     IFLA_STATS64,
0330     IFLA_VF_PORTS,
0331     IFLA_PORT_SELF,
0332     IFLA_AF_SPEC,
0333     IFLA_GROUP,     /* Group the device belongs to */
0334     IFLA_NET_NS_FD,
0335     IFLA_EXT_MASK,      /* Extended info mask, VFs, etc */
0336     IFLA_PROMISCUITY,   /* Promiscuity count: > 0 means acts PROMISC */
0337 #define IFLA_PROMISCUITY IFLA_PROMISCUITY
0338     IFLA_NUM_TX_QUEUES,
0339     IFLA_NUM_RX_QUEUES,
0340     IFLA_CARRIER,
0341     IFLA_PHYS_PORT_ID,
0342     IFLA_CARRIER_CHANGES,
0343     IFLA_PHYS_SWITCH_ID,
0344     IFLA_LINK_NETNSID,
0345     IFLA_PHYS_PORT_NAME,
0346     IFLA_PROTO_DOWN,
0347     IFLA_GSO_MAX_SEGS,
0348     IFLA_GSO_MAX_SIZE,
0349     IFLA_PAD,
0350     IFLA_XDP,
0351     IFLA_EVENT,
0352     IFLA_NEW_NETNSID,
0353     IFLA_IF_NETNSID,
0354     IFLA_TARGET_NETNSID = IFLA_IF_NETNSID, /* new alias */
0355     IFLA_CARRIER_UP_COUNT,
0356     IFLA_CARRIER_DOWN_COUNT,
0357     IFLA_NEW_IFINDEX,
0358     IFLA_MIN_MTU,
0359     IFLA_MAX_MTU,
0360     IFLA_PROP_LIST,
0361     IFLA_ALT_IFNAME, /* Alternative ifname */
0362     IFLA_PERM_ADDRESS,
0363     IFLA_PROTO_DOWN_REASON,
0364 
0365     /* device (sysfs) name as parent, used instead
0366      * of IFLA_LINK where there's no parent netdev
0367      */
0368     IFLA_PARENT_DEV_NAME,
0369     IFLA_PARENT_DEV_BUS_NAME,
0370     IFLA_GRO_MAX_SIZE,
0371     IFLA_TSO_MAX_SIZE,
0372     IFLA_TSO_MAX_SEGS,
0373 
0374     __IFLA_MAX
0375 };
0376 
0377 
0378 #define IFLA_MAX (__IFLA_MAX - 1)
0379 
0380 enum {
0381     IFLA_PROTO_DOWN_REASON_UNSPEC,
0382     IFLA_PROTO_DOWN_REASON_MASK,    /* u32, mask for reason bits */
0383     IFLA_PROTO_DOWN_REASON_VALUE,   /* u32, reason bit value */
0384 
0385     __IFLA_PROTO_DOWN_REASON_CNT,
0386     IFLA_PROTO_DOWN_REASON_MAX = __IFLA_PROTO_DOWN_REASON_CNT - 1
0387 };
0388 
0389 /* backwards compatibility for userspace */
0390 #ifndef __KERNEL__
0391 #define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
0392 #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
0393 #endif
0394 
0395 enum {
0396     IFLA_INET_UNSPEC,
0397     IFLA_INET_CONF,
0398     __IFLA_INET_MAX,
0399 };
0400 
0401 #define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
0402 
0403 /* ifi_flags.
0404 
0405    IFF_* flags.
0406 
0407    The only change is:
0408    IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
0409    more not changeable by user. They describe link media
0410    characteristics and set by device driver.
0411 
0412    Comments:
0413    - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
0414    - If neither of these three flags are set;
0415      the interface is NBMA.
0416 
0417    - IFF_MULTICAST does not mean anything special:
0418    multicasts can be used on all not-NBMA links.
0419    IFF_MULTICAST means that this media uses special encapsulation
0420    for multicast frames. Apparently, all IFF_POINTOPOINT and
0421    IFF_BROADCAST devices are able to use multicasts too.
0422  */
0423 
0424 /* IFLA_LINK.
0425    For usual devices it is equal ifi_index.
0426    If it is a "virtual interface" (f.e. tunnel), ifi_link
0427    can point to real physical interface (f.e. for bandwidth calculations),
0428    or maybe 0, what means, that real media is unknown (usual
0429    for IPIP tunnels, when route to endpoint is allowed to change)
0430  */
0431 
0432 /* Subtype attributes for IFLA_PROTINFO */
0433 enum {
0434     IFLA_INET6_UNSPEC,
0435     IFLA_INET6_FLAGS,   /* link flags           */
0436     IFLA_INET6_CONF,    /* sysctl parameters        */
0437     IFLA_INET6_STATS,   /* statistics           */
0438     IFLA_INET6_MCAST,   /* MC things. What of them? */
0439     IFLA_INET6_CACHEINFO,   /* time values and max reasm size */
0440     IFLA_INET6_ICMP6STATS,  /* statistics (icmpv6)      */
0441     IFLA_INET6_TOKEN,   /* device token         */
0442     IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
0443     IFLA_INET6_RA_MTU,  /* mtu carried in the RA message */
0444     __IFLA_INET6_MAX
0445 };
0446 
0447 #define IFLA_INET6_MAX  (__IFLA_INET6_MAX - 1)
0448 
0449 enum in6_addr_gen_mode {
0450     IN6_ADDR_GEN_MODE_EUI64,
0451     IN6_ADDR_GEN_MODE_NONE,
0452     IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
0453     IN6_ADDR_GEN_MODE_RANDOM,
0454 };
0455 
0456 /* Bridge section */
0457 
0458 enum {
0459     IFLA_BR_UNSPEC,
0460     IFLA_BR_FORWARD_DELAY,
0461     IFLA_BR_HELLO_TIME,
0462     IFLA_BR_MAX_AGE,
0463     IFLA_BR_AGEING_TIME,
0464     IFLA_BR_STP_STATE,
0465     IFLA_BR_PRIORITY,
0466     IFLA_BR_VLAN_FILTERING,
0467     IFLA_BR_VLAN_PROTOCOL,
0468     IFLA_BR_GROUP_FWD_MASK,
0469     IFLA_BR_ROOT_ID,
0470     IFLA_BR_BRIDGE_ID,
0471     IFLA_BR_ROOT_PORT,
0472     IFLA_BR_ROOT_PATH_COST,
0473     IFLA_BR_TOPOLOGY_CHANGE,
0474     IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
0475     IFLA_BR_HELLO_TIMER,
0476     IFLA_BR_TCN_TIMER,
0477     IFLA_BR_TOPOLOGY_CHANGE_TIMER,
0478     IFLA_BR_GC_TIMER,
0479     IFLA_BR_GROUP_ADDR,
0480     IFLA_BR_FDB_FLUSH,
0481     IFLA_BR_MCAST_ROUTER,
0482     IFLA_BR_MCAST_SNOOPING,
0483     IFLA_BR_MCAST_QUERY_USE_IFADDR,
0484     IFLA_BR_MCAST_QUERIER,
0485     IFLA_BR_MCAST_HASH_ELASTICITY,
0486     IFLA_BR_MCAST_HASH_MAX,
0487     IFLA_BR_MCAST_LAST_MEMBER_CNT,
0488     IFLA_BR_MCAST_STARTUP_QUERY_CNT,
0489     IFLA_BR_MCAST_LAST_MEMBER_INTVL,
0490     IFLA_BR_MCAST_MEMBERSHIP_INTVL,
0491     IFLA_BR_MCAST_QUERIER_INTVL,
0492     IFLA_BR_MCAST_QUERY_INTVL,
0493     IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
0494     IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
0495     IFLA_BR_NF_CALL_IPTABLES,
0496     IFLA_BR_NF_CALL_IP6TABLES,
0497     IFLA_BR_NF_CALL_ARPTABLES,
0498     IFLA_BR_VLAN_DEFAULT_PVID,
0499     IFLA_BR_PAD,
0500     IFLA_BR_VLAN_STATS_ENABLED,
0501     IFLA_BR_MCAST_STATS_ENABLED,
0502     IFLA_BR_MCAST_IGMP_VERSION,
0503     IFLA_BR_MCAST_MLD_VERSION,
0504     IFLA_BR_VLAN_STATS_PER_PORT,
0505     IFLA_BR_MULTI_BOOLOPT,
0506     IFLA_BR_MCAST_QUERIER_STATE,
0507     __IFLA_BR_MAX,
0508 };
0509 
0510 #define IFLA_BR_MAX (__IFLA_BR_MAX - 1)
0511 
0512 struct ifla_bridge_id {
0513     __u8    prio[2];
0514     __u8    addr[6]; /* ETH_ALEN */
0515 };
0516 
0517 enum {
0518     BRIDGE_MODE_UNSPEC,
0519     BRIDGE_MODE_HAIRPIN,
0520 };
0521 
0522 enum {
0523     IFLA_BRPORT_UNSPEC,
0524     IFLA_BRPORT_STATE,  /* Spanning tree state     */
0525     IFLA_BRPORT_PRIORITY,   /* "             priority  */
0526     IFLA_BRPORT_COST,   /* "             cost      */
0527     IFLA_BRPORT_MODE,   /* mode (hairpin)          */
0528     IFLA_BRPORT_GUARD,  /* bpdu guard              */
0529     IFLA_BRPORT_PROTECT,    /* root port protection    */
0530     IFLA_BRPORT_FAST_LEAVE, /* multicast fast leave    */
0531     IFLA_BRPORT_LEARNING,   /* mac learning */
0532     IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
0533     IFLA_BRPORT_PROXYARP,   /* proxy ARP */
0534     IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
0535     IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
0536     IFLA_BRPORT_ROOT_ID,    /* designated root */
0537     IFLA_BRPORT_BRIDGE_ID,  /* designated bridge */
0538     IFLA_BRPORT_DESIGNATED_PORT,
0539     IFLA_BRPORT_DESIGNATED_COST,
0540     IFLA_BRPORT_ID,
0541     IFLA_BRPORT_NO,
0542     IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,
0543     IFLA_BRPORT_CONFIG_PENDING,
0544     IFLA_BRPORT_MESSAGE_AGE_TIMER,
0545     IFLA_BRPORT_FORWARD_DELAY_TIMER,
0546     IFLA_BRPORT_HOLD_TIMER,
0547     IFLA_BRPORT_FLUSH,
0548     IFLA_BRPORT_MULTICAST_ROUTER,
0549     IFLA_BRPORT_PAD,
0550     IFLA_BRPORT_MCAST_FLOOD,
0551     IFLA_BRPORT_MCAST_TO_UCAST,
0552     IFLA_BRPORT_VLAN_TUNNEL,
0553     IFLA_BRPORT_BCAST_FLOOD,
0554     IFLA_BRPORT_GROUP_FWD_MASK,
0555     IFLA_BRPORT_NEIGH_SUPPRESS,
0556     IFLA_BRPORT_ISOLATED,
0557     IFLA_BRPORT_BACKUP_PORT,
0558     IFLA_BRPORT_MRP_RING_OPEN,
0559     IFLA_BRPORT_MRP_IN_OPEN,
0560     IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
0561     IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
0562     IFLA_BRPORT_LOCKED,
0563     __IFLA_BRPORT_MAX
0564 };
0565 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
0566 
0567 struct ifla_cacheinfo {
0568     __u32   max_reasm_len;
0569     __u32   tstamp;     /* ipv6InterfaceTable updated timestamp */
0570     __u32   reachable_time;
0571     __u32   retrans_time;
0572 };
0573 
0574 enum {
0575     IFLA_INFO_UNSPEC,
0576     IFLA_INFO_KIND,
0577     IFLA_INFO_DATA,
0578     IFLA_INFO_XSTATS,
0579     IFLA_INFO_SLAVE_KIND,
0580     IFLA_INFO_SLAVE_DATA,
0581     __IFLA_INFO_MAX,
0582 };
0583 
0584 #define IFLA_INFO_MAX   (__IFLA_INFO_MAX - 1)
0585 
0586 /* VLAN section */
0587 
0588 enum {
0589     IFLA_VLAN_UNSPEC,
0590     IFLA_VLAN_ID,
0591     IFLA_VLAN_FLAGS,
0592     IFLA_VLAN_EGRESS_QOS,
0593     IFLA_VLAN_INGRESS_QOS,
0594     IFLA_VLAN_PROTOCOL,
0595     __IFLA_VLAN_MAX,
0596 };
0597 
0598 #define IFLA_VLAN_MAX   (__IFLA_VLAN_MAX - 1)
0599 
0600 struct ifla_vlan_flags {
0601     __u32   flags;
0602     __u32   mask;
0603 };
0604 
0605 enum {
0606     IFLA_VLAN_QOS_UNSPEC,
0607     IFLA_VLAN_QOS_MAPPING,
0608     __IFLA_VLAN_QOS_MAX
0609 };
0610 
0611 #define IFLA_VLAN_QOS_MAX   (__IFLA_VLAN_QOS_MAX - 1)
0612 
0613 struct ifla_vlan_qos_mapping {
0614     __u32 from;
0615     __u32 to;
0616 };
0617 
0618 /* MACVLAN section */
0619 enum {
0620     IFLA_MACVLAN_UNSPEC,
0621     IFLA_MACVLAN_MODE,
0622     IFLA_MACVLAN_FLAGS,
0623     IFLA_MACVLAN_MACADDR_MODE,
0624     IFLA_MACVLAN_MACADDR,
0625     IFLA_MACVLAN_MACADDR_DATA,
0626     IFLA_MACVLAN_MACADDR_COUNT,
0627     IFLA_MACVLAN_BC_QUEUE_LEN,
0628     IFLA_MACVLAN_BC_QUEUE_LEN_USED,
0629     __IFLA_MACVLAN_MAX,
0630 };
0631 
0632 #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
0633 
0634 enum macvlan_mode {
0635     MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
0636     MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
0637     MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
0638     MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
0639     MACVLAN_MODE_SOURCE  = 16,/* use source MAC address list to assign */
0640 };
0641 
0642 enum macvlan_macaddr_mode {
0643     MACVLAN_MACADDR_ADD,
0644     MACVLAN_MACADDR_DEL,
0645     MACVLAN_MACADDR_FLUSH,
0646     MACVLAN_MACADDR_SET,
0647 };
0648 
0649 #define MACVLAN_FLAG_NOPROMISC  1
0650 #define MACVLAN_FLAG_NODST  2 /* skip dst macvlan if matching src macvlan */
0651 
0652 /* VRF section */
0653 enum {
0654     IFLA_VRF_UNSPEC,
0655     IFLA_VRF_TABLE,
0656     __IFLA_VRF_MAX
0657 };
0658 
0659 #define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
0660 
0661 enum {
0662     IFLA_VRF_PORT_UNSPEC,
0663     IFLA_VRF_PORT_TABLE,
0664     __IFLA_VRF_PORT_MAX
0665 };
0666 
0667 #define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
0668 
0669 /* MACSEC section */
0670 enum {
0671     IFLA_MACSEC_UNSPEC,
0672     IFLA_MACSEC_SCI,
0673     IFLA_MACSEC_PORT,
0674     IFLA_MACSEC_ICV_LEN,
0675     IFLA_MACSEC_CIPHER_SUITE,
0676     IFLA_MACSEC_WINDOW,
0677     IFLA_MACSEC_ENCODING_SA,
0678     IFLA_MACSEC_ENCRYPT,
0679     IFLA_MACSEC_PROTECT,
0680     IFLA_MACSEC_INC_SCI,
0681     IFLA_MACSEC_ES,
0682     IFLA_MACSEC_SCB,
0683     IFLA_MACSEC_REPLAY_PROTECT,
0684     IFLA_MACSEC_VALIDATION,
0685     IFLA_MACSEC_PAD,
0686     IFLA_MACSEC_OFFLOAD,
0687     __IFLA_MACSEC_MAX,
0688 };
0689 
0690 #define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
0691 
0692 /* XFRM section */
0693 enum {
0694     IFLA_XFRM_UNSPEC,
0695     IFLA_XFRM_LINK,
0696     IFLA_XFRM_IF_ID,
0697     __IFLA_XFRM_MAX
0698 };
0699 
0700 #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
0701 
0702 enum macsec_validation_type {
0703     MACSEC_VALIDATE_DISABLED = 0,
0704     MACSEC_VALIDATE_CHECK = 1,
0705     MACSEC_VALIDATE_STRICT = 2,
0706     __MACSEC_VALIDATE_END,
0707     MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
0708 };
0709 
0710 enum macsec_offload {
0711     MACSEC_OFFLOAD_OFF = 0,
0712     MACSEC_OFFLOAD_PHY = 1,
0713     MACSEC_OFFLOAD_MAC = 2,
0714     __MACSEC_OFFLOAD_END,
0715     MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1,
0716 };
0717 
0718 /* IPVLAN section */
0719 enum {
0720     IFLA_IPVLAN_UNSPEC,
0721     IFLA_IPVLAN_MODE,
0722     IFLA_IPVLAN_FLAGS,
0723     __IFLA_IPVLAN_MAX
0724 };
0725 
0726 #define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
0727 
0728 enum ipvlan_mode {
0729     IPVLAN_MODE_L2 = 0,
0730     IPVLAN_MODE_L3,
0731     IPVLAN_MODE_L3S,
0732     IPVLAN_MODE_MAX
0733 };
0734 
0735 #define IPVLAN_F_PRIVATE    0x01
0736 #define IPVLAN_F_VEPA       0x02
0737 
0738 /* Tunnel RTM header */
0739 struct tunnel_msg {
0740     __u8 family;
0741     __u8 flags;
0742     __u16 reserved2;
0743     __u32 ifindex;
0744 };
0745 
0746 /* VXLAN section */
0747 
0748 /* include statistics in the dump */
0749 #define TUNNEL_MSG_FLAG_STATS   0x01
0750 
0751 #define TUNNEL_MSG_VALID_USER_FLAGS TUNNEL_MSG_FLAG_STATS
0752 
0753 /* Embedded inside VXLAN_VNIFILTER_ENTRY_STATS */
0754 enum {
0755     VNIFILTER_ENTRY_STATS_UNSPEC,
0756     VNIFILTER_ENTRY_STATS_RX_BYTES,
0757     VNIFILTER_ENTRY_STATS_RX_PKTS,
0758     VNIFILTER_ENTRY_STATS_RX_DROPS,
0759     VNIFILTER_ENTRY_STATS_RX_ERRORS,
0760     VNIFILTER_ENTRY_STATS_TX_BYTES,
0761     VNIFILTER_ENTRY_STATS_TX_PKTS,
0762     VNIFILTER_ENTRY_STATS_TX_DROPS,
0763     VNIFILTER_ENTRY_STATS_TX_ERRORS,
0764     VNIFILTER_ENTRY_STATS_PAD,
0765     __VNIFILTER_ENTRY_STATS_MAX
0766 };
0767 #define VNIFILTER_ENTRY_STATS_MAX (__VNIFILTER_ENTRY_STATS_MAX - 1)
0768 
0769 enum {
0770     VXLAN_VNIFILTER_ENTRY_UNSPEC,
0771     VXLAN_VNIFILTER_ENTRY_START,
0772     VXLAN_VNIFILTER_ENTRY_END,
0773     VXLAN_VNIFILTER_ENTRY_GROUP,
0774     VXLAN_VNIFILTER_ENTRY_GROUP6,
0775     VXLAN_VNIFILTER_ENTRY_STATS,
0776     __VXLAN_VNIFILTER_ENTRY_MAX
0777 };
0778 #define VXLAN_VNIFILTER_ENTRY_MAX   (__VXLAN_VNIFILTER_ENTRY_MAX - 1)
0779 
0780 enum {
0781     VXLAN_VNIFILTER_UNSPEC,
0782     VXLAN_VNIFILTER_ENTRY,
0783     __VXLAN_VNIFILTER_MAX
0784 };
0785 #define VXLAN_VNIFILTER_MAX (__VXLAN_VNIFILTER_MAX - 1)
0786 
0787 enum {
0788     IFLA_VXLAN_UNSPEC,
0789     IFLA_VXLAN_ID,
0790     IFLA_VXLAN_GROUP,   /* group or remote address */
0791     IFLA_VXLAN_LINK,
0792     IFLA_VXLAN_LOCAL,
0793     IFLA_VXLAN_TTL,
0794     IFLA_VXLAN_TOS,
0795     IFLA_VXLAN_LEARNING,
0796     IFLA_VXLAN_AGEING,
0797     IFLA_VXLAN_LIMIT,
0798     IFLA_VXLAN_PORT_RANGE,  /* source port */
0799     IFLA_VXLAN_PROXY,
0800     IFLA_VXLAN_RSC,
0801     IFLA_VXLAN_L2MISS,
0802     IFLA_VXLAN_L3MISS,
0803     IFLA_VXLAN_PORT,    /* destination port */
0804     IFLA_VXLAN_GROUP6,
0805     IFLA_VXLAN_LOCAL6,
0806     IFLA_VXLAN_UDP_CSUM,
0807     IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
0808     IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
0809     IFLA_VXLAN_REMCSUM_TX,
0810     IFLA_VXLAN_REMCSUM_RX,
0811     IFLA_VXLAN_GBP,
0812     IFLA_VXLAN_REMCSUM_NOPARTIAL,
0813     IFLA_VXLAN_COLLECT_METADATA,
0814     IFLA_VXLAN_LABEL,
0815     IFLA_VXLAN_GPE,
0816     IFLA_VXLAN_TTL_INHERIT,
0817     IFLA_VXLAN_DF,
0818     IFLA_VXLAN_VNIFILTER, /* only applicable with COLLECT_METADATA mode */
0819     __IFLA_VXLAN_MAX
0820 };
0821 #define IFLA_VXLAN_MAX  (__IFLA_VXLAN_MAX - 1)
0822 
0823 struct ifla_vxlan_port_range {
0824     __be16  low;
0825     __be16  high;
0826 };
0827 
0828 enum ifla_vxlan_df {
0829     VXLAN_DF_UNSET = 0,
0830     VXLAN_DF_SET,
0831     VXLAN_DF_INHERIT,
0832     __VXLAN_DF_END,
0833     VXLAN_DF_MAX = __VXLAN_DF_END - 1,
0834 };
0835 
0836 /* GENEVE section */
0837 enum {
0838     IFLA_GENEVE_UNSPEC,
0839     IFLA_GENEVE_ID,
0840     IFLA_GENEVE_REMOTE,
0841     IFLA_GENEVE_TTL,
0842     IFLA_GENEVE_TOS,
0843     IFLA_GENEVE_PORT,   /* destination port */
0844     IFLA_GENEVE_COLLECT_METADATA,
0845     IFLA_GENEVE_REMOTE6,
0846     IFLA_GENEVE_UDP_CSUM,
0847     IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
0848     IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
0849     IFLA_GENEVE_LABEL,
0850     IFLA_GENEVE_TTL_INHERIT,
0851     IFLA_GENEVE_DF,
0852     IFLA_GENEVE_INNER_PROTO_INHERIT,
0853     __IFLA_GENEVE_MAX
0854 };
0855 #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
0856 
0857 enum ifla_geneve_df {
0858     GENEVE_DF_UNSET = 0,
0859     GENEVE_DF_SET,
0860     GENEVE_DF_INHERIT,
0861     __GENEVE_DF_END,
0862     GENEVE_DF_MAX = __GENEVE_DF_END - 1,
0863 };
0864 
0865 /* Bareudp section  */
0866 enum {
0867     IFLA_BAREUDP_UNSPEC,
0868     IFLA_BAREUDP_PORT,
0869     IFLA_BAREUDP_ETHERTYPE,
0870     IFLA_BAREUDP_SRCPORT_MIN,
0871     IFLA_BAREUDP_MULTIPROTO_MODE,
0872     __IFLA_BAREUDP_MAX
0873 };
0874 
0875 #define IFLA_BAREUDP_MAX (__IFLA_BAREUDP_MAX - 1)
0876 
0877 /* PPP section */
0878 enum {
0879     IFLA_PPP_UNSPEC,
0880     IFLA_PPP_DEV_FD,
0881     __IFLA_PPP_MAX
0882 };
0883 #define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
0884 
0885 /* GTP section */
0886 
0887 enum ifla_gtp_role {
0888     GTP_ROLE_GGSN = 0,
0889     GTP_ROLE_SGSN,
0890 };
0891 
0892 enum {
0893     IFLA_GTP_UNSPEC,
0894     IFLA_GTP_FD0,
0895     IFLA_GTP_FD1,
0896     IFLA_GTP_PDP_HASHSIZE,
0897     IFLA_GTP_ROLE,
0898     IFLA_GTP_CREATE_SOCKETS,
0899     IFLA_GTP_RESTART_COUNT,
0900     __IFLA_GTP_MAX,
0901 };
0902 #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
0903 
0904 /* Bonding section */
0905 
0906 enum {
0907     IFLA_BOND_UNSPEC,
0908     IFLA_BOND_MODE,
0909     IFLA_BOND_ACTIVE_SLAVE,
0910     IFLA_BOND_MIIMON,
0911     IFLA_BOND_UPDELAY,
0912     IFLA_BOND_DOWNDELAY,
0913     IFLA_BOND_USE_CARRIER,
0914     IFLA_BOND_ARP_INTERVAL,
0915     IFLA_BOND_ARP_IP_TARGET,
0916     IFLA_BOND_ARP_VALIDATE,
0917     IFLA_BOND_ARP_ALL_TARGETS,
0918     IFLA_BOND_PRIMARY,
0919     IFLA_BOND_PRIMARY_RESELECT,
0920     IFLA_BOND_FAIL_OVER_MAC,
0921     IFLA_BOND_XMIT_HASH_POLICY,
0922     IFLA_BOND_RESEND_IGMP,
0923     IFLA_BOND_NUM_PEER_NOTIF,
0924     IFLA_BOND_ALL_SLAVES_ACTIVE,
0925     IFLA_BOND_MIN_LINKS,
0926     IFLA_BOND_LP_INTERVAL,
0927     IFLA_BOND_PACKETS_PER_SLAVE,
0928     IFLA_BOND_AD_LACP_RATE,
0929     IFLA_BOND_AD_SELECT,
0930     IFLA_BOND_AD_INFO,
0931     IFLA_BOND_AD_ACTOR_SYS_PRIO,
0932     IFLA_BOND_AD_USER_PORT_KEY,
0933     IFLA_BOND_AD_ACTOR_SYSTEM,
0934     IFLA_BOND_TLB_DYNAMIC_LB,
0935     IFLA_BOND_PEER_NOTIF_DELAY,
0936     IFLA_BOND_AD_LACP_ACTIVE,
0937     IFLA_BOND_MISSED_MAX,
0938     IFLA_BOND_NS_IP6_TARGET,
0939     __IFLA_BOND_MAX,
0940 };
0941 
0942 #define IFLA_BOND_MAX   (__IFLA_BOND_MAX - 1)
0943 
0944 enum {
0945     IFLA_BOND_AD_INFO_UNSPEC,
0946     IFLA_BOND_AD_INFO_AGGREGATOR,
0947     IFLA_BOND_AD_INFO_NUM_PORTS,
0948     IFLA_BOND_AD_INFO_ACTOR_KEY,
0949     IFLA_BOND_AD_INFO_PARTNER_KEY,
0950     IFLA_BOND_AD_INFO_PARTNER_MAC,
0951     __IFLA_BOND_AD_INFO_MAX,
0952 };
0953 
0954 #define IFLA_BOND_AD_INFO_MAX   (__IFLA_BOND_AD_INFO_MAX - 1)
0955 
0956 enum {
0957     IFLA_BOND_SLAVE_UNSPEC,
0958     IFLA_BOND_SLAVE_STATE,
0959     IFLA_BOND_SLAVE_MII_STATUS,
0960     IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
0961     IFLA_BOND_SLAVE_PERM_HWADDR,
0962     IFLA_BOND_SLAVE_QUEUE_ID,
0963     IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
0964     IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
0965     IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
0966     IFLA_BOND_SLAVE_PRIO,
0967     __IFLA_BOND_SLAVE_MAX,
0968 };
0969 
0970 #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
0971 
0972 /* SR-IOV virtual function management section */
0973 
0974 enum {
0975     IFLA_VF_INFO_UNSPEC,
0976     IFLA_VF_INFO,
0977     __IFLA_VF_INFO_MAX,
0978 };
0979 
0980 #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
0981 
0982 enum {
0983     IFLA_VF_UNSPEC,
0984     IFLA_VF_MAC,        /* Hardware queue specific attributes */
0985     IFLA_VF_VLAN,       /* VLAN ID and QoS */
0986     IFLA_VF_TX_RATE,    /* Max TX Bandwidth Allocation */
0987     IFLA_VF_SPOOFCHK,   /* Spoof Checking on/off switch */
0988     IFLA_VF_LINK_STATE, /* link state enable/disable/auto switch */
0989     IFLA_VF_RATE,       /* Min and Max TX Bandwidth Allocation */
0990     IFLA_VF_RSS_QUERY_EN,   /* RSS Redirection Table and Hash Key query
0991                  * on/off switch
0992                  */
0993     IFLA_VF_STATS,      /* network device statistics */
0994     IFLA_VF_TRUST,      /* Trust VF */
0995     IFLA_VF_IB_NODE_GUID,   /* VF Infiniband node GUID */
0996     IFLA_VF_IB_PORT_GUID,   /* VF Infiniband port GUID */
0997     IFLA_VF_VLAN_LIST,  /* nested list of vlans, option for QinQ */
0998     IFLA_VF_BROADCAST,  /* VF broadcast */
0999     __IFLA_VF_MAX,
1000 };
1001 
1002 #define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
1003 
1004 struct ifla_vf_mac {
1005     __u32 vf;
1006     __u8 mac[32]; /* MAX_ADDR_LEN */
1007 };
1008 
1009 struct ifla_vf_broadcast {
1010     __u8 broadcast[32];
1011 };
1012 
1013 struct ifla_vf_vlan {
1014     __u32 vf;
1015     __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
1016     __u32 qos;
1017 };
1018 
1019 enum {
1020     IFLA_VF_VLAN_INFO_UNSPEC,
1021     IFLA_VF_VLAN_INFO,  /* VLAN ID, QoS and VLAN protocol */
1022     __IFLA_VF_VLAN_INFO_MAX,
1023 };
1024 
1025 #define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
1026 #define MAX_VLAN_LIST_LEN 1
1027 
1028 struct ifla_vf_vlan_info {
1029     __u32 vf;
1030     __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
1031     __u32 qos;
1032     __be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
1033 };
1034 
1035 struct ifla_vf_tx_rate {
1036     __u32 vf;
1037     __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
1038 };
1039 
1040 struct ifla_vf_rate {
1041     __u32 vf;
1042     __u32 min_tx_rate; /* Min Bandwidth in Mbps */
1043     __u32 max_tx_rate; /* Max Bandwidth in Mbps */
1044 };
1045 
1046 struct ifla_vf_spoofchk {
1047     __u32 vf;
1048     __u32 setting;
1049 };
1050 
1051 struct ifla_vf_guid {
1052     __u32 vf;
1053     __u64 guid;
1054 };
1055 
1056 enum {
1057     IFLA_VF_LINK_STATE_AUTO,    /* link state of the uplink */
1058     IFLA_VF_LINK_STATE_ENABLE,  /* link always up */
1059     IFLA_VF_LINK_STATE_DISABLE, /* link always down */
1060     __IFLA_VF_LINK_STATE_MAX,
1061 };
1062 
1063 struct ifla_vf_link_state {
1064     __u32 vf;
1065     __u32 link_state;
1066 };
1067 
1068 struct ifla_vf_rss_query_en {
1069     __u32 vf;
1070     __u32 setting;
1071 };
1072 
1073 enum {
1074     IFLA_VF_STATS_RX_PACKETS,
1075     IFLA_VF_STATS_TX_PACKETS,
1076     IFLA_VF_STATS_RX_BYTES,
1077     IFLA_VF_STATS_TX_BYTES,
1078     IFLA_VF_STATS_BROADCAST,
1079     IFLA_VF_STATS_MULTICAST,
1080     IFLA_VF_STATS_PAD,
1081     IFLA_VF_STATS_RX_DROPPED,
1082     IFLA_VF_STATS_TX_DROPPED,
1083     __IFLA_VF_STATS_MAX,
1084 };
1085 
1086 #define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
1087 
1088 struct ifla_vf_trust {
1089     __u32 vf;
1090     __u32 setting;
1091 };
1092 
1093 /* VF ports management section
1094  *
1095  *  Nested layout of set/get msg is:
1096  *
1097  *      [IFLA_NUM_VF]
1098  *      [IFLA_VF_PORTS]
1099  *          [IFLA_VF_PORT]
1100  *              [IFLA_PORT_*], ...
1101  *          [IFLA_VF_PORT]
1102  *              [IFLA_PORT_*], ...
1103  *          ...
1104  *      [IFLA_PORT_SELF]
1105  *          [IFLA_PORT_*], ...
1106  */
1107 
1108 enum {
1109     IFLA_VF_PORT_UNSPEC,
1110     IFLA_VF_PORT,           /* nest */
1111     __IFLA_VF_PORT_MAX,
1112 };
1113 
1114 #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
1115 
1116 enum {
1117     IFLA_PORT_UNSPEC,
1118     IFLA_PORT_VF,           /* __u32 */
1119     IFLA_PORT_PROFILE,      /* string */
1120     IFLA_PORT_VSI_TYPE,     /* 802.1Qbg (pre-)standard VDP */
1121     IFLA_PORT_INSTANCE_UUID,    /* binary UUID */
1122     IFLA_PORT_HOST_UUID,        /* binary UUID */
1123     IFLA_PORT_REQUEST,      /* __u8 */
1124     IFLA_PORT_RESPONSE,     /* __u16, output only */
1125     __IFLA_PORT_MAX,
1126 };
1127 
1128 #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
1129 
1130 #define PORT_PROFILE_MAX    40
1131 #define PORT_UUID_MAX       16
1132 #define PORT_SELF_VF        -1
1133 
1134 enum {
1135     PORT_REQUEST_PREASSOCIATE = 0,
1136     PORT_REQUEST_PREASSOCIATE_RR,
1137     PORT_REQUEST_ASSOCIATE,
1138     PORT_REQUEST_DISASSOCIATE,
1139 };
1140 
1141 enum {
1142     PORT_VDP_RESPONSE_SUCCESS = 0,
1143     PORT_VDP_RESPONSE_INVALID_FORMAT,
1144     PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
1145     PORT_VDP_RESPONSE_UNUSED_VTID,
1146     PORT_VDP_RESPONSE_VTID_VIOLATION,
1147     PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
1148     PORT_VDP_RESPONSE_OUT_OF_SYNC,
1149     /* 0x08-0xFF reserved for future VDP use */
1150     PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
1151     PORT_PROFILE_RESPONSE_INPROGRESS,
1152     PORT_PROFILE_RESPONSE_INVALID,
1153     PORT_PROFILE_RESPONSE_BADSTATE,
1154     PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
1155     PORT_PROFILE_RESPONSE_ERROR,
1156 };
1157 
1158 struct ifla_port_vsi {
1159     __u8 vsi_mgr_id;
1160     __u8 vsi_type_id[3];
1161     __u8 vsi_type_version;
1162     __u8 pad[3];
1163 };
1164 
1165 
1166 /* IPoIB section */
1167 
1168 enum {
1169     IFLA_IPOIB_UNSPEC,
1170     IFLA_IPOIB_PKEY,
1171     IFLA_IPOIB_MODE,
1172     IFLA_IPOIB_UMCAST,
1173     __IFLA_IPOIB_MAX
1174 };
1175 
1176 enum {
1177     IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
1178     IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
1179 };
1180 
1181 #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
1182 
1183 
1184 /* HSR/PRP section, both uses same interface */
1185 
1186 /* Different redundancy protocols for hsr device */
1187 enum {
1188     HSR_PROTOCOL_HSR,
1189     HSR_PROTOCOL_PRP,
1190     HSR_PROTOCOL_MAX,
1191 };
1192 
1193 enum {
1194     IFLA_HSR_UNSPEC,
1195     IFLA_HSR_SLAVE1,
1196     IFLA_HSR_SLAVE2,
1197     IFLA_HSR_MULTICAST_SPEC,    /* Last byte of supervision addr */
1198     IFLA_HSR_SUPERVISION_ADDR,  /* Supervision frame multicast addr */
1199     IFLA_HSR_SEQ_NR,
1200     IFLA_HSR_VERSION,       /* HSR version */
1201     IFLA_HSR_PROTOCOL,      /* Indicate different protocol than
1202                      * HSR. For example PRP.
1203                      */
1204     __IFLA_HSR_MAX,
1205 };
1206 
1207 #define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
1208 
1209 /* STATS section */
1210 
1211 struct if_stats_msg {
1212     __u8  family;
1213     __u8  pad1;
1214     __u16 pad2;
1215     __u32 ifindex;
1216     __u32 filter_mask;
1217 };
1218 
1219 /* A stats attribute can be netdev specific or a global stat.
1220  * For netdev stats, lets use the prefix IFLA_STATS_LINK_*
1221  */
1222 enum {
1223     IFLA_STATS_UNSPEC, /* also used as 64bit pad attribute */
1224     IFLA_STATS_LINK_64,
1225     IFLA_STATS_LINK_XSTATS,
1226     IFLA_STATS_LINK_XSTATS_SLAVE,
1227     IFLA_STATS_LINK_OFFLOAD_XSTATS,
1228     IFLA_STATS_AF_SPEC,
1229     __IFLA_STATS_MAX,
1230 };
1231 
1232 #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
1233 
1234 #define IFLA_STATS_FILTER_BIT(ATTR) (1 << (ATTR - 1))
1235 
1236 enum {
1237     IFLA_STATS_GETSET_UNSPEC,
1238     IFLA_STATS_GET_FILTERS, /* Nest of IFLA_STATS_LINK_xxx, each a u32 with
1239                  * a filter mask for the corresponding group.
1240                  */
1241     IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS, /* 0 or 1 as u8 */
1242     __IFLA_STATS_GETSET_MAX,
1243 };
1244 
1245 #define IFLA_STATS_GETSET_MAX (__IFLA_STATS_GETSET_MAX - 1)
1246 
1247 /* These are embedded into IFLA_STATS_LINK_XSTATS:
1248  * [IFLA_STATS_LINK_XSTATS]
1249  * -> [LINK_XSTATS_TYPE_xxx]
1250  *    -> [rtnl link type specific attributes]
1251  */
1252 enum {
1253     LINK_XSTATS_TYPE_UNSPEC,
1254     LINK_XSTATS_TYPE_BRIDGE,
1255     LINK_XSTATS_TYPE_BOND,
1256     __LINK_XSTATS_TYPE_MAX
1257 };
1258 #define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
1259 
1260 /* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
1261 enum {
1262     IFLA_OFFLOAD_XSTATS_UNSPEC,
1263     IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
1264     IFLA_OFFLOAD_XSTATS_HW_S_INFO,  /* HW stats info. A nest */
1265     IFLA_OFFLOAD_XSTATS_L3_STATS,   /* struct rtnl_hw_stats64 */
1266     __IFLA_OFFLOAD_XSTATS_MAX
1267 };
1268 #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
1269 
1270 enum {
1271     IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC,
1272     IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST,      /* u8 */
1273     IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED,     /* u8 */
1274     __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX,
1275 };
1276 #define IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX \
1277     (__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX - 1)
1278 
1279 /* XDP section */
1280 
1281 #define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0)
1282 #define XDP_FLAGS_SKB_MODE      (1U << 1)
1283 #define XDP_FLAGS_DRV_MODE      (1U << 2)
1284 #define XDP_FLAGS_HW_MODE       (1U << 3)
1285 #define XDP_FLAGS_REPLACE       (1U << 4)
1286 #define XDP_FLAGS_MODES         (XDP_FLAGS_SKB_MODE | \
1287                      XDP_FLAGS_DRV_MODE | \
1288                      XDP_FLAGS_HW_MODE)
1289 #define XDP_FLAGS_MASK          (XDP_FLAGS_UPDATE_IF_NOEXIST | \
1290                      XDP_FLAGS_MODES | XDP_FLAGS_REPLACE)
1291 
1292 /* These are stored into IFLA_XDP_ATTACHED on dump. */
1293 enum {
1294     XDP_ATTACHED_NONE = 0,
1295     XDP_ATTACHED_DRV,
1296     XDP_ATTACHED_SKB,
1297     XDP_ATTACHED_HW,
1298     XDP_ATTACHED_MULTI,
1299 };
1300 
1301 enum {
1302     IFLA_XDP_UNSPEC,
1303     IFLA_XDP_FD,
1304     IFLA_XDP_ATTACHED,
1305     IFLA_XDP_FLAGS,
1306     IFLA_XDP_PROG_ID,
1307     IFLA_XDP_DRV_PROG_ID,
1308     IFLA_XDP_SKB_PROG_ID,
1309     IFLA_XDP_HW_PROG_ID,
1310     IFLA_XDP_EXPECTED_FD,
1311     __IFLA_XDP_MAX,
1312 };
1313 
1314 #define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
1315 
1316 enum {
1317     IFLA_EVENT_NONE,
1318     IFLA_EVENT_REBOOT,      /* internal reset / reboot */
1319     IFLA_EVENT_FEATURES,        /* change in offload features */
1320     IFLA_EVENT_BONDING_FAILOVER,    /* change in active slave */
1321     IFLA_EVENT_NOTIFY_PEERS,    /* re-sent grat. arp/ndisc */
1322     IFLA_EVENT_IGMP_RESEND,     /* re-sent IGMP JOIN */
1323     IFLA_EVENT_BONDING_OPTIONS, /* change in bonding options */
1324 };
1325 
1326 /* tun section */
1327 
1328 enum {
1329     IFLA_TUN_UNSPEC,
1330     IFLA_TUN_OWNER,
1331     IFLA_TUN_GROUP,
1332     IFLA_TUN_TYPE,
1333     IFLA_TUN_PI,
1334     IFLA_TUN_VNET_HDR,
1335     IFLA_TUN_PERSIST,
1336     IFLA_TUN_MULTI_QUEUE,
1337     IFLA_TUN_NUM_QUEUES,
1338     IFLA_TUN_NUM_DISABLED_QUEUES,
1339     __IFLA_TUN_MAX,
1340 };
1341 
1342 #define IFLA_TUN_MAX (__IFLA_TUN_MAX - 1)
1343 
1344 /* rmnet section */
1345 
1346 #define RMNET_FLAGS_INGRESS_DEAGGREGATION         (1U << 0)
1347 #define RMNET_FLAGS_INGRESS_MAP_COMMANDS          (1U << 1)
1348 #define RMNET_FLAGS_INGRESS_MAP_CKSUMV4           (1U << 2)
1349 #define RMNET_FLAGS_EGRESS_MAP_CKSUMV4            (1U << 3)
1350 #define RMNET_FLAGS_INGRESS_MAP_CKSUMV5           (1U << 4)
1351 #define RMNET_FLAGS_EGRESS_MAP_CKSUMV5            (1U << 5)
1352 
1353 enum {
1354     IFLA_RMNET_UNSPEC,
1355     IFLA_RMNET_MUX_ID,
1356     IFLA_RMNET_FLAGS,
1357     __IFLA_RMNET_MAX,
1358 };
1359 
1360 #define IFLA_RMNET_MAX  (__IFLA_RMNET_MAX - 1)
1361 
1362 struct ifla_rmnet_flags {
1363     __u32   flags;
1364     __u32   mask;
1365 };
1366 
1367 /* MCTP section */
1368 
1369 enum {
1370     IFLA_MCTP_UNSPEC,
1371     IFLA_MCTP_NET,
1372     __IFLA_MCTP_MAX,
1373 };
1374 
1375 #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
1376 
1377 #endif /* _UAPI_LINUX_IF_LINK_H */