xref: /linux/include/uapi/linux/if_link.h (revision ed4163098e3090bb7b51421bde977e355275a554)
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,
1472d3b479dSdavid decotigny 	IFLA_CARRIER_CHANGES,
14882f28412SJiri Pirko 	IFLA_PHYS_SWITCH_ID,
149d37512a2SNicolas Dichtel 	IFLA_LINK_NETNSID,
150db24a904SDavid Ahern 	IFLA_PHYS_PORT_NAME,
15188d6378bSAnuradha Karuppiah 	IFLA_PROTO_DOWN,
152607ca46eSDavid Howells 	__IFLA_MAX
153607ca46eSDavid Howells };
154607ca46eSDavid Howells 
155607ca46eSDavid Howells 
156607ca46eSDavid Howells #define IFLA_MAX (__IFLA_MAX - 1)
157607ca46eSDavid Howells 
158607ca46eSDavid Howells /* backwards compatibility for userspace */
159607ca46eSDavid Howells #ifndef __KERNEL__
160607ca46eSDavid Howells #define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
161607ca46eSDavid Howells #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
162607ca46eSDavid Howells #endif
163607ca46eSDavid Howells 
164607ca46eSDavid Howells enum {
165607ca46eSDavid Howells 	IFLA_INET_UNSPEC,
166607ca46eSDavid Howells 	IFLA_INET_CONF,
167607ca46eSDavid Howells 	__IFLA_INET_MAX,
168607ca46eSDavid Howells };
169607ca46eSDavid Howells 
170607ca46eSDavid Howells #define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
171607ca46eSDavid Howells 
172607ca46eSDavid Howells /* ifi_flags.
173607ca46eSDavid Howells 
174607ca46eSDavid Howells    IFF_* flags.
175607ca46eSDavid Howells 
176607ca46eSDavid Howells    The only change is:
177607ca46eSDavid Howells    IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
178607ca46eSDavid Howells    more not changeable by user. They describe link media
179607ca46eSDavid Howells    characteristics and set by device driver.
180607ca46eSDavid Howells 
181607ca46eSDavid Howells    Comments:
182607ca46eSDavid Howells    - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
183607ca46eSDavid Howells    - If neither of these three flags are set;
184607ca46eSDavid Howells      the interface is NBMA.
185607ca46eSDavid Howells 
186607ca46eSDavid Howells    - IFF_MULTICAST does not mean anything special:
187607ca46eSDavid Howells    multicasts can be used on all not-NBMA links.
188607ca46eSDavid Howells    IFF_MULTICAST means that this media uses special encapsulation
189607ca46eSDavid Howells    for multicast frames. Apparently, all IFF_POINTOPOINT and
190607ca46eSDavid Howells    IFF_BROADCAST devices are able to use multicasts too.
191607ca46eSDavid Howells  */
192607ca46eSDavid Howells 
193607ca46eSDavid Howells /* IFLA_LINK.
194607ca46eSDavid Howells    For usual devices it is equal ifi_index.
195607ca46eSDavid Howells    If it is a "virtual interface" (f.e. tunnel), ifi_link
196607ca46eSDavid Howells    can point to real physical interface (f.e. for bandwidth calculations),
197607ca46eSDavid Howells    or maybe 0, what means, that real media is unknown (usual
198607ca46eSDavid Howells    for IPIP tunnels, when route to endpoint is allowed to change)
199607ca46eSDavid Howells  */
200607ca46eSDavid Howells 
201607ca46eSDavid Howells /* Subtype attributes for IFLA_PROTINFO */
202607ca46eSDavid Howells enum {
203607ca46eSDavid Howells 	IFLA_INET6_UNSPEC,
204607ca46eSDavid Howells 	IFLA_INET6_FLAGS,	/* link flags			*/
205607ca46eSDavid Howells 	IFLA_INET6_CONF,	/* sysctl parameters		*/
206607ca46eSDavid Howells 	IFLA_INET6_STATS,	/* statistics			*/
207607ca46eSDavid Howells 	IFLA_INET6_MCAST,	/* MC things. What of them?	*/
208607ca46eSDavid Howells 	IFLA_INET6_CACHEINFO,	/* time values and max reasm size */
209607ca46eSDavid Howells 	IFLA_INET6_ICMP6STATS,	/* statistics (icmpv6)		*/
210f53adae4SDaniel Borkmann 	IFLA_INET6_TOKEN,	/* device token			*/
211bc91b0f0SJiri Pirko 	IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
212607ca46eSDavid Howells 	__IFLA_INET6_MAX
213607ca46eSDavid Howells };
214607ca46eSDavid Howells 
215607ca46eSDavid Howells #define IFLA_INET6_MAX	(__IFLA_INET6_MAX - 1)
216607ca46eSDavid Howells 
217bc91b0f0SJiri Pirko enum in6_addr_gen_mode {
218bc91b0f0SJiri Pirko 	IN6_ADDR_GEN_MODE_EUI64,
219bc91b0f0SJiri Pirko 	IN6_ADDR_GEN_MODE_NONE,
220622c81d5SHannes Frederic Sowa 	IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
221bc91b0f0SJiri Pirko };
222bc91b0f0SJiri Pirko 
223e5c3ea5cSJiri Pirko /* Bridge section */
224e5c3ea5cSJiri Pirko 
225e5c3ea5cSJiri Pirko enum {
226e5c3ea5cSJiri Pirko 	IFLA_BR_UNSPEC,
227e5c3ea5cSJiri Pirko 	IFLA_BR_FORWARD_DELAY,
228e5c3ea5cSJiri Pirko 	IFLA_BR_HELLO_TIME,
229e5c3ea5cSJiri Pirko 	IFLA_BR_MAX_AGE,
230af615762SJörg Thalheim 	IFLA_BR_AGEING_TIME,
231af615762SJörg Thalheim 	IFLA_BR_STP_STATE,
232af615762SJörg Thalheim 	IFLA_BR_PRIORITY,
233a7854037SNikolay Aleksandrov 	IFLA_BR_VLAN_FILTERING,
234d2d427b3SToshiaki Makita 	IFLA_BR_VLAN_PROTOCOL,
2357910228bSNikolay Aleksandrov 	IFLA_BR_GROUP_FWD_MASK,
2365127c81fSNikolay Aleksandrov 	IFLA_BR_ROOT_ID,
2377599a220SNikolay Aleksandrov 	IFLA_BR_BRIDGE_ID,
2388762ba68SNikolay Aleksandrov 	IFLA_BR_ROOT_PORT,
239684dd248SNikolay Aleksandrov 	IFLA_BR_ROOT_PATH_COST,
240*ed416309SNikolay Aleksandrov 	IFLA_BR_TOPOLOGY_CHANGE,
241*ed416309SNikolay Aleksandrov 	IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
242e5c3ea5cSJiri Pirko 	__IFLA_BR_MAX,
243e5c3ea5cSJiri Pirko };
244e5c3ea5cSJiri Pirko 
245e5c3ea5cSJiri Pirko #define IFLA_BR_MAX	(__IFLA_BR_MAX - 1)
246e5c3ea5cSJiri Pirko 
2475127c81fSNikolay Aleksandrov struct ifla_bridge_id {
2485127c81fSNikolay Aleksandrov 	__u8	prio[2];
2495127c81fSNikolay Aleksandrov 	__u8	addr[6]; /* ETH_ALEN */
2505127c81fSNikolay Aleksandrov };
2515127c81fSNikolay Aleksandrov 
25225c71c75Sstephen hemminger enum {
25325c71c75Sstephen hemminger 	BRIDGE_MODE_UNSPEC,
25425c71c75Sstephen hemminger 	BRIDGE_MODE_HAIRPIN,
25525c71c75Sstephen hemminger };
25625c71c75Sstephen hemminger 
25725c71c75Sstephen hemminger enum {
25825c71c75Sstephen hemminger 	IFLA_BRPORT_UNSPEC,
25925c71c75Sstephen hemminger 	IFLA_BRPORT_STATE,	/* Spanning tree state     */
26025c71c75Sstephen hemminger 	IFLA_BRPORT_PRIORITY,	/* "             priority  */
26125c71c75Sstephen hemminger 	IFLA_BRPORT_COST,	/* "             cost      */
26225c71c75Sstephen hemminger 	IFLA_BRPORT_MODE,	/* mode (hairpin)          */
263a2e01a65Sstephen hemminger 	IFLA_BRPORT_GUARD,	/* bpdu guard              */
2641007dd1aSstephen hemminger 	IFLA_BRPORT_PROTECT,	/* root port protection    */
265c2d3babfSDavid S. Miller 	IFLA_BRPORT_FAST_LEAVE,	/* multicast fast leave    */
2669ba18891SVlad Yasevich 	IFLA_BRPORT_LEARNING,	/* mac learning */
267867a5943SVlad Yasevich 	IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
26895850116SKyeyoon Park 	IFLA_BRPORT_PROXYARP,	/* proxy ARP */
269efacacdaSScott Feldman 	IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
270842a9ae0SJouni Malinen 	IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
27125c71c75Sstephen hemminger 	__IFLA_BRPORT_MAX
27225c71c75Sstephen hemminger };
27325c71c75Sstephen hemminger #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
27425c71c75Sstephen hemminger 
275607ca46eSDavid Howells struct ifla_cacheinfo {
276607ca46eSDavid Howells 	__u32	max_reasm_len;
277607ca46eSDavid Howells 	__u32	tstamp;		/* ipv6InterfaceTable updated timestamp */
278607ca46eSDavid Howells 	__u32	reachable_time;
279607ca46eSDavid Howells 	__u32	retrans_time;
280607ca46eSDavid Howells };
281607ca46eSDavid Howells 
282607ca46eSDavid Howells enum {
283607ca46eSDavid Howells 	IFLA_INFO_UNSPEC,
284607ca46eSDavid Howells 	IFLA_INFO_KIND,
285607ca46eSDavid Howells 	IFLA_INFO_DATA,
286607ca46eSDavid Howells 	IFLA_INFO_XSTATS,
287ba7d49b1SJiri Pirko 	IFLA_INFO_SLAVE_KIND,
288ba7d49b1SJiri Pirko 	IFLA_INFO_SLAVE_DATA,
289607ca46eSDavid Howells 	__IFLA_INFO_MAX,
290607ca46eSDavid Howells };
291607ca46eSDavid Howells 
292607ca46eSDavid Howells #define IFLA_INFO_MAX	(__IFLA_INFO_MAX - 1)
293607ca46eSDavid Howells 
294607ca46eSDavid Howells /* VLAN section */
295607ca46eSDavid Howells 
296607ca46eSDavid Howells enum {
297607ca46eSDavid Howells 	IFLA_VLAN_UNSPEC,
298607ca46eSDavid Howells 	IFLA_VLAN_ID,
299607ca46eSDavid Howells 	IFLA_VLAN_FLAGS,
300607ca46eSDavid Howells 	IFLA_VLAN_EGRESS_QOS,
301607ca46eSDavid Howells 	IFLA_VLAN_INGRESS_QOS,
3028ad227ffSPatrick McHardy 	IFLA_VLAN_PROTOCOL,
303607ca46eSDavid Howells 	__IFLA_VLAN_MAX,
304607ca46eSDavid Howells };
305607ca46eSDavid Howells 
306607ca46eSDavid Howells #define IFLA_VLAN_MAX	(__IFLA_VLAN_MAX - 1)
307607ca46eSDavid Howells 
308607ca46eSDavid Howells struct ifla_vlan_flags {
309607ca46eSDavid Howells 	__u32	flags;
310607ca46eSDavid Howells 	__u32	mask;
311607ca46eSDavid Howells };
312607ca46eSDavid Howells 
313607ca46eSDavid Howells enum {
314607ca46eSDavid Howells 	IFLA_VLAN_QOS_UNSPEC,
315607ca46eSDavid Howells 	IFLA_VLAN_QOS_MAPPING,
316607ca46eSDavid Howells 	__IFLA_VLAN_QOS_MAX
317607ca46eSDavid Howells };
318607ca46eSDavid Howells 
319607ca46eSDavid Howells #define IFLA_VLAN_QOS_MAX	(__IFLA_VLAN_QOS_MAX - 1)
320607ca46eSDavid Howells 
321607ca46eSDavid Howells struct ifla_vlan_qos_mapping {
322607ca46eSDavid Howells 	__u32 from;
323607ca46eSDavid Howells 	__u32 to;
324607ca46eSDavid Howells };
325607ca46eSDavid Howells 
326607ca46eSDavid Howells /* MACVLAN section */
327607ca46eSDavid Howells enum {
328607ca46eSDavid Howells 	IFLA_MACVLAN_UNSPEC,
329607ca46eSDavid Howells 	IFLA_MACVLAN_MODE,
330607ca46eSDavid Howells 	IFLA_MACVLAN_FLAGS,
33179cf79abSMichael Braun 	IFLA_MACVLAN_MACADDR_MODE,
33279cf79abSMichael Braun 	IFLA_MACVLAN_MACADDR,
33379cf79abSMichael Braun 	IFLA_MACVLAN_MACADDR_DATA,
33479cf79abSMichael Braun 	IFLA_MACVLAN_MACADDR_COUNT,
335607ca46eSDavid Howells 	__IFLA_MACVLAN_MAX,
336607ca46eSDavid Howells };
337607ca46eSDavid Howells 
338607ca46eSDavid Howells #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
339607ca46eSDavid Howells 
340607ca46eSDavid Howells enum macvlan_mode {
341607ca46eSDavid Howells 	MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
342607ca46eSDavid Howells 	MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
343607ca46eSDavid Howells 	MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
344607ca46eSDavid Howells 	MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
34579cf79abSMichael Braun 	MACVLAN_MODE_SOURCE  = 16,/* use source MAC address list to assign */
34679cf79abSMichael Braun };
34779cf79abSMichael Braun 
34879cf79abSMichael Braun enum macvlan_macaddr_mode {
34979cf79abSMichael Braun 	MACVLAN_MACADDR_ADD,
35079cf79abSMichael Braun 	MACVLAN_MACADDR_DEL,
35179cf79abSMichael Braun 	MACVLAN_MACADDR_FLUSH,
35279cf79abSMichael Braun 	MACVLAN_MACADDR_SET,
353607ca46eSDavid Howells };
354607ca46eSDavid Howells 
355607ca46eSDavid Howells #define MACVLAN_FLAG_NOPROMISC	1
356607ca46eSDavid Howells 
3574e3c8992SDavid Ahern /* VRF section */
3584e3c8992SDavid Ahern enum {
3594e3c8992SDavid Ahern 	IFLA_VRF_UNSPEC,
3604e3c8992SDavid Ahern 	IFLA_VRF_TABLE,
3614e3c8992SDavid Ahern 	__IFLA_VRF_MAX
3624e3c8992SDavid Ahern };
3634e3c8992SDavid Ahern 
3644e3c8992SDavid Ahern #define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
3654e3c8992SDavid Ahern 
3662ad7bf36SMahesh Bandewar /* IPVLAN section */
3672ad7bf36SMahesh Bandewar enum {
3682ad7bf36SMahesh Bandewar 	IFLA_IPVLAN_UNSPEC,
3692ad7bf36SMahesh Bandewar 	IFLA_IPVLAN_MODE,
3702ad7bf36SMahesh Bandewar 	__IFLA_IPVLAN_MAX
3712ad7bf36SMahesh Bandewar };
3722ad7bf36SMahesh Bandewar 
3732ad7bf36SMahesh Bandewar #define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
3742ad7bf36SMahesh Bandewar 
3752ad7bf36SMahesh Bandewar enum ipvlan_mode {
3762ad7bf36SMahesh Bandewar 	IPVLAN_MODE_L2 = 0,
3772ad7bf36SMahesh Bandewar 	IPVLAN_MODE_L3,
3782ad7bf36SMahesh Bandewar 	IPVLAN_MODE_MAX
3792ad7bf36SMahesh Bandewar };
3802ad7bf36SMahesh Bandewar 
381607ca46eSDavid Howells /* VXLAN section */
382607ca46eSDavid Howells enum {
383607ca46eSDavid Howells 	IFLA_VXLAN_UNSPEC,
384607ca46eSDavid Howells 	IFLA_VXLAN_ID,
3855d174dd8Sstephen hemminger 	IFLA_VXLAN_GROUP,	/* group or remote address */
386607ca46eSDavid Howells 	IFLA_VXLAN_LINK,
387607ca46eSDavid Howells 	IFLA_VXLAN_LOCAL,
388607ca46eSDavid Howells 	IFLA_VXLAN_TTL,
389607ca46eSDavid Howells 	IFLA_VXLAN_TOS,
390607ca46eSDavid Howells 	IFLA_VXLAN_LEARNING,
391607ca46eSDavid Howells 	IFLA_VXLAN_AGEING,
392607ca46eSDavid Howells 	IFLA_VXLAN_LIMIT,
393823aa873Sstephen hemminger 	IFLA_VXLAN_PORT_RANGE,	/* source port */
394e4f67addSDavid Stevens 	IFLA_VXLAN_PROXY,
395e4f67addSDavid Stevens 	IFLA_VXLAN_RSC,
396e4f67addSDavid Stevens 	IFLA_VXLAN_L2MISS,
397e4f67addSDavid Stevens 	IFLA_VXLAN_L3MISS,
398823aa873Sstephen hemminger 	IFLA_VXLAN_PORT,	/* destination port */
399e4c7ed41SCong Wang 	IFLA_VXLAN_GROUP6,
400e4c7ed41SCong Wang 	IFLA_VXLAN_LOCAL6,
401359a0ea9STom Herbert 	IFLA_VXLAN_UDP_CSUM,
402359a0ea9STom Herbert 	IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
403359a0ea9STom Herbert 	IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
404dfd8645eSTom Herbert 	IFLA_VXLAN_REMCSUM_TX,
405dfd8645eSTom Herbert 	IFLA_VXLAN_REMCSUM_RX,
4063511494cSThomas Graf 	IFLA_VXLAN_GBP,
4070ace2ca8STom Herbert 	IFLA_VXLAN_REMCSUM_NOPARTIAL,
408f8a9b1bcSAlexei Starovoitov 	IFLA_VXLAN_COLLECT_METADATA,
409607ca46eSDavid Howells 	__IFLA_VXLAN_MAX
410607ca46eSDavid Howells };
411607ca46eSDavid Howells #define IFLA_VXLAN_MAX	(__IFLA_VXLAN_MAX - 1)
412607ca46eSDavid Howells 
413607ca46eSDavid Howells struct ifla_vxlan_port_range {
414607ca46eSDavid Howells 	__be16	low;
415607ca46eSDavid Howells 	__be16	high;
416607ca46eSDavid Howells };
417607ca46eSDavid Howells 
4182d07dc79SJohn W. Linville /* GENEVE section */
4192d07dc79SJohn W. Linville enum {
4202d07dc79SJohn W. Linville 	IFLA_GENEVE_UNSPEC,
4212d07dc79SJohn W. Linville 	IFLA_GENEVE_ID,
4222d07dc79SJohn W. Linville 	IFLA_GENEVE_REMOTE,
4238760ce58SJohn W. Linville 	IFLA_GENEVE_TTL,
424d8951125SJohn W. Linville 	IFLA_GENEVE_TOS,
425cd7918b3SPravin B Shelar 	IFLA_GENEVE_PORT,	/* destination port */
426e305ac6cSPravin B Shelar 	IFLA_GENEVE_COLLECT_METADATA,
4272d07dc79SJohn W. Linville 	__IFLA_GENEVE_MAX
4282d07dc79SJohn W. Linville };
4292d07dc79SJohn W. Linville #define IFLA_GENEVE_MAX	(__IFLA_GENEVE_MAX - 1)
4302d07dc79SJohn W. Linville 
43190af2311SJiri Pirko /* Bonding section */
43290af2311SJiri Pirko 
43390af2311SJiri Pirko enum {
43490af2311SJiri Pirko 	IFLA_BOND_UNSPEC,
43590af2311SJiri Pirko 	IFLA_BOND_MODE,
436ec76aa49SJiri Pirko 	IFLA_BOND_ACTIVE_SLAVE,
437eecdaa6eSsfeldma@cumulusnetworks.com 	IFLA_BOND_MIIMON,
43825852e29Ssfeldma@cumulusnetworks.com 	IFLA_BOND_UPDELAY,
439c7461f9bSsfeldma@cumulusnetworks.com 	IFLA_BOND_DOWNDELAY,
4409f53e14eSsfeldma@cumulusnetworks.com 	IFLA_BOND_USE_CARRIER,
44106151dbcSsfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_INTERVAL,
4427f28fa10Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_IP_TARGET,
44329c49482Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_VALIDATE,
444d5c84254Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ARP_ALL_TARGETS,
4450a98a0d1Ssfeldma@cumulusnetworks.com 	IFLA_BOND_PRIMARY,
4468a41ae44Ssfeldma@cumulusnetworks.com 	IFLA_BOND_PRIMARY_RESELECT,
44789901972Ssfeldma@cumulusnetworks.com 	IFLA_BOND_FAIL_OVER_MAC,
448f70161c6Ssfeldma@cumulusnetworks.com 	IFLA_BOND_XMIT_HASH_POLICY,
449d8838de7Ssfeldma@cumulusnetworks.com 	IFLA_BOND_RESEND_IGMP,
4502c9839c1Ssfeldma@cumulusnetworks.com 	IFLA_BOND_NUM_PEER_NOTIF,
4511cc0b1e3Ssfeldma@cumulusnetworks.com 	IFLA_BOND_ALL_SLAVES_ACTIVE,
4527d101008Ssfeldma@cumulusnetworks.com 	IFLA_BOND_MIN_LINKS,
4538d836d09Ssfeldma@cumulusnetworks.com 	IFLA_BOND_LP_INTERVAL,
454c13ab3ffSsfeldma@cumulusnetworks.com 	IFLA_BOND_PACKETS_PER_SLAVE,
455998e40bbSsfeldma@cumulusnetworks.com 	IFLA_BOND_AD_LACP_RATE,
456ec029facSsfeldma@cumulusnetworks.com 	IFLA_BOND_AD_SELECT,
4574ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO,
458171a42c3SAndy Gospodarek 	IFLA_BOND_AD_ACTOR_SYS_PRIO,
459171a42c3SAndy Gospodarek 	IFLA_BOND_AD_USER_PORT_KEY,
460171a42c3SAndy Gospodarek 	IFLA_BOND_AD_ACTOR_SYSTEM,
4610f7bffd9SNikolay Aleksandrov 	IFLA_BOND_TLB_DYNAMIC_LB,
46290af2311SJiri Pirko 	__IFLA_BOND_MAX,
46390af2311SJiri Pirko };
46490af2311SJiri Pirko 
46590af2311SJiri Pirko #define IFLA_BOND_MAX	(__IFLA_BOND_MAX - 1)
46690af2311SJiri Pirko 
4674ee7ac75Ssfeldma@cumulusnetworks.com enum {
468237266f7SJiri Pirko 	IFLA_BOND_AD_INFO_UNSPEC,
4694ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_AGGREGATOR,
4704ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_NUM_PORTS,
4714ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_ACTOR_KEY,
4724ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_PARTNER_KEY,
4734ee7ac75Ssfeldma@cumulusnetworks.com 	IFLA_BOND_AD_INFO_PARTNER_MAC,
4744ee7ac75Ssfeldma@cumulusnetworks.com 	__IFLA_BOND_AD_INFO_MAX,
4754ee7ac75Ssfeldma@cumulusnetworks.com };
4764ee7ac75Ssfeldma@cumulusnetworks.com 
4774ee7ac75Ssfeldma@cumulusnetworks.com #define IFLA_BOND_AD_INFO_MAX	(__IFLA_BOND_AD_INFO_MAX - 1)
4784ee7ac75Ssfeldma@cumulusnetworks.com 
4791d3ee88aSsfeldma@cumulusnetworks.com enum {
480df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_UNSPEC,
481df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_STATE,
482df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_MII_STATUS,
483df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
484df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_PERM_HWADDR,
485df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_QUEUE_ID,
486df7dbcbbSJiri Pirko 	IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
487254cb6dbSNikolay Aleksandrov 	IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
48846ea297eSNikolay Aleksandrov 	IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
489df7dbcbbSJiri Pirko 	__IFLA_BOND_SLAVE_MAX,
4901d3ee88aSsfeldma@cumulusnetworks.com };
4911d3ee88aSsfeldma@cumulusnetworks.com 
492df7dbcbbSJiri Pirko #define IFLA_BOND_SLAVE_MAX	(__IFLA_BOND_SLAVE_MAX - 1)
4931d3ee88aSsfeldma@cumulusnetworks.com 
494607ca46eSDavid Howells /* SR-IOV virtual function management section */
495607ca46eSDavid Howells 
496607ca46eSDavid Howells enum {
497607ca46eSDavid Howells 	IFLA_VF_INFO_UNSPEC,
498607ca46eSDavid Howells 	IFLA_VF_INFO,
499607ca46eSDavid Howells 	__IFLA_VF_INFO_MAX,
500607ca46eSDavid Howells };
501607ca46eSDavid Howells 
502607ca46eSDavid Howells #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
503607ca46eSDavid Howells 
504607ca46eSDavid Howells enum {
505607ca46eSDavid Howells 	IFLA_VF_UNSPEC,
506607ca46eSDavid Howells 	IFLA_VF_MAC,		/* Hardware queue specific attributes */
507607ca46eSDavid Howells 	IFLA_VF_VLAN,
508ed616689SSucheta Chakraborty 	IFLA_VF_TX_RATE,	/* Max TX Bandwidth Allocation */
509607ca46eSDavid Howells 	IFLA_VF_SPOOFCHK,	/* Spoof Checking on/off switch */
5101d8faf48SRony Efraim 	IFLA_VF_LINK_STATE,	/* link state enable/disable/auto switch */
511ed616689SSucheta Chakraborty 	IFLA_VF_RATE,		/* Min and Max TX Bandwidth Allocation */
51201a3d796SVlad Zolotarov 	IFLA_VF_RSS_QUERY_EN,	/* RSS Redirection Table and Hash Key query
51301a3d796SVlad Zolotarov 				 * on/off switch
51401a3d796SVlad Zolotarov 				 */
5153b766cd8SEran Ben Elisha 	IFLA_VF_STATS,		/* network device statistics */
516607ca46eSDavid Howells 	__IFLA_VF_MAX,
517607ca46eSDavid Howells };
518607ca46eSDavid Howells 
519607ca46eSDavid Howells #define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
520607ca46eSDavid Howells 
521607ca46eSDavid Howells struct ifla_vf_mac {
522607ca46eSDavid Howells 	__u32 vf;
523607ca46eSDavid Howells 	__u8 mac[32]; /* MAX_ADDR_LEN */
524607ca46eSDavid Howells };
525607ca46eSDavid Howells 
526607ca46eSDavid Howells struct ifla_vf_vlan {
527607ca46eSDavid Howells 	__u32 vf;
528607ca46eSDavid Howells 	__u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
529607ca46eSDavid Howells 	__u32 qos;
530607ca46eSDavid Howells };
531607ca46eSDavid Howells 
532607ca46eSDavid Howells struct ifla_vf_tx_rate {
533607ca46eSDavid Howells 	__u32 vf;
534607ca46eSDavid Howells 	__u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
535607ca46eSDavid Howells };
536607ca46eSDavid Howells 
537ed616689SSucheta Chakraborty struct ifla_vf_rate {
538ed616689SSucheta Chakraborty 	__u32 vf;
539ed616689SSucheta Chakraborty 	__u32 min_tx_rate; /* Min Bandwidth in Mbps */
540ed616689SSucheta Chakraborty 	__u32 max_tx_rate; /* Max Bandwidth in Mbps */
541ed616689SSucheta Chakraborty };
542ed616689SSucheta Chakraborty 
543607ca46eSDavid Howells struct ifla_vf_spoofchk {
544607ca46eSDavid Howells 	__u32 vf;
545607ca46eSDavid Howells 	__u32 setting;
546607ca46eSDavid Howells };
547607ca46eSDavid Howells 
5481d8faf48SRony Efraim enum {
5491d8faf48SRony Efraim 	IFLA_VF_LINK_STATE_AUTO,	/* link state of the uplink */
5501d8faf48SRony Efraim 	IFLA_VF_LINK_STATE_ENABLE,	/* link always up */
5511d8faf48SRony Efraim 	IFLA_VF_LINK_STATE_DISABLE,	/* link always down */
5521d8faf48SRony Efraim 	__IFLA_VF_LINK_STATE_MAX,
5531d8faf48SRony Efraim };
5541d8faf48SRony Efraim 
5551d8faf48SRony Efraim struct ifla_vf_link_state {
5561d8faf48SRony Efraim 	__u32 vf;
5571d8faf48SRony Efraim 	__u32 link_state;
5581d8faf48SRony Efraim };
5591d8faf48SRony Efraim 
56001a3d796SVlad Zolotarov struct ifla_vf_rss_query_en {
56101a3d796SVlad Zolotarov 	__u32 vf;
56201a3d796SVlad Zolotarov 	__u32 setting;
56301a3d796SVlad Zolotarov };
56401a3d796SVlad Zolotarov 
5653b766cd8SEran Ben Elisha enum {
5663b766cd8SEran Ben Elisha 	IFLA_VF_STATS_RX_PACKETS,
5673b766cd8SEran Ben Elisha 	IFLA_VF_STATS_TX_PACKETS,
5683b766cd8SEran Ben Elisha 	IFLA_VF_STATS_RX_BYTES,
5693b766cd8SEran Ben Elisha 	IFLA_VF_STATS_TX_BYTES,
5703b766cd8SEran Ben Elisha 	IFLA_VF_STATS_BROADCAST,
5713b766cd8SEran Ben Elisha 	IFLA_VF_STATS_MULTICAST,
5723b766cd8SEran Ben Elisha 	__IFLA_VF_STATS_MAX,
5733b766cd8SEran Ben Elisha };
5743b766cd8SEran Ben Elisha 
5753b766cd8SEran Ben Elisha #define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
5763b766cd8SEran Ben Elisha 
577607ca46eSDavid Howells /* VF ports management section
578607ca46eSDavid Howells  *
579607ca46eSDavid Howells  *	Nested layout of set/get msg is:
580607ca46eSDavid Howells  *
581607ca46eSDavid Howells  *		[IFLA_NUM_VF]
582607ca46eSDavid Howells  *		[IFLA_VF_PORTS]
583607ca46eSDavid Howells  *			[IFLA_VF_PORT]
584607ca46eSDavid Howells  *				[IFLA_PORT_*], ...
585607ca46eSDavid Howells  *			[IFLA_VF_PORT]
586607ca46eSDavid Howells  *				[IFLA_PORT_*], ...
587607ca46eSDavid Howells  *			...
588607ca46eSDavid Howells  *		[IFLA_PORT_SELF]
589607ca46eSDavid Howells  *			[IFLA_PORT_*], ...
590607ca46eSDavid Howells  */
591607ca46eSDavid Howells 
592607ca46eSDavid Howells enum {
593607ca46eSDavid Howells 	IFLA_VF_PORT_UNSPEC,
594607ca46eSDavid Howells 	IFLA_VF_PORT,			/* nest */
595607ca46eSDavid Howells 	__IFLA_VF_PORT_MAX,
596607ca46eSDavid Howells };
597607ca46eSDavid Howells 
598607ca46eSDavid Howells #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
599607ca46eSDavid Howells 
600607ca46eSDavid Howells enum {
601607ca46eSDavid Howells 	IFLA_PORT_UNSPEC,
602607ca46eSDavid Howells 	IFLA_PORT_VF,			/* __u32 */
603607ca46eSDavid Howells 	IFLA_PORT_PROFILE,		/* string */
604607ca46eSDavid Howells 	IFLA_PORT_VSI_TYPE,		/* 802.1Qbg (pre-)standard VDP */
605607ca46eSDavid Howells 	IFLA_PORT_INSTANCE_UUID,	/* binary UUID */
606607ca46eSDavid Howells 	IFLA_PORT_HOST_UUID,		/* binary UUID */
607607ca46eSDavid Howells 	IFLA_PORT_REQUEST,		/* __u8 */
608607ca46eSDavid Howells 	IFLA_PORT_RESPONSE,		/* __u16, output only */
609607ca46eSDavid Howells 	__IFLA_PORT_MAX,
610607ca46eSDavid Howells };
611607ca46eSDavid Howells 
612607ca46eSDavid Howells #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
613607ca46eSDavid Howells 
614607ca46eSDavid Howells #define PORT_PROFILE_MAX	40
615607ca46eSDavid Howells #define PORT_UUID_MAX		16
616607ca46eSDavid Howells #define PORT_SELF_VF		-1
617607ca46eSDavid Howells 
618607ca46eSDavid Howells enum {
619607ca46eSDavid Howells 	PORT_REQUEST_PREASSOCIATE = 0,
620607ca46eSDavid Howells 	PORT_REQUEST_PREASSOCIATE_RR,
621607ca46eSDavid Howells 	PORT_REQUEST_ASSOCIATE,
622607ca46eSDavid Howells 	PORT_REQUEST_DISASSOCIATE,
623607ca46eSDavid Howells };
624607ca46eSDavid Howells 
625607ca46eSDavid Howells enum {
626607ca46eSDavid Howells 	PORT_VDP_RESPONSE_SUCCESS = 0,
627607ca46eSDavid Howells 	PORT_VDP_RESPONSE_INVALID_FORMAT,
628607ca46eSDavid Howells 	PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
629607ca46eSDavid Howells 	PORT_VDP_RESPONSE_UNUSED_VTID,
630607ca46eSDavid Howells 	PORT_VDP_RESPONSE_VTID_VIOLATION,
631607ca46eSDavid Howells 	PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
632607ca46eSDavid Howells 	PORT_VDP_RESPONSE_OUT_OF_SYNC,
633607ca46eSDavid Howells 	/* 0x08-0xFF reserved for future VDP use */
634607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
635607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_INPROGRESS,
636607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_INVALID,
637607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_BADSTATE,
638607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
639607ca46eSDavid Howells 	PORT_PROFILE_RESPONSE_ERROR,
640607ca46eSDavid Howells };
641607ca46eSDavid Howells 
642607ca46eSDavid Howells struct ifla_port_vsi {
643607ca46eSDavid Howells 	__u8 vsi_mgr_id;
644607ca46eSDavid Howells 	__u8 vsi_type_id[3];
645607ca46eSDavid Howells 	__u8 vsi_type_version;
646607ca46eSDavid Howells 	__u8 pad[3];
647607ca46eSDavid Howells };
648607ca46eSDavid Howells 
649607ca46eSDavid Howells 
650607ca46eSDavid Howells /* IPoIB section */
651607ca46eSDavid Howells 
652607ca46eSDavid Howells enum {
653607ca46eSDavid Howells 	IFLA_IPOIB_UNSPEC,
654607ca46eSDavid Howells 	IFLA_IPOIB_PKEY,
655607ca46eSDavid Howells 	IFLA_IPOIB_MODE,
656607ca46eSDavid Howells 	IFLA_IPOIB_UMCAST,
657607ca46eSDavid Howells 	__IFLA_IPOIB_MAX
658607ca46eSDavid Howells };
659607ca46eSDavid Howells 
660607ca46eSDavid Howells enum {
661607ca46eSDavid Howells 	IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
662607ca46eSDavid Howells 	IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
663607ca46eSDavid Howells };
664607ca46eSDavid Howells 
665607ca46eSDavid Howells #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
666607ca46eSDavid Howells 
667f421436aSArvid Brodin 
668f421436aSArvid Brodin /* HSR section */
669f421436aSArvid Brodin 
670f421436aSArvid Brodin enum {
671f421436aSArvid Brodin 	IFLA_HSR_UNSPEC,
672f421436aSArvid Brodin 	IFLA_HSR_SLAVE1,
673f421436aSArvid Brodin 	IFLA_HSR_SLAVE2,
67498bf8362SArvid Brodin 	IFLA_HSR_MULTICAST_SPEC,	/* Last byte of supervision addr */
67598bf8362SArvid Brodin 	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
67698bf8362SArvid Brodin 	IFLA_HSR_SEQ_NR,
677f421436aSArvid Brodin 	__IFLA_HSR_MAX,
678f421436aSArvid Brodin };
679f421436aSArvid Brodin 
680f421436aSArvid Brodin #define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
681f421436aSArvid Brodin 
682607ca46eSDavid Howells #endif /* _UAPI_LINUX_IF_LINK_H */
683