Blame SOURCES/if_link.h

b645d2
#ifndef _UAPI_LINUX_IF_LINK_H
b645d2
#define _UAPI_LINUX_IF_LINK_H
b645d2
b645d2
#include <linux/types.h>
b645d2
#include <linux/netlink.h>
b645d2
b645d2
/* This struct should be in sync with struct rtnl_link_stats64 */
b645d2
struct rtnl_link_stats {
b645d2
	__u32	rx_packets;		/* total packets received	*/
b645d2
	__u32	tx_packets;		/* total packets transmitted	*/
b645d2
	__u32	rx_bytes;		/* total bytes received 	*/
b645d2
	__u32	tx_bytes;		/* total bytes transmitted	*/
b645d2
	__u32	rx_errors;		/* bad packets received		*/
b645d2
	__u32	tx_errors;		/* packet transmit problems	*/
b645d2
	__u32	rx_dropped;		/* no space in linux buffers	*/
b645d2
	__u32	tx_dropped;		/* no space available in linux	*/
b645d2
	__u32	multicast;		/* multicast packets received	*/
b645d2
	__u32	collisions;
b645d2
b645d2
	/* detailed rx_errors: */
b645d2
	__u32	rx_length_errors;
b645d2
	__u32	rx_over_errors;		/* receiver ring buff overflow	*/
b645d2
	__u32	rx_crc_errors;		/* recved pkt with crc error	*/
b645d2
	__u32	rx_frame_errors;	/* recv'd frame alignment error */
b645d2
	__u32	rx_fifo_errors;		/* recv'r fifo overrun		*/
b645d2
	__u32	rx_missed_errors;	/* receiver missed packet	*/
b645d2
b645d2
	/* detailed tx_errors */
b645d2
	__u32	tx_aborted_errors;
b645d2
	__u32	tx_carrier_errors;
b645d2
	__u32	tx_fifo_errors;
b645d2
	__u32	tx_heartbeat_errors;
b645d2
	__u32	tx_window_errors;
b645d2
b645d2
	/* for cslip etc */
b645d2
	__u32	rx_compressed;
b645d2
	__u32	tx_compressed;
b645d2
b645d2
	__u32	rx_nohandler;		/* dropped, no handler found	*/
b645d2
};
b645d2
b645d2
/* The main device statistics structure */
b645d2
struct rtnl_link_stats64 {
b645d2
	__u64	rx_packets;		/* total packets received	*/
b645d2
	__u64	tx_packets;		/* total packets transmitted	*/
b645d2
	__u64	rx_bytes;		/* total bytes received 	*/
b645d2
	__u64	tx_bytes;		/* total bytes transmitted	*/
b645d2
	__u64	rx_errors;		/* bad packets received		*/
b645d2
	__u64	tx_errors;		/* packet transmit problems	*/
b645d2
	__u64	rx_dropped;		/* no space in linux buffers	*/
b645d2
	__u64	tx_dropped;		/* no space available in linux	*/
b645d2
	__u64	multicast;		/* multicast packets received	*/
b645d2
	__u64	collisions;
b645d2
b645d2
	/* detailed rx_errors: */
b645d2
	__u64	rx_length_errors;
b645d2
	__u64	rx_over_errors;		/* receiver ring buff overflow	*/
b645d2
	__u64	rx_crc_errors;		/* recved pkt with crc error	*/
b645d2
	__u64	rx_frame_errors;	/* recv'd frame alignment error */
b645d2
	__u64	rx_fifo_errors;		/* recv'r fifo overrun		*/
b645d2
	__u64	rx_missed_errors;	/* receiver missed packet	*/
b645d2
b645d2
	/* detailed tx_errors */
b645d2
	__u64	tx_aborted_errors;
b645d2
	__u64	tx_carrier_errors;
b645d2
	__u64	tx_fifo_errors;
b645d2
	__u64	tx_heartbeat_errors;
b645d2
	__u64	tx_window_errors;
b645d2
b645d2
	/* for cslip etc */
b645d2
	__u64	rx_compressed;
b645d2
	__u64	tx_compressed;
b645d2
b645d2
	__u64	rx_nohandler;		/* dropped, no handler found	*/
b645d2
};
b645d2
b645d2
/* The struct should be in sync with struct ifmap */
b645d2
struct rtnl_link_ifmap {
b645d2
	__u64	mem_start;
b645d2
	__u64	mem_end;
b645d2
	__u64	base_addr;
b645d2
	__u16	irq;
b645d2
	__u8	dma;
b645d2
	__u8	port;
b645d2
};
b645d2
b645d2
/*
b645d2
 * IFLA_AF_SPEC
b645d2
 *   Contains nested attributes for address family specific attributes.
b645d2
 *   Each address family may create a attribute with the address family
b645d2
 *   number as type and create its own attribute structure in it.
b645d2
 *
b645d2
 *   Example:
b645d2
 *   [IFLA_AF_SPEC] = {
b645d2
 *       [AF_INET] = {
b645d2
 *           [IFLA_INET_CONF] = ...,
b645d2
 *       },
b645d2
 *       [AF_INET6] = {
b645d2
 *           [IFLA_INET6_FLAGS] = ...,
b645d2
 *           [IFLA_INET6_CONF] = ...,
b645d2
 *       }
b645d2
 *   }
b645d2
 */
b645d2
b645d2
enum {
b645d2
	IFLA_UNSPEC,
b645d2
	IFLA_ADDRESS,
b645d2
	IFLA_BROADCAST,
b645d2
	IFLA_IFNAME,
b645d2
	IFLA_MTU,
b645d2
	IFLA_LINK,
b645d2
	IFLA_QDISC,
b645d2
	IFLA_STATS,
b645d2
	IFLA_COST,
b645d2
#define IFLA_COST IFLA_COST
b645d2
	IFLA_PRIORITY,
b645d2
#define IFLA_PRIORITY IFLA_PRIORITY
b645d2
	IFLA_MASTER,
b645d2
#define IFLA_MASTER IFLA_MASTER
b645d2
	IFLA_WIRELESS,		/* Wireless Extension event - see wireless.h */
b645d2
#define IFLA_WIRELESS IFLA_WIRELESS
b645d2
	IFLA_PROTINFO,		/* Protocol specific information for a link */
b645d2
#define IFLA_PROTINFO IFLA_PROTINFO
b645d2
	IFLA_TXQLEN,
b645d2
#define IFLA_TXQLEN IFLA_TXQLEN
b645d2
	IFLA_MAP,
b645d2
#define IFLA_MAP IFLA_MAP
b645d2
	IFLA_WEIGHT,
b645d2
#define IFLA_WEIGHT IFLA_WEIGHT
b645d2
	IFLA_OPERSTATE,
b645d2
	IFLA_LINKMODE,
b645d2
	IFLA_LINKINFO,
b645d2
#define IFLA_LINKINFO IFLA_LINKINFO
b645d2
	IFLA_NET_NS_PID,
b645d2
	IFLA_IFALIAS,
b645d2
	IFLA_NUM_VF,		/* Number of VFs if device is SR-IOV PF */
b645d2
	IFLA_VFINFO_LIST,
b645d2
	IFLA_STATS64,
b645d2
	IFLA_VF_PORTS,
b645d2
	IFLA_PORT_SELF,
b645d2
	IFLA_AF_SPEC,
b645d2
	IFLA_GROUP,		/* Group the device belongs to */
b645d2
	IFLA_NET_NS_FD,
b645d2
	IFLA_EXT_MASK,		/* Extended info mask, VFs, etc */
b645d2
	IFLA_PROMISCUITY,	/* Promiscuity count: > 0 means acts PROMISC */
b645d2
#define IFLA_PROMISCUITY IFLA_PROMISCUITY
b645d2
	IFLA_NUM_TX_QUEUES,
b645d2
	IFLA_NUM_RX_QUEUES,
b645d2
	IFLA_CARRIER,
b645d2
	IFLA_PHYS_PORT_ID,
b645d2
	IFLA_CARRIER_CHANGES,
b645d2
	IFLA_PHYS_SWITCH_ID,
b645d2
	IFLA_LINK_NETNSID,
b645d2
	IFLA_PHYS_PORT_NAME,
b645d2
	IFLA_PROTO_DOWN,
b645d2
	IFLA_GSO_MAX_SEGS,
b645d2
	IFLA_GSO_MAX_SIZE,
b645d2
	IFLA_PAD,
b645d2
	IFLA_XDP,
b645d2
	__IFLA_MAX
b645d2
};
b645d2
b645d2
b645d2
#define IFLA_MAX (__IFLA_MAX - 1)
b645d2
b645d2
/* backwards compatibility for userspace */
b645d2
#ifndef __KERNEL__
b645d2
#define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
b645d2
#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
b645d2
#endif
b645d2
b645d2
enum {
b645d2
	IFLA_INET_UNSPEC,
b645d2
	IFLA_INET_CONF,
b645d2
	__IFLA_INET_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
b645d2
b645d2
/* ifi_flags.
b645d2
b645d2
   IFF_* flags.
b645d2
b645d2
   The only change is:
b645d2
   IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
b645d2
   more not changeable by user. They describe link media
b645d2
   characteristics and set by device driver.
b645d2
b645d2
   Comments:
b645d2
   - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
b645d2
   - If neither of these three flags are set;
b645d2
     the interface is NBMA.
b645d2
b645d2
   - IFF_MULTICAST does not mean anything special:
b645d2
   multicasts can be used on all not-NBMA links.
b645d2
   IFF_MULTICAST means that this media uses special encapsulation
b645d2
   for multicast frames. Apparently, all IFF_POINTOPOINT and
b645d2
   IFF_BROADCAST devices are able to use multicasts too.
b645d2
 */
b645d2
b645d2
/* IFLA_LINK.
b645d2
   For usual devices it is equal ifi_index.
b645d2
   If it is a "virtual interface" (f.e. tunnel), ifi_link
b645d2
   can point to real physical interface (f.e. for bandwidth calculations),
b645d2
   or maybe 0, what means, that real media is unknown (usual
b645d2
   for IPIP tunnels, when route to endpoint is allowed to change)
b645d2
 */
b645d2
b645d2
/* Subtype attributes for IFLA_PROTINFO */
b645d2
enum {
b645d2
	IFLA_INET6_UNSPEC,
b645d2
	IFLA_INET6_FLAGS,	/* link flags			*/
b645d2
	IFLA_INET6_CONF,	/* sysctl parameters		*/
b645d2
	IFLA_INET6_STATS,	/* statistics			*/
b645d2
	IFLA_INET6_MCAST,	/* MC things. What of them?	*/
b645d2
	IFLA_INET6_CACHEINFO,	/* time values and max reasm size */
b645d2
	IFLA_INET6_ICMP6STATS,	/* statistics (icmpv6)		*/
b645d2
	IFLA_INET6_TOKEN,	/* device token			*/
b645d2
	IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
b645d2
	__IFLA_INET6_MAX
b645d2
};
b645d2
b645d2
#define IFLA_INET6_MAX	(__IFLA_INET6_MAX - 1)
b645d2
b645d2
enum in6_addr_gen_mode {
b645d2
	IN6_ADDR_GEN_MODE_EUI64,
b645d2
	IN6_ADDR_GEN_MODE_NONE,
b645d2
	IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
b645d2
	IN6_ADDR_GEN_MODE_RANDOM,
b645d2
};
b645d2
b645d2
/* Bridge section */
b645d2
b645d2
enum {
b645d2
	IFLA_BR_UNSPEC,
b645d2
	IFLA_BR_FORWARD_DELAY,
b645d2
	IFLA_BR_HELLO_TIME,
b645d2
	IFLA_BR_MAX_AGE,
b645d2
	IFLA_BR_AGEING_TIME,
b645d2
	IFLA_BR_STP_STATE,
b645d2
	IFLA_BR_PRIORITY,
b645d2
	IFLA_BR_VLAN_FILTERING,
b645d2
	IFLA_BR_VLAN_PROTOCOL,
b645d2
	IFLA_BR_GROUP_FWD_MASK,
b645d2
	IFLA_BR_ROOT_ID,
b645d2
	IFLA_BR_BRIDGE_ID,
b645d2
	IFLA_BR_ROOT_PORT,
b645d2
	IFLA_BR_ROOT_PATH_COST,
b645d2
	IFLA_BR_TOPOLOGY_CHANGE,
b645d2
	IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
b645d2
	IFLA_BR_HELLO_TIMER,
b645d2
	IFLA_BR_TCN_TIMER,
b645d2
	IFLA_BR_TOPOLOGY_CHANGE_TIMER,
b645d2
	IFLA_BR_GC_TIMER,
b645d2
	IFLA_BR_GROUP_ADDR,
b645d2
	IFLA_BR_FDB_FLUSH,
b645d2
	IFLA_BR_MCAST_ROUTER,
b645d2
	IFLA_BR_MCAST_SNOOPING,
b645d2
	IFLA_BR_MCAST_QUERY_USE_IFADDR,
b645d2
	IFLA_BR_MCAST_QUERIER,
b645d2
	IFLA_BR_MCAST_HASH_ELASTICITY,
b645d2
	IFLA_BR_MCAST_HASH_MAX,
b645d2
	IFLA_BR_MCAST_LAST_MEMBER_CNT,
b645d2
	IFLA_BR_MCAST_STARTUP_QUERY_CNT,
b645d2
	IFLA_BR_MCAST_LAST_MEMBER_INTVL,
b645d2
	IFLA_BR_MCAST_MEMBERSHIP_INTVL,
b645d2
	IFLA_BR_MCAST_QUERIER_INTVL,
b645d2
	IFLA_BR_MCAST_QUERY_INTVL,
b645d2
	IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
b645d2
	IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
b645d2
	IFLA_BR_NF_CALL_IPTABLES,
b645d2
	IFLA_BR_NF_CALL_IP6TABLES,
b645d2
	IFLA_BR_NF_CALL_ARPTABLES,
b645d2
	IFLA_BR_VLAN_DEFAULT_PVID,
b645d2
	IFLA_BR_PAD,
b645d2
	IFLA_BR_VLAN_STATS_ENABLED,
b645d2
	IFLA_BR_MCAST_STATS_ENABLED,
b645d2
	IFLA_BR_MCAST_IGMP_VERSION,
b645d2
	IFLA_BR_MCAST_MLD_VERSION,
b645d2
	__IFLA_BR_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_BR_MAX	(__IFLA_BR_MAX - 1)
b645d2
b645d2
struct ifla_bridge_id {
b645d2
	__u8	prio[2];
b645d2
	__u8	addr[6]; /* ETH_ALEN */
b645d2
};
b645d2
b645d2
enum {
b645d2
	BRIDGE_MODE_UNSPEC,
b645d2
	BRIDGE_MODE_HAIRPIN,
b645d2
};
b645d2
b645d2
enum {
b645d2
	IFLA_BRPORT_UNSPEC,
b645d2
	IFLA_BRPORT_STATE,	/* Spanning tree state     */
b645d2
	IFLA_BRPORT_PRIORITY,	/* "             priority  */
b645d2
	IFLA_BRPORT_COST,	/* "             cost      */
b645d2
	IFLA_BRPORT_MODE,	/* mode (hairpin)          */
b645d2
	IFLA_BRPORT_GUARD,	/* bpdu guard              */
b645d2
	IFLA_BRPORT_PROTECT,	/* root port protection    */
b645d2
	IFLA_BRPORT_FAST_LEAVE,	/* multicast fast leave    */
b645d2
	IFLA_BRPORT_LEARNING,	/* mac learning */
b645d2
	IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
b645d2
	IFLA_BRPORT_PROXYARP,	/* proxy ARP */
b645d2
	IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
b645d2
	IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
b645d2
	IFLA_BRPORT_ROOT_ID,	/* designated root */
b645d2
	IFLA_BRPORT_BRIDGE_ID,	/* designated bridge */
b645d2
	IFLA_BRPORT_DESIGNATED_PORT,
b645d2
	IFLA_BRPORT_DESIGNATED_COST,
b645d2
	IFLA_BRPORT_ID,
b645d2
	IFLA_BRPORT_NO,
b645d2
	IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,
b645d2
	IFLA_BRPORT_CONFIG_PENDING,
b645d2
	IFLA_BRPORT_MESSAGE_AGE_TIMER,
b645d2
	IFLA_BRPORT_FORWARD_DELAY_TIMER,
b645d2
	IFLA_BRPORT_HOLD_TIMER,
b645d2
	IFLA_BRPORT_FLUSH,
b645d2
	IFLA_BRPORT_MULTICAST_ROUTER,
b645d2
	IFLA_BRPORT_PAD,
b645d2
	IFLA_BRPORT_MCAST_FLOOD,
b645d2
	__IFLA_BRPORT_MAX
b645d2
};
b645d2
#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
b645d2
b645d2
struct ifla_cacheinfo {
b645d2
	__u32	max_reasm_len;
b645d2
	__u32	tstamp;		/* ipv6InterfaceTable updated timestamp */
b645d2
	__u32	reachable_time;
b645d2
	__u32	retrans_time;
b645d2
};
b645d2
b645d2
enum {
b645d2
	IFLA_INFO_UNSPEC,
b645d2
	IFLA_INFO_KIND,
b645d2
	IFLA_INFO_DATA,
b645d2
	IFLA_INFO_XSTATS,
b645d2
	IFLA_INFO_SLAVE_KIND,
b645d2
	IFLA_INFO_SLAVE_DATA,
b645d2
	__IFLA_INFO_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_INFO_MAX	(__IFLA_INFO_MAX - 1)
b645d2
b645d2
/* VLAN section */
b645d2
b645d2
enum {
b645d2
	IFLA_VLAN_UNSPEC,
b645d2
	IFLA_VLAN_ID,
b645d2
	IFLA_VLAN_FLAGS,
b645d2
	IFLA_VLAN_EGRESS_QOS,
b645d2
	IFLA_VLAN_INGRESS_QOS,
b645d2
	IFLA_VLAN_PROTOCOL,
b645d2
	__IFLA_VLAN_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_VLAN_MAX	(__IFLA_VLAN_MAX - 1)
b645d2
b645d2
struct ifla_vlan_flags {
b645d2
	__u32	flags;
b645d2
	__u32	mask;
b645d2
};
b645d2
b645d2
enum {
b645d2
	IFLA_VLAN_QOS_UNSPEC,
b645d2
	IFLA_VLAN_QOS_MAPPING,
b645d2
	__IFLA_VLAN_QOS_MAX
b645d2
};
b645d2
b645d2
#define IFLA_VLAN_QOS_MAX	(__IFLA_VLAN_QOS_MAX - 1)
b645d2
b645d2
struct ifla_vlan_qos_mapping {
b645d2
	__u32 from;
b645d2
	__u32 to;
b645d2
};
b645d2
b645d2
/* MACVLAN section */
b645d2
enum {
b645d2
	IFLA_MACVLAN_UNSPEC,
b645d2
	IFLA_MACVLAN_MODE,
b645d2
	IFLA_MACVLAN_FLAGS,
b645d2
	IFLA_MACVLAN_MACADDR_MODE,
b645d2
	IFLA_MACVLAN_MACADDR,
b645d2
	IFLA_MACVLAN_MACADDR_DATA,
b645d2
	IFLA_MACVLAN_MACADDR_COUNT,
b645d2
	__IFLA_MACVLAN_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
b645d2
b645d2
enum macvlan_mode {
b645d2
	MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
b645d2
	MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
b645d2
	MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
b645d2
	MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
b645d2
	MACVLAN_MODE_SOURCE  = 16,/* use source MAC address list to assign */
b645d2
};
b645d2
b645d2
enum macvlan_macaddr_mode {
b645d2
	MACVLAN_MACADDR_ADD,
b645d2
	MACVLAN_MACADDR_DEL,
b645d2
	MACVLAN_MACADDR_FLUSH,
b645d2
	MACVLAN_MACADDR_SET,
b645d2
};
b645d2
b645d2
#define MACVLAN_FLAG_NOPROMISC	1
b645d2
b645d2
/* VRF section */
b645d2
enum {
b645d2
	IFLA_VRF_UNSPEC,
b645d2
	IFLA_VRF_TABLE,
b645d2
	__IFLA_VRF_MAX
b645d2
};
b645d2
b645d2
#define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
b645d2
b645d2
enum {
b645d2
	IFLA_VRF_PORT_UNSPEC,
b645d2
	IFLA_VRF_PORT_TABLE,
b645d2
	__IFLA_VRF_PORT_MAX
b645d2
};
b645d2
b645d2
#define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
b645d2
b645d2
/* MACSEC section */
b645d2
enum {
b645d2
	IFLA_MACSEC_UNSPEC,
b645d2
	IFLA_MACSEC_SCI,
b645d2
	IFLA_MACSEC_PORT,
b645d2
	IFLA_MACSEC_ICV_LEN,
b645d2
	IFLA_MACSEC_CIPHER_SUITE,
b645d2
	IFLA_MACSEC_WINDOW,
b645d2
	IFLA_MACSEC_ENCODING_SA,
b645d2
	IFLA_MACSEC_ENCRYPT,
b645d2
	IFLA_MACSEC_PROTECT,
b645d2
	IFLA_MACSEC_INC_SCI,
b645d2
	IFLA_MACSEC_ES,
b645d2
	IFLA_MACSEC_SCB,
b645d2
	IFLA_MACSEC_REPLAY_PROTECT,
b645d2
	IFLA_MACSEC_VALIDATION,
b645d2
	IFLA_MACSEC_PAD,
b645d2
	__IFLA_MACSEC_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
b645d2
b645d2
enum macsec_validation_type {
b645d2
	MACSEC_VALIDATE_DISABLED = 0,
b645d2
	MACSEC_VALIDATE_CHECK = 1,
b645d2
	MACSEC_VALIDATE_STRICT = 2,
b645d2
	__MACSEC_VALIDATE_END,
b645d2
	MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
b645d2
};
b645d2
b645d2
/* IPVLAN section */
b645d2
enum {
b645d2
	IFLA_IPVLAN_UNSPEC,
b645d2
	IFLA_IPVLAN_MODE,
b645d2
	__IFLA_IPVLAN_MAX
b645d2
};
b645d2
b645d2
#define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
b645d2
b645d2
enum ipvlan_mode {
b645d2
	IPVLAN_MODE_L2 = 0,
b645d2
	IPVLAN_MODE_L3,
b645d2
	IPVLAN_MODE_L3S,
b645d2
	IPVLAN_MODE_MAX
b645d2
};
b645d2
b645d2
/* VXLAN section */
b645d2
enum {
b645d2
	IFLA_VXLAN_UNSPEC,
b645d2
	IFLA_VXLAN_ID,
b645d2
	IFLA_VXLAN_GROUP,	/* group or remote address */
b645d2
	IFLA_VXLAN_LINK,
b645d2
	IFLA_VXLAN_LOCAL,
b645d2
	IFLA_VXLAN_TTL,
b645d2
	IFLA_VXLAN_TOS,
b645d2
	IFLA_VXLAN_LEARNING,
b645d2
	IFLA_VXLAN_AGEING,
b645d2
	IFLA_VXLAN_LIMIT,
b645d2
	IFLA_VXLAN_PORT_RANGE,	/* source port */
b645d2
	IFLA_VXLAN_PROXY,
b645d2
	IFLA_VXLAN_RSC,
b645d2
	IFLA_VXLAN_L2MISS,
b645d2
	IFLA_VXLAN_L3MISS,
b645d2
	IFLA_VXLAN_PORT,	/* destination port */
b645d2
	IFLA_VXLAN_GROUP6,
b645d2
	IFLA_VXLAN_LOCAL6,
b645d2
	IFLA_VXLAN_UDP_CSUM,
b645d2
	IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
b645d2
	IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
b645d2
	IFLA_VXLAN_REMCSUM_TX,
b645d2
	IFLA_VXLAN_REMCSUM_RX,
b645d2
	IFLA_VXLAN_GBP,
b645d2
	IFLA_VXLAN_REMCSUM_NOPARTIAL,
b645d2
	IFLA_VXLAN_COLLECT_METADATA,
b645d2
	IFLA_VXLAN_LABEL,
b645d2
	IFLA_VXLAN_GPE,
b645d2
	__IFLA_VXLAN_MAX
b645d2
};
b645d2
#define IFLA_VXLAN_MAX	(__IFLA_VXLAN_MAX - 1)
b645d2
b645d2
struct ifla_vxlan_port_range {
b645d2
	__be16	low;
b645d2
	__be16	high;
b645d2
};
b645d2
b645d2
/* GENEVE section */
b645d2
enum {
b645d2
	IFLA_GENEVE_UNSPEC,
b645d2
	IFLA_GENEVE_ID,
b645d2
	IFLA_GENEVE_REMOTE,
b645d2
	IFLA_GENEVE_TTL,
b645d2
	IFLA_GENEVE_TOS,
b645d2
	IFLA_GENEVE_PORT,	/* destination port */
b645d2
	IFLA_GENEVE_COLLECT_METADATA,
b645d2
	IFLA_GENEVE_REMOTE6,
b645d2
	IFLA_GENEVE_UDP_CSUM,
b645d2
	IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
b645d2
	IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
b645d2
	IFLA_GENEVE_LABEL,
b645d2
	__IFLA_GENEVE_MAX
b645d2
};
b645d2
#define IFLA_GENEVE_MAX	(__IFLA_GENEVE_MAX - 1)
b645d2
b645d2
/* PPP section */
b645d2
enum {
b645d2
	IFLA_PPP_UNSPEC,
b645d2
	IFLA_PPP_DEV_FD,
b645d2
	__IFLA_PPP_MAX
b645d2
};
b645d2
#define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
b645d2
b645d2
/* GTP section */
b645d2
enum {
b645d2
	IFLA_GTP_UNSPEC,
b645d2
	IFLA_GTP_FD0,
b645d2
	IFLA_GTP_FD1,
b645d2
	IFLA_GTP_PDP_HASHSIZE,
b645d2
	__IFLA_GTP_MAX,
b645d2
};
b645d2
#define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
b645d2
b645d2
/* Bonding section */
b645d2
b645d2
enum {
b645d2
	IFLA_BOND_UNSPEC,
b645d2
	IFLA_BOND_MODE,
b645d2
	IFLA_BOND_ACTIVE_SLAVE,
b645d2
	IFLA_BOND_MIIMON,
b645d2
	IFLA_BOND_UPDELAY,
b645d2
	IFLA_BOND_DOWNDELAY,
b645d2
	IFLA_BOND_USE_CARRIER,
b645d2
	IFLA_BOND_ARP_INTERVAL,
b645d2
	IFLA_BOND_ARP_IP_TARGET,
b645d2
	IFLA_BOND_ARP_VALIDATE,
b645d2
	IFLA_BOND_ARP_ALL_TARGETS,
b645d2
	IFLA_BOND_PRIMARY,
b645d2
	IFLA_BOND_PRIMARY_RESELECT,
b645d2
	IFLA_BOND_FAIL_OVER_MAC,
b645d2
	IFLA_BOND_XMIT_HASH_POLICY,
b645d2
	IFLA_BOND_RESEND_IGMP,
b645d2
	IFLA_BOND_NUM_PEER_NOTIF,
b645d2
	IFLA_BOND_ALL_SLAVES_ACTIVE,
b645d2
	IFLA_BOND_MIN_LINKS,
b645d2
	IFLA_BOND_LP_INTERVAL,
b645d2
	IFLA_BOND_PACKETS_PER_SLAVE,
b645d2
	IFLA_BOND_AD_LACP_RATE,
b645d2
	IFLA_BOND_AD_SELECT,
b645d2
	IFLA_BOND_AD_INFO,
b645d2
	IFLA_BOND_AD_ACTOR_SYS_PRIO,
b645d2
	IFLA_BOND_AD_USER_PORT_KEY,
b645d2
	IFLA_BOND_AD_ACTOR_SYSTEM,
b645d2
	IFLA_BOND_TLB_DYNAMIC_LB,
b645d2
	__IFLA_BOND_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_BOND_MAX	(__IFLA_BOND_MAX - 1)
b645d2
b645d2
enum {
b645d2
	IFLA_BOND_AD_INFO_UNSPEC,
b645d2
	IFLA_BOND_AD_INFO_AGGREGATOR,
b645d2
	IFLA_BOND_AD_INFO_NUM_PORTS,
b645d2
	IFLA_BOND_AD_INFO_ACTOR_KEY,
b645d2
	IFLA_BOND_AD_INFO_PARTNER_KEY,
b645d2
	IFLA_BOND_AD_INFO_PARTNER_MAC,
b645d2
	__IFLA_BOND_AD_INFO_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_BOND_AD_INFO_MAX	(__IFLA_BOND_AD_INFO_MAX - 1)
b645d2
b645d2
enum {
b645d2
	IFLA_BOND_SLAVE_UNSPEC,
b645d2
	IFLA_BOND_SLAVE_STATE,
b645d2
	IFLA_BOND_SLAVE_MII_STATUS,
b645d2
	IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
b645d2
	IFLA_BOND_SLAVE_PERM_HWADDR,
b645d2
	IFLA_BOND_SLAVE_QUEUE_ID,
b645d2
	IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
b645d2
	IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
b645d2
	IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
b645d2
	__IFLA_BOND_SLAVE_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_BOND_SLAVE_MAX	(__IFLA_BOND_SLAVE_MAX - 1)
b645d2
b645d2
/* SR-IOV virtual function management section */
b645d2
b645d2
enum {
b645d2
	IFLA_VF_INFO_UNSPEC,
b645d2
	IFLA_VF_INFO,
b645d2
	__IFLA_VF_INFO_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
b645d2
b645d2
enum {
b645d2
	IFLA_VF_UNSPEC,
b645d2
	IFLA_VF_MAC,		/* Hardware queue specific attributes */
b645d2
	IFLA_VF_VLAN,		/* VLAN ID and QoS */
b645d2
	IFLA_VF_TX_RATE,	/* Max TX Bandwidth Allocation */
b645d2
	IFLA_VF_SPOOFCHK,	/* Spoof Checking on/off switch */
b645d2
	IFLA_VF_LINK_STATE,	/* link state enable/disable/auto switch */
b645d2
	IFLA_VF_RATE,		/* Min and Max TX Bandwidth Allocation */
b645d2
	IFLA_VF_RSS_QUERY_EN,	/* RSS Redirection Table and Hash Key query
b645d2
				 * on/off switch
b645d2
				 */
b645d2
	IFLA_VF_STATS,		/* network device statistics */
b645d2
	IFLA_VF_TRUST,		/* Trust VF */
b645d2
	IFLA_VF_IB_NODE_GUID,	/* VF Infiniband node GUID */
b645d2
	IFLA_VF_IB_PORT_GUID,	/* VF Infiniband port GUID */
b645d2
	IFLA_VF_VLAN_LIST,	/* nested list of vlans, option for QinQ */
b645d2
	__IFLA_VF_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
b645d2
b645d2
struct ifla_vf_mac {
b645d2
	__u32 vf;
b645d2
	__u8 mac[32]; /* MAX_ADDR_LEN */
b645d2
};
b645d2
b645d2
struct ifla_vf_vlan {
b645d2
	__u32 vf;
b645d2
	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
b645d2
	__u32 qos;
b645d2
};
b645d2
b645d2
enum {
b645d2
	IFLA_VF_VLAN_INFO_UNSPEC,
b645d2
	IFLA_VF_VLAN_INFO,	/* VLAN ID, QoS and VLAN protocol */
b645d2
	__IFLA_VF_VLAN_INFO_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
b645d2
#define MAX_VLAN_LIST_LEN 1
b645d2
b645d2
struct ifla_vf_vlan_info {
b645d2
	__u32 vf;
b645d2
	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
b645d2
	__u32 qos;
b645d2
	__be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
b645d2
};
b645d2
b645d2
struct ifla_vf_tx_rate {
b645d2
	__u32 vf;
b645d2
	__u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
b645d2
};
b645d2
b645d2
struct ifla_vf_rate {
b645d2
	__u32 vf;
b645d2
	__u32 min_tx_rate; /* Min Bandwidth in Mbps */
b645d2
	__u32 max_tx_rate; /* Max Bandwidth in Mbps */
b645d2
};
b645d2
b645d2
struct ifla_vf_spoofchk {
b645d2
	__u32 vf;
b645d2
	__u32 setting;
b645d2
};
b645d2
b645d2
struct ifla_vf_guid {
b645d2
	__u32 vf;
b645d2
	__u64 guid;
b645d2
};
b645d2
b645d2
enum {
b645d2
	IFLA_VF_LINK_STATE_AUTO,	/* link state of the uplink */
b645d2
	IFLA_VF_LINK_STATE_ENABLE,	/* link always up */
b645d2
	IFLA_VF_LINK_STATE_DISABLE,	/* link always down */
b645d2
	__IFLA_VF_LINK_STATE_MAX,
b645d2
};
b645d2
b645d2
struct ifla_vf_link_state {
b645d2
	__u32 vf;
b645d2
	__u32 link_state;
b645d2
};
b645d2
b645d2
struct ifla_vf_rss_query_en {
b645d2
	__u32 vf;
b645d2
	__u32 setting;
b645d2
};
b645d2
b645d2
enum {
b645d2
	IFLA_VF_STATS_RX_PACKETS,
b645d2
	IFLA_VF_STATS_TX_PACKETS,
b645d2
	IFLA_VF_STATS_RX_BYTES,
b645d2
	IFLA_VF_STATS_TX_BYTES,
b645d2
	IFLA_VF_STATS_BROADCAST,
b645d2
	IFLA_VF_STATS_MULTICAST,
b645d2
	IFLA_VF_STATS_PAD,
b645d2
	__IFLA_VF_STATS_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
b645d2
b645d2
struct ifla_vf_trust {
b645d2
	__u32 vf;
b645d2
	__u32 setting;
b645d2
};
b645d2
b645d2
/* VF ports management section
b645d2
 *
b645d2
 *	Nested layout of set/get msg is:
b645d2
 *
b645d2
 *		[IFLA_NUM_VF]
b645d2
 *		[IFLA_VF_PORTS]
b645d2
 *			[IFLA_VF_PORT]
b645d2
 *				[IFLA_PORT_*], ...
b645d2
 *			[IFLA_VF_PORT]
b645d2
 *				[IFLA_PORT_*], ...
b645d2
 *			...
b645d2
 *		[IFLA_PORT_SELF]
b645d2
 *			[IFLA_PORT_*], ...
b645d2
 */
b645d2
b645d2
enum {
b645d2
	IFLA_VF_PORT_UNSPEC,
b645d2
	IFLA_VF_PORT,			/* nest */
b645d2
	__IFLA_VF_PORT_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
b645d2
b645d2
enum {
b645d2
	IFLA_PORT_UNSPEC,
b645d2
	IFLA_PORT_VF,			/* __u32 */
b645d2
	IFLA_PORT_PROFILE,		/* string */
b645d2
	IFLA_PORT_VSI_TYPE,		/* 802.1Qbg (pre-)standard VDP */
b645d2
	IFLA_PORT_INSTANCE_UUID,	/* binary UUID */
b645d2
	IFLA_PORT_HOST_UUID,		/* binary UUID */
b645d2
	IFLA_PORT_REQUEST,		/* __u8 */
b645d2
	IFLA_PORT_RESPONSE,		/* __u16, output only */
b645d2
	__IFLA_PORT_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
b645d2
b645d2
#define PORT_PROFILE_MAX	40
b645d2
#define PORT_UUID_MAX		16
b645d2
#define PORT_SELF_VF		-1
b645d2
b645d2
enum {
b645d2
	PORT_REQUEST_PREASSOCIATE = 0,
b645d2
	PORT_REQUEST_PREASSOCIATE_RR,
b645d2
	PORT_REQUEST_ASSOCIATE,
b645d2
	PORT_REQUEST_DISASSOCIATE,
b645d2
};
b645d2
b645d2
enum {
b645d2
	PORT_VDP_RESPONSE_SUCCESS = 0,
b645d2
	PORT_VDP_RESPONSE_INVALID_FORMAT,
b645d2
	PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
b645d2
	PORT_VDP_RESPONSE_UNUSED_VTID,
b645d2
	PORT_VDP_RESPONSE_VTID_VIOLATION,
b645d2
	PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
b645d2
	PORT_VDP_RESPONSE_OUT_OF_SYNC,
b645d2
	/* 0x08-0xFF reserved for future VDP use */
b645d2
	PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
b645d2
	PORT_PROFILE_RESPONSE_INPROGRESS,
b645d2
	PORT_PROFILE_RESPONSE_INVALID,
b645d2
	PORT_PROFILE_RESPONSE_BADSTATE,
b645d2
	PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
b645d2
	PORT_PROFILE_RESPONSE_ERROR,
b645d2
};
b645d2
b645d2
struct ifla_port_vsi {
b645d2
	__u8 vsi_mgr_id;
b645d2
	__u8 vsi_type_id[3];
b645d2
	__u8 vsi_type_version;
b645d2
	__u8 pad[3];
b645d2
};
b645d2
b645d2
b645d2
/* IPoIB section */
b645d2
b645d2
enum {
b645d2
	IFLA_IPOIB_UNSPEC,
b645d2
	IFLA_IPOIB_PKEY,
b645d2
	IFLA_IPOIB_MODE,
b645d2
	IFLA_IPOIB_UMCAST,
b645d2
	__IFLA_IPOIB_MAX
b645d2
};
b645d2
b645d2
enum {
b645d2
	IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
b645d2
	IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
b645d2
};
b645d2
b645d2
#define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
b645d2
b645d2
b645d2
/* HSR section */
b645d2
b645d2
enum {
b645d2
	IFLA_HSR_UNSPEC,
b645d2
	IFLA_HSR_SLAVE1,
b645d2
	IFLA_HSR_SLAVE2,
b645d2
	IFLA_HSR_MULTICAST_SPEC,	/* Last byte of supervision addr */
b645d2
	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
b645d2
	IFLA_HSR_SEQ_NR,
b645d2
	IFLA_HSR_VERSION,		/* HSR version */
b645d2
	__IFLA_HSR_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
b645d2
b645d2
/* STATS section */
b645d2
b645d2
struct if_stats_msg {
b645d2
	__u8  family;
b645d2
	__u8  pad1;
b645d2
	__u16 pad2;
b645d2
	__u32 ifindex;
b645d2
	__u32 filter_mask;
b645d2
};
b645d2
b645d2
/* A stats attribute can be netdev specific or a global stat.
b645d2
 * For netdev stats, lets use the prefix IFLA_STATS_LINK_*
b645d2
 */
b645d2
enum {
b645d2
	IFLA_STATS_UNSPEC, /* also used as 64bit pad attribute */
b645d2
	IFLA_STATS_LINK_64,
b645d2
	IFLA_STATS_LINK_XSTATS,
b645d2
	IFLA_STATS_LINK_XSTATS_SLAVE,
b645d2
	IFLA_STATS_LINK_OFFLOAD_XSTATS,
b645d2
	__IFLA_STATS_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
b645d2
b645d2
#define IFLA_STATS_FILTER_BIT(ATTR)	(1 << (ATTR - 1))
b645d2
b645d2
/* These are embedded into IFLA_STATS_LINK_XSTATS:
b645d2
 * [IFLA_STATS_LINK_XSTATS]
b645d2
 * -> [LINK_XSTATS_TYPE_xxx]
b645d2
 *    -> [rtnl link type specific attributes]
b645d2
 */
b645d2
enum {
b645d2
	LINK_XSTATS_TYPE_UNSPEC,
b645d2
	LINK_XSTATS_TYPE_BRIDGE,
b645d2
	__LINK_XSTATS_TYPE_MAX
b645d2
};
b645d2
#define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
b645d2
b645d2
/* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
b645d2
enum {
b645d2
	IFLA_OFFLOAD_XSTATS_UNSPEC,
b645d2
	IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
b645d2
	__IFLA_OFFLOAD_XSTATS_MAX
b645d2
};
b645d2
#define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
b645d2
b645d2
/* XDP section */
b645d2
b645d2
#define XDP_FLAGS_UPDATE_IF_NOEXIST	(1U << 0)
b645d2
#define XDP_FLAGS_MASK			(XDP_FLAGS_UPDATE_IF_NOEXIST)
b645d2
b645d2
enum {
b645d2
	IFLA_XDP_UNSPEC,
b645d2
	IFLA_XDP_FD,
b645d2
	IFLA_XDP_ATTACHED,
b645d2
	IFLA_XDP_FLAGS,
b645d2
	__IFLA_XDP_MAX,
b645d2
};
b645d2
b645d2
#define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
b645d2
b645d2
#endif /* _UAPI_LINUX_IF_LINK_H */