1*387724cbSHangbin Liu# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 2*387724cbSHangbin Liu 3*387724cbSHangbin Liuname: team 4*387724cbSHangbin Liu 5*387724cbSHangbin Liuprotocol: genetlink-legacy 6*387724cbSHangbin Liu 7*387724cbSHangbin Liudoc: | 8*387724cbSHangbin Liu Network team device driver. 9*387724cbSHangbin Liu 10*387724cbSHangbin Liuc-family-name: team-genl-name 11*387724cbSHangbin Liuc-version-name: team-genl-version 12*387724cbSHangbin Liukernel-policy: global 13*387724cbSHangbin Liuuapi-header: linux/if_team.h 14*387724cbSHangbin Liu 15*387724cbSHangbin Liudefinitions: 16*387724cbSHangbin Liu - 17*387724cbSHangbin Liu name: string-max-len 18*387724cbSHangbin Liu type: const 19*387724cbSHangbin Liu value: 32 20*387724cbSHangbin Liu - 21*387724cbSHangbin Liu name: genl-change-event-mc-grp-name 22*387724cbSHangbin Liu type: const 23*387724cbSHangbin Liu value: change_event 24*387724cbSHangbin Liu 25*387724cbSHangbin Liuattribute-sets: 26*387724cbSHangbin Liu - 27*387724cbSHangbin Liu name: team 28*387724cbSHangbin Liu doc: 29*387724cbSHangbin Liu The team nested layout of get/set msg looks like 30*387724cbSHangbin Liu [TEAM_ATTR_LIST_OPTION] 31*387724cbSHangbin Liu [TEAM_ATTR_ITEM_OPTION] 32*387724cbSHangbin Liu [TEAM_ATTR_OPTION_*], ... 33*387724cbSHangbin Liu [TEAM_ATTR_ITEM_OPTION] 34*387724cbSHangbin Liu [TEAM_ATTR_OPTION_*], ... 35*387724cbSHangbin Liu ... 36*387724cbSHangbin Liu [TEAM_ATTR_LIST_PORT] 37*387724cbSHangbin Liu [TEAM_ATTR_ITEM_PORT] 38*387724cbSHangbin Liu [TEAM_ATTR_PORT_*], ... 39*387724cbSHangbin Liu [TEAM_ATTR_ITEM_PORT] 40*387724cbSHangbin Liu [TEAM_ATTR_PORT_*], ... 41*387724cbSHangbin Liu ... 42*387724cbSHangbin Liu name-prefix: team-attr- 43*387724cbSHangbin Liu attributes: 44*387724cbSHangbin Liu - 45*387724cbSHangbin Liu name: unspec 46*387724cbSHangbin Liu type: unused 47*387724cbSHangbin Liu value: 0 48*387724cbSHangbin Liu - 49*387724cbSHangbin Liu name: team-ifindex 50*387724cbSHangbin Liu type: u32 51*387724cbSHangbin Liu - 52*387724cbSHangbin Liu name: list-option 53*387724cbSHangbin Liu type: nest 54*387724cbSHangbin Liu nested-attributes: item-option 55*387724cbSHangbin Liu - 56*387724cbSHangbin Liu name: list-port 57*387724cbSHangbin Liu type: nest 58*387724cbSHangbin Liu nested-attributes: item-port 59*387724cbSHangbin Liu - 60*387724cbSHangbin Liu name: item-option 61*387724cbSHangbin Liu name-prefix: team-attr-item- 62*387724cbSHangbin Liu attr-cnt-name: __team-attr-item-option-max 63*387724cbSHangbin Liu attr-max-name: team-attr-item-option-max 64*387724cbSHangbin Liu attributes: 65*387724cbSHangbin Liu - 66*387724cbSHangbin Liu name: option-unspec 67*387724cbSHangbin Liu type: unused 68*387724cbSHangbin Liu value: 0 69*387724cbSHangbin Liu - 70*387724cbSHangbin Liu name: option 71*387724cbSHangbin Liu type: nest 72*387724cbSHangbin Liu nested-attributes: attr-option 73*387724cbSHangbin Liu - 74*387724cbSHangbin Liu name: attr-option 75*387724cbSHangbin Liu name-prefix: team-attr-option- 76*387724cbSHangbin Liu attributes: 77*387724cbSHangbin Liu - 78*387724cbSHangbin Liu name: unspec 79*387724cbSHangbin Liu type: unused 80*387724cbSHangbin Liu value: 0 81*387724cbSHangbin Liu - 82*387724cbSHangbin Liu name: name 83*387724cbSHangbin Liu type: string 84*387724cbSHangbin Liu checks: 85*387724cbSHangbin Liu max-len: string-max-len 86*387724cbSHangbin Liu unterminated-ok: true 87*387724cbSHangbin Liu - 88*387724cbSHangbin Liu name: changed 89*387724cbSHangbin Liu type: flag 90*387724cbSHangbin Liu - 91*387724cbSHangbin Liu name: type 92*387724cbSHangbin Liu type: u8 93*387724cbSHangbin Liu - 94*387724cbSHangbin Liu name: data 95*387724cbSHangbin Liu type: binary 96*387724cbSHangbin Liu - 97*387724cbSHangbin Liu name: removed 98*387724cbSHangbin Liu type: flag 99*387724cbSHangbin Liu - 100*387724cbSHangbin Liu name: port-ifindex 101*387724cbSHangbin Liu type: u32 102*387724cbSHangbin Liu doc: for per-port options 103*387724cbSHangbin Liu - 104*387724cbSHangbin Liu name: array-index 105*387724cbSHangbin Liu type: u32 106*387724cbSHangbin Liu doc: for array options 107*387724cbSHangbin Liu - 108*387724cbSHangbin Liu name: item-port 109*387724cbSHangbin Liu name-prefix: team-attr-item- 110*387724cbSHangbin Liu attr-cnt-name: __team-attr-item-port-max 111*387724cbSHangbin Liu attr-max-name: team-attr-item-port-max 112*387724cbSHangbin Liu attributes: 113*387724cbSHangbin Liu - 114*387724cbSHangbin Liu name: port-unspec 115*387724cbSHangbin Liu type: unused 116*387724cbSHangbin Liu value: 0 117*387724cbSHangbin Liu - 118*387724cbSHangbin Liu name: port 119*387724cbSHangbin Liu type: nest 120*387724cbSHangbin Liu nested-attributes: attr-port 121*387724cbSHangbin Liu - 122*387724cbSHangbin Liu name: attr-port 123*387724cbSHangbin Liu name-prefix: team-attr-port- 124*387724cbSHangbin Liu attributes: 125*387724cbSHangbin Liu - 126*387724cbSHangbin Liu name: unspec 127*387724cbSHangbin Liu type: unused 128*387724cbSHangbin Liu value: 0 129*387724cbSHangbin Liu - 130*387724cbSHangbin Liu name: ifindex 131*387724cbSHangbin Liu type: u32 132*387724cbSHangbin Liu - 133*387724cbSHangbin Liu name: changed 134*387724cbSHangbin Liu type: flag 135*387724cbSHangbin Liu - 136*387724cbSHangbin Liu name: linkup 137*387724cbSHangbin Liu type: flag 138*387724cbSHangbin Liu - 139*387724cbSHangbin Liu name: speed 140*387724cbSHangbin Liu type: u32 141*387724cbSHangbin Liu - 142*387724cbSHangbin Liu name: duplex 143*387724cbSHangbin Liu type: u8 144*387724cbSHangbin Liu - 145*387724cbSHangbin Liu name: removed 146*387724cbSHangbin Liu type: flag 147*387724cbSHangbin Liu 148*387724cbSHangbin Liuoperations: 149*387724cbSHangbin Liu list: 150*387724cbSHangbin Liu - 151*387724cbSHangbin Liu name: noop 152*387724cbSHangbin Liu doc: No operation 153*387724cbSHangbin Liu value: 0 154*387724cbSHangbin Liu attribute-set: team 155*387724cbSHangbin Liu dont-validate: [ strict ] 156*387724cbSHangbin Liu 157*387724cbSHangbin Liu do: 158*387724cbSHangbin Liu # Actually it only reply the team netlink family 159*387724cbSHangbin Liu reply: 160*387724cbSHangbin Liu attributes: 161*387724cbSHangbin Liu - team-ifindex 162*387724cbSHangbin Liu 163*387724cbSHangbin Liu - 164*387724cbSHangbin Liu name: options-set 165*387724cbSHangbin Liu doc: Set team options 166*387724cbSHangbin Liu attribute-set: team 167*387724cbSHangbin Liu dont-validate: [ strict ] 168*387724cbSHangbin Liu flags: [ admin-perm ] 169*387724cbSHangbin Liu 170*387724cbSHangbin Liu do: 171*387724cbSHangbin Liu request: &option_attrs 172*387724cbSHangbin Liu attributes: 173*387724cbSHangbin Liu - team-ifindex 174*387724cbSHangbin Liu - list-option 175*387724cbSHangbin Liu reply: *option_attrs 176*387724cbSHangbin Liu 177*387724cbSHangbin Liu - 178*387724cbSHangbin Liu name: options-get 179*387724cbSHangbin Liu doc: Get team options info 180*387724cbSHangbin Liu attribute-set: team 181*387724cbSHangbin Liu dont-validate: [ strict ] 182*387724cbSHangbin Liu flags: [ admin-perm ] 183*387724cbSHangbin Liu 184*387724cbSHangbin Liu do: 185*387724cbSHangbin Liu request: 186*387724cbSHangbin Liu attributes: 187*387724cbSHangbin Liu - team-ifindex 188*387724cbSHangbin Liu reply: *option_attrs 189*387724cbSHangbin Liu 190*387724cbSHangbin Liu - 191*387724cbSHangbin Liu name: port-list-get 192*387724cbSHangbin Liu doc: Get team ports info 193*387724cbSHangbin Liu attribute-set: team 194*387724cbSHangbin Liu dont-validate: [ strict ] 195*387724cbSHangbin Liu flags: [ admin-perm ] 196*387724cbSHangbin Liu 197*387724cbSHangbin Liu do: 198*387724cbSHangbin Liu request: 199*387724cbSHangbin Liu attributes: 200*387724cbSHangbin Liu - team-ifindex 201*387724cbSHangbin Liu reply: &port_attrs 202*387724cbSHangbin Liu attributes: 203*387724cbSHangbin Liu - team-ifindex 204*387724cbSHangbin Liu - list-port 205