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