linux-headers (unknown)

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