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 */ 154*c344eff9SAlexander 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