xref: /OK3568_Linux_fs/kernel/include/uapi/linux/if_team.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * include/linux/if_team.h - Network team device driver header
4*4882a593Smuzhiyun  * Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com>
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify
7*4882a593Smuzhiyun  * it under the terms of the GNU General Public License as published by
8*4882a593Smuzhiyun  * the Free Software Foundation; either version 2 of the License, or
9*4882a593Smuzhiyun  * (at your option) any later version.
10*4882a593Smuzhiyun  */
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #ifndef _UAPI_LINUX_IF_TEAM_H_
13*4882a593Smuzhiyun #define _UAPI_LINUX_IF_TEAM_H_
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun #define TEAM_STRING_MAX_LEN 32
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun /**********************************
19*4882a593Smuzhiyun  * NETLINK_GENERIC netlink family.
20*4882a593Smuzhiyun  **********************************/
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun enum {
23*4882a593Smuzhiyun 	TEAM_CMD_NOOP,
24*4882a593Smuzhiyun 	TEAM_CMD_OPTIONS_SET,
25*4882a593Smuzhiyun 	TEAM_CMD_OPTIONS_GET,
26*4882a593Smuzhiyun 	TEAM_CMD_PORT_LIST_GET,
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun 	__TEAM_CMD_MAX,
29*4882a593Smuzhiyun 	TEAM_CMD_MAX = (__TEAM_CMD_MAX - 1),
30*4882a593Smuzhiyun };
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun enum {
33*4882a593Smuzhiyun 	TEAM_ATTR_UNSPEC,
34*4882a593Smuzhiyun 	TEAM_ATTR_TEAM_IFINDEX,		/* u32 */
35*4882a593Smuzhiyun 	TEAM_ATTR_LIST_OPTION,		/* nest */
36*4882a593Smuzhiyun 	TEAM_ATTR_LIST_PORT,		/* nest */
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun 	__TEAM_ATTR_MAX,
39*4882a593Smuzhiyun 	TEAM_ATTR_MAX = __TEAM_ATTR_MAX - 1,
40*4882a593Smuzhiyun };
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun /* Nested layout of get/set msg:
43*4882a593Smuzhiyun  *
44*4882a593Smuzhiyun  *	[TEAM_ATTR_LIST_OPTION]
45*4882a593Smuzhiyun  *		[TEAM_ATTR_ITEM_OPTION]
46*4882a593Smuzhiyun  *			[TEAM_ATTR_OPTION_*], ...
47*4882a593Smuzhiyun  *		[TEAM_ATTR_ITEM_OPTION]
48*4882a593Smuzhiyun  *			[TEAM_ATTR_OPTION_*], ...
49*4882a593Smuzhiyun  *		...
50*4882a593Smuzhiyun  *	[TEAM_ATTR_LIST_PORT]
51*4882a593Smuzhiyun  *		[TEAM_ATTR_ITEM_PORT]
52*4882a593Smuzhiyun  *			[TEAM_ATTR_PORT_*], ...
53*4882a593Smuzhiyun  *		[TEAM_ATTR_ITEM_PORT]
54*4882a593Smuzhiyun  *			[TEAM_ATTR_PORT_*], ...
55*4882a593Smuzhiyun  *		...
56*4882a593Smuzhiyun  */
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun enum {
59*4882a593Smuzhiyun 	TEAM_ATTR_ITEM_OPTION_UNSPEC,
60*4882a593Smuzhiyun 	TEAM_ATTR_ITEM_OPTION,		/* nest */
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun 	__TEAM_ATTR_ITEM_OPTION_MAX,
63*4882a593Smuzhiyun 	TEAM_ATTR_ITEM_OPTION_MAX = __TEAM_ATTR_ITEM_OPTION_MAX - 1,
64*4882a593Smuzhiyun };
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun enum {
67*4882a593Smuzhiyun 	TEAM_ATTR_OPTION_UNSPEC,
68*4882a593Smuzhiyun 	TEAM_ATTR_OPTION_NAME,		/* string */
69*4882a593Smuzhiyun 	TEAM_ATTR_OPTION_CHANGED,	/* flag */
70*4882a593Smuzhiyun 	TEAM_ATTR_OPTION_TYPE,		/* u8 */
71*4882a593Smuzhiyun 	TEAM_ATTR_OPTION_DATA,		/* dynamic */
72*4882a593Smuzhiyun 	TEAM_ATTR_OPTION_REMOVED,	/* flag */
73*4882a593Smuzhiyun 	TEAM_ATTR_OPTION_PORT_IFINDEX,	/* u32 */ /* for per-port options */
74*4882a593Smuzhiyun 	TEAM_ATTR_OPTION_ARRAY_INDEX,	/* u32 */ /* for array options */
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun 	__TEAM_ATTR_OPTION_MAX,
77*4882a593Smuzhiyun 	TEAM_ATTR_OPTION_MAX = __TEAM_ATTR_OPTION_MAX - 1,
78*4882a593Smuzhiyun };
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun enum {
81*4882a593Smuzhiyun 	TEAM_ATTR_ITEM_PORT_UNSPEC,
82*4882a593Smuzhiyun 	TEAM_ATTR_ITEM_PORT,		/* nest */
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun 	__TEAM_ATTR_ITEM_PORT_MAX,
85*4882a593Smuzhiyun 	TEAM_ATTR_ITEM_PORT_MAX = __TEAM_ATTR_ITEM_PORT_MAX - 1,
86*4882a593Smuzhiyun };
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun enum {
89*4882a593Smuzhiyun 	TEAM_ATTR_PORT_UNSPEC,
90*4882a593Smuzhiyun 	TEAM_ATTR_PORT_IFINDEX,		/* u32 */
91*4882a593Smuzhiyun 	TEAM_ATTR_PORT_CHANGED,		/* flag */
92*4882a593Smuzhiyun 	TEAM_ATTR_PORT_LINKUP,		/* flag */
93*4882a593Smuzhiyun 	TEAM_ATTR_PORT_SPEED,		/* u32 */
94*4882a593Smuzhiyun 	TEAM_ATTR_PORT_DUPLEX,		/* u8 */
95*4882a593Smuzhiyun 	TEAM_ATTR_PORT_REMOVED,		/* flag */
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun 	__TEAM_ATTR_PORT_MAX,
98*4882a593Smuzhiyun 	TEAM_ATTR_PORT_MAX = __TEAM_ATTR_PORT_MAX - 1,
99*4882a593Smuzhiyun };
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun /*
102*4882a593Smuzhiyun  * NETLINK_GENERIC related info
103*4882a593Smuzhiyun  */
104*4882a593Smuzhiyun #define TEAM_GENL_NAME "team"
105*4882a593Smuzhiyun #define TEAM_GENL_VERSION 0x1
106*4882a593Smuzhiyun #define TEAM_GENL_CHANGE_EVENT_MC_GRP_NAME "change_event"
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun #endif /* _UAPI_LINUX_IF_TEAM_H_ */
109