1526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* 2526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * WPA Supplicant - driver interaction with Linux Host AP driver 3526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Copyright (c) 2003-2005, Jouni Malinen <j@w1.fi> 4526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 5526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * This program is free software; you can redistribute it and/or modify 6526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * it under the terms of the GNU General Public License version 2 as 7526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * published by the Free Software Foundation. 8526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 9526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Alternatively, this software may be distributed under the terms of BSD 10526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * license. 11526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 12526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * See README and COPYING for more details. 13526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 14526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 15526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#ifndef HOSTAP_DRIVER_H 16526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define HOSTAP_DRIVER_H 17526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 18526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define PRISM2_IOCTL_PRISM2_PARAM (SIOCIWFIRSTPRIV + 0) 19526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define PRISM2_IOCTL_RESET (SIOCIWFIRSTPRIV + 6) 20526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define PRISM2_IOCTL_HOSTAPD (SIOCDEVPRIVATE + 14) 21526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 22526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* PRISM2_IOCTL_PRISM2_PARAM ioctl() subtypes: */ 23526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtenum { 24526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt /* PRISM2_PARAM_PTYPE = 1, */ /* REMOVED 2003-10-22 */ 25526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_TXRATECTRL = 2, 26526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_BEACON_INT = 3, 27526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_PSEUDO_IBSS = 4, 28526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_ALC = 5, 29526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt /* PRISM2_PARAM_TXPOWER = 6, */ /* REMOVED 2003-10-22 */ 30526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_DUMP = 7, 31526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_OTHER_AP_POLICY = 8, 32526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_AP_MAX_INACTIVITY = 9, 33526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_AP_BRIDGE_PACKETS = 10, 34526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_DTIM_PERIOD = 11, 35526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_AP_NULLFUNC_ACK = 12, 36526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_MAX_WDS = 13, 37526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_AP_AUTOM_AP_WDS = 14, 38526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_AP_AUTH_ALGS = 15, 39526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_MONITOR_ALLOW_FCSERR = 16, 40526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_HOST_ENCRYPT = 17, 41526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_HOST_DECRYPT = 18, 42526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX = 19, 43526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX = 20, 44526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_HOST_ROAMING = 21, 45526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_BCRX_STA_KEY = 22, 46526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_IEEE_802_1X = 23, 47526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_ANTSEL_TX = 24, 48526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_ANTSEL_RX = 25, 49526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_MONITOR_TYPE = 26, 50526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_WDS_TYPE = 27, 51526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_HOSTSCAN = 28, 52526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_AP_SCAN = 29, 53526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_ENH_SEC = 30, 54526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_IO_DEBUG = 31, 55526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_BASIC_RATES = 32, 56526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_OPER_RATES = 33, 57526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_HOSTAPD = 34, 58526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_HOSTAPD_STA = 35, 59526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_WPA = 36, 60526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_PRIVACY_INVOKED = 37, 61526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_TKIP_COUNTERMEASURES = 38, 62526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_DROP_UNENCRYPTED = 39, 63526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_PARAM_SCAN_CHANNEL_MASK = 40, 64526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 65526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 66526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* PRISM2_IOCTL_HOSTAPD ioctl() cmd: */ 67526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtenum { 68526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_HOSTAPD_FLUSH = 1, 69526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_HOSTAPD_ADD_STA = 2, 70526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_HOSTAPD_REMOVE_STA = 3, 71526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_HOSTAPD_GET_INFO_STA = 4, 72526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt /* REMOVED: PRISM2_HOSTAPD_RESET_TXEXC_STA = 5, */ 73526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_SET_ENCRYPTION = 6, 74526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_GET_ENCRYPTION = 7, 75526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_HOSTAPD_SET_FLAGS_STA = 8, 76526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_HOSTAPD_GET_RID = 9, 77526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_HOSTAPD_SET_RID = 10, 78526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_HOSTAPD_SET_ASSOC_AP_ADDR = 11, 79526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_HOSTAPD_SET_GENERIC_ELEMENT = 12, 80526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_HOSTAPD_MLME = 13, 81526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_HOSTAPD_SCAN_REQ = 14, 82526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt PRISM2_HOSTAPD_STA_CLEAR_STATS = 15, 83526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 84526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 85526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define PRISM2_HOSTAPD_MAX_BUF_SIZE 1024 86526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define PRISM2_HOSTAPD_RID_HDR_LEN \ 87526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt((size_t) (&((struct prism2_hostapd_param *) 0)->u.rid.data)) 88526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define PRISM2_HOSTAPD_GENERIC_ELEMENT_HDR_LEN \ 89526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt((size_t) (&((struct prism2_hostapd_param *) 0)->u.generic_elem.data)) 90526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 91526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* Maximum length for algorithm names (-1 for nul termination) used in ioctl() 92526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 93526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define HOSTAP_CRYPT_ALG_NAME_LEN 16 94526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 95526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 96526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct prism2_hostapd_param { 97526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u32 cmd; 98526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 sta_addr[ETH_ALEN]; 99526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt union { 100526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct { 101526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u16 aid; 102526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u16 capability; 103526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 tx_supp_rates; 104526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } add_sta; 105526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct { 106526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u32 inactive_sec; 107526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } get_info_sta; 108526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct { 109526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 alg[HOSTAP_CRYPT_ALG_NAME_LEN]; 110526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u32 flags; 111526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u32 err; 112526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 idx; 113526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 seq[8]; /* sequence counter (set: RX, get: TX) */ 114526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u16 key_len; 115526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 key[0]; 116526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } crypt; 117526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct { 118526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u32 flags_and; 119526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u32 flags_or; 120526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } set_flags_sta; 121526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct { 122526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u16 rid; 123526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u16 len; 124526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 data[0]; 125526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } rid; 126526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct { 127526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 len; 128526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 data[0]; 129526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } generic_elem; 130526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct { 131526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define MLME_STA_DEAUTH 0 132526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define MLME_STA_DISASSOC 1 133526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u16 cmd; 134526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u16 reason_code; 135526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } mlme; 136526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct { 137526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 ssid_len; 138526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 ssid[32]; 139526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } scan_req; 140526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } u; 141526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 142526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 143526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define HOSTAP_CRYPT_FLAG_SET_TX_KEY 0x01 144526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define HOSTAP_CRYPT_FLAG_PERMANENT 0x02 145526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 146526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define HOSTAP_CRYPT_ERR_UNKNOWN_ALG 2 147526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define HOSTAP_CRYPT_ERR_UNKNOWN_ADDR 3 148526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define HOSTAP_CRYPT_ERR_CRYPT_INIT_FAILED 4 149526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define HOSTAP_CRYPT_ERR_KEY_SET_FAILED 5 150526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define HOSTAP_CRYPT_ERR_TX_KEY_SET_FAILED 6 151526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define HOSTAP_CRYPT_ERR_CARD_CONF_FAILED 7 152526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 153526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#endif /* HOSTAP_DRIVER_H */ 154