Blame include/uapi/linux/if_link.h

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