16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2607ca46eSDavid Howells #ifndef _UAPI_LINUX_IF_LINK_H 3607ca46eSDavid Howells #define _UAPI_LINUX_IF_LINK_H 4607ca46eSDavid Howells 5607ca46eSDavid Howells #include <linux/types.h> 6607ca46eSDavid Howells #include <linux/netlink.h> 7607ca46eSDavid Howells 8607ca46eSDavid Howells /* This struct should be in sync with struct rtnl_link_stats64 */ 9607ca46eSDavid Howells struct rtnl_link_stats { 1078a3ea55SJakub Kicinski __u32 rx_packets; 1178a3ea55SJakub Kicinski __u32 tx_packets; 1278a3ea55SJakub Kicinski __u32 rx_bytes; 1378a3ea55SJakub Kicinski __u32 tx_bytes; 1478a3ea55SJakub Kicinski __u32 rx_errors; 1578a3ea55SJakub Kicinski __u32 tx_errors; 1678a3ea55SJakub Kicinski __u32 rx_dropped; 1778a3ea55SJakub Kicinski __u32 tx_dropped; 1878a3ea55SJakub Kicinski __u32 multicast; 19607ca46eSDavid Howells __u32 collisions; 20607ca46eSDavid Howells /* detailed rx_errors: */ 21607ca46eSDavid Howells __u32 rx_length_errors; 2278a3ea55SJakub Kicinski __u32 rx_over_errors; 2378a3ea55SJakub Kicinski __u32 rx_crc_errors; 2478a3ea55SJakub Kicinski __u32 rx_frame_errors; 2578a3ea55SJakub Kicinski __u32 rx_fifo_errors; 2678a3ea55SJakub Kicinski __u32 rx_missed_errors; 27607ca46eSDavid Howells 28607ca46eSDavid Howells /* detailed tx_errors */ 29607ca46eSDavid Howells __u32 tx_aborted_errors; 30607ca46eSDavid Howells __u32 tx_carrier_errors; 31607ca46eSDavid Howells __u32 tx_fifo_errors; 32607ca46eSDavid Howells __u32 tx_heartbeat_errors; 33607ca46eSDavid Howells __u32 tx_window_errors; 34607ca46eSDavid Howells 35607ca46eSDavid Howells /* for cslip etc */ 36607ca46eSDavid Howells __u32 rx_compressed; 37607ca46eSDavid Howells __u32 tx_compressed; 386e7333d3SJarod Wilson 3978a3ea55SJakub Kicinski __u32 rx_nohandler; 40607ca46eSDavid Howells }; 41607ca46eSDavid Howells 420db0c34cSJakub Kicinski /** 430db0c34cSJakub Kicinski * struct rtnl_link_stats64 - The main device statistics structure. 440db0c34cSJakub Kicinski * 450db0c34cSJakub Kicinski * @rx_packets: Number of good packets received by the interface. 460db0c34cSJakub Kicinski * For hardware interfaces counts all good packets received from the device 470db0c34cSJakub Kicinski * by the host, including packets which host had to drop at various stages 480db0c34cSJakub Kicinski * of processing (even in the driver). 490db0c34cSJakub Kicinski * 500db0c34cSJakub Kicinski * @tx_packets: Number of packets successfully transmitted. 510db0c34cSJakub Kicinski * For hardware interfaces counts packets which host was able to successfully 520db0c34cSJakub Kicinski * hand over to the device, which does not necessarily mean that packets 530db0c34cSJakub Kicinski * had been successfully transmitted out of the device, only that device 540db0c34cSJakub Kicinski * acknowledged it copied them out of host memory. 550db0c34cSJakub Kicinski * 560db0c34cSJakub Kicinski * @rx_bytes: Number of good received bytes, corresponding to @rx_packets. 570db0c34cSJakub Kicinski * 580db0c34cSJakub Kicinski * For IEEE 802.3 devices should count the length of Ethernet Frames 590db0c34cSJakub Kicinski * excluding the FCS. 600db0c34cSJakub Kicinski * 610db0c34cSJakub Kicinski * @tx_bytes: Number of good transmitted bytes, corresponding to @tx_packets. 620db0c34cSJakub Kicinski * 630db0c34cSJakub Kicinski * For IEEE 802.3 devices should count the length of Ethernet Frames 640db0c34cSJakub Kicinski * excluding the FCS. 650db0c34cSJakub Kicinski * 660db0c34cSJakub Kicinski * @rx_errors: Total number of bad packets received on this network device. 670db0c34cSJakub Kicinski * This counter must include events counted by @rx_length_errors, 680db0c34cSJakub Kicinski * @rx_crc_errors, @rx_frame_errors and other errors not otherwise 690db0c34cSJakub Kicinski * counted. 700db0c34cSJakub Kicinski * 710db0c34cSJakub Kicinski * @tx_errors: Total number of transmit problems. 720db0c34cSJakub Kicinski * This counter must include events counter by @tx_aborted_errors, 730db0c34cSJakub Kicinski * @tx_carrier_errors, @tx_fifo_errors, @tx_heartbeat_errors, 740db0c34cSJakub Kicinski * @tx_window_errors and other errors not otherwise counted. 750db0c34cSJakub Kicinski * 760db0c34cSJakub Kicinski * @rx_dropped: Number of packets received but not processed, 770db0c34cSJakub Kicinski * e.g. due to lack of resources or unsupported protocol. 78cf072069SJakub Kicinski * For hardware interfaces this counter may include packets discarded 79cf072069SJakub Kicinski * due to L2 address filtering but should not include packets dropped 80cf072069SJakub Kicinski * by the device due to buffer exhaustion which are counted separately in 810db0c34cSJakub Kicinski * @rx_missed_errors (since procfs folds those two counters together). 820db0c34cSJakub Kicinski * 830db0c34cSJakub Kicinski * @tx_dropped: Number of packets dropped on their way to transmission, 840db0c34cSJakub Kicinski * e.g. due to lack of resources. 850db0c34cSJakub Kicinski * 860db0c34cSJakub Kicinski * @multicast: Multicast packets received. 870db0c34cSJakub Kicinski * For hardware interfaces this statistic is commonly calculated 880db0c34cSJakub Kicinski * at the device level (unlike @rx_packets) and therefore may include 890db0c34cSJakub Kicinski * packets which did not reach the host. 900db0c34cSJakub Kicinski * 910db0c34cSJakub Kicinski * For IEEE 802.3 devices this counter may be equivalent to: 920db0c34cSJakub Kicinski * 930db0c34cSJakub Kicinski * - 30.3.1.1.21 aMulticastFramesReceivedOK 940db0c34cSJakub Kicinski * 950db0c34cSJakub Kicinski * @collisions: Number of collisions during packet transmissions. 960db0c34cSJakub Kicinski * 970db0c34cSJakub Kicinski * @rx_length_errors: Number of packets dropped due to invalid length. 980db0c34cSJakub Kicinski * Part of aggregate "frame" errors in `/proc/net/dev`. 990db0c34cSJakub Kicinski * 1000db0c34cSJakub Kicinski * For IEEE 802.3 devices this counter should be equivalent to a sum 1010db0c34cSJakub Kicinski * of the following attributes: 1020db0c34cSJakub Kicinski * 1030db0c34cSJakub Kicinski * - 30.3.1.1.23 aInRangeLengthErrors 1040db0c34cSJakub Kicinski * - 30.3.1.1.24 aOutOfRangeLengthField 1050db0c34cSJakub Kicinski * - 30.3.1.1.25 aFrameTooLongErrors 1060db0c34cSJakub Kicinski * 1070db0c34cSJakub Kicinski * @rx_over_errors: Receiver FIFO overflow event counter. 1080db0c34cSJakub Kicinski * 1090db0c34cSJakub Kicinski * Historically the count of overflow events. Such events may be 1100db0c34cSJakub Kicinski * reported in the receive descriptors or via interrupts, and may 1110db0c34cSJakub Kicinski * not correspond one-to-one with dropped packets. 1120db0c34cSJakub Kicinski * 1130db0c34cSJakub Kicinski * The recommended interpretation for high speed interfaces is - 1140db0c34cSJakub Kicinski * number of packets dropped because they did not fit into buffers 1150db0c34cSJakub Kicinski * provided by the host, e.g. packets larger than MTU or next buffer 1160db0c34cSJakub Kicinski * in the ring was not available for a scatter transfer. 1170db0c34cSJakub Kicinski * 1180db0c34cSJakub Kicinski * Part of aggregate "frame" errors in `/proc/net/dev`. 1190db0c34cSJakub Kicinski * 1200db0c34cSJakub Kicinski * This statistics was historically used interchangeably with 1210db0c34cSJakub Kicinski * @rx_fifo_errors. 1220db0c34cSJakub Kicinski * 1230db0c34cSJakub Kicinski * This statistic corresponds to hardware events and is not commonly used 1240db0c34cSJakub Kicinski * on software devices. 1250db0c34cSJakub Kicinski * 1260db0c34cSJakub Kicinski * @rx_crc_errors: Number of packets received with a CRC error. 1270db0c34cSJakub Kicinski * Part of aggregate "frame" errors in `/proc/net/dev`. 1280db0c34cSJakub Kicinski * 1290db0c34cSJakub Kicinski * For IEEE 802.3 devices this counter must be equivalent to: 1300db0c34cSJakub Kicinski * 1310db0c34cSJakub Kicinski * - 30.3.1.1.6 aFrameCheckSequenceErrors 1320db0c34cSJakub Kicinski * 1330db0c34cSJakub Kicinski * @rx_frame_errors: Receiver frame alignment errors. 1340db0c34cSJakub Kicinski * Part of aggregate "frame" errors in `/proc/net/dev`. 1350db0c34cSJakub Kicinski * 1360db0c34cSJakub Kicinski * For IEEE 802.3 devices this counter should be equivalent to: 1370db0c34cSJakub Kicinski * 1380db0c34cSJakub Kicinski * - 30.3.1.1.7 aAlignmentErrors 1390db0c34cSJakub Kicinski * 1400db0c34cSJakub Kicinski * @rx_fifo_errors: Receiver FIFO error counter. 1410db0c34cSJakub Kicinski * 1420db0c34cSJakub Kicinski * Historically the count of overflow events. Those events may be 1430db0c34cSJakub Kicinski * reported in the receive descriptors or via interrupts, and may 1440db0c34cSJakub Kicinski * not correspond one-to-one with dropped packets. 1450db0c34cSJakub Kicinski * 1460db0c34cSJakub Kicinski * This statistics was used interchangeably with @rx_over_errors. 1470db0c34cSJakub Kicinski * Not recommended for use in drivers for high speed interfaces. 1480db0c34cSJakub Kicinski * 1490db0c34cSJakub Kicinski * This statistic is used on software devices, e.g. to count software 1500db0c34cSJakub Kicinski * packet queue overflow (can) or sequencing errors (GRE). 1510db0c34cSJakub Kicinski * 1520db0c34cSJakub Kicinski * @rx_missed_errors: Count of packets missed by the host. 1530db0c34cSJakub Kicinski * Folded into the "drop" counter in `/proc/net/dev`. 1540db0c34cSJakub Kicinski * 1550db0c34cSJakub Kicinski * Counts number of packets dropped by the device due to lack 1560db0c34cSJakub Kicinski * of buffer space. This usually indicates that the host interface 1570db0c34cSJakub Kicinski * is slower than the network interface, or host is not keeping up 1580db0c34cSJakub Kicinski * with the receive packet rate. 1590db0c34cSJakub Kicinski * 1600db0c34cSJakub Kicinski * This statistic corresponds to hardware events and is not used 1610db0c34cSJakub Kicinski * on software devices. 1620db0c34cSJakub Kicinski * 1630db0c34cSJakub Kicinski * @tx_aborted_errors: 1640db0c34cSJakub Kicinski * Part of aggregate "carrier" errors in `/proc/net/dev`. 1650db0c34cSJakub Kicinski * For IEEE 802.3 devices capable of half-duplex operation this counter 1660db0c34cSJakub Kicinski * must be equivalent to: 1670db0c34cSJakub Kicinski * 1680db0c34cSJakub Kicinski * - 30.3.1.1.11 aFramesAbortedDueToXSColls 1690db0c34cSJakub Kicinski * 1700db0c34cSJakub Kicinski * High speed interfaces may use this counter as a general device 1710db0c34cSJakub Kicinski * discard counter. 1720db0c34cSJakub Kicinski * 1730db0c34cSJakub Kicinski * @tx_carrier_errors: Number of frame transmission errors due to loss 1740db0c34cSJakub Kicinski * of carrier during transmission. 1750db0c34cSJakub Kicinski * Part of aggregate "carrier" errors in `/proc/net/dev`. 1760db0c34cSJakub Kicinski * 1770db0c34cSJakub Kicinski * For IEEE 802.3 devices this counter must be equivalent to: 1780db0c34cSJakub Kicinski * 1790db0c34cSJakub Kicinski * - 30.3.1.1.13 aCarrierSenseErrors 1800db0c34cSJakub Kicinski * 1810db0c34cSJakub Kicinski * @tx_fifo_errors: Number of frame transmission errors due to device 1820db0c34cSJakub Kicinski * FIFO underrun / underflow. This condition occurs when the device 1830db0c34cSJakub Kicinski * begins transmission of a frame but is unable to deliver the 1840db0c34cSJakub Kicinski * entire frame to the transmitter in time for transmission. 1850db0c34cSJakub Kicinski * Part of aggregate "carrier" errors in `/proc/net/dev`. 1860db0c34cSJakub Kicinski * 1870db0c34cSJakub Kicinski * @tx_heartbeat_errors: Number of Heartbeat / SQE Test errors for 1880db0c34cSJakub Kicinski * old half-duplex Ethernet. 1890db0c34cSJakub Kicinski * Part of aggregate "carrier" errors in `/proc/net/dev`. 1900db0c34cSJakub Kicinski * 1910db0c34cSJakub Kicinski * For IEEE 802.3 devices possibly equivalent to: 1920db0c34cSJakub Kicinski * 1930db0c34cSJakub Kicinski * - 30.3.2.1.4 aSQETestErrors 1940db0c34cSJakub Kicinski * 1950db0c34cSJakub Kicinski * @tx_window_errors: Number of frame transmission errors due 1960db0c34cSJakub Kicinski * to late collisions (for Ethernet - after the first 64B of transmission). 1970db0c34cSJakub Kicinski * Part of aggregate "carrier" errors in `/proc/net/dev`. 1980db0c34cSJakub Kicinski * 1990db0c34cSJakub Kicinski * For IEEE 802.3 devices this counter must be equivalent to: 2000db0c34cSJakub Kicinski * 2010db0c34cSJakub Kicinski * - 30.3.1.1.10 aLateCollisions 2020db0c34cSJakub Kicinski * 2030db0c34cSJakub Kicinski * @rx_compressed: Number of correctly received compressed packets. 2040db0c34cSJakub Kicinski * This counters is only meaningful for interfaces which support 2050db0c34cSJakub Kicinski * packet compression (e.g. CSLIP, PPP). 2060db0c34cSJakub Kicinski * 2070db0c34cSJakub Kicinski * @tx_compressed: Number of transmitted compressed packets. 2080db0c34cSJakub Kicinski * This counters is only meaningful for interfaces which support 2090db0c34cSJakub Kicinski * packet compression (e.g. CSLIP, PPP). 2100db0c34cSJakub Kicinski * 2110db0c34cSJakub Kicinski * @rx_nohandler: Number of packets received on the interface 2120db0c34cSJakub Kicinski * but dropped by the networking stack because the device is 2130db0c34cSJakub Kicinski * not designated to receive packets (e.g. backup link in a bond). 2140db0c34cSJakub Kicinski */ 215607ca46eSDavid Howells struct rtnl_link_stats64 { 2160db0c34cSJakub Kicinski __u64 rx_packets; 2170db0c34cSJakub Kicinski __u64 tx_packets; 2180db0c34cSJakub Kicinski __u64 rx_bytes; 2190db0c34cSJakub Kicinski __u64 tx_bytes; 2200db0c34cSJakub Kicinski __u64 rx_errors; 2210db0c34cSJakub Kicinski __u64 tx_errors; 2220db0c34cSJakub Kicinski __u64 rx_dropped; 2230db0c34cSJakub Kicinski __u64 tx_dropped; 2240db0c34cSJakub Kicinski __u64 multicast; 225607ca46eSDavid Howells __u64 collisions; 226607ca46eSDavid Howells 227607ca46eSDavid Howells /* detailed rx_errors: */ 228607ca46eSDavid Howells __u64 rx_length_errors; 2290db0c34cSJakub Kicinski __u64 rx_over_errors; 2300db0c34cSJakub Kicinski __u64 rx_crc_errors; 2310db0c34cSJakub Kicinski __u64 rx_frame_errors; 2320db0c34cSJakub Kicinski __u64 rx_fifo_errors; 2330db0c34cSJakub Kicinski __u64 rx_missed_errors; 234607ca46eSDavid Howells 235607ca46eSDavid Howells /* detailed tx_errors */ 236607ca46eSDavid Howells __u64 tx_aborted_errors; 237607ca46eSDavid Howells __u64 tx_carrier_errors; 238607ca46eSDavid Howells __u64 tx_fifo_errors; 239607ca46eSDavid Howells __u64 tx_heartbeat_errors; 240607ca46eSDavid Howells __u64 tx_window_errors; 241607ca46eSDavid Howells 242607ca46eSDavid Howells /* for cslip etc */ 243607ca46eSDavid Howells __u64 rx_compressed; 244607ca46eSDavid Howells __u64 tx_compressed; 2450db0c34cSJakub Kicinski __u64 rx_nohandler; 246607ca46eSDavid Howells }; 247607ca46eSDavid Howells 248607ca46eSDavid Howells /* The struct should be in sync with struct ifmap */ 249607ca46eSDavid Howells struct rtnl_link_ifmap { 250607ca46eSDavid Howells __u64 mem_start; 251607ca46eSDavid Howells __u64 mem_end; 252607ca46eSDavid Howells __u64 base_addr; 253607ca46eSDavid Howells __u16 irq; 254607ca46eSDavid Howells __u8 dma; 255607ca46eSDavid Howells __u8 port; 256607ca46eSDavid Howells }; 257607ca46eSDavid Howells 258607ca46eSDavid Howells /* 259607ca46eSDavid Howells * IFLA_AF_SPEC 260607ca46eSDavid Howells * Contains nested attributes for address family specific attributes. 261607ca46eSDavid Howells * Each address family may create a attribute with the address family 262607ca46eSDavid Howells * number as type and create its own attribute structure in it. 263607ca46eSDavid Howells * 264607ca46eSDavid Howells * Example: 265607ca46eSDavid Howells * [IFLA_AF_SPEC] = { 266607ca46eSDavid Howells * [AF_INET] = { 267607ca46eSDavid Howells * [IFLA_INET_CONF] = ..., 268607ca46eSDavid Howells * }, 269607ca46eSDavid Howells * [AF_INET6] = { 270607ca46eSDavid Howells * [IFLA_INET6_FLAGS] = ..., 271607ca46eSDavid Howells * [IFLA_INET6_CONF] = ..., 272607ca46eSDavid Howells * } 273607ca46eSDavid Howells * } 274607ca46eSDavid Howells */ 275607ca46eSDavid Howells 276607ca46eSDavid Howells enum { 277607ca46eSDavid Howells IFLA_UNSPEC, 278607ca46eSDavid Howells IFLA_ADDRESS, 279607ca46eSDavid Howells IFLA_BROADCAST, 280607ca46eSDavid Howells IFLA_IFNAME, 281607ca46eSDavid Howells IFLA_MTU, 282607ca46eSDavid Howells IFLA_LINK, 283607ca46eSDavid Howells IFLA_QDISC, 284607ca46eSDavid Howells IFLA_STATS, 285607ca46eSDavid Howells IFLA_COST, 286607ca46eSDavid Howells #define IFLA_COST IFLA_COST 287607ca46eSDavid Howells IFLA_PRIORITY, 288607ca46eSDavid Howells #define IFLA_PRIORITY IFLA_PRIORITY 289607ca46eSDavid Howells IFLA_MASTER, 290607ca46eSDavid Howells #define IFLA_MASTER IFLA_MASTER 291607ca46eSDavid Howells IFLA_WIRELESS, /* Wireless Extension event - see wireless.h */ 292607ca46eSDavid Howells #define IFLA_WIRELESS IFLA_WIRELESS 293607ca46eSDavid Howells IFLA_PROTINFO, /* Protocol specific information for a link */ 294607ca46eSDavid Howells #define IFLA_PROTINFO IFLA_PROTINFO 295607ca46eSDavid Howells IFLA_TXQLEN, 296607ca46eSDavid Howells #define IFLA_TXQLEN IFLA_TXQLEN 297607ca46eSDavid Howells IFLA_MAP, 298607ca46eSDavid Howells #define IFLA_MAP IFLA_MAP 299607ca46eSDavid Howells IFLA_WEIGHT, 300607ca46eSDavid Howells #define IFLA_WEIGHT IFLA_WEIGHT 301607ca46eSDavid Howells IFLA_OPERSTATE, 302607ca46eSDavid Howells IFLA_LINKMODE, 303607ca46eSDavid Howells IFLA_LINKINFO, 304607ca46eSDavid Howells #define IFLA_LINKINFO IFLA_LINKINFO 305607ca46eSDavid Howells IFLA_NET_NS_PID, 306607ca46eSDavid Howells IFLA_IFALIAS, 307607ca46eSDavid Howells IFLA_NUM_VF, /* Number of VFs if device is SR-IOV PF */ 308607ca46eSDavid Howells IFLA_VFINFO_LIST, 309607ca46eSDavid Howells IFLA_STATS64, 310607ca46eSDavid Howells IFLA_VF_PORTS, 311607ca46eSDavid Howells IFLA_PORT_SELF, 312607ca46eSDavid Howells IFLA_AF_SPEC, 313607ca46eSDavid Howells IFLA_GROUP, /* Group the device belongs to */ 314607ca46eSDavid Howells IFLA_NET_NS_FD, 315607ca46eSDavid Howells IFLA_EXT_MASK, /* Extended info mask, VFs, etc */ 316607ca46eSDavid Howells IFLA_PROMISCUITY, /* Promiscuity count: > 0 means acts PROMISC */ 317607ca46eSDavid Howells #define IFLA_PROMISCUITY IFLA_PROMISCUITY 318607ca46eSDavid Howells IFLA_NUM_TX_QUEUES, 319607ca46eSDavid Howells IFLA_NUM_RX_QUEUES, 3209a57247fSJiri Pirko IFLA_CARRIER, 32166cae9edSJiri Pirko IFLA_PHYS_PORT_ID, 3222d3b479dSdavid decotigny IFLA_CARRIER_CHANGES, 32382f28412SJiri Pirko IFLA_PHYS_SWITCH_ID, 324d37512a2SNicolas Dichtel IFLA_LINK_NETNSID, 325db24a904SDavid Ahern IFLA_PHYS_PORT_NAME, 32688d6378bSAnuradha Karuppiah IFLA_PROTO_DOWN, 327c70ce028SEric Dumazet IFLA_GSO_MAX_SEGS, 328c70ce028SEric Dumazet IFLA_GSO_MAX_SIZE, 32918402843SDavid S. Miller IFLA_PAD, 330d1fdd913SBrenden Blanco IFLA_XDP, 3313d3ea5afSVlad Yasevich IFLA_EVENT, 3326621dd29SNicolas Dichtel IFLA_NEW_NETNSID, 33379e1ad14SJiri Benc IFLA_IF_NETNSID, 33419d8f1adSChristian Brauner IFLA_TARGET_NETNSID = IFLA_IF_NETNSID, /* new alias */ 335b2d3bcfaSDavid Decotigny IFLA_CARRIER_UP_COUNT, 336b2d3bcfaSDavid Decotigny IFLA_CARRIER_DOWN_COUNT, 33738e01b30SNicolas Dichtel IFLA_NEW_IFINDEX, 3383e7a50ceSStephen Hemminger IFLA_MIN_MTU, 3393e7a50ceSStephen Hemminger IFLA_MAX_MTU, 34036fbf1e5SJiri Pirko IFLA_PROP_LIST, 34136fbf1e5SJiri Pirko IFLA_ALT_IFNAME, /* Alternative ifname */ 342f74877a5SMichal Kubecek IFLA_PERM_ADDRESS, 343829eb208SRoopa Prabhu IFLA_PROTO_DOWN_REASON, 34400e77ed8SJohannes Berg 34500e77ed8SJohannes Berg /* device (sysfs) name as parent, used instead 34600e77ed8SJohannes Berg * of IFLA_LINK where there's no parent netdev 34700e77ed8SJohannes Berg */ 34800e77ed8SJohannes Berg IFLA_PARENT_DEV_NAME, 34900e77ed8SJohannes Berg IFLA_PARENT_DEV_BUS_NAME, 35000e77ed8SJohannes Berg 351607ca46eSDavid Howells __IFLA_MAX 352607ca46eSDavid Howells }; 353607ca46eSDavid Howells 354607ca46eSDavid Howells 355607ca46eSDavid Howells #define IFLA_MAX (__IFLA_MAX - 1) 356607ca46eSDavid Howells 357829eb208SRoopa Prabhu enum { 358829eb208SRoopa Prabhu IFLA_PROTO_DOWN_REASON_UNSPEC, 359829eb208SRoopa Prabhu IFLA_PROTO_DOWN_REASON_MASK, /* u32, mask for reason bits */ 360829eb208SRoopa Prabhu IFLA_PROTO_DOWN_REASON_VALUE, /* u32, reason bit value */ 361829eb208SRoopa Prabhu 362829eb208SRoopa Prabhu __IFLA_PROTO_DOWN_REASON_CNT, 363829eb208SRoopa Prabhu IFLA_PROTO_DOWN_REASON_MAX = __IFLA_PROTO_DOWN_REASON_CNT - 1 364829eb208SRoopa Prabhu }; 365829eb208SRoopa Prabhu 366607ca46eSDavid Howells /* backwards compatibility for userspace */ 367607ca46eSDavid Howells #ifndef __KERNEL__ 368607ca46eSDavid Howells #define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg)))) 369607ca46eSDavid Howells #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg)) 370607ca46eSDavid Howells #endif 371607ca46eSDavid Howells 372607ca46eSDavid Howells enum { 373607ca46eSDavid Howells IFLA_INET_UNSPEC, 374607ca46eSDavid Howells IFLA_INET_CONF, 375607ca46eSDavid Howells __IFLA_INET_MAX, 376607ca46eSDavid Howells }; 377607ca46eSDavid Howells 378607ca46eSDavid Howells #define IFLA_INET_MAX (__IFLA_INET_MAX - 1) 379607ca46eSDavid Howells 380607ca46eSDavid Howells /* ifi_flags. 381607ca46eSDavid Howells 382607ca46eSDavid Howells IFF_* flags. 383607ca46eSDavid Howells 384607ca46eSDavid Howells The only change is: 385607ca46eSDavid Howells IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are 386607ca46eSDavid Howells more not changeable by user. They describe link media 387607ca46eSDavid Howells characteristics and set by device driver. 388607ca46eSDavid Howells 389607ca46eSDavid Howells Comments: 390607ca46eSDavid Howells - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid 391607ca46eSDavid Howells - If neither of these three flags are set; 392607ca46eSDavid Howells the interface is NBMA. 393607ca46eSDavid Howells 394607ca46eSDavid Howells - IFF_MULTICAST does not mean anything special: 395607ca46eSDavid Howells multicasts can be used on all not-NBMA links. 396607ca46eSDavid Howells IFF_MULTICAST means that this media uses special encapsulation 397607ca46eSDavid Howells for multicast frames. Apparently, all IFF_POINTOPOINT and 398607ca46eSDavid Howells IFF_BROADCAST devices are able to use multicasts too. 399607ca46eSDavid Howells */ 400607ca46eSDavid Howells 401607ca46eSDavid Howells /* IFLA_LINK. 402607ca46eSDavid Howells For usual devices it is equal ifi_index. 403607ca46eSDavid Howells If it is a "virtual interface" (f.e. tunnel), ifi_link 404607ca46eSDavid Howells can point to real physical interface (f.e. for bandwidth calculations), 405607ca46eSDavid Howells or maybe 0, what means, that real media is unknown (usual 406607ca46eSDavid Howells for IPIP tunnels, when route to endpoint is allowed to change) 407607ca46eSDavid Howells */ 408607ca46eSDavid Howells 409607ca46eSDavid Howells /* Subtype attributes for IFLA_PROTINFO */ 410607ca46eSDavid Howells enum { 411607ca46eSDavid Howells IFLA_INET6_UNSPEC, 412607ca46eSDavid Howells IFLA_INET6_FLAGS, /* link flags */ 413607ca46eSDavid Howells IFLA_INET6_CONF, /* sysctl parameters */ 414607ca46eSDavid Howells IFLA_INET6_STATS, /* statistics */ 415607ca46eSDavid Howells IFLA_INET6_MCAST, /* MC things. What of them? */ 416607ca46eSDavid Howells IFLA_INET6_CACHEINFO, /* time values and max reasm size */ 417607ca46eSDavid Howells IFLA_INET6_ICMP6STATS, /* statistics (icmpv6) */ 418f53adae4SDaniel Borkmann IFLA_INET6_TOKEN, /* device token */ 419bc91b0f0SJiri Pirko IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */ 420607ca46eSDavid Howells __IFLA_INET6_MAX 421607ca46eSDavid Howells }; 422607ca46eSDavid Howells 423607ca46eSDavid Howells #define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1) 424607ca46eSDavid Howells 425bc91b0f0SJiri Pirko enum in6_addr_gen_mode { 426bc91b0f0SJiri Pirko IN6_ADDR_GEN_MODE_EUI64, 427bc91b0f0SJiri Pirko IN6_ADDR_GEN_MODE_NONE, 428622c81d5SHannes Frederic Sowa IN6_ADDR_GEN_MODE_STABLE_PRIVACY, 429cc9da6ccSBjørn Mork IN6_ADDR_GEN_MODE_RANDOM, 430bc91b0f0SJiri Pirko }; 431bc91b0f0SJiri Pirko 432e5c3ea5cSJiri Pirko /* Bridge section */ 433e5c3ea5cSJiri Pirko 434e5c3ea5cSJiri Pirko enum { 435e5c3ea5cSJiri Pirko IFLA_BR_UNSPEC, 436e5c3ea5cSJiri Pirko IFLA_BR_FORWARD_DELAY, 437e5c3ea5cSJiri Pirko IFLA_BR_HELLO_TIME, 438e5c3ea5cSJiri Pirko IFLA_BR_MAX_AGE, 439af615762SJörg Thalheim IFLA_BR_AGEING_TIME, 440af615762SJörg Thalheim IFLA_BR_STP_STATE, 441af615762SJörg Thalheim IFLA_BR_PRIORITY, 442a7854037SNikolay Aleksandrov IFLA_BR_VLAN_FILTERING, 443d2d427b3SToshiaki Makita IFLA_BR_VLAN_PROTOCOL, 4447910228bSNikolay Aleksandrov IFLA_BR_GROUP_FWD_MASK, 4455127c81fSNikolay Aleksandrov IFLA_BR_ROOT_ID, 4467599a220SNikolay Aleksandrov IFLA_BR_BRIDGE_ID, 4478762ba68SNikolay Aleksandrov IFLA_BR_ROOT_PORT, 448684dd248SNikolay Aleksandrov IFLA_BR_ROOT_PATH_COST, 449ed416309SNikolay Aleksandrov IFLA_BR_TOPOLOGY_CHANGE, 450ed416309SNikolay Aleksandrov IFLA_BR_TOPOLOGY_CHANGE_DETECTED, 451d76bd14eSNikolay Aleksandrov IFLA_BR_HELLO_TIMER, 452d76bd14eSNikolay Aleksandrov IFLA_BR_TCN_TIMER, 453d76bd14eSNikolay Aleksandrov IFLA_BR_TOPOLOGY_CHANGE_TIMER, 454d76bd14eSNikolay Aleksandrov IFLA_BR_GC_TIMER, 455111189abSNikolay Aleksandrov IFLA_BR_GROUP_ADDR, 456150217c6SNikolay Aleksandrov IFLA_BR_FDB_FLUSH, 457a9a6bc70SNikolay Aleksandrov IFLA_BR_MCAST_ROUTER, 45889126327SNikolay Aleksandrov IFLA_BR_MCAST_SNOOPING, 459295141d9SNikolay Aleksandrov IFLA_BR_MCAST_QUERY_USE_IFADDR, 460ba062d7cSNikolay Aleksandrov IFLA_BR_MCAST_QUERIER, 461431db3c0SNikolay Aleksandrov IFLA_BR_MCAST_HASH_ELASTICITY, 462858079fdSNikolay Aleksandrov IFLA_BR_MCAST_HASH_MAX, 46379b859f5SNikolay Aleksandrov IFLA_BR_MCAST_LAST_MEMBER_CNT, 464b89e6babSNikolay Aleksandrov IFLA_BR_MCAST_STARTUP_QUERY_CNT, 4657e4df51eSNikolay Aleksandrov IFLA_BR_MCAST_LAST_MEMBER_INTVL, 4667e4df51eSNikolay Aleksandrov IFLA_BR_MCAST_MEMBERSHIP_INTVL, 4677e4df51eSNikolay Aleksandrov IFLA_BR_MCAST_QUERIER_INTVL, 4687e4df51eSNikolay Aleksandrov IFLA_BR_MCAST_QUERY_INTVL, 4697e4df51eSNikolay Aleksandrov IFLA_BR_MCAST_QUERY_RESPONSE_INTVL, 4707e4df51eSNikolay Aleksandrov IFLA_BR_MCAST_STARTUP_QUERY_INTVL, 47193870cc0SNikolay Aleksandrov IFLA_BR_NF_CALL_IPTABLES, 47293870cc0SNikolay Aleksandrov IFLA_BR_NF_CALL_IP6TABLES, 47393870cc0SNikolay Aleksandrov IFLA_BR_NF_CALL_ARPTABLES, 4740f963b75SNikolay Aleksandrov IFLA_BR_VLAN_DEFAULT_PVID, 47512a0faa3SNicolas Dichtel IFLA_BR_PAD, 4766dada9b1SNikolay Aleksandrov IFLA_BR_VLAN_STATS_ENABLED, 4771080ab95SNikolay Aleksandrov IFLA_BR_MCAST_STATS_ENABLED, 4785e923585SNikolay Aleksandrov IFLA_BR_MCAST_IGMP_VERSION, 479aa2ae3e7SNikolay Aleksandrov IFLA_BR_MCAST_MLD_VERSION, 4809163a0fcSNikolay Aleksandrov IFLA_BR_VLAN_STATS_PER_PORT, 481a428afe8SNikolay Aleksandrov IFLA_BR_MULTI_BOOLOPT, 482e5c3ea5cSJiri Pirko __IFLA_BR_MAX, 483e5c3ea5cSJiri Pirko }; 484e5c3ea5cSJiri Pirko 485e5c3ea5cSJiri Pirko #define IFLA_BR_MAX (__IFLA_BR_MAX - 1) 486e5c3ea5cSJiri Pirko 4875127c81fSNikolay Aleksandrov struct ifla_bridge_id { 4885127c81fSNikolay Aleksandrov __u8 prio[2]; 4895127c81fSNikolay Aleksandrov __u8 addr[6]; /* ETH_ALEN */ 4905127c81fSNikolay Aleksandrov }; 4915127c81fSNikolay Aleksandrov 49225c71c75Sstephen hemminger enum { 49325c71c75Sstephen hemminger BRIDGE_MODE_UNSPEC, 49425c71c75Sstephen hemminger BRIDGE_MODE_HAIRPIN, 49525c71c75Sstephen hemminger }; 49625c71c75Sstephen hemminger 49725c71c75Sstephen hemminger enum { 49825c71c75Sstephen hemminger IFLA_BRPORT_UNSPEC, 49925c71c75Sstephen hemminger IFLA_BRPORT_STATE, /* Spanning tree state */ 50025c71c75Sstephen hemminger IFLA_BRPORT_PRIORITY, /* " priority */ 50125c71c75Sstephen hemminger IFLA_BRPORT_COST, /* " cost */ 50225c71c75Sstephen hemminger IFLA_BRPORT_MODE, /* mode (hairpin) */ 503a2e01a65Sstephen hemminger IFLA_BRPORT_GUARD, /* bpdu guard */ 5041007dd1aSstephen hemminger IFLA_BRPORT_PROTECT, /* root port protection */ 505c2d3babfSDavid S. Miller IFLA_BRPORT_FAST_LEAVE, /* multicast fast leave */ 5069ba18891SVlad Yasevich IFLA_BRPORT_LEARNING, /* mac learning */ 507867a5943SVlad Yasevich IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */ 50895850116SKyeyoon Park IFLA_BRPORT_PROXYARP, /* proxy ARP */ 509efacacdaSScott Feldman IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */ 510842a9ae0SJouni Malinen IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */ 5114ebc7660SNikolay Aleksandrov IFLA_BRPORT_ROOT_ID, /* designated root */ 51280df9a26SNikolay Aleksandrov IFLA_BRPORT_BRIDGE_ID, /* designated bridge */ 51396f94e7fSNikolay Aleksandrov IFLA_BRPORT_DESIGNATED_PORT, 51496f94e7fSNikolay Aleksandrov IFLA_BRPORT_DESIGNATED_COST, 51542d452c4SNikolay Aleksandrov IFLA_BRPORT_ID, 51642d452c4SNikolay Aleksandrov IFLA_BRPORT_NO, 517e08e838aSNikolay Aleksandrov IFLA_BRPORT_TOPOLOGY_CHANGE_ACK, 518e08e838aSNikolay Aleksandrov IFLA_BRPORT_CONFIG_PENDING, 51961c0a9a8SNikolay Aleksandrov IFLA_BRPORT_MESSAGE_AGE_TIMER, 52061c0a9a8SNikolay Aleksandrov IFLA_BRPORT_FORWARD_DELAY_TIMER, 52161c0a9a8SNikolay Aleksandrov IFLA_BRPORT_HOLD_TIMER, 5229b0c6e4dSNikolay Aleksandrov IFLA_BRPORT_FLUSH, 5235d6ae479SNikolay Aleksandrov IFLA_BRPORT_MULTICAST_ROUTER, 52412a0faa3SNicolas Dichtel IFLA_BRPORT_PAD, 525b6cb5ac8SNikolay Aleksandrov IFLA_BRPORT_MCAST_FLOOD, 5266db6f0eaSFelix Fietkau IFLA_BRPORT_MCAST_TO_UCAST, 527b3c7ef0aSRoopa Prabhu IFLA_BRPORT_VLAN_TUNNEL, 52899f906e9SMike Manning IFLA_BRPORT_BCAST_FLOOD, 5295af48b59SNikolay Aleksandrov IFLA_BRPORT_GROUP_FWD_MASK, 530821f1b21SRoopa Prabhu IFLA_BRPORT_NEIGH_SUPPRESS, 5317d850abdSNikolay Aleksandrov IFLA_BRPORT_ISOLATED, 5322756f68cSNikolay Aleksandrov IFLA_BRPORT_BACKUP_PORT, 5333e54442cSHoratiu Vultur IFLA_BRPORT_MRP_RING_OPEN, 534ffb3adbaSHoratiu Vultur IFLA_BRPORT_MRP_IN_OPEN, 5352dba407fSNikolay Aleksandrov IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT, 5362dba407fSNikolay Aleksandrov IFLA_BRPORT_MCAST_EHT_HOSTS_CNT, 53725c71c75Sstephen hemminger __IFLA_BRPORT_MAX 53825c71c75Sstephen hemminger }; 53925c71c75Sstephen hemminger #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1) 54025c71c75Sstephen hemminger 541607ca46eSDavid Howells struct ifla_cacheinfo { 542607ca46eSDavid Howells __u32 max_reasm_len; 543607ca46eSDavid Howells __u32 tstamp; /* ipv6InterfaceTable updated timestamp */ 544607ca46eSDavid Howells __u32 reachable_time; 545607ca46eSDavid Howells __u32 retrans_time; 546607ca46eSDavid Howells }; 547607ca46eSDavid Howells 548607ca46eSDavid Howells enum { 549607ca46eSDavid Howells IFLA_INFO_UNSPEC, 550607ca46eSDavid Howells IFLA_INFO_KIND, 551607ca46eSDavid Howells IFLA_INFO_DATA, 552607ca46eSDavid Howells IFLA_INFO_XSTATS, 553ba7d49b1SJiri Pirko IFLA_INFO_SLAVE_KIND, 554ba7d49b1SJiri Pirko IFLA_INFO_SLAVE_DATA, 555607ca46eSDavid Howells __IFLA_INFO_MAX, 556607ca46eSDavid Howells }; 557607ca46eSDavid Howells 558607ca46eSDavid Howells #define IFLA_INFO_MAX (__IFLA_INFO_MAX - 1) 559607ca46eSDavid Howells 560607ca46eSDavid Howells /* VLAN section */ 561607ca46eSDavid Howells 562607ca46eSDavid Howells enum { 563607ca46eSDavid Howells IFLA_VLAN_UNSPEC, 564607ca46eSDavid Howells IFLA_VLAN_ID, 565607ca46eSDavid Howells IFLA_VLAN_FLAGS, 566607ca46eSDavid Howells IFLA_VLAN_EGRESS_QOS, 567607ca46eSDavid Howells IFLA_VLAN_INGRESS_QOS, 5688ad227ffSPatrick McHardy IFLA_VLAN_PROTOCOL, 569607ca46eSDavid Howells __IFLA_VLAN_MAX, 570607ca46eSDavid Howells }; 571607ca46eSDavid Howells 572607ca46eSDavid Howells #define IFLA_VLAN_MAX (__IFLA_VLAN_MAX - 1) 573607ca46eSDavid Howells 574607ca46eSDavid Howells struct ifla_vlan_flags { 575607ca46eSDavid Howells __u32 flags; 576607ca46eSDavid Howells __u32 mask; 577607ca46eSDavid Howells }; 578607ca46eSDavid Howells 579607ca46eSDavid Howells enum { 580607ca46eSDavid Howells IFLA_VLAN_QOS_UNSPEC, 581607ca46eSDavid Howells IFLA_VLAN_QOS_MAPPING, 582607ca46eSDavid Howells __IFLA_VLAN_QOS_MAX 583607ca46eSDavid Howells }; 584607ca46eSDavid Howells 585607ca46eSDavid Howells #define IFLA_VLAN_QOS_MAX (__IFLA_VLAN_QOS_MAX - 1) 586607ca46eSDavid Howells 587607ca46eSDavid Howells struct ifla_vlan_qos_mapping { 588607ca46eSDavid Howells __u32 from; 589607ca46eSDavid Howells __u32 to; 590607ca46eSDavid Howells }; 591607ca46eSDavid Howells 592607ca46eSDavid Howells /* MACVLAN section */ 593607ca46eSDavid Howells enum { 594607ca46eSDavid Howells IFLA_MACVLAN_UNSPEC, 595607ca46eSDavid Howells IFLA_MACVLAN_MODE, 596607ca46eSDavid Howells IFLA_MACVLAN_FLAGS, 59779cf79abSMichael Braun IFLA_MACVLAN_MACADDR_MODE, 59879cf79abSMichael Braun IFLA_MACVLAN_MACADDR, 59979cf79abSMichael Braun IFLA_MACVLAN_MACADDR_DATA, 60079cf79abSMichael Braun IFLA_MACVLAN_MACADDR_COUNT, 601d4bff72cSThomas Karlsson IFLA_MACVLAN_BC_QUEUE_LEN, 602d4bff72cSThomas Karlsson IFLA_MACVLAN_BC_QUEUE_LEN_USED, 603607ca46eSDavid Howells __IFLA_MACVLAN_MAX, 604607ca46eSDavid Howells }; 605607ca46eSDavid Howells 606607ca46eSDavid Howells #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1) 607607ca46eSDavid Howells 608607ca46eSDavid Howells enum macvlan_mode { 609607ca46eSDavid Howells MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */ 610607ca46eSDavid Howells MACVLAN_MODE_VEPA = 2, /* talk to other ports through ext bridge */ 611607ca46eSDavid Howells MACVLAN_MODE_BRIDGE = 4, /* talk to bridge ports directly */ 612607ca46eSDavid Howells MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */ 61379cf79abSMichael Braun MACVLAN_MODE_SOURCE = 16,/* use source MAC address list to assign */ 61479cf79abSMichael Braun }; 61579cf79abSMichael Braun 61679cf79abSMichael Braun enum macvlan_macaddr_mode { 61779cf79abSMichael Braun MACVLAN_MACADDR_ADD, 61879cf79abSMichael Braun MACVLAN_MACADDR_DEL, 61979cf79abSMichael Braun MACVLAN_MACADDR_FLUSH, 62079cf79abSMichael Braun MACVLAN_MACADDR_SET, 621607ca46eSDavid Howells }; 622607ca46eSDavid Howells 623607ca46eSDavid Howells #define MACVLAN_FLAG_NOPROMISC 1 624427f0c8cSJethro Beekman #define MACVLAN_FLAG_NODST 2 /* skip dst macvlan if matching src macvlan */ 625607ca46eSDavid Howells 6264e3c8992SDavid Ahern /* VRF section */ 6274e3c8992SDavid Ahern enum { 6284e3c8992SDavid Ahern IFLA_VRF_UNSPEC, 6294e3c8992SDavid Ahern IFLA_VRF_TABLE, 6304e3c8992SDavid Ahern __IFLA_VRF_MAX 6314e3c8992SDavid Ahern }; 6324e3c8992SDavid Ahern 6334e3c8992SDavid Ahern #define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1) 6344e3c8992SDavid Ahern 63567eb0331SDavid Ahern enum { 63667eb0331SDavid Ahern IFLA_VRF_PORT_UNSPEC, 63767eb0331SDavid Ahern IFLA_VRF_PORT_TABLE, 63867eb0331SDavid Ahern __IFLA_VRF_PORT_MAX 63967eb0331SDavid Ahern }; 64067eb0331SDavid Ahern 64167eb0331SDavid Ahern #define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1) 64267eb0331SDavid Ahern 643dece8d2bSSabrina Dubroca /* MACSEC section */ 644dece8d2bSSabrina Dubroca enum { 645dece8d2bSSabrina Dubroca IFLA_MACSEC_UNSPEC, 646dece8d2bSSabrina Dubroca IFLA_MACSEC_SCI, 647dece8d2bSSabrina Dubroca IFLA_MACSEC_PORT, 648dece8d2bSSabrina Dubroca IFLA_MACSEC_ICV_LEN, 649dece8d2bSSabrina Dubroca IFLA_MACSEC_CIPHER_SUITE, 650dece8d2bSSabrina Dubroca IFLA_MACSEC_WINDOW, 651dece8d2bSSabrina Dubroca IFLA_MACSEC_ENCODING_SA, 652dece8d2bSSabrina Dubroca IFLA_MACSEC_ENCRYPT, 653dece8d2bSSabrina Dubroca IFLA_MACSEC_PROTECT, 654dece8d2bSSabrina Dubroca IFLA_MACSEC_INC_SCI, 655dece8d2bSSabrina Dubroca IFLA_MACSEC_ES, 656dece8d2bSSabrina Dubroca IFLA_MACSEC_SCB, 657dece8d2bSSabrina Dubroca IFLA_MACSEC_REPLAY_PROTECT, 658dece8d2bSSabrina Dubroca IFLA_MACSEC_VALIDATION, 659f60d94c0SNicolas Dichtel IFLA_MACSEC_PAD, 660791bb3fcSMark Starovoytov IFLA_MACSEC_OFFLOAD, 661dece8d2bSSabrina Dubroca __IFLA_MACSEC_MAX, 662dece8d2bSSabrina Dubroca }; 663dece8d2bSSabrina Dubroca 664dece8d2bSSabrina Dubroca #define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1) 665dece8d2bSSabrina Dubroca 666f203b76dSSteffen Klassert /* XFRM section */ 667f203b76dSSteffen Klassert enum { 668f203b76dSSteffen Klassert IFLA_XFRM_UNSPEC, 669f203b76dSSteffen Klassert IFLA_XFRM_LINK, 670f203b76dSSteffen Klassert IFLA_XFRM_IF_ID, 671f203b76dSSteffen Klassert __IFLA_XFRM_MAX 672f203b76dSSteffen Klassert }; 673f203b76dSSteffen Klassert 674f203b76dSSteffen Klassert #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1) 675f203b76dSSteffen Klassert 676dece8d2bSSabrina Dubroca enum macsec_validation_type { 677dece8d2bSSabrina Dubroca MACSEC_VALIDATE_DISABLED = 0, 678dece8d2bSSabrina Dubroca MACSEC_VALIDATE_CHECK = 1, 679dece8d2bSSabrina Dubroca MACSEC_VALIDATE_STRICT = 2, 680dece8d2bSSabrina Dubroca __MACSEC_VALIDATE_END, 681dece8d2bSSabrina Dubroca MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1, 682dece8d2bSSabrina Dubroca }; 683dece8d2bSSabrina Dubroca 68476564261SAntoine Tenart enum macsec_offload { 68576564261SAntoine Tenart MACSEC_OFFLOAD_OFF = 0, 68676564261SAntoine Tenart MACSEC_OFFLOAD_PHY = 1, 68721114b7fSAntoine Tenart MACSEC_OFFLOAD_MAC = 2, 68876564261SAntoine Tenart __MACSEC_OFFLOAD_END, 68976564261SAntoine Tenart MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1, 69076564261SAntoine Tenart }; 69176564261SAntoine Tenart 6922ad7bf36SMahesh Bandewar /* IPVLAN section */ 6932ad7bf36SMahesh Bandewar enum { 6942ad7bf36SMahesh Bandewar IFLA_IPVLAN_UNSPEC, 6952ad7bf36SMahesh Bandewar IFLA_IPVLAN_MODE, 696a190d04dSMahesh Bandewar IFLA_IPVLAN_FLAGS, 6972ad7bf36SMahesh Bandewar __IFLA_IPVLAN_MAX 6982ad7bf36SMahesh Bandewar }; 6992ad7bf36SMahesh Bandewar 7002ad7bf36SMahesh Bandewar #define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1) 7012ad7bf36SMahesh Bandewar 7022ad7bf36SMahesh Bandewar enum ipvlan_mode { 7032ad7bf36SMahesh Bandewar IPVLAN_MODE_L2 = 0, 7042ad7bf36SMahesh Bandewar IPVLAN_MODE_L3, 7054fbae7d8SMahesh Bandewar IPVLAN_MODE_L3S, 7062ad7bf36SMahesh Bandewar IPVLAN_MODE_MAX 7072ad7bf36SMahesh Bandewar }; 7082ad7bf36SMahesh Bandewar 709a190d04dSMahesh Bandewar #define IPVLAN_F_PRIVATE 0x01 710fe89aa6bSMahesh Bandewar #define IPVLAN_F_VEPA 0x02 711a190d04dSMahesh Bandewar 712607ca46eSDavid Howells /* VXLAN section */ 713607ca46eSDavid Howells enum { 714607ca46eSDavid Howells IFLA_VXLAN_UNSPEC, 715607ca46eSDavid Howells IFLA_VXLAN_ID, 7165d174dd8Sstephen hemminger IFLA_VXLAN_GROUP, /* group or remote address */ 717607ca46eSDavid Howells IFLA_VXLAN_LINK, 718607ca46eSDavid Howells IFLA_VXLAN_LOCAL, 719607ca46eSDavid Howells IFLA_VXLAN_TTL, 720607ca46eSDavid Howells IFLA_VXLAN_TOS, 721607ca46eSDavid Howells IFLA_VXLAN_LEARNING, 722607ca46eSDavid Howells IFLA_VXLAN_AGEING, 723607ca46eSDavid Howells IFLA_VXLAN_LIMIT, 724823aa873Sstephen hemminger IFLA_VXLAN_PORT_RANGE, /* source port */ 725e4f67addSDavid Stevens IFLA_VXLAN_PROXY, 726e4f67addSDavid Stevens IFLA_VXLAN_RSC, 727e4f67addSDavid Stevens IFLA_VXLAN_L2MISS, 728e4f67addSDavid Stevens IFLA_VXLAN_L3MISS, 729823aa873Sstephen hemminger IFLA_VXLAN_PORT, /* destination port */ 730e4c7ed41SCong Wang IFLA_VXLAN_GROUP6, 731e4c7ed41SCong Wang IFLA_VXLAN_LOCAL6, 732359a0ea9STom Herbert IFLA_VXLAN_UDP_CSUM, 733359a0ea9STom Herbert IFLA_VXLAN_UDP_ZERO_CSUM6_TX, 734359a0ea9STom Herbert IFLA_VXLAN_UDP_ZERO_CSUM6_RX, 735dfd8645eSTom Herbert IFLA_VXLAN_REMCSUM_TX, 736dfd8645eSTom Herbert IFLA_VXLAN_REMCSUM_RX, 7373511494cSThomas Graf IFLA_VXLAN_GBP, 7380ace2ca8STom Herbert IFLA_VXLAN_REMCSUM_NOPARTIAL, 739f8a9b1bcSAlexei Starovoitov IFLA_VXLAN_COLLECT_METADATA, 740e7f70af1SDaniel Borkmann IFLA_VXLAN_LABEL, 741e1e5314dSJiri Benc IFLA_VXLAN_GPE, 74272f6d71eSHangbin Liu IFLA_VXLAN_TTL_INHERIT, 743b4d30697SStefano Brivio IFLA_VXLAN_DF, 744607ca46eSDavid Howells __IFLA_VXLAN_MAX 745607ca46eSDavid Howells }; 746607ca46eSDavid Howells #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1) 747607ca46eSDavid Howells 748607ca46eSDavid Howells struct ifla_vxlan_port_range { 749607ca46eSDavid Howells __be16 low; 750607ca46eSDavid Howells __be16 high; 751607ca46eSDavid Howells }; 752607ca46eSDavid Howells 753b4d30697SStefano Brivio enum ifla_vxlan_df { 754b4d30697SStefano Brivio VXLAN_DF_UNSET = 0, 755b4d30697SStefano Brivio VXLAN_DF_SET, 756b4d30697SStefano Brivio VXLAN_DF_INHERIT, 757b4d30697SStefano Brivio __VXLAN_DF_END, 758b4d30697SStefano Brivio VXLAN_DF_MAX = __VXLAN_DF_END - 1, 759b4d30697SStefano Brivio }; 760b4d30697SStefano Brivio 7612d07dc79SJohn W. Linville /* GENEVE section */ 7622d07dc79SJohn W. Linville enum { 7632d07dc79SJohn W. Linville IFLA_GENEVE_UNSPEC, 7642d07dc79SJohn W. Linville IFLA_GENEVE_ID, 7652d07dc79SJohn W. Linville IFLA_GENEVE_REMOTE, 7668760ce58SJohn W. Linville IFLA_GENEVE_TTL, 767d8951125SJohn W. Linville IFLA_GENEVE_TOS, 768cd7918b3SPravin B Shelar IFLA_GENEVE_PORT, /* destination port */ 769e305ac6cSPravin B Shelar IFLA_GENEVE_COLLECT_METADATA, 7708ed66f0eSJohn W. Linville IFLA_GENEVE_REMOTE6, 771abe492b4STom Herbert IFLA_GENEVE_UDP_CSUM, 772abe492b4STom Herbert IFLA_GENEVE_UDP_ZERO_CSUM6_TX, 773abe492b4STom Herbert IFLA_GENEVE_UDP_ZERO_CSUM6_RX, 7748eb3b995SDaniel Borkmann IFLA_GENEVE_LABEL, 77552d0d404SHangbin Liu IFLA_GENEVE_TTL_INHERIT, 776a025fb5fSStefano Brivio IFLA_GENEVE_DF, 7772d07dc79SJohn W. Linville __IFLA_GENEVE_MAX 7782d07dc79SJohn W. Linville }; 7792d07dc79SJohn W. Linville #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1) 7802d07dc79SJohn W. Linville 781a025fb5fSStefano Brivio enum ifla_geneve_df { 782a025fb5fSStefano Brivio GENEVE_DF_UNSET = 0, 783a025fb5fSStefano Brivio GENEVE_DF_SET, 784a025fb5fSStefano Brivio GENEVE_DF_INHERIT, 785a025fb5fSStefano Brivio __GENEVE_DF_END, 786a025fb5fSStefano Brivio GENEVE_DF_MAX = __GENEVE_DF_END - 1, 787a025fb5fSStefano Brivio }; 788a025fb5fSStefano Brivio 789571912c6SMartin Varghese /* Bareudp section */ 790571912c6SMartin Varghese enum { 791571912c6SMartin Varghese IFLA_BAREUDP_UNSPEC, 792571912c6SMartin Varghese IFLA_BAREUDP_PORT, 793571912c6SMartin Varghese IFLA_BAREUDP_ETHERTYPE, 794571912c6SMartin Varghese IFLA_BAREUDP_SRCPORT_MIN, 7954b5f6723SMartin Varghese IFLA_BAREUDP_MULTIPROTO_MODE, 796571912c6SMartin Varghese __IFLA_BAREUDP_MAX 797571912c6SMartin Varghese }; 798571912c6SMartin Varghese 799571912c6SMartin Varghese #define IFLA_BAREUDP_MAX (__IFLA_BAREUDP_MAX - 1) 800571912c6SMartin Varghese 80196d934c7SGuillaume Nault /* PPP section */ 80296d934c7SGuillaume Nault enum { 80396d934c7SGuillaume Nault IFLA_PPP_UNSPEC, 80496d934c7SGuillaume Nault IFLA_PPP_DEV_FD, 80596d934c7SGuillaume Nault __IFLA_PPP_MAX 80696d934c7SGuillaume Nault }; 80796d934c7SGuillaume Nault #define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1) 80896d934c7SGuillaume Nault 809459aa660SPablo Neira /* GTP section */ 81091ed81f9SJonas Bonn 81191ed81f9SJonas Bonn enum ifla_gtp_role { 81291ed81f9SJonas Bonn GTP_ROLE_GGSN = 0, 81391ed81f9SJonas Bonn GTP_ROLE_SGSN, 81491ed81f9SJonas Bonn }; 81591ed81f9SJonas Bonn 816459aa660SPablo Neira enum { 817459aa660SPablo Neira IFLA_GTP_UNSPEC, 818459aa660SPablo Neira IFLA_GTP_FD0, 819459aa660SPablo Neira IFLA_GTP_FD1, 820459aa660SPablo Neira IFLA_GTP_PDP_HASHSIZE, 82191ed81f9SJonas Bonn IFLA_GTP_ROLE, 822459aa660SPablo Neira __IFLA_GTP_MAX, 823459aa660SPablo Neira }; 824459aa660SPablo Neira #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1) 825459aa660SPablo Neira 82690af2311SJiri Pirko /* Bonding section */ 82790af2311SJiri Pirko 82890af2311SJiri Pirko enum { 82990af2311SJiri Pirko IFLA_BOND_UNSPEC, 83090af2311SJiri Pirko IFLA_BOND_MODE, 831ec76aa49SJiri Pirko IFLA_BOND_ACTIVE_SLAVE, 832eecdaa6eSsfeldma@cumulusnetworks.com IFLA_BOND_MIIMON, 83325852e29Ssfeldma@cumulusnetworks.com IFLA_BOND_UPDELAY, 834c7461f9bSsfeldma@cumulusnetworks.com IFLA_BOND_DOWNDELAY, 8359f53e14eSsfeldma@cumulusnetworks.com IFLA_BOND_USE_CARRIER, 83606151dbcSsfeldma@cumulusnetworks.com IFLA_BOND_ARP_INTERVAL, 8377f28fa10Ssfeldma@cumulusnetworks.com IFLA_BOND_ARP_IP_TARGET, 83829c49482Ssfeldma@cumulusnetworks.com IFLA_BOND_ARP_VALIDATE, 839d5c84254Ssfeldma@cumulusnetworks.com IFLA_BOND_ARP_ALL_TARGETS, 8400a98a0d1Ssfeldma@cumulusnetworks.com IFLA_BOND_PRIMARY, 8418a41ae44Ssfeldma@cumulusnetworks.com IFLA_BOND_PRIMARY_RESELECT, 84289901972Ssfeldma@cumulusnetworks.com IFLA_BOND_FAIL_OVER_MAC, 843f70161c6Ssfeldma@cumulusnetworks.com IFLA_BOND_XMIT_HASH_POLICY, 844d8838de7Ssfeldma@cumulusnetworks.com IFLA_BOND_RESEND_IGMP, 8452c9839c1Ssfeldma@cumulusnetworks.com IFLA_BOND_NUM_PEER_NOTIF, 8461cc0b1e3Ssfeldma@cumulusnetworks.com IFLA_BOND_ALL_SLAVES_ACTIVE, 8477d101008Ssfeldma@cumulusnetworks.com IFLA_BOND_MIN_LINKS, 8488d836d09Ssfeldma@cumulusnetworks.com IFLA_BOND_LP_INTERVAL, 849c13ab3ffSsfeldma@cumulusnetworks.com IFLA_BOND_PACKETS_PER_SLAVE, 850998e40bbSsfeldma@cumulusnetworks.com IFLA_BOND_AD_LACP_RATE, 851ec029facSsfeldma@cumulusnetworks.com IFLA_BOND_AD_SELECT, 8524ee7ac75Ssfeldma@cumulusnetworks.com IFLA_BOND_AD_INFO, 853171a42c3SAndy Gospodarek IFLA_BOND_AD_ACTOR_SYS_PRIO, 854171a42c3SAndy Gospodarek IFLA_BOND_AD_USER_PORT_KEY, 855171a42c3SAndy Gospodarek IFLA_BOND_AD_ACTOR_SYSTEM, 8560f7bffd9SNikolay Aleksandrov IFLA_BOND_TLB_DYNAMIC_LB, 85707a4ddecSVincent Bernat IFLA_BOND_PEER_NOTIF_DELAY, 85890af2311SJiri Pirko __IFLA_BOND_MAX, 85990af2311SJiri Pirko }; 86090af2311SJiri Pirko 86190af2311SJiri Pirko #define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1) 86290af2311SJiri Pirko 8634ee7ac75Ssfeldma@cumulusnetworks.com enum { 864237266f7SJiri Pirko IFLA_BOND_AD_INFO_UNSPEC, 8654ee7ac75Ssfeldma@cumulusnetworks.com IFLA_BOND_AD_INFO_AGGREGATOR, 8664ee7ac75Ssfeldma@cumulusnetworks.com IFLA_BOND_AD_INFO_NUM_PORTS, 8674ee7ac75Ssfeldma@cumulusnetworks.com IFLA_BOND_AD_INFO_ACTOR_KEY, 8684ee7ac75Ssfeldma@cumulusnetworks.com IFLA_BOND_AD_INFO_PARTNER_KEY, 8694ee7ac75Ssfeldma@cumulusnetworks.com IFLA_BOND_AD_INFO_PARTNER_MAC, 8704ee7ac75Ssfeldma@cumulusnetworks.com __IFLA_BOND_AD_INFO_MAX, 8714ee7ac75Ssfeldma@cumulusnetworks.com }; 8724ee7ac75Ssfeldma@cumulusnetworks.com 8734ee7ac75Ssfeldma@cumulusnetworks.com #define IFLA_BOND_AD_INFO_MAX (__IFLA_BOND_AD_INFO_MAX - 1) 8744ee7ac75Ssfeldma@cumulusnetworks.com 8751d3ee88aSsfeldma@cumulusnetworks.com enum { 876df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_UNSPEC, 877df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_STATE, 878df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_MII_STATUS, 879df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_LINK_FAILURE_COUNT, 880df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_PERM_HWADDR, 881df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_QUEUE_ID, 882df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_AD_AGGREGATOR_ID, 883254cb6dbSNikolay Aleksandrov IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE, 88446ea297eSNikolay Aleksandrov IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE, 885df7dbcbbSJiri Pirko __IFLA_BOND_SLAVE_MAX, 8861d3ee88aSsfeldma@cumulusnetworks.com }; 8871d3ee88aSsfeldma@cumulusnetworks.com 888df7dbcbbSJiri Pirko #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1) 8891d3ee88aSsfeldma@cumulusnetworks.com 890607ca46eSDavid Howells /* SR-IOV virtual function management section */ 891607ca46eSDavid Howells 892607ca46eSDavid Howells enum { 893607ca46eSDavid Howells IFLA_VF_INFO_UNSPEC, 894607ca46eSDavid Howells IFLA_VF_INFO, 895607ca46eSDavid Howells __IFLA_VF_INFO_MAX, 896607ca46eSDavid Howells }; 897607ca46eSDavid Howells 898607ca46eSDavid Howells #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1) 899607ca46eSDavid Howells 900607ca46eSDavid Howells enum { 901607ca46eSDavid Howells IFLA_VF_UNSPEC, 902607ca46eSDavid Howells IFLA_VF_MAC, /* Hardware queue specific attributes */ 90379aab093SMoshe Shemesh IFLA_VF_VLAN, /* VLAN ID and QoS */ 904ed616689SSucheta Chakraborty IFLA_VF_TX_RATE, /* Max TX Bandwidth Allocation */ 905607ca46eSDavid Howells IFLA_VF_SPOOFCHK, /* Spoof Checking on/off switch */ 9061d8faf48SRony Efraim IFLA_VF_LINK_STATE, /* link state enable/disable/auto switch */ 907ed616689SSucheta Chakraborty IFLA_VF_RATE, /* Min and Max TX Bandwidth Allocation */ 90801a3d796SVlad Zolotarov IFLA_VF_RSS_QUERY_EN, /* RSS Redirection Table and Hash Key query 90901a3d796SVlad Zolotarov * on/off switch 91001a3d796SVlad Zolotarov */ 9113b766cd8SEran Ben Elisha IFLA_VF_STATS, /* network device statistics */ 912dd461d6aSHiroshi Shimamoto IFLA_VF_TRUST, /* Trust VF */ 913cc8e27ccSEli Cohen IFLA_VF_IB_NODE_GUID, /* VF Infiniband node GUID */ 914cc8e27ccSEli Cohen IFLA_VF_IB_PORT_GUID, /* VF Infiniband port GUID */ 91579aab093SMoshe Shemesh IFLA_VF_VLAN_LIST, /* nested list of vlans, option for QinQ */ 91675345f88SDenis Kirjanov IFLA_VF_BROADCAST, /* VF broadcast */ 917607ca46eSDavid Howells __IFLA_VF_MAX, 918607ca46eSDavid Howells }; 919607ca46eSDavid Howells 920607ca46eSDavid Howells #define IFLA_VF_MAX (__IFLA_VF_MAX - 1) 921607ca46eSDavid Howells 922607ca46eSDavid Howells struct ifla_vf_mac { 923607ca46eSDavid Howells __u32 vf; 924607ca46eSDavid Howells __u8 mac[32]; /* MAX_ADDR_LEN */ 925607ca46eSDavid Howells }; 926607ca46eSDavid Howells 92775345f88SDenis Kirjanov struct ifla_vf_broadcast { 92875345f88SDenis Kirjanov __u8 broadcast[32]; 92975345f88SDenis Kirjanov }; 93075345f88SDenis Kirjanov 931607ca46eSDavid Howells struct ifla_vf_vlan { 932607ca46eSDavid Howells __u32 vf; 933607ca46eSDavid Howells __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */ 934607ca46eSDavid Howells __u32 qos; 935607ca46eSDavid Howells }; 936607ca46eSDavid Howells 93779aab093SMoshe Shemesh enum { 93879aab093SMoshe Shemesh IFLA_VF_VLAN_INFO_UNSPEC, 93979aab093SMoshe Shemesh IFLA_VF_VLAN_INFO, /* VLAN ID, QoS and VLAN protocol */ 94079aab093SMoshe Shemesh __IFLA_VF_VLAN_INFO_MAX, 94179aab093SMoshe Shemesh }; 94279aab093SMoshe Shemesh 94379aab093SMoshe Shemesh #define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1) 94479aab093SMoshe Shemesh #define MAX_VLAN_LIST_LEN 1 94579aab093SMoshe Shemesh 94679aab093SMoshe Shemesh struct ifla_vf_vlan_info { 94779aab093SMoshe Shemesh __u32 vf; 94879aab093SMoshe Shemesh __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */ 94979aab093SMoshe Shemesh __u32 qos; 95079aab093SMoshe Shemesh __be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */ 95179aab093SMoshe Shemesh }; 95279aab093SMoshe Shemesh 953607ca46eSDavid Howells struct ifla_vf_tx_rate { 954607ca46eSDavid Howells __u32 vf; 955607ca46eSDavid Howells __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */ 956607ca46eSDavid Howells }; 957607ca46eSDavid Howells 958ed616689SSucheta Chakraborty struct ifla_vf_rate { 959ed616689SSucheta Chakraborty __u32 vf; 960ed616689SSucheta Chakraborty __u32 min_tx_rate; /* Min Bandwidth in Mbps */ 961ed616689SSucheta Chakraborty __u32 max_tx_rate; /* Max Bandwidth in Mbps */ 962ed616689SSucheta Chakraborty }; 963ed616689SSucheta Chakraborty 964607ca46eSDavid Howells struct ifla_vf_spoofchk { 965607ca46eSDavid Howells __u32 vf; 966607ca46eSDavid Howells __u32 setting; 967607ca46eSDavid Howells }; 968607ca46eSDavid Howells 969cc8e27ccSEli Cohen struct ifla_vf_guid { 970cc8e27ccSEli Cohen __u32 vf; 971cc8e27ccSEli Cohen __u64 guid; 972cc8e27ccSEli Cohen }; 973cc8e27ccSEli Cohen 9741d8faf48SRony Efraim enum { 9751d8faf48SRony Efraim IFLA_VF_LINK_STATE_AUTO, /* link state of the uplink */ 9761d8faf48SRony Efraim IFLA_VF_LINK_STATE_ENABLE, /* link always up */ 9771d8faf48SRony Efraim IFLA_VF_LINK_STATE_DISABLE, /* link always down */ 9781d8faf48SRony Efraim __IFLA_VF_LINK_STATE_MAX, 9791d8faf48SRony Efraim }; 9801d8faf48SRony Efraim 9811d8faf48SRony Efraim struct ifla_vf_link_state { 9821d8faf48SRony Efraim __u32 vf; 9831d8faf48SRony Efraim __u32 link_state; 9841d8faf48SRony Efraim }; 9851d8faf48SRony Efraim 98601a3d796SVlad Zolotarov struct ifla_vf_rss_query_en { 98701a3d796SVlad Zolotarov __u32 vf; 98801a3d796SVlad Zolotarov __u32 setting; 98901a3d796SVlad Zolotarov }; 99001a3d796SVlad Zolotarov 9913b766cd8SEran Ben Elisha enum { 9923b766cd8SEran Ben Elisha IFLA_VF_STATS_RX_PACKETS, 9933b766cd8SEran Ben Elisha IFLA_VF_STATS_TX_PACKETS, 9943b766cd8SEran Ben Elisha IFLA_VF_STATS_RX_BYTES, 9953b766cd8SEran Ben Elisha IFLA_VF_STATS_TX_BYTES, 9963b766cd8SEran Ben Elisha IFLA_VF_STATS_BROADCAST, 9973b766cd8SEran Ben Elisha IFLA_VF_STATS_MULTICAST, 998343a6d8eSNicolas Dichtel IFLA_VF_STATS_PAD, 999c5a9f6f0SEugenia Emantayev IFLA_VF_STATS_RX_DROPPED, 1000c5a9f6f0SEugenia Emantayev IFLA_VF_STATS_TX_DROPPED, 10013b766cd8SEran Ben Elisha __IFLA_VF_STATS_MAX, 10023b766cd8SEran Ben Elisha }; 10033b766cd8SEran Ben Elisha 10043b766cd8SEran Ben Elisha #define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1) 10053b766cd8SEran Ben Elisha 1006dd461d6aSHiroshi Shimamoto struct ifla_vf_trust { 1007dd461d6aSHiroshi Shimamoto __u32 vf; 1008dd461d6aSHiroshi Shimamoto __u32 setting; 1009dd461d6aSHiroshi Shimamoto }; 1010dd461d6aSHiroshi Shimamoto 1011607ca46eSDavid Howells /* VF ports management section 1012607ca46eSDavid Howells * 1013607ca46eSDavid Howells * Nested layout of set/get msg is: 1014607ca46eSDavid Howells * 1015607ca46eSDavid Howells * [IFLA_NUM_VF] 1016607ca46eSDavid Howells * [IFLA_VF_PORTS] 1017607ca46eSDavid Howells * [IFLA_VF_PORT] 1018607ca46eSDavid Howells * [IFLA_PORT_*], ... 1019607ca46eSDavid Howells * [IFLA_VF_PORT] 1020607ca46eSDavid Howells * [IFLA_PORT_*], ... 1021607ca46eSDavid Howells * ... 1022607ca46eSDavid Howells * [IFLA_PORT_SELF] 1023607ca46eSDavid Howells * [IFLA_PORT_*], ... 1024607ca46eSDavid Howells */ 1025607ca46eSDavid Howells 1026607ca46eSDavid Howells enum { 1027607ca46eSDavid Howells IFLA_VF_PORT_UNSPEC, 1028607ca46eSDavid Howells IFLA_VF_PORT, /* nest */ 1029607ca46eSDavid Howells __IFLA_VF_PORT_MAX, 1030607ca46eSDavid Howells }; 1031607ca46eSDavid Howells 1032607ca46eSDavid Howells #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1) 1033607ca46eSDavid Howells 1034607ca46eSDavid Howells enum { 1035607ca46eSDavid Howells IFLA_PORT_UNSPEC, 1036607ca46eSDavid Howells IFLA_PORT_VF, /* __u32 */ 1037607ca46eSDavid Howells IFLA_PORT_PROFILE, /* string */ 1038607ca46eSDavid Howells IFLA_PORT_VSI_TYPE, /* 802.1Qbg (pre-)standard VDP */ 1039607ca46eSDavid Howells IFLA_PORT_INSTANCE_UUID, /* binary UUID */ 1040607ca46eSDavid Howells IFLA_PORT_HOST_UUID, /* binary UUID */ 1041607ca46eSDavid Howells IFLA_PORT_REQUEST, /* __u8 */ 1042607ca46eSDavid Howells IFLA_PORT_RESPONSE, /* __u16, output only */ 1043607ca46eSDavid Howells __IFLA_PORT_MAX, 1044607ca46eSDavid Howells }; 1045607ca46eSDavid Howells 1046607ca46eSDavid Howells #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1) 1047607ca46eSDavid Howells 1048607ca46eSDavid Howells #define PORT_PROFILE_MAX 40 1049607ca46eSDavid Howells #define PORT_UUID_MAX 16 1050607ca46eSDavid Howells #define PORT_SELF_VF -1 1051607ca46eSDavid Howells 1052607ca46eSDavid Howells enum { 1053607ca46eSDavid Howells PORT_REQUEST_PREASSOCIATE = 0, 1054607ca46eSDavid Howells PORT_REQUEST_PREASSOCIATE_RR, 1055607ca46eSDavid Howells PORT_REQUEST_ASSOCIATE, 1056607ca46eSDavid Howells PORT_REQUEST_DISASSOCIATE, 1057607ca46eSDavid Howells }; 1058607ca46eSDavid Howells 1059607ca46eSDavid Howells enum { 1060607ca46eSDavid Howells PORT_VDP_RESPONSE_SUCCESS = 0, 1061607ca46eSDavid Howells PORT_VDP_RESPONSE_INVALID_FORMAT, 1062607ca46eSDavid Howells PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES, 1063607ca46eSDavid Howells PORT_VDP_RESPONSE_UNUSED_VTID, 1064607ca46eSDavid Howells PORT_VDP_RESPONSE_VTID_VIOLATION, 1065607ca46eSDavid Howells PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION, 1066607ca46eSDavid Howells PORT_VDP_RESPONSE_OUT_OF_SYNC, 1067607ca46eSDavid Howells /* 0x08-0xFF reserved for future VDP use */ 1068607ca46eSDavid Howells PORT_PROFILE_RESPONSE_SUCCESS = 0x100, 1069607ca46eSDavid Howells PORT_PROFILE_RESPONSE_INPROGRESS, 1070607ca46eSDavid Howells PORT_PROFILE_RESPONSE_INVALID, 1071607ca46eSDavid Howells PORT_PROFILE_RESPONSE_BADSTATE, 1072607ca46eSDavid Howells PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES, 1073607ca46eSDavid Howells PORT_PROFILE_RESPONSE_ERROR, 1074607ca46eSDavid Howells }; 1075607ca46eSDavid Howells 1076607ca46eSDavid Howells struct ifla_port_vsi { 1077607ca46eSDavid Howells __u8 vsi_mgr_id; 1078607ca46eSDavid Howells __u8 vsi_type_id[3]; 1079607ca46eSDavid Howells __u8 vsi_type_version; 1080607ca46eSDavid Howells __u8 pad[3]; 1081607ca46eSDavid Howells }; 1082607ca46eSDavid Howells 1083607ca46eSDavid Howells 1084607ca46eSDavid Howells /* IPoIB section */ 1085607ca46eSDavid Howells 1086607ca46eSDavid Howells enum { 1087607ca46eSDavid Howells IFLA_IPOIB_UNSPEC, 1088607ca46eSDavid Howells IFLA_IPOIB_PKEY, 1089607ca46eSDavid Howells IFLA_IPOIB_MODE, 1090607ca46eSDavid Howells IFLA_IPOIB_UMCAST, 1091607ca46eSDavid Howells __IFLA_IPOIB_MAX 1092607ca46eSDavid Howells }; 1093607ca46eSDavid Howells 1094607ca46eSDavid Howells enum { 1095607ca46eSDavid Howells IPOIB_MODE_DATAGRAM = 0, /* using unreliable datagram QPs */ 1096607ca46eSDavid Howells IPOIB_MODE_CONNECTED = 1, /* using connected QPs */ 1097607ca46eSDavid Howells }; 1098607ca46eSDavid Howells 1099607ca46eSDavid Howells #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1) 1100607ca46eSDavid Howells 1101f421436aSArvid Brodin 11028f4c0e01SMurali Karicheri /* HSR/PRP section, both uses same interface */ 11038f4c0e01SMurali Karicheri 11048f4c0e01SMurali Karicheri /* Different redundancy protocols for hsr device */ 11058f4c0e01SMurali Karicheri enum { 11068f4c0e01SMurali Karicheri HSR_PROTOCOL_HSR, 11078f4c0e01SMurali Karicheri HSR_PROTOCOL_PRP, 11088f4c0e01SMurali Karicheri HSR_PROTOCOL_MAX, 11098f4c0e01SMurali Karicheri }; 1110f421436aSArvid Brodin 1111f421436aSArvid Brodin enum { 1112f421436aSArvid Brodin IFLA_HSR_UNSPEC, 1113f421436aSArvid Brodin IFLA_HSR_SLAVE1, 1114f421436aSArvid Brodin IFLA_HSR_SLAVE2, 111598bf8362SArvid Brodin IFLA_HSR_MULTICAST_SPEC, /* Last byte of supervision addr */ 111698bf8362SArvid Brodin IFLA_HSR_SUPERVISION_ADDR, /* Supervision frame multicast addr */ 111798bf8362SArvid Brodin IFLA_HSR_SEQ_NR, 1118b84e9307SPeter Heise IFLA_HSR_VERSION, /* HSR version */ 11198f4c0e01SMurali Karicheri IFLA_HSR_PROTOCOL, /* Indicate different protocol than 11208f4c0e01SMurali Karicheri * HSR. For example PRP. 11218f4c0e01SMurali Karicheri */ 1122f421436aSArvid Brodin __IFLA_HSR_MAX, 1123f421436aSArvid Brodin }; 1124f421436aSArvid Brodin 1125f421436aSArvid Brodin #define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1) 1126f421436aSArvid Brodin 112710c9ead9SRoopa Prabhu /* STATS section */ 112810c9ead9SRoopa Prabhu 112910c9ead9SRoopa Prabhu struct if_stats_msg { 113010c9ead9SRoopa Prabhu __u8 family; 113110c9ead9SRoopa Prabhu __u8 pad1; 113210c9ead9SRoopa Prabhu __u16 pad2; 113310c9ead9SRoopa Prabhu __u32 ifindex; 113410c9ead9SRoopa Prabhu __u32 filter_mask; 113510c9ead9SRoopa Prabhu }; 113610c9ead9SRoopa Prabhu 113710c9ead9SRoopa Prabhu /* A stats attribute can be netdev specific or a global stat. 113810c9ead9SRoopa Prabhu * For netdev stats, lets use the prefix IFLA_STATS_LINK_* 113910c9ead9SRoopa Prabhu */ 114010c9ead9SRoopa Prabhu enum { 114110c9ead9SRoopa Prabhu IFLA_STATS_UNSPEC, /* also used as 64bit pad attribute */ 114210c9ead9SRoopa Prabhu IFLA_STATS_LINK_64, 114397a47facSNikolay Aleksandrov IFLA_STATS_LINK_XSTATS, 114480e73cc5SNikolay Aleksandrov IFLA_STATS_LINK_XSTATS_SLAVE, 114569ae6ad2SNogah Frankel IFLA_STATS_LINK_OFFLOAD_XSTATS, 1146aefb4d4aSRobert Shearman IFLA_STATS_AF_SPEC, 114710c9ead9SRoopa Prabhu __IFLA_STATS_MAX, 114810c9ead9SRoopa Prabhu }; 114910c9ead9SRoopa Prabhu 115010c9ead9SRoopa Prabhu #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1) 115110c9ead9SRoopa Prabhu 115210c9ead9SRoopa Prabhu #define IFLA_STATS_FILTER_BIT(ATTR) (1 << (ATTR - 1)) 115310c9ead9SRoopa Prabhu 115497a47facSNikolay Aleksandrov /* These are embedded into IFLA_STATS_LINK_XSTATS: 115597a47facSNikolay Aleksandrov * [IFLA_STATS_LINK_XSTATS] 115697a47facSNikolay Aleksandrov * -> [LINK_XSTATS_TYPE_xxx] 115797a47facSNikolay Aleksandrov * -> [rtnl link type specific attributes] 115897a47facSNikolay Aleksandrov */ 115997a47facSNikolay Aleksandrov enum { 116097a47facSNikolay Aleksandrov LINK_XSTATS_TYPE_UNSPEC, 1161a60c0903SNikolay Aleksandrov LINK_XSTATS_TYPE_BRIDGE, 1162a258aeacSNikolay Aleksandrov LINK_XSTATS_TYPE_BOND, 116397a47facSNikolay Aleksandrov __LINK_XSTATS_TYPE_MAX 116497a47facSNikolay Aleksandrov }; 116597a47facSNikolay Aleksandrov #define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1) 116697a47facSNikolay Aleksandrov 116769ae6ad2SNogah Frankel /* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */ 116869ae6ad2SNogah Frankel enum { 116969ae6ad2SNogah Frankel IFLA_OFFLOAD_XSTATS_UNSPEC, 117069ae6ad2SNogah Frankel IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */ 117169ae6ad2SNogah Frankel __IFLA_OFFLOAD_XSTATS_MAX 117269ae6ad2SNogah Frankel }; 117369ae6ad2SNogah Frankel #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1) 117469ae6ad2SNogah Frankel 1175d1fdd913SBrenden Blanco /* XDP section */ 1176d1fdd913SBrenden Blanco 117785de8576SDaniel Borkmann #define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0) 11780489df9aSDaniel Borkmann #define XDP_FLAGS_SKB_MODE (1U << 1) 11790489df9aSDaniel Borkmann #define XDP_FLAGS_DRV_MODE (1U << 2) 1180ee5d032fSJakub Kicinski #define XDP_FLAGS_HW_MODE (1U << 3) 118192234c8fSToke Høiland-Jørgensen #define XDP_FLAGS_REPLACE (1U << 4) 1182ee5d032fSJakub Kicinski #define XDP_FLAGS_MODES (XDP_FLAGS_SKB_MODE | \ 1183ee5d032fSJakub Kicinski XDP_FLAGS_DRV_MODE | \ 1184ee5d032fSJakub Kicinski XDP_FLAGS_HW_MODE) 1185b5cdae32SDavid S. Miller #define XDP_FLAGS_MASK (XDP_FLAGS_UPDATE_IF_NOEXIST | \ 118692234c8fSToke Høiland-Jørgensen XDP_FLAGS_MODES | XDP_FLAGS_REPLACE) 118785de8576SDaniel Borkmann 1188d67b9cd2SDaniel Borkmann /* These are stored into IFLA_XDP_ATTACHED on dump. */ 1189d67b9cd2SDaniel Borkmann enum { 1190d67b9cd2SDaniel Borkmann XDP_ATTACHED_NONE = 0, 1191d67b9cd2SDaniel Borkmann XDP_ATTACHED_DRV, 1192d67b9cd2SDaniel Borkmann XDP_ATTACHED_SKB, 1193ce158e58SJakub Kicinski XDP_ATTACHED_HW, 1194a25717d2SJakub Kicinski XDP_ATTACHED_MULTI, 1195d67b9cd2SDaniel Borkmann }; 1196d67b9cd2SDaniel Borkmann 1197d1fdd913SBrenden Blanco enum { 1198d1fdd913SBrenden Blanco IFLA_XDP_UNSPEC, 1199d1fdd913SBrenden Blanco IFLA_XDP_FD, 1200d1fdd913SBrenden Blanco IFLA_XDP_ATTACHED, 120185de8576SDaniel Borkmann IFLA_XDP_FLAGS, 120258038695SMartin KaFai Lau IFLA_XDP_PROG_ID, 12034f91da26SJakub Kicinski IFLA_XDP_DRV_PROG_ID, 12044f91da26SJakub Kicinski IFLA_XDP_SKB_PROG_ID, 12054f91da26SJakub Kicinski IFLA_XDP_HW_PROG_ID, 120692234c8fSToke Høiland-Jørgensen IFLA_XDP_EXPECTED_FD, 1207d1fdd913SBrenden Blanco __IFLA_XDP_MAX, 1208d1fdd913SBrenden Blanco }; 1209d1fdd913SBrenden Blanco 1210d1fdd913SBrenden Blanco #define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1) 1211d1fdd913SBrenden Blanco 12123d3ea5afSVlad Yasevich enum { 12133d3ea5afSVlad Yasevich IFLA_EVENT_NONE, 12143d3ea5afSVlad Yasevich IFLA_EVENT_REBOOT, /* internal reset / reboot */ 12153d3ea5afSVlad Yasevich IFLA_EVENT_FEATURES, /* change in offload features */ 12163d3ea5afSVlad Yasevich IFLA_EVENT_BONDING_FAILOVER, /* change in active slave */ 12173d3ea5afSVlad Yasevich IFLA_EVENT_NOTIFY_PEERS, /* re-sent grat. arp/ndisc */ 12183d3ea5afSVlad Yasevich IFLA_EVENT_IGMP_RESEND, /* re-sent IGMP JOIN */ 12193d3ea5afSVlad Yasevich IFLA_EVENT_BONDING_OPTIONS, /* change in bonding options */ 12203d3ea5afSVlad Yasevich }; 12213d3ea5afSVlad Yasevich 12221ec010e7SSabrina Dubroca /* tun section */ 12231ec010e7SSabrina Dubroca 12241ec010e7SSabrina Dubroca enum { 12251ec010e7SSabrina Dubroca IFLA_TUN_UNSPEC, 12261ec010e7SSabrina Dubroca IFLA_TUN_OWNER, 12271ec010e7SSabrina Dubroca IFLA_TUN_GROUP, 12281ec010e7SSabrina Dubroca IFLA_TUN_TYPE, 12291ec010e7SSabrina Dubroca IFLA_TUN_PI, 12301ec010e7SSabrina Dubroca IFLA_TUN_VNET_HDR, 12311ec010e7SSabrina Dubroca IFLA_TUN_PERSIST, 12321ec010e7SSabrina Dubroca IFLA_TUN_MULTI_QUEUE, 12331ec010e7SSabrina Dubroca IFLA_TUN_NUM_QUEUES, 12341ec010e7SSabrina Dubroca IFLA_TUN_NUM_DISABLED_QUEUES, 12351ec010e7SSabrina Dubroca __IFLA_TUN_MAX, 12361ec010e7SSabrina Dubroca }; 12371ec010e7SSabrina Dubroca 12381ec010e7SSabrina Dubroca #define IFLA_TUN_MAX (__IFLA_TUN_MAX - 1) 12391ec010e7SSabrina Dubroca 124014452ca3SSubash Abhinov Kasiviswanathan /* rmnet section */ 124114452ca3SSubash Abhinov Kasiviswanathan 124214452ca3SSubash Abhinov Kasiviswanathan #define RMNET_FLAGS_INGRESS_DEAGGREGATION (1U << 0) 124314452ca3SSubash Abhinov Kasiviswanathan #define RMNET_FLAGS_INGRESS_MAP_COMMANDS (1U << 1) 124414452ca3SSubash Abhinov Kasiviswanathan #define RMNET_FLAGS_INGRESS_MAP_CKSUMV4 (1U << 2) 124514452ca3SSubash Abhinov Kasiviswanathan #define RMNET_FLAGS_EGRESS_MAP_CKSUMV4 (1U << 3) 1246e1d9a90aSSharath Chandra Vurukala #define RMNET_FLAGS_INGRESS_MAP_CKSUMV5 (1U << 4) 1247b6e5d27eSSharath Chandra Vurukala #define RMNET_FLAGS_EGRESS_MAP_CKSUMV5 (1U << 5) 124814452ca3SSubash Abhinov Kasiviswanathan 124914452ca3SSubash Abhinov Kasiviswanathan enum { 125014452ca3SSubash Abhinov Kasiviswanathan IFLA_RMNET_UNSPEC, 125114452ca3SSubash Abhinov Kasiviswanathan IFLA_RMNET_MUX_ID, 125214452ca3SSubash Abhinov Kasiviswanathan IFLA_RMNET_FLAGS, 125314452ca3SSubash Abhinov Kasiviswanathan __IFLA_RMNET_MAX, 125414452ca3SSubash Abhinov Kasiviswanathan }; 125514452ca3SSubash Abhinov Kasiviswanathan 125614452ca3SSubash Abhinov Kasiviswanathan #define IFLA_RMNET_MAX (__IFLA_RMNET_MAX - 1) 125714452ca3SSubash Abhinov Kasiviswanathan 125814452ca3SSubash Abhinov Kasiviswanathan struct ifla_rmnet_flags { 125914452ca3SSubash Abhinov Kasiviswanathan __u32 flags; 126014452ca3SSubash Abhinov Kasiviswanathan __u32 mask; 126114452ca3SSubash Abhinov Kasiviswanathan }; 126214452ca3SSubash Abhinov Kasiviswanathan 1263*583be982SJeremy Kerr /* MCTP section */ 1264*583be982SJeremy Kerr 1265*583be982SJeremy Kerr enum { 1266*583be982SJeremy Kerr IFLA_MCTP_UNSPEC, 1267*583be982SJeremy Kerr IFLA_MCTP_NET, 1268*583be982SJeremy Kerr __IFLA_MCTP_MAX, 1269*583be982SJeremy Kerr }; 1270*583be982SJeremy Kerr 1271*583be982SJeremy Kerr #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1) 1272*583be982SJeremy Kerr 1273607ca46eSDavid Howells #endif /* _UAPI_LINUX_IF_LINK_H */ 1274