xref: /linux/include/uapi/linux/if_team.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2607ca46eSDavid Howells /*
3607ca46eSDavid Howells  * include/linux/if_team.h - Network team device driver header
4607ca46eSDavid Howells  * Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com>
5607ca46eSDavid Howells  *
6607ca46eSDavid Howells  * This program is free software; you can redistribute it and/or modify
7607ca46eSDavid Howells  * it under the terms of the GNU General Public License as published by
8607ca46eSDavid Howells  * the Free Software Foundation; either version 2 of the License, or
9607ca46eSDavid Howells  * (at your option) any later version.
10607ca46eSDavid Howells  */
11607ca46eSDavid Howells 
12607ca46eSDavid Howells #ifndef _UAPI_LINUX_IF_TEAM_H_
13607ca46eSDavid Howells #define _UAPI_LINUX_IF_TEAM_H_
14607ca46eSDavid Howells 
15607ca46eSDavid Howells 
16607ca46eSDavid Howells #define TEAM_STRING_MAX_LEN 32
17607ca46eSDavid Howells 
18607ca46eSDavid Howells /**********************************
19607ca46eSDavid Howells  * NETLINK_GENERIC netlink family.
20607ca46eSDavid Howells  **********************************/
21607ca46eSDavid Howells 
22607ca46eSDavid Howells enum {
23607ca46eSDavid Howells 	TEAM_CMD_NOOP,
24607ca46eSDavid Howells 	TEAM_CMD_OPTIONS_SET,
25607ca46eSDavid Howells 	TEAM_CMD_OPTIONS_GET,
26607ca46eSDavid Howells 	TEAM_CMD_PORT_LIST_GET,
27607ca46eSDavid Howells 
28607ca46eSDavid Howells 	__TEAM_CMD_MAX,
29607ca46eSDavid Howells 	TEAM_CMD_MAX = (__TEAM_CMD_MAX - 1),
30607ca46eSDavid Howells };
31607ca46eSDavid Howells 
32607ca46eSDavid Howells enum {
33607ca46eSDavid Howells 	TEAM_ATTR_UNSPEC,
34607ca46eSDavid Howells 	TEAM_ATTR_TEAM_IFINDEX,		/* u32 */
35607ca46eSDavid Howells 	TEAM_ATTR_LIST_OPTION,		/* nest */
36607ca46eSDavid Howells 	TEAM_ATTR_LIST_PORT,		/* nest */
37607ca46eSDavid Howells 
38607ca46eSDavid Howells 	__TEAM_ATTR_MAX,
39607ca46eSDavid Howells 	TEAM_ATTR_MAX = __TEAM_ATTR_MAX - 1,
40607ca46eSDavid Howells };
41607ca46eSDavid Howells 
42607ca46eSDavid Howells /* Nested layout of get/set msg:
43607ca46eSDavid Howells  *
44607ca46eSDavid Howells  *	[TEAM_ATTR_LIST_OPTION]
45607ca46eSDavid Howells  *		[TEAM_ATTR_ITEM_OPTION]
46607ca46eSDavid Howells  *			[TEAM_ATTR_OPTION_*], ...
47607ca46eSDavid Howells  *		[TEAM_ATTR_ITEM_OPTION]
48607ca46eSDavid Howells  *			[TEAM_ATTR_OPTION_*], ...
49607ca46eSDavid Howells  *		...
50607ca46eSDavid Howells  *	[TEAM_ATTR_LIST_PORT]
51607ca46eSDavid Howells  *		[TEAM_ATTR_ITEM_PORT]
52607ca46eSDavid Howells  *			[TEAM_ATTR_PORT_*], ...
53607ca46eSDavid Howells  *		[TEAM_ATTR_ITEM_PORT]
54607ca46eSDavid Howells  *			[TEAM_ATTR_PORT_*], ...
55607ca46eSDavid Howells  *		...
56607ca46eSDavid Howells  */
57607ca46eSDavid Howells 
58607ca46eSDavid Howells enum {
59607ca46eSDavid Howells 	TEAM_ATTR_ITEM_OPTION_UNSPEC,
60607ca46eSDavid Howells 	TEAM_ATTR_ITEM_OPTION,		/* nest */
61607ca46eSDavid Howells 
62607ca46eSDavid Howells 	__TEAM_ATTR_ITEM_OPTION_MAX,
63607ca46eSDavid Howells 	TEAM_ATTR_ITEM_OPTION_MAX = __TEAM_ATTR_ITEM_OPTION_MAX - 1,
64607ca46eSDavid Howells };
65607ca46eSDavid Howells 
66607ca46eSDavid Howells enum {
67607ca46eSDavid Howells 	TEAM_ATTR_OPTION_UNSPEC,
68607ca46eSDavid Howells 	TEAM_ATTR_OPTION_NAME,		/* string */
69607ca46eSDavid Howells 	TEAM_ATTR_OPTION_CHANGED,	/* flag */
70607ca46eSDavid Howells 	TEAM_ATTR_OPTION_TYPE,		/* u8 */
71607ca46eSDavid Howells 	TEAM_ATTR_OPTION_DATA,		/* dynamic */
72607ca46eSDavid Howells 	TEAM_ATTR_OPTION_REMOVED,	/* flag */
73607ca46eSDavid Howells 	TEAM_ATTR_OPTION_PORT_IFINDEX,	/* u32 */ /* for per-port options */
74607ca46eSDavid Howells 	TEAM_ATTR_OPTION_ARRAY_INDEX,	/* u32 */ /* for array options */
75607ca46eSDavid Howells 
76607ca46eSDavid Howells 	__TEAM_ATTR_OPTION_MAX,
77607ca46eSDavid Howells 	TEAM_ATTR_OPTION_MAX = __TEAM_ATTR_OPTION_MAX - 1,
78607ca46eSDavid Howells };
79607ca46eSDavid Howells 
80607ca46eSDavid Howells enum {
81607ca46eSDavid Howells 	TEAM_ATTR_ITEM_PORT_UNSPEC,
82607ca46eSDavid Howells 	TEAM_ATTR_ITEM_PORT,		/* nest */
83607ca46eSDavid Howells 
84607ca46eSDavid Howells 	__TEAM_ATTR_ITEM_PORT_MAX,
85607ca46eSDavid Howells 	TEAM_ATTR_ITEM_PORT_MAX = __TEAM_ATTR_ITEM_PORT_MAX - 1,
86607ca46eSDavid Howells };
87607ca46eSDavid Howells 
88607ca46eSDavid Howells enum {
89607ca46eSDavid Howells 	TEAM_ATTR_PORT_UNSPEC,
90607ca46eSDavid Howells 	TEAM_ATTR_PORT_IFINDEX,		/* u32 */
91607ca46eSDavid Howells 	TEAM_ATTR_PORT_CHANGED,		/* flag */
92607ca46eSDavid Howells 	TEAM_ATTR_PORT_LINKUP,		/* flag */
93607ca46eSDavid Howells 	TEAM_ATTR_PORT_SPEED,		/* u32 */
94607ca46eSDavid Howells 	TEAM_ATTR_PORT_DUPLEX,		/* u8 */
95607ca46eSDavid Howells 	TEAM_ATTR_PORT_REMOVED,		/* flag */
96607ca46eSDavid Howells 
97607ca46eSDavid Howells 	__TEAM_ATTR_PORT_MAX,
98607ca46eSDavid Howells 	TEAM_ATTR_PORT_MAX = __TEAM_ATTR_PORT_MAX - 1,
99607ca46eSDavid Howells };
100607ca46eSDavid Howells 
101607ca46eSDavid Howells /*
102607ca46eSDavid Howells  * NETLINK_GENERIC related info
103607ca46eSDavid Howells  */
104607ca46eSDavid Howells #define TEAM_GENL_NAME "team"
105607ca46eSDavid Howells #define TEAM_GENL_VERSION 0x1
106607ca46eSDavid Howells #define TEAM_GENL_CHANGE_EVENT_MC_GRP_NAME "change_event"
107607ca46eSDavid Howells 
108607ca46eSDavid Howells #endif /* _UAPI_LINUX_IF_TEAM_H_ */
109