xref: /linux/include/uapi/linux/if_link.h (revision 2d3b479df41a10e2f41f9259fcba775bd34de6e4)
1607ca46eSDavid Howells #ifndef _UAPI_LINUX_IF_LINK_H
2607ca46eSDavid Howells #define _UAPI_LINUX_IF_LINK_H
3607ca46eSDavid Howells 
4607ca46eSDavid Howells #include <linux/types.h>
5607ca46eSDavid Howells #include <linux/netlink.h>
6607ca46eSDavid Howells 
7607ca46eSDavid Howells /* This struct should be in sync with struct rtnl_link_stats64 */
8607ca46eSDavid Howells struct rtnl_link_stats {
9607ca46eSDavid Howells 	__u32	rx_packets;		/* total packets received	*/
10607ca46eSDavid Howells 	__u32	tx_packets;		/* total packets transmitted	*/
11607ca46eSDavid Howells 	__u32	rx_bytes;		/* total bytes received 	*/
12607ca46eSDavid Howells 	__u32	tx_bytes;		/* total bytes transmitted	*/
13607ca46eSDavid Howells 	__u32	rx_errors;		/* bad packets received		*/
14607ca46eSDavid Howells 	__u32	tx_errors;		/* packet transmit problems	*/
15607ca46eSDavid Howells 	__u32	rx_dropped;		/* no space in linux buffers	*/
16607ca46eSDavid Howells 	__u32	tx_dropped;		/* no space available in linux	*/
17607ca46eSDavid Howells 	__u32	multicast;		/* multicast packets received	*/
18607ca46eSDavid Howells 	__u32	collisions;
19607ca46eSDavid Howells 
20607ca46eSDavid Howells 	/* detailed rx_errors: */
21607ca46eSDavid Howells 	__u32	rx_length_errors;
22607ca46eSDavid Howells 	__u32	rx_over_errors;		/* receiver ring buff overflow	*/
23607ca46eSDavid Howells 	__u32	rx_crc_errors;		/* recved pkt with crc error	*/
24607ca46eSDavid Howells 	__u32	rx_frame_errors;	/* recv'd frame alignment error */
25607ca46eSDavid Howells 	__u32	rx_fifo_errors;		/* recv'r fifo overrun		*/
26607ca46eSDavid Howells 	__u32	rx_missed_errors;	/* receiver missed packet	*/
27607ca46eSDavid Howells 
28607ca46eSDavid Howells 	/* detailed tx_errors */
29607ca46eSDavid Howells 	__u32	tx_aborted_errors;
30607ca46eSDavid Howells 	__u32	tx_carrier_errors;
31607ca46eSDavid Howells 	__u32	tx_fifo_errors;
32607ca46eSDavid Howells 	__u32	tx_heartbeat_errors;
33607ca46eSDavid Howells 	__u32	tx_window_errors;
34607ca46eSDavid Howells 
35607ca46eSDavid Howells 	/* for cslip etc */
36607ca46eSDavid Howells 	__u32	rx_compressed;
37607ca46eSDavid Howells 	__u32	tx_compressed;
38607ca46eSDavid Howells };
39607ca46eSDavid Howells 
40607ca46eSDavid Howells /* The main device statistics structure */
41607ca46eSDavid Howells struct rtnl_link_stats64 {
42607ca46eSDavid Howells 	__u64	rx_packets;		/* total packets received	*/
43607ca46eSDavid Howells 	__u64	tx_packets;		/* total packets transmitted	*/
44607ca46eSDavid Howells 	__u64	rx_bytes;		/* total bytes received 	*/
45607ca46eSDavid Howells 	__u64	tx_bytes;		/* total bytes transmitted	*/
46607ca46eSDavid Howells 	__u64	rx_errors;		/* bad packets received		*/
47607ca46eSDavid Howells 	__u64	tx_errors;		/* packet transmit problems	*/
48607ca46eSDavid Howells 	__u64	rx_dropped;		/* no space in linux buffers	*/
49607ca46eSDavid Howells 	__u64	tx_dropped;		/* no space available in linux	*/
50607ca46eSDavid Howells 	__u64	multicast;		/* multicast packets received	*/
51607ca46eSDavid Howells 	__u64	collisions;
52607ca46eSDavid Howells 
53607ca46eSDavid Howells 	/* detailed rx_errors: */
54607ca46eSDavid Howells 	__u64	rx_length_errors;
55607ca46eSDavid Howells 	__u64	rx_over_errors;		/* receiver ring buff overflow	*/
56607ca46eSDavid Howells 	__u64	rx_crc_errors;		/* recved pkt with crc error	*/
57607ca46eSDavid Howells 	__u64	rx_frame_errors;	/* recv'd frame alignment error */
58607ca46eSDavid Howells 	__u64	rx_fifo_errors;		/* recv'r fifo overrun		*/
59607ca46eSDavid Howells 	__u64	rx_missed_errors;	/* receiver missed packet	*/
60607ca46eSDavid Howells 
61607ca46eSDavid Howells 	/* detailed tx_errors */
62607ca46eSDavid Howells 	__u64	tx_aborted_errors;
63607ca46eSDavid Howells 	__u64	tx_carrier_errors;
64607ca46eSDavid Howells 	__u64	tx_fifo_errors;
65607ca46eSDavid Howells 	__u64	tx_heartbeat_errors;
66607ca46eSDavid Howells 	__u64	tx_window_errors;
67607ca46eSDavid Howells 
68607ca46eSDavid Howells 	/* for cslip etc */
69607ca46eSDavid Howells 	__u64	rx_compressed;
70607ca46eSDavid Howells 	__u64	tx_compressed;
71607ca46eSDavid Howells };
72607ca46eSDavid Howells 
73607ca46eSDavid Howells /* The struct should be in sync with struct ifmap */
74607ca46eSDavid Howells struct rtnl_link_ifmap {
75607ca46eSDavid Howells 	__u64	mem_start;
76607ca46eSDavid Howells 	__u64	mem_end;
77607ca46eSDavid Howells 	__u64	base_addr;
78607ca46eSDavid Howells 	__u16	irq;
79607ca46eSDavid Howells 	__u8	dma;
80607ca46eSDavid Howells 	__u8	port;
81607ca46eSDavid Howells };
82607ca46eSDavid Howells 
83607ca46eSDavid Howells /*
84607ca46eSDavid Howells  * IFLA_AF_SPEC
85607ca46eSDavid Howells  *   Contains nested attributes for address family specific attributes.
86607ca46eSDavid Howells  *   Each address family may create a attribute with the address family
87607ca46eSDavid Howells  *   number as type and create its own attribute structure in it.
88607ca46eSDavid Howells  *
89607ca46eSDavid Howells  *   Example:
90607ca46eSDavid Howells  *   [IFLA_AF_SPEC] = {
91607ca46eSDavid Howells  *       [AF_INET] = {
92607ca46eSDavid Howells  *           [IFLA_INET_CONF] = ...,
93607ca46eSDavid Howells  *       },
94607ca46eSDavid Howells  *       [AF_INET6] = {
95607ca46eSDavid Howells  *           [IFLA_INET6_FLAGS] = ...,
96607ca46eSDavid Howells  *           [IFLA_INET6_CONF] = ...,
97607ca46eSDavid Howells  *       }
98607ca46eSDavid Howells  *   }
99607ca46eSDavid Howells  */
100607ca46eSDavid Howells 
101607ca46eSDavid Howells enum {
102607ca46eSDavid Howells 	IFLA_UNSPEC,
103607ca46eSDavid Howells 	IFLA_ADDRESS,
104607ca46eSDavid Howells 	IFLA_BROADCAST,
105607ca46eSDavid Howells 	IFLA_IFNAME,
106607ca46eSDavid Howells 	IFLA_MTU,
107607ca46eSDavid Howells 	IFLA_LINK,
108607ca46eSDavid Howells 	IFLA_QDISC,
109607ca46eSDavid Howells 	IFLA_STATS,
110607ca46eSDavid Howells 	IFLA_COST,
111607ca46eSDavid Howells #define IFLA_COST IFLA_COST
112607ca46eSDavid Howells 	IFLA_PRIORITY,
113607ca46eSDavid Howells #define IFLA_PRIORITY IFLA_PRIORITY
114607ca46eSDavid Howells 	IFLA_MASTER,
115607ca46eSDavid Howells #define IFLA_MASTER IFLA_MASTER
116607ca46eSDavid Howells 	IFLA_WIRELESS,		/* Wireless Extension event - see wireless.h */
117607ca46eSDavid Howells #define IFLA_WIRELESS IFLA_WIRELESS
118607ca46eSDavid Howells 	IFLA_PROTINFO,		/* Protocol specific information for a link */
119607ca46eSDavid Howells #define IFLA_PROTINFO IFLA_PROTINFO
120607ca46eSDavid Howells 	IFLA_TXQLEN,
121607ca46eSDavid Howells #define IFLA_TXQLEN IFLA_TXQLEN
122607ca46eSDavid Howells 	IFLA_MAP,
123607ca46eSDavid Howells #define IFLA_MAP IFLA_MAP
124607ca46eSDavid Howells 	IFLA_WEIGHT,
125607ca46eSDavid Howells #define IFLA_WEIGHT IFLA_WEIGHT
126607ca46eSDavid Howells 	IFLA_OPERSTATE,
127607ca46eSDavid Howells 	IFLA_LINKMODE,
128607ca46eSDavid Howells 	IFLA_LINKINFO,
129607ca46eSDavid Howells #define IFLA_LINKINFO IFLA_LINKINFO
130607ca46eSDavid Howells 	IFLA_NET_NS_PID,
131607ca46eSDavid Howells 	IFLA_IFALIAS,
132607ca46eSDavid Howells 	IFLA_NUM_VF,		/* Number of VFs if device is SR-IOV PF */
133607ca46eSDavid Howells 	IFLA_VFINFO_LIST,
134607ca46eSDavid Howells 	IFLA_STATS64,
135607ca46eSDavid Howells 	IFLA_VF_PORTS,
136607ca46eSDavid Howells 	IFLA_PORT_SELF,
137607ca46eSDavid Howells 	IFLA_AF_SPEC,
138607ca46eSDavid Howells 	IFLA_GROUP,		/* Group the device belongs to */
139607ca46eSDavid Howells 	IFLA_NET_NS_FD,
140607ca46eSDavid Howells 	IFLA_EXT_MASK,		/* Extended info mask, VFs, etc */
141607ca46eSDavid Howells 	IFLA_PROMISCUITY,	/* Promiscuity count: > 0 means acts PROMISC */
142607ca46eSDavid Howells #define IFLA_PROMISCUITY IFLA_PROMISCUITY
143607ca46eSDavid Howells 	IFLA_NUM_TX_QUEUES,
144607ca46eSDavid Howells 	IFLA_NUM_RX_QUEUES,
1459a57247fSJiri Pirko 	IFLA_CARRIER,
14666cae9edSJiri Pirko 	IFLA_PHYS_PORT_ID,
147*2d3b479dSdavid decotigny 	IFLA_CARRIER_CHANGES,
148607ca46eSDavid Howells 	__IFLA_MAX
149607ca46eSDavid Howells };
150607ca46eSDavid Howells 
151607ca46eSDavid Howells 
152607ca46eSDavid Howells #define IFLA_MAX (__IFLA_MAX - 1)
153607ca46eSDavid Howells 
154607ca46eSDavid Howells /* backwards compatibility for userspace */
155607ca46eSDavid Howells #ifndef __KERNEL__
156607ca46eSDavid Howells #define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
157607ca46eSDavid Howells #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
158607ca46eSDavid Howells #endif
159607ca46eSDavid Howells 
160607ca46eSDavid Howells enum {
161607ca46eSDavid Howells 	IFLA_INET_UNSPEC,
162607ca46eSDavid Howells 	IFLA_INET_CONF,
163607ca46eSDavid Howells 	__IFLA_INET_MAX,
164607ca46eSDavid Howells };
165607ca46eSDavid Howells 
166607ca46eSDavid Howells #define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
167607ca46eSDavid Howells 
168607ca46eSDavid Howells /* ifi_flags.
169607ca46eSDavid Howells 
170607ca46eSDavid Howells    IFF_* flags.
171607ca46eSDavid Howells 
172607ca46eSDavid Howells    The only change is:
173607ca46eSDavid Howells    IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
174607ca46eSDavid Howells    more not changeable by user. They describe link media
175607ca46eSDavid Howells    characteristics and set by device driver.
176607ca46eSDavid Howells 
177607ca46eSDavid Howells    Comments:
178607ca46eSDavid Howells    - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
179607ca46eSDavid Howells    - If neither of these three flags are set;
180607ca46eSDavid Howells      the interface is NBMA.
181607ca46eSDavid Howells 
182607ca46eSDavid Howells    - IFF_MULTICAST does not mean anything special:
183607ca46eSDavid Howells    multicasts can be used on all not-NBMA links.
184607ca46eSDavid Howells    IFF_MULTICAST means that this media uses special encapsulation
185607ca46eSDavid Howells    for multicast frames. Apparently, all IFF_POINTOPOINT and
186607ca46eSDavid Howells    IFF_BROADCAST devices are able to use multicasts too.
187607ca46eSDavid Howells  */
188607ca46eSDavid Howells 
189607ca46eSDavid Howells /* IFLA_LINK.
190607ca46eSDavid Howells    For usual devices it is equal ifi_index.
191607ca46eSDavid Howells    If it is a "virtual interface" (f.e. tunnel), ifi_link
192607ca46eSDavid Howells    can point to real physical interface (f.e. for bandwidth calculations),
193607ca46eSDavid Howells    or maybe 0, what means, that real media is unknown (usual
194607ca46eSDavid Howells    for IPIP tunnels, when route to endpoint is allowed to change)
195607ca46eSDavid Howells  */
196607ca46eSDavid Howells 
197607ca46eSDavid Howells /* Subtype attributes for IFLA_PROTINFO */
198607ca46eSDavid Howells enum {
199607ca46eSDavid Howells 	IFLA_INET6_UNSPEC,
200607ca46eSDavid Howells 	IFLA_INET6_FLAGS,	/* link flags			*/
201607ca46eSDavid Howells 	IFLA_INET6_CONF,	/* sysctl parameters		*/
202607ca46eSDavid Howells 	IFLA_INET6_STATS,	/* statistics			*/
203607ca46eSDavid Howells 	IFLA_INET6_MCAST,	/* MC things. What of them?	*/
204607ca46eSDavid Howells 	IFLA_INET6_CACHEINFO,	/* time values and max reasm size */
205607ca46eSDavid Howells 	IFLA_INET6_ICMP6STATS,	/* statistics (icmpv6)		*/
206f53adae4SDaniel Borkmann 	IFLA_INET6_TOKEN,	/* device token			*/
207607ca46eSDavid Howells 	__IFLA_INET6_MAX
208607ca46eSDavid Howells };
209607ca46eSDavid Howells 
210607ca46eSDavid Howells #define IFLA_INET6_MAX	(__IFLA_INET6_MAX - 1)
211607ca46eSDavid Howells 
21225c71c75Sstephen hemminger enum {
21325c71c75Sstephen hemminger 	BRIDGE_MODE_UNSPEC,
21425c71c75Sstephen hemminger 	BRIDGE_MODE_HAIRPIN,
21525c71c75Sstephen hemminger };
21625c71c75Sstephen hemminger 
21725c71c75Sstephen hemminger enum {
21825c71c75Sstephen hemminger 	IFLA_BRPORT_UNSPEC,
21925c71c75Sstephen hemminger 	IFLA_BRPORT_STATE,	/* Spanning tree state     */
22025c71c75Sstephen hemminger 	IFLA_BRPORT_PRIORITY,	/* "             priority  */
22125c71c75Sstephen hemminger 	IFLA_BRPORT_COST,	/* "             cost      */
22225c71c75Sstephen hemminger 	IFLA_BRPORT_MODE,	/* mode (hairpin)          */
223a2e01a65Sstephen hemminger 	IFLA_BRPORT_GUARD,	/* bpdu guard              */
2241007dd1aSstephen hemminger 	IFLA_BRPORT_PROTECT,	/* root port protection    */
225c2d3babfSDavid S. Miller 	IFLA_BRPORT_FAST_LEAVE,	/* multicast fast leave    */
2269ba18891SVlad Yasevich 	IFLA_BRPORT_LEARNING,	/* mac learning */
227867a5943SVlad Yasevich 	IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
22825c71c75Sstephen hemminger 	__IFLA_BRPORT_MAX
22925c71c75Sstephen hemminger };
23025c71c75Sstephen hemminger #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
23125c71c75Sstephen hemminger 
232607ca46eSDavid Howells struct ifla_cacheinfo {
233607ca46eSDavid Howells 	__u32	max_reasm_len;
234607ca46eSDavid Howells 	__u32	tstamp;		/* ipv6InterfaceTable updated timestamp */
235607ca46eSDavid Howells 	__u32	reachable_time;
236607ca46eSDavid Howells 	__u32	retrans_time;
237607ca46eSDavid Howells };
238607ca46eSDavid Howells 
239607ca46eSDavid Howells enum {
240607ca46eSDavid Howells 	IFLA_INFO_UNSPEC,
241607ca46eSDavid Howells 	IFLA_INFO_KIND,
242607ca46eSDavid Howells 	IFLA_INFO_DATA,
243607ca46eSDavid Howells 	IFLA_INFO_XSTATS,
244ba7d49b1SJiri Pirko 	IFLA_INFO_SLAVE_KIND,
245ba7d49b1SJiri Pirko 	IFLA_INFO_SLAVE_DATA,
246607ca46eSDavid Howells 	__IFLA_INFO_MAX,
247607ca46eSDavid Howells };
248607ca46eSDavid Howells 
249607ca46eSDavid Howells #define IFLA_INFO_MAX	(__IFLA_INFO_MAX - 1)
250607ca46eSDavid Howells 
251607ca46eSDavid Howells /* VLAN section */
252607ca46eSDavid Howells 
253607ca46eSDavid Howells enum {
254607ca46eSDavid Howells 	IFLA_VLAN_UNSPEC,
255607ca46eSDavid Howells 	IFLA_VLAN_ID,
256607ca46eSDavid Howells 	IFLA_VLAN_FLAGS,
257607ca46eSDavid Howells 	IFLA_VLAN_EGRESS_QOS,
258607ca46eSDavid Howells 	IFLA_VLAN_INGRESS_QOS,
2598ad227ffSPatrick McHardy 	IFLA_VLAN_PROTOCOL,
260607ca46eSDavid Howells 	__IFLA_VLAN_MAX,
261607ca46eSDavid Howells };
262607ca46eSDavid Howells 
263607ca46eSDavid Howells #define IFLA_VLAN_MAX	(__IFLA_VLAN_MAX - 1)
264607ca46eSDavid Howells 
265607ca46eSDavid Howells struct ifla_vlan_flags {
266607ca46eSDavid Howells 	__u32	flags;
267607ca46eSDavid Howells 	__u32	mask;
268607ca46eSDavid Howells };
269607ca46eSDavid Howells 
270607ca46eSDavid Howells enum {
271607ca46eSDavid Howells 	IFLA_VLAN_QOS_UNSPEC,
272607ca46eSDavid Howells 	IFLA_VLAN_QOS_MAPPING,
273607ca46eSDavid Howells 	__IFLA_VLAN_QOS_MAX
274607ca46eSDavid Howells };
275607ca46eSDavid Howells 
276607ca46eSDavid Howells #define IFLA_VLAN_QOS_MAX	(__IFLA_VLAN_QOS_MAX - 1)
277607ca46eSDavid Howells 
278607ca46eSDavid Howells struct ifla_vlan_qos_mapping {
279607ca46eSDavid Howells 	__u32 from;
280607ca46eSDavid Howells 	__u32 to;
281607ca46eSDavid Howells };
282607ca46eSDavid Howells 
283607ca46eSDavid Howells /* MACVLAN section */
284607ca46eSDavid Howells enum {
285607ca46eSDavid Howells 	IFLA_MACVLAN_UNSPEC,
286607ca46eSDavid Howells 	IFLA_MACVLAN_MODE,
287607ca46eSDavid Howells 	IFLA_MACVLAN_FLAGS,
288607ca46eSDavid Howells 	__IFLA_MACVLAN_MAX,
289607ca46eSDavid Howells };
290607ca46eSDavid Howells 
291607ca46eSDavid Howells #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
292607ca46eSDavid Howells 
293607ca46eSDavid Howells enum macvlan_mode {
294607ca46eSDavid Howells 	MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
295607ca46eSDavid Howells 	MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
296607ca46eSDavid Howells 	MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
297607ca46eSDavid Howells 	MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
298607ca46eSDavid Howells };
299607ca46eSDavid Howells 
300607ca46eSDavid Howells #define MACVLAN_FLAG_NOPROMISC	1
301607ca46eSDavid Howells 
302607ca46eSDavid Howells /* VXLAN section */
303607ca46eSDavid Howells enum {
304607ca46eSDavid Howells 	IFLA_VXLAN_UNSPEC,
305607ca46eSDavid Howells 	IFLA_VXLAN_ID,
3065d174dd8Sstephen hemminger 	IFLA_VXLAN_GROUP,	/* group or remote address */
307607ca46eSDavid Howells 	IFLA_VXLAN_LINK,
308607ca46eSDavid Howells 	IFLA_VXLAN_LOCAL,
309607ca46eSDavid Howells 	IFLA_VXLAN_TTL,
310607ca46eSDavid Howells 	IFLA_VXLAN_TOS,
311607ca46eSDavid Howells 	IFLA_VXLAN_LEARNING,
312607ca46eSDavid Howells 	IFLA_VXLAN_AGEING,
313607ca46eSDavid Howells 	IFLA_VXLAN_LIMIT,
314823aa873Sstephen hemminger 	IFLA_VXLAN_PORT_RANGE,	/* source port */
315e4f67addSDavid Stevens 	IFLA_VXLAN_PROXY,
316e4f67addSDavid Stevens 	IFLA_VXLAN_RSC,
317e4f67addSDavid Stevens 	IFLA_VXLAN_L2MISS,
318e4f67addSDavid Stevens 	IFLA_VXLAN_L3MISS,
319823aa873Sstephen hemminger 	IFLA_VXLAN_PORT,	/* destination port */
320e4c7ed41SCong Wang 	IFLA_VXLAN_GROUP6,
321e4c7ed41SCong Wang 	IFLA_VXLAN_LOCAL6,
322607ca46eSDavid Howells 	__IFLA_VXLAN_MAX
323607ca46eSDavid Howells };
324607ca46eSDavid Howells #define IFLA_VXLAN_MAX	(__IFLA_VXLAN_MAX - 1)
325607ca46eSDavid Howells 
326607ca46eSDavid Howells struct ifla_vxlan_port_range {
327607ca46eSDavid Howells 	__be16	low;
328607ca46eSDavid Howells 	__be16	high;
329607ca46eSDavid Howells };
330607ca46eSDavid Howells 
33190af2311SJiri Pirko /* Bonding section */
33290af2311SJiri Pirko 
33390af2311SJiri Pirko enum {
33490af2311SJiri Pirko 	IFLA_BOND_UNSPEC,
33590af2311SJiri Pirko 	IFLA_BOND_MODE,
336ec76aa49SJiri Pirko 	IFLA_BOND_ACTIVE_SLAVE,
337eecdaa6eSsfeldma@cumulusnetworks.com 	IFLA_BOND_MIIMON,
33825852e29Ssfeldma@cumulusnetworks.com 	IFLA_BOND_UPDELAY,
339c7461f9bSsfeldma@cumulusnetworks.com 	IFLA_BOND_DOWNDELAY,
3409f53e14eSsfeldma@cumulusnetworks.com 	IFLA_BOND_USE_CARRIER,
34106151dbcSsfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_INTERVAL,
3427f28fa10Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_IP_TARGET,
34329c49482Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_VALIDATE,
344d5c84254Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_ALL_TARGETS,
3450a98a0d1Ssfeldma@cumulusnetworks.com 	IFLA_BOND_PRIMARY,
3468a41ae44Ssfeldma@cumulusnetworks.com 	IFLA_BOND_PRIMARY_RESELECT,
34789901972Ssfeldma@cumulusnetworks.com 	IFLA_BOND_FAIL_OVER_MAC,
348f70161c6Ssfeldma@cumulusnetworks.com 	IFLA_BOND_XMIT_HASH_POLICY,
349d8838de7Ssfeldma@cumulusnetworks.com 	IFLA_BOND_RESEND_IGMP,
3502c9839c1Ssfeldma@cumulusnetworks.com 	IFLA_BOND_NUM_PEER_NOTIF,
3511cc0b1e3Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ALL_SLAVES_ACTIVE,
3527d101008Ssfeldma@cumulusnetworks.com 	IFLA_BOND_MIN_LINKS,
3538d836d09Ssfeldma@cumulusnetworks.com 	IFLA_BOND_LP_INTERVAL,
354c13ab3ffSsfeldma@cumulusnetworks.com 	IFLA_BOND_PACKETS_PER_SLAVE,
355998e40bbSsfeldma@cumulusnetworks.com 	IFLA_BOND_AD_LACP_RATE,
356ec029facSsfeldma@cumulusnetworks.com 	IFLA_BOND_AD_SELECT,
3574ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO,
35890af2311SJiri Pirko 	__IFLA_BOND_MAX,
35990af2311SJiri Pirko };
36090af2311SJiri Pirko 
36190af2311SJiri Pirko #define IFLA_BOND_MAX	(__IFLA_BOND_MAX - 1)
36290af2311SJiri Pirko 
3634ee7ac75Ssfeldma@cumulusnetworks.com enum {
364237266f7SJiri Pirko 	IFLA_BOND_AD_INFO_UNSPEC,
3654ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_AGGREGATOR,
3664ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_NUM_PORTS,
3674ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_ACTOR_KEY,
3684ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_PARTNER_KEY,
3694ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_PARTNER_MAC,
3704ee7ac75Ssfeldma@cumulusnetworks.com 	__IFLA_BOND_AD_INFO_MAX,
3714ee7ac75Ssfeldma@cumulusnetworks.com };
3724ee7ac75Ssfeldma@cumulusnetworks.com 
3734ee7ac75Ssfeldma@cumulusnetworks.com #define IFLA_BOND_AD_INFO_MAX	(__IFLA_BOND_AD_INFO_MAX - 1)
3744ee7ac75Ssfeldma@cumulusnetworks.com 
3751d3ee88aSsfeldma@cumulusnetworks.com enum {
376df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_UNSPEC,
377df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_STATE,
378df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_MII_STATUS,
379df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
380df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_PERM_HWADDR,
381df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_QUEUE_ID,
382df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
383df7dbcbbSJiri Pirko 	__IFLA_BOND_SLAVE_MAX,
3841d3ee88aSsfeldma@cumulusnetworks.com };
3851d3ee88aSsfeldma@cumulusnetworks.com 
386df7dbcbbSJiri Pirko #define IFLA_BOND_SLAVE_MAX	(__IFLA_BOND_SLAVE_MAX - 1)
3871d3ee88aSsfeldma@cumulusnetworks.com 
388607ca46eSDavid Howells /* SR-IOV virtual function management section */
389607ca46eSDavid Howells 
390607ca46eSDavid Howells enum {
391607ca46eSDavid Howells 	IFLA_VF_INFO_UNSPEC,
392607ca46eSDavid Howells 	IFLA_VF_INFO,
393607ca46eSDavid Howells 	__IFLA_VF_INFO_MAX,
394607ca46eSDavid Howells };
395607ca46eSDavid Howells 
396607ca46eSDavid Howells #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
397607ca46eSDavid Howells 
398607ca46eSDavid Howells enum {
399607ca46eSDavid Howells 	IFLA_VF_UNSPEC,
400607ca46eSDavid Howells 	IFLA_VF_MAC,		/* Hardware queue specific attributes */
401607ca46eSDavid Howells 	IFLA_VF_VLAN,
402607ca46eSDavid Howells 	IFLA_VF_TX_RATE,	/* TX Bandwidth Allocation */
403607ca46eSDavid Howells 	IFLA_VF_SPOOFCHK,	/* Spoof Checking on/off switch */
4041d8faf48SRony Efraim 	IFLA_VF_LINK_STATE,	/* link state enable/disable/auto switch */
405607ca46eSDavid Howells 	__IFLA_VF_MAX,
406607ca46eSDavid Howells };
407607ca46eSDavid Howells 
408607ca46eSDavid Howells #define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
409607ca46eSDavid Howells 
410607ca46eSDavid Howells struct ifla_vf_mac {
411607ca46eSDavid Howells 	__u32 vf;
412607ca46eSDavid Howells 	__u8 mac[32]; /* MAX_ADDR_LEN */
413607ca46eSDavid Howells };
414607ca46eSDavid Howells 
415607ca46eSDavid Howells struct ifla_vf_vlan {
416607ca46eSDavid Howells 	__u32 vf;
417607ca46eSDavid Howells 	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
418607ca46eSDavid Howells 	__u32 qos;
419607ca46eSDavid Howells };
420607ca46eSDavid Howells 
421607ca46eSDavid Howells struct ifla_vf_tx_rate {
422607ca46eSDavid Howells 	__u32 vf;
423607ca46eSDavid Howells 	__u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
424607ca46eSDavid Howells };
425607ca46eSDavid Howells 
426607ca46eSDavid Howells struct ifla_vf_spoofchk {
427607ca46eSDavid Howells 	__u32 vf;
428607ca46eSDavid Howells 	__u32 setting;
429607ca46eSDavid Howells };
430607ca46eSDavid Howells 
4311d8faf48SRony Efraim enum {
4321d8faf48SRony Efraim 	IFLA_VF_LINK_STATE_AUTO,	/* link state of the uplink */
4331d8faf48SRony Efraim 	IFLA_VF_LINK_STATE_ENABLE,	/* link always up */
4341d8faf48SRony Efraim 	IFLA_VF_LINK_STATE_DISABLE,	/* link always down */
4351d8faf48SRony Efraim 	__IFLA_VF_LINK_STATE_MAX,
4361d8faf48SRony Efraim };
4371d8faf48SRony Efraim 
4381d8faf48SRony Efraim struct ifla_vf_link_state {
4391d8faf48SRony Efraim 	__u32 vf;
4401d8faf48SRony Efraim 	__u32 link_state;
4411d8faf48SRony Efraim };
4421d8faf48SRony Efraim 
443607ca46eSDavid Howells /* VF ports management section
444607ca46eSDavid Howells  *
445607ca46eSDavid Howells  *	Nested layout of set/get msg is:
446607ca46eSDavid Howells  *
447607ca46eSDavid Howells  *		[IFLA_NUM_VF]
448607ca46eSDavid Howells  *		[IFLA_VF_PORTS]
449607ca46eSDavid Howells  *			[IFLA_VF_PORT]
450607ca46eSDavid Howells  *				[IFLA_PORT_*], ...
451607ca46eSDavid Howells  *			[IFLA_VF_PORT]
452607ca46eSDavid Howells  *				[IFLA_PORT_*], ...
453607ca46eSDavid Howells  *			...
454607ca46eSDavid Howells  *		[IFLA_PORT_SELF]
455607ca46eSDavid Howells  *			[IFLA_PORT_*], ...
456607ca46eSDavid Howells  */
457607ca46eSDavid Howells 
458607ca46eSDavid Howells enum {
459607ca46eSDavid Howells 	IFLA_VF_PORT_UNSPEC,
460607ca46eSDavid Howells 	IFLA_VF_PORT,			/* nest */
461607ca46eSDavid Howells 	__IFLA_VF_PORT_MAX,
462607ca46eSDavid Howells };
463607ca46eSDavid Howells 
464607ca46eSDavid Howells #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
465607ca46eSDavid Howells 
466607ca46eSDavid Howells enum {
467607ca46eSDavid Howells 	IFLA_PORT_UNSPEC,
468607ca46eSDavid Howells 	IFLA_PORT_VF,			/* __u32 */
469607ca46eSDavid Howells 	IFLA_PORT_PROFILE,		/* string */
470607ca46eSDavid Howells 	IFLA_PORT_VSI_TYPE,		/* 802.1Qbg (pre-)standard VDP */
471607ca46eSDavid Howells 	IFLA_PORT_INSTANCE_UUID,	/* binary UUID */
472607ca46eSDavid Howells 	IFLA_PORT_HOST_UUID,		/* binary UUID */
473607ca46eSDavid Howells 	IFLA_PORT_REQUEST,		/* __u8 */
474607ca46eSDavid Howells 	IFLA_PORT_RESPONSE,		/* __u16, output only */
475607ca46eSDavid Howells 	__IFLA_PORT_MAX,
476607ca46eSDavid Howells };
477607ca46eSDavid Howells 
478607ca46eSDavid Howells #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
479607ca46eSDavid Howells 
480607ca46eSDavid Howells #define PORT_PROFILE_MAX	40
481607ca46eSDavid Howells #define PORT_UUID_MAX		16
482607ca46eSDavid Howells #define PORT_SELF_VF		-1
483607ca46eSDavid Howells 
484607ca46eSDavid Howells enum {
485607ca46eSDavid Howells 	PORT_REQUEST_PREASSOCIATE = 0,
486607ca46eSDavid Howells 	PORT_REQUEST_PREASSOCIATE_RR,
487607ca46eSDavid Howells 	PORT_REQUEST_ASSOCIATE,
488607ca46eSDavid Howells 	PORT_REQUEST_DISASSOCIATE,
489607ca46eSDavid Howells };
490607ca46eSDavid Howells 
491607ca46eSDavid Howells enum {
492607ca46eSDavid Howells 	PORT_VDP_RESPONSE_SUCCESS = 0,
493607ca46eSDavid Howells 	PORT_VDP_RESPONSE_INVALID_FORMAT,
494607ca46eSDavid Howells 	PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
495607ca46eSDavid Howells 	PORT_VDP_RESPONSE_UNUSED_VTID,
496607ca46eSDavid Howells 	PORT_VDP_RESPONSE_VTID_VIOLATION,
497607ca46eSDavid Howells 	PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
498607ca46eSDavid Howells 	PORT_VDP_RESPONSE_OUT_OF_SYNC,
499607ca46eSDavid Howells 	/* 0x08-0xFF reserved for future VDP use */
500607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
501607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_INPROGRESS,
502607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_INVALID,
503607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_BADSTATE,
504607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
505607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_ERROR,
506607ca46eSDavid Howells };
507607ca46eSDavid Howells 
508607ca46eSDavid Howells struct ifla_port_vsi {
509607ca46eSDavid Howells 	__u8 vsi_mgr_id;
510607ca46eSDavid Howells 	__u8 vsi_type_id[3];
511607ca46eSDavid Howells 	__u8 vsi_type_version;
512607ca46eSDavid Howells 	__u8 pad[3];
513607ca46eSDavid Howells };
514607ca46eSDavid Howells 
515607ca46eSDavid Howells 
516607ca46eSDavid Howells /* IPoIB section */
517607ca46eSDavid Howells 
518607ca46eSDavid Howells enum {
519607ca46eSDavid Howells 	IFLA_IPOIB_UNSPEC,
520607ca46eSDavid Howells 	IFLA_IPOIB_PKEY,
521607ca46eSDavid Howells 	IFLA_IPOIB_MODE,
522607ca46eSDavid Howells 	IFLA_IPOIB_UMCAST,
523607ca46eSDavid Howells 	__IFLA_IPOIB_MAX
524607ca46eSDavid Howells };
525607ca46eSDavid Howells 
526607ca46eSDavid Howells enum {
527607ca46eSDavid Howells 	IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
528607ca46eSDavid Howells 	IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
529607ca46eSDavid Howells };
530607ca46eSDavid Howells 
531607ca46eSDavid Howells #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
532607ca46eSDavid Howells 
533f421436aSArvid Brodin 
534f421436aSArvid Brodin /* HSR section */
535f421436aSArvid Brodin 
536f421436aSArvid Brodin enum {
537f421436aSArvid Brodin 	IFLA_HSR_UNSPEC,
538f421436aSArvid Brodin 	IFLA_HSR_SLAVE1,
539f421436aSArvid Brodin 	IFLA_HSR_SLAVE2,
54098bf8362SArvid Brodin 	IFLA_HSR_MULTICAST_SPEC,	/* Last byte of supervision addr */
54198bf8362SArvid Brodin 	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
54298bf8362SArvid Brodin 	IFLA_HSR_SEQ_NR,
543f421436aSArvid Brodin 	__IFLA_HSR_MAX,
544f421436aSArvid Brodin };
545f421436aSArvid Brodin 
546f421436aSArvid Brodin #define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
547f421436aSArvid Brodin 
548607ca46eSDavid Howells #endif /* _UAPI_LINUX_IF_LINK_H */
549