1*cf78ab8cSAndroid Build Coastguard Worker// PDL grammar file for mac80211_hwsim packet format. 2*cf78ab8cSAndroid Build Coastguard Worker// 3*cf78ab8cSAndroid Build Coastguard Worker// See 4*cf78ab8cSAndroid Build Coastguard Worker// - mac80211_hwsim.h 5*cf78ab8cSAndroid Build Coastguard Worker 6*cf78ab8cSAndroid Build Coastguard Worker 7*cf78ab8cSAndroid Build Coastguard Worker// Host byte order 8*cf78ab8cSAndroid Build Coastguard Workerlittle_endian_packets 9*cf78ab8cSAndroid Build Coastguard Worker 10*cf78ab8cSAndroid Build Coastguard Worker// Netlink Message Header 11*cf78ab8cSAndroid Build Coastguard Worker 12*cf78ab8cSAndroid Build Coastguard Worker// TODO: use include from netlink.pdl 13*cf78ab8cSAndroid Build Coastguard Worker 14*cf78ab8cSAndroid Build Coastguard Workerstruct NlMsgHdr { 15*cf78ab8cSAndroid Build Coastguard Worker nlmsg_len : 32, // Length of message including header 16*cf78ab8cSAndroid Build Coastguard Worker nlmsg_type : 16, // Message type identifier 17*cf78ab8cSAndroid Build Coastguard Worker nlmsg_flags : 16, // Flags (NLM_F_) 18*cf78ab8cSAndroid Build Coastguard Worker nlmsg_seq : 32, // Sequence number 19*cf78ab8cSAndroid Build Coastguard Worker nlmsg_pid : 32, // Sending process port ID 20*cf78ab8cSAndroid Build Coastguard Worker} 21*cf78ab8cSAndroid Build Coastguard Worker 22*cf78ab8cSAndroid Build Coastguard Worker// mac80211_hwsim definitions 23*cf78ab8cSAndroid Build Coastguard Worker 24*cf78ab8cSAndroid Build Coastguard Worker/** 25*cf78ab8cSAndroid Build Coastguard Worker * enum hwsim_commands - supported hwsim commands 26*cf78ab8cSAndroid Build Coastguard Worker * 27*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_UNSPEC: unspecified command to catch errors 28*cf78ab8cSAndroid Build Coastguard Worker * 29*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_REGISTER: request to register and received all broadcasted 30*cf78ab8cSAndroid Build Coastguard Worker * frames by any mac80211_hwsim radio device. 31*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_FRAME: send/receive a broadcasted frame from/to kernel/user 32*cf78ab8cSAndroid Build Coastguard Worker * space, uses: 33*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_ADDR_TRANSMITTER, 34*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_ADDR_RECEIVER, 35*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_FRAME, 36*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_FLAGS, 37*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_RX_RATE, 38*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_SIGNAL, 39*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_COOKIE, 40*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_FREQ (optional) 41*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_TX_INFO_FRAME: Transmission info report from user space to 42*cf78ab8cSAndroid Build Coastguard Worker * kernel, uses: 43*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_ADDR_TRANSMITTER, %HWSIM_ATTR_FLAGS, 44*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_TX_INFO, %WSIM_ATTR_TX_INFO_FLAGS, 45*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_SIGNAL, %HWSIM_ATTR_COOKIE 46*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_NEW_RADIO: create a new radio with the given parameters, 47*cf78ab8cSAndroid Build Coastguard Worker * returns the radio ID (>= 0) or negative on errors, if successful 48*cf78ab8cSAndroid Build Coastguard Worker * then multicast the result, uses optional parameter: 49*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_REG_STRICT_REG, %HWSIM_ATTR_SUPPORT_P2P_DEVICE, 50*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_DESTROY_RADIO_ON_CLOSE, %HWSIM_ATTR_CHANNELS, 51*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_NO_VIF, %HWSIM_ATTR_RADIO_NAME, %HWSIM_ATTR_USE_CHANCTX, 52*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_REG_HINT_ALPHA2, %HWSIM_ATTR_REG_CUSTOM_REG, 53*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_PERM_ADDR 54*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_DEL_RADIO: destroy a radio, reply is multicasted 55*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_GET_RADIO: fetch information about existing radios, uses: 56*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_RADIO_ID 57*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_ADD_MAC_ADDR: add a receive MAC address (given in the 58*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_ADDR_RECEIVER attribute) to a device identified by 59*cf78ab8cSAndroid Build Coastguard Worker * %HWSIM_ATTR_ADDR_TRANSMITTER. This lets wmediumd forward frames 60*cf78ab8cSAndroid Build Coastguard Worker * to this receiver address for a given station. 61*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_DEL_MAC_ADDR: remove the MAC address again, the attributes 62*cf78ab8cSAndroid Build Coastguard Worker * are the same as to @HWSIM_CMD_ADD_MAC_ADDR. 63*cf78ab8cSAndroid Build Coastguard Worker */ 64*cf78ab8cSAndroid Build Coastguard Worker 65*cf78ab8cSAndroid Build Coastguard Workerenum HwsimCmd : 8 { 66*cf78ab8cSAndroid Build Coastguard Worker UNSPEC = 0, 67*cf78ab8cSAndroid Build Coastguard Worker REGISTER = 1, 68*cf78ab8cSAndroid Build Coastguard Worker FRAME = 2, 69*cf78ab8cSAndroid Build Coastguard Worker TX_INFO_FRAME = 3, 70*cf78ab8cSAndroid Build Coastguard Worker NEW_RADIO = 4, 71*cf78ab8cSAndroid Build Coastguard Worker DEL_RADIO = 5, 72*cf78ab8cSAndroid Build Coastguard Worker GET_RADIO = 6, 73*cf78ab8cSAndroid Build Coastguard Worker ADD_MAC_ADDR = 7, 74*cf78ab8cSAndroid Build Coastguard Worker DEL_MAC_ADDR = 8, 75*cf78ab8cSAndroid Build Coastguard Worker} 76*cf78ab8cSAndroid Build Coastguard Worker 77*cf78ab8cSAndroid Build Coastguard Worker/** 78*cf78ab8cSAndroid Build Coastguard Worker * enum hwsim_attrs - hwsim netlink attributes 79*cf78ab8cSAndroid Build Coastguard Worker * 80*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_UNSPEC: unspecified attribute to catch errors 81*cf78ab8cSAndroid Build Coastguard Worker * 82*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_ADDR_RECEIVER: MAC address of the radio device that 83*cf78ab8cSAndroid Build Coastguard Worker * the frame is broadcasted to 84*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_ADDR_TRANSMITTER: MAC address of the radio device that 85*cf78ab8cSAndroid Build Coastguard Worker * the frame was broadcasted from 86*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_FRAME: Data array 87*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_FLAGS: mac80211 transmission flags, used to process 88*cf78ab8cSAndroid Build Coastguard Worker properly the frame at user space 89*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_RX_RATE: estimated rx rate index for this frame at user 90*cf78ab8cSAndroid Build Coastguard Worker space 91*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_SIGNAL: estimated RX signal for this frame at user 92*cf78ab8cSAndroid Build Coastguard Worker space 93*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_TX_INFO: ieee80211_tx_rate array 94*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_COOKIE: sk_buff cookie to identify the frame 95*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_CHANNELS: u32 attribute used with the %HWSIM_CMD_CREATE_RADIO 96*cf78ab8cSAndroid Build Coastguard Worker * command giving the number of channels supported by the new radio 97*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_RADIO_ID: u32 attribute used with %HWSIM_CMD_DESTROY_RADIO 98*cf78ab8cSAndroid Build Coastguard Worker * only to destroy a radio 99*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_REG_HINT_ALPHA2: alpha2 for regulatoro driver hint 100*cf78ab8cSAndroid Build Coastguard Worker * (nla string, length 2) 101*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_REG_CUSTOM_REG: custom regulatory domain index (u32 attribute) 102*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_REG_STRICT_REG: request REGULATORY_STRICT_REG (flag attribute) 103*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_SUPPORT_P2P_DEVICE: support P2P Device virtual interface (flag) 104*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_USE_CHANCTX: used with the %HWSIM_CMD_CREATE_RADIO 105*cf78ab8cSAndroid Build Coastguard Worker * command to force use of channel contexts even when only a 106*cf78ab8cSAndroid Build Coastguard Worker * single channel is supported 107*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_DESTROY_RADIO_ON_CLOSE: used with the %HWSIM_CMD_CREATE_RADIO 108*cf78ab8cSAndroid Build Coastguard Worker * command to force radio removal when process that created the radio dies 109*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_RADIO_NAME: Name of radio, e.g. phy666 110*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_NO_VIF: Do not create vif (wlanX) when creating radio. 111*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_FREQ: Frequency at which packet is transmitted or received. 112*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_TX_INFO_FLAGS: additional flags for corresponding 113*cf78ab8cSAndroid Build Coastguard Worker * rates of %HWSIM_ATTR_TX_INFO 114*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_PERM_ADDR: permanent mac address of new radio 115*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_IFTYPE_SUPPORT: u32 attribute of supported interface types bits 116*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_CIPHER_SUPPORT: u32 array of supported cipher types 117*cf78ab8cSAndroid Build Coastguard Worker */ 118*cf78ab8cSAndroid Build Coastguard Worker 119*cf78ab8cSAndroid Build Coastguard Workerenum HwsimAttrEnum : 14 { 120*cf78ab8cSAndroid Build Coastguard Worker UNSPEC = 0, 121*cf78ab8cSAndroid Build Coastguard Worker ADDR_RECEIVER = 1, 122*cf78ab8cSAndroid Build Coastguard Worker ADDR_TRANSMITTER = 2, 123*cf78ab8cSAndroid Build Coastguard Worker FRAME = 3, 124*cf78ab8cSAndroid Build Coastguard Worker FLAGS = 4, 125*cf78ab8cSAndroid Build Coastguard Worker RX_RATE = 5, 126*cf78ab8cSAndroid Build Coastguard Worker SIGNAL = 6, 127*cf78ab8cSAndroid Build Coastguard Worker TX_INFO = 7, 128*cf78ab8cSAndroid Build Coastguard Worker COOKIE = 8, 129*cf78ab8cSAndroid Build Coastguard Worker CHANNELS = 9, 130*cf78ab8cSAndroid Build Coastguard Worker RADIO_ID = 10, 131*cf78ab8cSAndroid Build Coastguard Worker REG_HINT_ALPHA2 = 11, 132*cf78ab8cSAndroid Build Coastguard Worker REG_CUSTOM_REG = 12, 133*cf78ab8cSAndroid Build Coastguard Worker REG_STRICT_REG = 13, 134*cf78ab8cSAndroid Build Coastguard Worker SUPPORT_P2P_DEVICE = 14, 135*cf78ab8cSAndroid Build Coastguard Worker USE_CHANCTX = 15, 136*cf78ab8cSAndroid Build Coastguard Worker DESTROY_RADIO_ON_CLOSE = 16, 137*cf78ab8cSAndroid Build Coastguard Worker RADIO_NAME = 17, 138*cf78ab8cSAndroid Build Coastguard Worker NO_VIF = 18, 139*cf78ab8cSAndroid Build Coastguard Worker FREQ = 19, 140*cf78ab8cSAndroid Build Coastguard Worker PAD = 20, 141*cf78ab8cSAndroid Build Coastguard Worker TX_INFO_FLAGS = 21, 142*cf78ab8cSAndroid Build Coastguard Worker PERM_ADDR = 22, 143*cf78ab8cSAndroid Build Coastguard Worker IFTYPE_SUPPORT = 23, 144*cf78ab8cSAndroid Build Coastguard Worker CIPHER_SUPPORT = 24, 145*cf78ab8cSAndroid Build Coastguard Worker} 146*cf78ab8cSAndroid Build Coastguard Worker 147*cf78ab8cSAndroid Build Coastguard Worker// Hwsim attribute base packet. 148*cf78ab8cSAndroid Build Coastguard Worker// 149*cf78ab8cSAndroid Build Coastguard Worker// This is a variant of NlAttrHdr with hwsim attribute types. 150*cf78ab8cSAndroid Build Coastguard Worker 151*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttr { 152*cf78ab8cSAndroid Build Coastguard Worker _size_(_payload_): 16, // nla_len, the attribute length 153*cf78ab8cSAndroid Build Coastguard Worker nla_type: HwsimAttrEnum, 154*cf78ab8cSAndroid Build Coastguard Worker nla_m : 1, 155*cf78ab8cSAndroid Build Coastguard Worker nla_o : 1, 156*cf78ab8cSAndroid Build Coastguard Worker _payload_: [+4], 157*cf78ab8cSAndroid Build Coastguard Worker} 158*cf78ab8cSAndroid Build Coastguard Worker 159*cf78ab8cSAndroid Build Coastguard Worker// ATTR_ADDR_RECEIVER: MAC address of the radio device that the frame 160*cf78ab8cSAndroid Build Coastguard Worker// is broadcasted to 161*cf78ab8cSAndroid Build Coastguard Worker 162*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrAddrReceiver : HwsimAttr(nla_type = ADDR_RECEIVER) { 163*cf78ab8cSAndroid Build Coastguard Worker address : 8[6], 164*cf78ab8cSAndroid Build Coastguard Worker} 165*cf78ab8cSAndroid Build Coastguard Worker 166*cf78ab8cSAndroid Build Coastguard Worker// ATTR_ADDR_TRANSMITTER: MAC address of the radio device that 167*cf78ab8cSAndroid Build Coastguard Worker// the frame was broadcasted from 168*cf78ab8cSAndroid Build Coastguard Worker 169*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrAddrTransmitter : HwsimAttr(nla_type = ADDR_TRANSMITTER) { 170*cf78ab8cSAndroid Build Coastguard Worker address : 8[6], 171*cf78ab8cSAndroid Build Coastguard Worker} 172*cf78ab8cSAndroid Build Coastguard Worker 173*cf78ab8cSAndroid Build Coastguard Worker// ATTR_FRAME: Data array 174*cf78ab8cSAndroid Build Coastguard Worker 175*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrFrame : HwsimAttr(nla_type = FRAME) { 176*cf78ab8cSAndroid Build Coastguard Worker data: 8[] 177*cf78ab8cSAndroid Build Coastguard Worker} 178*cf78ab8cSAndroid Build Coastguard Worker 179*cf78ab8cSAndroid Build Coastguard Worker// ATTR_FLAGS 180*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrFlags : HwsimAttr(nla_type = FLAGS) { 181*cf78ab8cSAndroid Build Coastguard Worker flags : 32, 182*cf78ab8cSAndroid Build Coastguard Worker} 183*cf78ab8cSAndroid Build Coastguard Worker 184*cf78ab8cSAndroid Build Coastguard Worker// ATTR_RX_RATE 185*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrRxRate : HwsimAttr(nla_type = RX_RATE) { 186*cf78ab8cSAndroid Build Coastguard Worker rx_rate_idx : 32, 187*cf78ab8cSAndroid Build Coastguard Worker} 188*cf78ab8cSAndroid Build Coastguard Worker 189*cf78ab8cSAndroid Build Coastguard Worker// ATTR_SIGNAL 190*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrSignal : HwsimAttr(nla_type = SIGNAL) { 191*cf78ab8cSAndroid Build Coastguard Worker signal : 32, 192*cf78ab8cSAndroid Build Coastguard Worker} 193*cf78ab8cSAndroid Build Coastguard Worker 194*cf78ab8cSAndroid Build Coastguard Worker// ATTR_FREQ 195*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrFreq : HwsimAttr(nla_type = FREQ) { 196*cf78ab8cSAndroid Build Coastguard Worker freq : 32, 197*cf78ab8cSAndroid Build Coastguard Worker} 198*cf78ab8cSAndroid Build Coastguard Worker 199*cf78ab8cSAndroid Build Coastguard Worker// ATTR_COOKIE 200*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrCookie : HwsimAttr(nla_type = COOKIE) { 201*cf78ab8cSAndroid Build Coastguard Worker cookie : 64, 202*cf78ab8cSAndroid Build Coastguard Worker} 203*cf78ab8cSAndroid Build Coastguard Worker 204*cf78ab8cSAndroid Build Coastguard Workerstruct TxRate { 205*cf78ab8cSAndroid Build Coastguard Worker idx : 8, 206*cf78ab8cSAndroid Build Coastguard Worker count: 8, 207*cf78ab8cSAndroid Build Coastguard Worker} 208*cf78ab8cSAndroid Build Coastguard Worker 209*cf78ab8cSAndroid Build Coastguard Worker// ATTR_TX_INFO 210*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrTxInfo : HwsimAttr(nla_type = TX_INFO) { 211*cf78ab8cSAndroid Build Coastguard Worker tx_rates : TxRate[], 212*cf78ab8cSAndroid Build Coastguard Worker} 213*cf78ab8cSAndroid Build Coastguard Worker 214*cf78ab8cSAndroid Build Coastguard Workerenum HwsimTxRateFlags : 16 { 215*cf78ab8cSAndroid Build Coastguard Worker MAC80211_HWSIM_TX_RC_USE_RTS_CTS = 0x01, 216*cf78ab8cSAndroid Build Coastguard Worker MAC80211_HWSIM_TX_RC_USE_CTS_PROTECT = 0x02, 217*cf78ab8cSAndroid Build Coastguard Worker MAC80211_HWSIM_TX_RC_USE_SHORT_PREAMBLE = 0x04, 218*cf78ab8cSAndroid Build Coastguard Worker /* rate index is an HT/VHT MCS instead of an index */ 219*cf78ab8cSAndroid Build Coastguard Worker MAC80211_HWSIM_TX_RC_MCS = 0x08, 220*cf78ab8cSAndroid Build Coastguard Worker MAC80211_HWSIM_TX_RC_GREEN_FIELD = 0x0f, 221*cf78ab8cSAndroid Build Coastguard Worker MAC80211_HWSIM_TX_RC_40_MHZ_WIDTH = 0x10, 222*cf78ab8cSAndroid Build Coastguard Worker MAC80211_HWSIM_TX_RC_DUP_DATA = 0x20, 223*cf78ab8cSAndroid Build Coastguard Worker MAC80211_HWSIM_TX_RC_SHORT_GI = 0x40, 224*cf78ab8cSAndroid Build Coastguard Worker MAC80211_HWSIM_TX_RC_VHT_MCS = 0x80, 225*cf78ab8cSAndroid Build Coastguard Worker MAC80211_HWSIM_TX_RC_80_MHZ_WIDTH = 0xf0, 226*cf78ab8cSAndroid Build Coastguard Worker MAC80211_HWSIM_TX_RC_160_MHZ_WIDTH = 0x100, 227*cf78ab8cSAndroid Build Coastguard Worker} 228*cf78ab8cSAndroid Build Coastguard Worker 229*cf78ab8cSAndroid Build Coastguard Workerstruct TxRateFlag { 230*cf78ab8cSAndroid Build Coastguard Worker idx : 8, 231*cf78ab8cSAndroid Build Coastguard Worker flags : 16, // HwsimTxRateFlags, 232*cf78ab8cSAndroid Build Coastguard Worker} 233*cf78ab8cSAndroid Build Coastguard Worker 234*cf78ab8cSAndroid Build Coastguard Worker// ATTR_TX_INFO_FLAGS 235*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrTxInfoFlags : HwsimAttr(nla_type = TX_INFO_FLAGS) { 236*cf78ab8cSAndroid Build Coastguard Worker tx_rate_flags : TxRateFlag[], 237*cf78ab8cSAndroid Build Coastguard Worker} 238*cf78ab8cSAndroid Build Coastguard Worker 239*cf78ab8cSAndroid Build Coastguard Workerstruct HwsimMsgHdr { 240*cf78ab8cSAndroid Build Coastguard Worker hwsim_cmd : HwsimCmd, 241*cf78ab8cSAndroid Build Coastguard Worker hwsim_version: 8, 242*cf78ab8cSAndroid Build Coastguard Worker reserved: 16, 243*cf78ab8cSAndroid Build Coastguard Worker} 244*cf78ab8cSAndroid Build Coastguard Worker 245*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimMsg { 246*cf78ab8cSAndroid Build Coastguard Worker nl_hdr: NlMsgHdr, 247*cf78ab8cSAndroid Build Coastguard Worker hwsim_hdr: HwsimMsgHdr, 248*cf78ab8cSAndroid Build Coastguard Worker // user header 249*cf78ab8cSAndroid Build Coastguard Worker attributes: 8[], 250*cf78ab8cSAndroid Build Coastguard Worker} 251