xref: /freebsd/sys/netlink/route/interface.h (revision c344eff9)
17e5bf684SAlexander V. Chernikov /*-
24d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
37e5bf684SAlexander V. Chernikov  *
47e5bf684SAlexander V. Chernikov  * Copyright (c) 2022 Alexander V. Chernikov <melifaro@FreeBSD.org>
57e5bf684SAlexander V. Chernikov  *
67e5bf684SAlexander V. Chernikov  * Redistribution and use in source and binary forms, with or without
77e5bf684SAlexander V. Chernikov  * modification, are permitted provided that the following conditions
87e5bf684SAlexander V. Chernikov  * are met:
97e5bf684SAlexander V. Chernikov  * 1. Redistributions of source code must retain the above copyright
107e5bf684SAlexander V. Chernikov  *    notice, this list of conditions and the following disclaimer.
117e5bf684SAlexander V. Chernikov  * 2. Redistributions in binary form must reproduce the above copyright
127e5bf684SAlexander V. Chernikov  *    notice, this list of conditions and the following disclaimer in the
137e5bf684SAlexander V. Chernikov  *    documentation and/or other materials provided with the distribution.
147e5bf684SAlexander V. Chernikov  *
157e5bf684SAlexander V. Chernikov  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
167e5bf684SAlexander V. Chernikov  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
177e5bf684SAlexander V. Chernikov  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
187e5bf684SAlexander V. Chernikov  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
197e5bf684SAlexander V. Chernikov  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
207e5bf684SAlexander V. Chernikov  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
217e5bf684SAlexander V. Chernikov  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
227e5bf684SAlexander V. Chernikov  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
237e5bf684SAlexander V. Chernikov  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
247e5bf684SAlexander V. Chernikov  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
257e5bf684SAlexander V. Chernikov  * SUCH DAMAGE.
267e5bf684SAlexander V. Chernikov  */
277e5bf684SAlexander V. Chernikov 
287e5bf684SAlexander V. Chernikov /*
297e5bf684SAlexander V. Chernikov  * Interface-related (RTM_<NEW|DEL|GET|SET>LINK) message header and attributes.
307e5bf684SAlexander V. Chernikov  */
317e5bf684SAlexander V. Chernikov 
327e5bf684SAlexander V. Chernikov #ifndef _NETLINK_ROUTE_INTERFACE_H_
337e5bf684SAlexander V. Chernikov #define _NETLINK_ROUTE_INTERFACE_H_
347e5bf684SAlexander V. Chernikov 
357e5bf684SAlexander V. Chernikov /* Base header for all of the relevant messages */
367e5bf684SAlexander V. Chernikov struct ifinfomsg {
377e5bf684SAlexander V. Chernikov 	unsigned char	ifi_family;	/* not used */
387e5bf684SAlexander V. Chernikov 	unsigned char	__ifi_pad;
397e5bf684SAlexander V. Chernikov 	unsigned short	ifi_type;	/* ARPHRD_* */
407e5bf684SAlexander V. Chernikov 	int		ifi_index;	/* Inteface index */
417e5bf684SAlexander V. Chernikov 	unsigned	ifi_flags;	/* IFF_* flags */
427e5bf684SAlexander V. Chernikov 	unsigned	ifi_change;	/* IFF_* change mask */
437e5bf684SAlexander V. Chernikov };
447e5bf684SAlexander V. Chernikov 
451bcd230fSAlexander V. Chernikov /* Linux-specific link-level state flag */
461bcd230fSAlexander V. Chernikov #define	IFF_LOWER_UP	IFF_NETLINK_1
471bcd230fSAlexander V. Chernikov 
487e5bf684SAlexander V. Chernikov #ifndef _KERNEL
497e5bf684SAlexander V. Chernikov /* Compatilbility helpers */
507e5bf684SAlexander V. Chernikov #define	_IFINFO_HDRLEN		((int)sizeof(struct ifinfomsg))
517e5bf684SAlexander V. Chernikov #define	IFLA_RTA(_ifi)		((struct rtattr *)NL_ITEM_DATA(_ifi, _IFINFO_HDRLEN))
527e5bf684SAlexander V. Chernikov #define	IFLA_PAYLOAD(_ifi)	NLMSG_PAYLOAD(_ifi, _IFINFO_HDRLEN)
537e5bf684SAlexander V. Chernikov #endif
547e5bf684SAlexander V. Chernikov 
557e5bf684SAlexander V. Chernikov enum {
567e5bf684SAlexander V. Chernikov 	IFLA_UNSPEC	= 0,
577e5bf684SAlexander V. Chernikov 	IFLA_ADDRESS	= 1,	/* binary: Link-level address (MAC) */
587e5bf684SAlexander V. Chernikov #define	IFLA_ADDRESS IFLA_ADDRESS
597e5bf684SAlexander V. Chernikov 	IFLA_BROADCAST	= 2,	/* binary: link-level broadcast address */
607e5bf684SAlexander V. Chernikov #define	IFLA_BROADCAST IFLA_BROADCAST
617e5bf684SAlexander V. Chernikov 	IFLA_IFNAME	= 3,	/* string: Interface name */
627e5bf684SAlexander V. Chernikov #define	IFLA_IFNAME IFLA_IFNAME
637e5bf684SAlexander V. Chernikov 	IFLA_MTU	= 4,	/* u32: Current interface L3 mtu */
647e5bf684SAlexander V. Chernikov #define	IFLA_MTU IFLA_MTU
657e5bf684SAlexander V. Chernikov 	IFLA_LINK	= 5,	/* u32: interface index */
667e5bf684SAlexander V. Chernikov #define	IFLA_LINK IFLA_LINK
677e5bf684SAlexander V. Chernikov 	IFLA_QDISC	= 6,	/* string: Queing policy (not supported) */
687e5bf684SAlexander V. Chernikov #define	IFLA_QDISC IFLA_QDISC
697e5bf684SAlexander V. Chernikov 	IFLA_STATS	= 7,	/* Interface counters */
707e5bf684SAlexander V. Chernikov #define	IFLA_STATS IFLA_STATS
717e5bf684SAlexander V. Chernikov 	IFLA_COST	= 8,	/* not supported */
727e5bf684SAlexander V. Chernikov #define IFLA_COST IFLA_COST
737e5bf684SAlexander V. Chernikov 	IFLA_PRIORITY	= 9,	/* not supported */
747e5bf684SAlexander V. Chernikov #define IFLA_PRIORITY IFLA_PRIORITY
757e5bf684SAlexander V. Chernikov 	IFLA_MASTER	= 10,	/* u32: parent interface ifindex */
767e5bf684SAlexander V. Chernikov #define IFLA_MASTER IFLA_MASTER
777e5bf684SAlexander V. Chernikov 	IFLA_WIRELESS	= 11,	/* not supported */
787e5bf684SAlexander V. Chernikov #define IFLA_WIRELESS IFLA_WIRELESS
797e5bf684SAlexander V. Chernikov 	IFLA_PROTINFO	= 12,	/* protocol-specific data */
807e5bf684SAlexander V. Chernikov #define IFLA_PROTINFO IFLA_PROTINFO
817e5bf684SAlexander V. Chernikov 	IFLA_TXQLEN	= 13,	/* u32: transmit queue length */
827e5bf684SAlexander V. Chernikov #define IFLA_TXQLEN IFLA_TXQLEN
837e5bf684SAlexander V. Chernikov 	IFLA_MAP	= 14,	/* not supported */
847e5bf684SAlexander V. Chernikov #define IFLA_MAP IFLA_MAP
857e5bf684SAlexander V. Chernikov 	IFLA_WEIGHT	= 15,	/* not supported */
867e5bf684SAlexander V. Chernikov #define IFLA_WEIGHT IFLA_WEIGHT
877e5bf684SAlexander V. Chernikov 	IFLA_OPERSTATE	= 16,	/* u8: ifOperStatus per RFC 2863 */
887e5bf684SAlexander V. Chernikov #define	IFLA_OPERSTATE IFLA_OPERSTATE
897e5bf684SAlexander V. Chernikov 	IFLA_LINKMODE	= 17,	/* u8: ifmedia (not supported) */
907e5bf684SAlexander V. Chernikov #define	IFLA_LINKMODE IFLA_LINKMODE
917e5bf684SAlexander V. Chernikov 	IFLA_LINKINFO	= 18,	/* nested: IFLA_INFO_ */
927e5bf684SAlexander V. Chernikov #define IFLA_LINKINFO IFLA_LINKINFO
937e5bf684SAlexander V. Chernikov 	IFLA_NET_NS_PID	= 19,	/* u32: vnet id (not supported) */
947e5bf684SAlexander V. Chernikov #define	IFLA_NET_NS_PID IFLA_NET_NS_PID
9580f03e63SAlexander V. Chernikov 	IFLA_IFALIAS	= 20,	/* string: interface description */
967e5bf684SAlexander V. Chernikov #define	IFLA_IFALIAS IFLA_IFALIAS
977e5bf684SAlexander V. Chernikov 	IFLA_NUM_VF	= 21,	/* not supported */
987e5bf684SAlexander V. Chernikov #define	IFLA_NUM_VF IFLA_NUM_VF
997e5bf684SAlexander V. Chernikov 	IFLA_VFINFO_LIST= 22,	/* not supported */
1007e5bf684SAlexander V. Chernikov #define	IFLA_VFINFO_LIST IFLA_VFINFO_LIST
1017e5bf684SAlexander V. Chernikov 	IFLA_STATS64	= 23,	/* rtnl_link_stats64: iface stats */
1027e5bf684SAlexander V. Chernikov #define	IFLA_STATS64 IFLA_STATS64
1037e5bf684SAlexander V. Chernikov 	IFLA_VF_PORTS,
1047e5bf684SAlexander V. Chernikov 	IFLA_PORT_SELF,
1057e5bf684SAlexander V. Chernikov 	IFLA_AF_SPEC,
1067e5bf684SAlexander V. Chernikov 	IFLA_GROUP, /* Group the device belongs to */
1077e5bf684SAlexander V. Chernikov 	IFLA_NET_NS_FD,
1087e5bf684SAlexander V. Chernikov 	IFLA_EXT_MASK,	  /* Extended info mask, VFs, etc */
1097e5bf684SAlexander V. Chernikov 	IFLA_PROMISCUITY, /* Promiscuity count: > 0 means acts PROMISC */
1107e5bf684SAlexander V. Chernikov #define IFLA_PROMISCUITY IFLA_PROMISCUITY
1117e5bf684SAlexander V. Chernikov 	IFLA_NUM_TX_QUEUES,
1127e5bf684SAlexander V. Chernikov 	IFLA_NUM_RX_QUEUES,
1137e5bf684SAlexander V. Chernikov 	IFLA_CARRIER,
1147e5bf684SAlexander V. Chernikov 	IFLA_PHYS_PORT_ID,
1157e5bf684SAlexander V. Chernikov 	IFLA_CARRIER_CHANGES,
1167e5bf684SAlexander V. Chernikov 	IFLA_PHYS_SWITCH_ID,
1177e5bf684SAlexander V. Chernikov 	IFLA_LINK_NETNSID,
1187e5bf684SAlexander V. Chernikov 	IFLA_PHYS_PORT_NAME,
1197e5bf684SAlexander V. Chernikov 	IFLA_PROTO_DOWN,
1207e5bf684SAlexander V. Chernikov 	IFLA_GSO_MAX_SEGS,
1217e5bf684SAlexander V. Chernikov 	IFLA_GSO_MAX_SIZE,
1227e5bf684SAlexander V. Chernikov 	IFLA_PAD,
1237e5bf684SAlexander V. Chernikov 	IFLA_XDP,
1247e5bf684SAlexander V. Chernikov 	IFLA_EVENT,
1257e5bf684SAlexander V. Chernikov 	IFLA_NEW_NETNSID,
1267e5bf684SAlexander V. Chernikov 	IFLA_IF_NETNSID,
1277e5bf684SAlexander V. Chernikov 	IFLA_TARGET_NETNSID = IFLA_IF_NETNSID, /* new alias */
1287e5bf684SAlexander V. Chernikov 	IFLA_CARRIER_UP_COUNT,
1297e5bf684SAlexander V. Chernikov 	IFLA_CARRIER_DOWN_COUNT,
1307e5bf684SAlexander V. Chernikov 	IFLA_NEW_IFINDEX,
1317e5bf684SAlexander V. Chernikov 	IFLA_MIN_MTU,
1327e5bf684SAlexander V. Chernikov 	IFLA_MAX_MTU,
1337e5bf684SAlexander V. Chernikov 	IFLA_PROP_LIST,
1347e5bf684SAlexander V. Chernikov 	IFLA_ALT_IFNAME, /* Alternative ifname */
1357e5bf684SAlexander V. Chernikov 	IFLA_PERM_ADDRESS,
1367e5bf684SAlexander V. Chernikov 	IFLA_PROTO_DOWN_REASON,
13728abf632SAlexander V. Chernikov 	IFLA_PARENT_DEV_NAME,
13828abf632SAlexander V. Chernikov 	IFLA_PARENT_DEV_BUS_NAME,
13928abf632SAlexander V. Chernikov 	IFLA_GRO_MAX_SIZE,
14028abf632SAlexander V. Chernikov 	IFLA_TSO_MAX_SEGS,
14128abf632SAlexander V. Chernikov 	IFLA_ALLMULTI,
14228abf632SAlexander V. Chernikov 	IFLA_DEVLINK_PORT,
14328abf632SAlexander V. Chernikov 	IFLA_GSO_IPV4_MAX_SIZE,
14428abf632SAlexander V. Chernikov 	IFLA_GRO_IPV4_MAX_SIZE,
1453c851dc1SAlexander V. Chernikov 	IFLA_FREEBSD,
1467e5bf684SAlexander V. Chernikov 	__IFLA_MAX
1477e5bf684SAlexander V. Chernikov };
1487e5bf684SAlexander V. Chernikov #define IFLA_MAX (__IFLA_MAX - 1)
1497e5bf684SAlexander V. Chernikov 
1503c851dc1SAlexander V. Chernikov enum {
1513c851dc1SAlexander V. Chernikov 	IFLAF_UNSPEC		= 0,
1523c851dc1SAlexander V. Chernikov 	IFLAF_ORIG_IFNAME	= 1,	/* string, original interface name at creation */
1533c851dc1SAlexander V. Chernikov 	IFLAF_ORIG_HWADDR	= 2,	/* binary, original hardware address */
154c344eff9SAlexander V. Chernikov 	IFLAF_CAPS		= 3,	/* bitset, interface capabilities */
1553c851dc1SAlexander V. Chernikov 	__IFLAF_MAX
1563c851dc1SAlexander V. Chernikov };
1573c851dc1SAlexander V. Chernikov #define IFLAF_MAX (__IFLAF_MAX - 1)
1583c851dc1SAlexander V. Chernikov 
1597e5bf684SAlexander V. Chernikov /*
1607e5bf684SAlexander V. Chernikov  * Attributes that can be used as filters:
1617e5bf684SAlexander V. Chernikov  *  IFLA_IFNAME, IFLA_GROUP, IFLA_ALT_IFNAME
1627e5bf684SAlexander V. Chernikov  * Headers that can be used as filters:
1637e5bf684SAlexander V. Chernikov  *  ifi_index, ifi_type
1647e5bf684SAlexander V. Chernikov  */
1657e5bf684SAlexander V. Chernikov 
1667e5bf684SAlexander V. Chernikov /*
1677e5bf684SAlexander V. Chernikov  * IFLA_OPERSTATE.
1687e5bf684SAlexander V. Chernikov  * The values below represent the possible
1697e5bf684SAlexander V. Chernikov  * states of ifOperStatus defined by RFC 2863
1707e5bf684SAlexander V. Chernikov  */
1717e5bf684SAlexander V. Chernikov enum {
1727e5bf684SAlexander V. Chernikov 	IF_OPER_UNKNOWN		= 0, /* status can not be determined */
1737e5bf684SAlexander V. Chernikov 	IF_OPER_NOTPRESENT	= 1, /* some (hardware) component not present */
1747e5bf684SAlexander V. Chernikov 	IF_OPER_DOWN		= 2, /* down */
1757e5bf684SAlexander V. Chernikov 	IF_OPER_LOWERLAYERDOWN	= 3, /* some lower-level interface is down */
1767e5bf684SAlexander V. Chernikov 	IF_OPER_TESTING		= 4, /* in some test mode */
1777e5bf684SAlexander V. Chernikov 	IF_OPER_DORMANT		= 5, /* "up" but waiting for some condition (802.1X) */
1787e5bf684SAlexander V. Chernikov 	IF_OPER_UP		= 6, /* ready to pass packets */
1797e5bf684SAlexander V. Chernikov };
1807e5bf684SAlexander V. Chernikov 
1817e5bf684SAlexander V. Chernikov /* IFLA_STATS */
1827e5bf684SAlexander V. Chernikov struct rtnl_link_stats {
1837e5bf684SAlexander V. Chernikov 	uint32_t rx_packets;	/* total RX packets (IFCOUNTER_IPACKETS) */
1847e5bf684SAlexander V. Chernikov 	uint32_t tx_packets;	/* total TX packets (IFCOUNTER_OPACKETS) */
1857e5bf684SAlexander V. Chernikov 	uint32_t rx_bytes;	/* total RX bytes (IFCOUNTER_IBYTES) */
1867e5bf684SAlexander V. Chernikov 	uint32_t tx_bytes;	/* total TX bytes (IFCOUNTER_OBYTES) */
1877e5bf684SAlexander V. Chernikov 	uint32_t rx_errors;	/* RX errors (IFCOUNTER_IERRORS) */
1887e5bf684SAlexander V. Chernikov 	uint32_t tx_errors;	/* RX errors (IFCOUNTER_OERRORS) */
1897e5bf684SAlexander V. Chernikov 	uint32_t rx_dropped;	/* RX drop (no space in ring/no bufs) (IFCOUNTER_IQDROPS) */
1907e5bf684SAlexander V. Chernikov 	uint32_t tx_dropped;	/* TX drop (IFCOUNTER_OQDROPS) */
1917e5bf684SAlexander V. Chernikov 	uint32_t multicast;	/* RX multicast packets (IFCOUNTER_IMCASTS) */
1927e5bf684SAlexander V. Chernikov 	uint32_t collisions;	/* not supported */
1937e5bf684SAlexander V. Chernikov 	uint32_t rx_length_errors;	/* not supported */
1947e5bf684SAlexander V. Chernikov 	uint32_t rx_over_errors;	/* not supported */
1957e5bf684SAlexander V. Chernikov 	uint32_t rx_crc_errors;		/* not supported */
1967e5bf684SAlexander V. Chernikov 	uint32_t rx_frame_errors;	/* not supported */
1977e5bf684SAlexander V. Chernikov 	uint32_t rx_fifo_errors;	/* not supported */
1987e5bf684SAlexander V. Chernikov 	uint32_t rx_missed_errors;	/* not supported */
1997e5bf684SAlexander V. Chernikov 	uint32_t tx_aborted_errors;	/* not supported */
2007e5bf684SAlexander V. Chernikov 	uint32_t tx_carrier_errors;	/* not supported */
2017e5bf684SAlexander V. Chernikov 	uint32_t tx_fifo_errors;	/* not supported */
2027e5bf684SAlexander V. Chernikov 	uint32_t tx_heartbeat_errors;	/* not supported */
2037e5bf684SAlexander V. Chernikov 	uint32_t tx_window_errors;	/* not supported */
2047e5bf684SAlexander V. Chernikov 	uint32_t rx_compressed;		/* not supported */
2057e5bf684SAlexander V. Chernikov 	uint32_t tx_compressed;		/* not supported */
2067e5bf684SAlexander V. Chernikov 	uint32_t rx_nohandler;	/* dropped due to no proto handler (IFCOUNTER_NOPROTO) */
2077e5bf684SAlexander V. Chernikov };
2087e5bf684SAlexander V. Chernikov 
2097e5bf684SAlexander V. Chernikov /* IFLA_STATS64 */
2107e5bf684SAlexander V. Chernikov struct rtnl_link_stats64 {
2117e5bf684SAlexander V. Chernikov 	uint64_t rx_packets;	/* total RX packets (IFCOUNTER_IPACKETS) */
2127e5bf684SAlexander V. Chernikov 	uint64_t tx_packets;	/* total TX packets (IFCOUNTER_OPACKETS) */
2137e5bf684SAlexander V. Chernikov 	uint64_t rx_bytes;	/* total RX bytes (IFCOUNTER_IBYTES) */
2147e5bf684SAlexander V. Chernikov 	uint64_t tx_bytes;	/* total TX bytes (IFCOUNTER_OBYTES) */
2157e5bf684SAlexander V. Chernikov 	uint64_t rx_errors;	/* RX errors (IFCOUNTER_IERRORS) */
2167e5bf684SAlexander V. Chernikov 	uint64_t tx_errors;	/* RX errors (IFCOUNTER_OERRORS) */
2177e5bf684SAlexander V. Chernikov 	uint64_t rx_dropped;	/* RX drop (no space in ring/no bufs) (IFCOUNTER_IQDROPS) */
2187e5bf684SAlexander V. Chernikov 	uint64_t tx_dropped;	/* TX drop (IFCOUNTER_OQDROPS) */
2197e5bf684SAlexander V. Chernikov 	uint64_t multicast;	/* RX multicast packets (IFCOUNTER_IMCASTS) */
2207e5bf684SAlexander V. Chernikov 	uint64_t collisions;	/* not supported */
2217e5bf684SAlexander V. Chernikov 	uint64_t rx_length_errors;	/* not supported */
2227e5bf684SAlexander V. Chernikov 	uint64_t rx_over_errors;	/* not supported */
2237e5bf684SAlexander V. Chernikov 	uint64_t rx_crc_errors;		/* not supported */
2247e5bf684SAlexander V. Chernikov 	uint64_t rx_frame_errors;	/* not supported */
2257e5bf684SAlexander V. Chernikov 	uint64_t rx_fifo_errors;	/* not supported */
2267e5bf684SAlexander V. Chernikov 	uint64_t rx_missed_errors;	/* not supported */
2277e5bf684SAlexander V. Chernikov 	uint64_t tx_aborted_errors;	/* not supported */
2287e5bf684SAlexander V. Chernikov 	uint64_t tx_carrier_errors;	/* not supported */
2297e5bf684SAlexander V. Chernikov 	uint64_t tx_fifo_errors;	/* not supported */
2307e5bf684SAlexander V. Chernikov 	uint64_t tx_heartbeat_errors;	/* not supported */
2317e5bf684SAlexander V. Chernikov 	uint64_t tx_window_errors;	/* not supported */
2327e5bf684SAlexander V. Chernikov 	uint64_t rx_compressed;		/* not supported */
2337e5bf684SAlexander V. Chernikov 	uint64_t tx_compressed;		/* not supported */
2347e5bf684SAlexander V. Chernikov 	uint64_t rx_nohandler;	/* dropped due to no proto handler (IFCOUNTER_NOPROTO) */
2357e5bf684SAlexander V. Chernikov };
2367e5bf684SAlexander V. Chernikov 
2377e5bf684SAlexander V. Chernikov /* IFLA_LINKINFO child nlattr types */
2387e5bf684SAlexander V. Chernikov enum {
2397e5bf684SAlexander V. Chernikov 	IFLA_INFO_UNSPEC,
2407e5bf684SAlexander V. Chernikov 	IFLA_INFO_KIND		= 1, /* string, link type ("vlan") */
2417e5bf684SAlexander V. Chernikov 	IFLA_INFO_DATA		= 2, /* Per-link-type custom data */
2427e5bf684SAlexander V. Chernikov 	IFLA_INFO_XSTATS	= 3,
2437e5bf684SAlexander V. Chernikov 	IFLA_INFO_SLAVE_KIND	= 4,
2447e5bf684SAlexander V. Chernikov 	IFLA_INFO_SLAVE_DATA	= 5,
2457e5bf684SAlexander V. Chernikov 	__IFLA_INFO_MAX,
2467e5bf684SAlexander V. Chernikov };
2477e5bf684SAlexander V. Chernikov #define IFLA_INFO_MAX	(__IFLA_INFO_MAX - 1)
2487e5bf684SAlexander V. Chernikov 
2497e5bf684SAlexander V. Chernikov /* IFLA_INFO_DATA vlan attributes */
2507e5bf684SAlexander V. Chernikov enum {
2517e5bf684SAlexander V. Chernikov 	IFLA_VLAN_UNSPEC,
2527e5bf684SAlexander V. Chernikov 	IFLA_VLAN_ID,
2537e5bf684SAlexander V. Chernikov 	IFLA_VLAN_FLAGS,
2547e5bf684SAlexander V. Chernikov 	IFLA_VLAN_EGRESS_QOS,
2557e5bf684SAlexander V. Chernikov 	IFLA_VLAN_INGRESS_QOS,
2567e5bf684SAlexander V. Chernikov 	IFLA_VLAN_PROTOCOL,
2577e5bf684SAlexander V. Chernikov 	__IFLA_VLAN_MAX,
2587e5bf684SAlexander V. Chernikov };
2597e5bf684SAlexander V. Chernikov 
2607e5bf684SAlexander V. Chernikov #define IFLA_VLAN_MAX	(__IFLA_VLAN_MAX - 1)
2617e5bf684SAlexander V. Chernikov struct ifla_vlan_flags {
2627e5bf684SAlexander V. Chernikov 	uint32_t flags;
2637e5bf684SAlexander V. Chernikov 	uint32_t mask;
2647e5bf684SAlexander V. Chernikov };
2657e5bf684SAlexander V. Chernikov 
2667e5bf684SAlexander V. Chernikov #endif
267