1ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#ifndef _LINUX_IF_LINK_H
2ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define _LINUX_IF_LINK_H
3ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
467881151423f1173ddc31e4f27d736044c2c9a96Stephen Hemminger#include <linux/types.h>
5ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#include <linux/netlink.h>
6ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
704a9fc0a50f9a7677f22c9746cf2f4aadc2c8257Stephen Hemminger/* This struct should be in sync with struct rtnl_link_stats64 */
8ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct rtnl_link_stats {
9ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	rx_packets;		/* total packets received	*/
10ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	tx_packets;		/* total packets transmitted	*/
11ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	rx_bytes;		/* total bytes received 	*/
12ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	tx_bytes;		/* total bytes transmitted	*/
13ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	rx_errors;		/* bad packets received		*/
14ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	tx_errors;		/* packet transmit problems	*/
15ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	rx_dropped;		/* no space in linux buffers	*/
16ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	tx_dropped;		/* no space available in linux	*/
17ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	multicast;		/* multicast packets received	*/
18ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	collisions;
19ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
20ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	/* detailed rx_errors: */
21ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	rx_length_errors;
22ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	rx_over_errors;		/* receiver ring buff overflow	*/
23ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	rx_crc_errors;		/* recved pkt with crc error	*/
24ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	rx_frame_errors;	/* recv'd frame alignment error */
25ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	rx_fifo_errors;		/* recv'r fifo overrun		*/
26ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	rx_missed_errors;	/* receiver missed packet	*/
27ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
28ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	/* detailed tx_errors */
29ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	tx_aborted_errors;
30ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	tx_carrier_errors;
31ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	tx_fifo_errors;
32ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	tx_heartbeat_errors;
33ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	tx_window_errors;
34ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
35ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	/* for cslip etc */
36ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	rx_compressed;
37ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	tx_compressed;
38ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger};
39ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
4004a9fc0a50f9a7677f22c9746cf2f4aadc2c8257Stephen Hemminger/* The main device statistics structure */
41b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemmingerstruct rtnl_link_stats64 {
42b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	rx_packets;		/* total packets received	*/
43b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	tx_packets;		/* total packets transmitted	*/
44b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	rx_bytes;		/* total bytes received 	*/
45b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	tx_bytes;		/* total bytes transmitted	*/
46b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	rx_errors;		/* bad packets received		*/
47b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	tx_errors;		/* packet transmit problems	*/
48b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	rx_dropped;		/* no space in linux buffers	*/
49b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	tx_dropped;		/* no space available in linux	*/
50b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	multicast;		/* multicast packets received	*/
51b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	collisions;
52b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
53b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	/* detailed rx_errors: */
54b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	rx_length_errors;
55b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	rx_over_errors;		/* receiver ring buff overflow	*/
56b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	rx_crc_errors;		/* recved pkt with crc error	*/
57b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	rx_frame_errors;	/* recv'd frame alignment error */
58b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	rx_fifo_errors;		/* recv'r fifo overrun		*/
59b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	rx_missed_errors;	/* receiver missed packet	*/
60b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
61b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	/* detailed tx_errors */
62b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	tx_aborted_errors;
63b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	tx_carrier_errors;
64b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	tx_fifo_errors;
65b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	tx_heartbeat_errors;
66b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	tx_window_errors;
67b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
68b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	/* for cslip etc */
69b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	rx_compressed;
70b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u64	tx_compressed;
71b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger};
72b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
73ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger/* The struct should be in sync with struct ifmap */
74ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct rtnl_link_ifmap {
75ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u64	mem_start;
76ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u64	mem_end;
77ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u64	base_addr;
78ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u16	irq;
79ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u8	dma;
80ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u8	port;
81ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger};
82ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
839351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger/*
849351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger * IFLA_AF_SPEC
859351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *   Contains nested attributes for address family specific attributes.
869351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *   Each address family may create a attribute with the address family
879351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *   number as type and create its own attribute structure in it.
889351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *
899351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *   Example:
909351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *   [IFLA_AF_SPEC] = {
919351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *       [AF_INET] = {
929351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *           [IFLA_INET_CONF] = ...,
939351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *       },
949351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *       [AF_INET6] = {
959351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *           [IFLA_INET6_FLAGS] = ...,
969351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *           [IFLA_INET6_CONF] = ...,
979351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *       }
989351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger *   }
999351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger */
1009351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger
101ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum {
102ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_UNSPEC,
103ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_ADDRESS,
104ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_BROADCAST,
105ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_IFNAME,
106ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_MTU,
107ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_LINK,
108ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_QDISC,
109ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_STATS,
110ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_COST,
111ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_COST IFLA_COST
112ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_PRIORITY,
113ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_PRIORITY IFLA_PRIORITY
114ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_MASTER,
115ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_MASTER IFLA_MASTER
116ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_WIRELESS,		/* Wireless Extension event - see wireless.h */
117ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_WIRELESS IFLA_WIRELESS
118ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_PROTINFO,		/* Protocol specific information for a link */
119ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_PROTINFO IFLA_PROTINFO
120ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_TXQLEN,
121ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_TXQLEN IFLA_TXQLEN
122ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_MAP,
123ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_MAP IFLA_MAP
124ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_WEIGHT,
125ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_WEIGHT IFLA_WEIGHT
126ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_OPERSTATE,
127ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_LINKMODE,
128a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	IFLA_LINKINFO,
129a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger#define IFLA_LINKINFO IFLA_LINKINFO
1305472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	IFLA_NET_NS_PID,
13105bfd165958d1859275b0158fedcb00cea58ad0dStephen Hemminger	IFLA_IFALIAS,
1328ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger	IFLA_NUM_VF,		/* Number of VFs if device is SR-IOV PF */
133a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger	IFLA_VFINFO_LIST,
134b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_STATS64,
135b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_VF_PORTS,
136b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_PORT_SELF,
1379351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger	IFLA_AF_SPEC,
13821cfb5e1d9dfce7612ba622bcaf8e301268a35c8Stephen Hemminger	IFLA_GROUP,		/* Group the device belongs to */
139e760a19a437997820f16846636c0db23faa6d3baStephen Hemminger	IFLA_NET_NS_FD,
140c23abafbdcdd3754bea50f1452fed36da5515379Stephen Hemminger	IFLA_EXT_MASK,		/* Extended info mask, VFs, etc */
141ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__IFLA_MAX
142ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger};
143ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
144ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
145ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_MAX (__IFLA_MAX - 1)
146ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
1475a8ba228620604880f47d9087d7c5cdbebb12ffdStephen Hemminger/* backwards compatibility for userspace */
1485a8ba228620604880f47d9087d7c5cdbebb12ffdStephen Hemminger#define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
1495a8ba228620604880f47d9087d7c5cdbebb12ffdStephen Hemminger#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
1505a8ba228620604880f47d9087d7c5cdbebb12ffdStephen Hemminger
1519351fec72d2bb4e7501c12949855ab252b037bceStephen Hemmingerenum {
1529351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger	IFLA_INET_UNSPEC,
1539351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger	IFLA_INET_CONF,
1549351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger	__IFLA_INET_MAX,
1559351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger};
1569351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger
1579351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger#define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
1589351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger
159ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger/* ifi_flags.
160ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
161ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   IFF_* flags.
162ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
163ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   The only change is:
164ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
165ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   more not changeable by user. They describe link media
166ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   characteristics and set by device driver.
167ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
168ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   Comments:
169ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
170ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   - If neither of these three flags are set;
171ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger     the interface is NBMA.
172ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
173ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   - IFF_MULTICAST does not mean anything special:
174ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   multicasts can be used on all not-NBMA links.
175ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   IFF_MULTICAST means that this media uses special encapsulation
176ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   for multicast frames. Apparently, all IFF_POINTOPOINT and
177ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   IFF_BROADCAST devices are able to use multicasts too.
178ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger */
179ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
180ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger/* IFLA_LINK.
181ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   For usual devices it is equal ifi_index.
182ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   If it is a "virtual interface" (f.e. tunnel), ifi_link
183ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   can point to real physical interface (f.e. for bandwidth calculations),
184ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   or maybe 0, what means, that real media is unknown (usual
185ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger   for IPIP tunnels, when route to endpoint is allowed to change)
186ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger */
187ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
188ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger/* Subtype attributes for IFLA_PROTINFO */
189ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum {
190ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_INET6_UNSPEC,
191ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_INET6_FLAGS,	/* link flags			*/
192ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_INET6_CONF,	/* sysctl parameters		*/
193ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_INET6_STATS,	/* statistics			*/
194ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_INET6_MCAST,	/* MC things. What of them?	*/
195ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	IFLA_INET6_CACHEINFO,	/* time values and max reasm size */
196de3d12f48ac1869fc9f9cb442b2d692b027d8a14Stephen Hemminger	IFLA_INET6_ICMP6STATS,	/* statistics (icmpv6)		*/
197ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__IFLA_INET6_MAX
198ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger};
199ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
200ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_INET6_MAX	(__IFLA_INET6_MAX - 1)
201ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
202ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct ifla_cacheinfo {
203ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	max_reasm_len;
204ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	tstamp;		/* ipv6InterfaceTable updated timestamp */
205ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	reachable_time;
206ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__u32	retrans_time;
207ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger};
208ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger
209ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum {
210a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	IFLA_INFO_UNSPEC,
211a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	IFLA_INFO_KIND,
212a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	IFLA_INFO_DATA,
213a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	IFLA_INFO_XSTATS,
214a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	__IFLA_INFO_MAX,
215a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger};
216a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger
217a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger#define IFLA_INFO_MAX	(__IFLA_INFO_MAX - 1)
218a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger
219a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger/* VLAN section */
220a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger
221ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum {
222a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	IFLA_VLAN_UNSPEC,
223a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	IFLA_VLAN_ID,
224a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	IFLA_VLAN_FLAGS,
225a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	IFLA_VLAN_EGRESS_QOS,
226a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	IFLA_VLAN_INGRESS_QOS,
227a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	__IFLA_VLAN_MAX,
228a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger};
229a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger
230a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger#define IFLA_VLAN_MAX	(__IFLA_VLAN_MAX - 1)
231a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger
232a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemmingerstruct ifla_vlan_flags {
233a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	__u32	flags;
234a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	__u32	mask;
235a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger};
236a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger
237ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum {
238a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	IFLA_VLAN_QOS_UNSPEC,
239a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	IFLA_VLAN_QOS_MAPPING,
240a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	__IFLA_VLAN_QOS_MAX
241a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger};
242a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger
243a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger#define IFLA_VLAN_QOS_MAX	(__IFLA_VLAN_QOS_MAX - 1)
244a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger
245ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct ifla_vlan_qos_mapping {
246a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	__u32 from;
247a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	__u32 to;
248a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger};
249a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger
250ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger/* MACVLAN section */
251ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum {
252ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger	IFLA_MACVLAN_UNSPEC,
253ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger	IFLA_MACVLAN_MODE,
254ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger	__IFLA_MACVLAN_MAX,
255ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger};
256ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger
257ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger#define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
258ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger
259ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum macvlan_mode {
260ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger	MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
261ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger	MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
262ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger	MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
2639351fec72d2bb4e7501c12949855ab252b037bceStephen Hemminger	MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
264ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger};
265ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemminger
26604a9fc0a50f9a7677f22c9746cf2f4aadc2c8257Stephen Hemminger/* SR-IOV virtual function management section */
2678ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger
268a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemmingerenum {
269a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger	IFLA_VF_INFO_UNSPEC,
270a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger	IFLA_VF_INFO,
271a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger	__IFLA_VF_INFO_MAX,
272a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger};
273a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger
274a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger#define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
275a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger
276a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemmingerenum {
277a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger	IFLA_VF_UNSPEC,
278a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger	IFLA_VF_MAC,		/* Hardware queue specific attributes */
279a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger	IFLA_VF_VLAN,
280a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger	IFLA_VF_TX_RATE,	/* TX Bandwidth Allocation */
2819044a4547d73df5c41fd53c83e5ccc2a59200797Stephen Hemminger	IFLA_VF_SPOOFCHK,	/* Spoof Checking on/off switch */
282a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger	__IFLA_VF_MAX,
283a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger};
284a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger
285a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger#define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
286a171395410bb8a6428e099a5b9d55e35a86f3b24Stephen Hemminger
2878ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemmingerstruct ifla_vf_mac {
2888ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger	__u32 vf;
2898ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger	__u8 mac[32]; /* MAX_ADDR_LEN */
2908ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger};
2918ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger
2928ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemmingerstruct ifla_vf_vlan {
2938ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger	__u32 vf;
2948ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
2958ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger	__u32 qos;
2968ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger};
2978ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger
2988ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemmingerstruct ifla_vf_tx_rate {
2998ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger	__u32 vf;
3008ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger	__u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
3018ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger};
3028ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger
3039044a4547d73df5c41fd53c83e5ccc2a59200797Stephen Hemmingerstruct ifla_vf_spoofchk {
3048ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger	__u32 vf;
3059044a4547d73df5c41fd53c83e5ccc2a59200797Stephen Hemminger	__u32 setting;
3068ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger};
307b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
308b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger/* VF ports management section
309b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger *
310b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger *	Nested layout of set/get msg is:
311b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger *
312b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger *		[IFLA_NUM_VF]
313b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger *		[IFLA_VF_PORTS]
314b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger *			[IFLA_VF_PORT]
315b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger *				[IFLA_PORT_*], ...
316b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger *			[IFLA_VF_PORT]
317b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger *				[IFLA_PORT_*], ...
318b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger *			...
319b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger *		[IFLA_PORT_SELF]
320b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger *			[IFLA_PORT_*], ...
321b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger */
322b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
323b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemmingerenum {
324b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_VF_PORT_UNSPEC,
325b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_VF_PORT,			/* nest */
326b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__IFLA_VF_PORT_MAX,
327b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger};
328b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
329b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger#define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
330b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
331b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemmingerenum {
332b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_PORT_UNSPEC,
333b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_PORT_VF,			/* __u32 */
334b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_PORT_PROFILE,		/* string */
335b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_PORT_VSI_TYPE,		/* 802.1Qbg (pre-)standard VDP */
336b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_PORT_INSTANCE_UUID,	/* binary UUID */
337b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_PORT_HOST_UUID,		/* binary UUID */
338b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_PORT_REQUEST,		/* __u8 */
339b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	IFLA_PORT_RESPONSE,		/* __u16, output only */
340b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__IFLA_PORT_MAX,
341b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger};
342b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
343b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger#define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
344b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
345b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger#define PORT_PROFILE_MAX	40
346b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger#define PORT_UUID_MAX		16
347b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger#define PORT_SELF_VF		-1
348b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
349b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemmingerenum {
350b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_REQUEST_PREASSOCIATE = 0,
351b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_REQUEST_PREASSOCIATE_RR,
352b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_REQUEST_ASSOCIATE,
353b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_REQUEST_DISASSOCIATE,
354b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger};
355b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
356b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemmingerenum {
357b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_VDP_RESPONSE_SUCCESS = 0,
358b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_VDP_RESPONSE_INVALID_FORMAT,
359b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
360b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_VDP_RESPONSE_UNUSED_VTID,
361b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_VDP_RESPONSE_VTID_VIOLATION,
362b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
363b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_VDP_RESPONSE_OUT_OF_SYNC,
364b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	/* 0x08-0xFF reserved for future VDP use */
365b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
366b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_PROFILE_RESPONSE_INPROGRESS,
367b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_PROFILE_RESPONSE_INVALID,
368b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_PROFILE_RESPONSE_BADSTATE,
369b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
370b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	PORT_PROFILE_RESPONSE_ERROR,
371b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger};
372b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
373b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemmingerstruct ifla_port_vsi {
374b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u8 vsi_mgr_id;
375b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u8 vsi_type_id[3];
376b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u8 vsi_type_version;
377b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger	__u8 pad[3];
378b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger};
379b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
380ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#endif /* _LINUX_IF_LINK_H */
381