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