|
wpa_supplicant / hostapd 2.0
|
00001 00010 #ifndef HOSTAP_DRIVER_H 00011 #define HOSTAP_DRIVER_H 00012 00013 /* netdevice private ioctls (used, e.g., with iwpriv from user space) */ 00014 00015 /* New wireless extensions API - SET/GET convention (even ioctl numbers are 00016 * root only) 00017 */ 00018 #define PRISM2_IOCTL_PRISM2_PARAM (SIOCIWFIRSTPRIV + 0) 00019 #define PRISM2_IOCTL_GET_PRISM2_PARAM (SIOCIWFIRSTPRIV + 1) 00020 #define PRISM2_IOCTL_WRITEMIF (SIOCIWFIRSTPRIV + 2) 00021 #define PRISM2_IOCTL_READMIF (SIOCIWFIRSTPRIV + 3) 00022 #define PRISM2_IOCTL_MONITOR (SIOCIWFIRSTPRIV + 4) 00023 #define PRISM2_IOCTL_RESET (SIOCIWFIRSTPRIV + 6) 00024 #define PRISM2_IOCTL_INQUIRE (SIOCIWFIRSTPRIV + 8) 00025 #define PRISM2_IOCTL_WDS_ADD (SIOCIWFIRSTPRIV + 10) 00026 #define PRISM2_IOCTL_WDS_DEL (SIOCIWFIRSTPRIV + 12) 00027 #define PRISM2_IOCTL_SET_RID_WORD (SIOCIWFIRSTPRIV + 14) 00028 #define PRISM2_IOCTL_MACCMD (SIOCIWFIRSTPRIV + 16) 00029 #define PRISM2_IOCTL_ADDMAC (SIOCIWFIRSTPRIV + 18) 00030 #define PRISM2_IOCTL_DELMAC (SIOCIWFIRSTPRIV + 20) 00031 #define PRISM2_IOCTL_KICKMAC (SIOCIWFIRSTPRIV + 22) 00032 00033 /* following are not in SIOCGIWPRIV list; check permission in the driver code 00034 */ 00035 #define PRISM2_IOCTL_DOWNLOAD (SIOCDEVPRIVATE + 13) 00036 #define PRISM2_IOCTL_HOSTAPD (SIOCDEVPRIVATE + 14) 00037 00038 00039 /* PRISM2_IOCTL_PRISM2_PARAM ioctl() subtypes: */ 00040 enum { 00041 /* PRISM2_PARAM_PTYPE = 1, */ /* REMOVED 2003-10-22 */ 00042 PRISM2_PARAM_TXRATECTRL = 2, 00043 PRISM2_PARAM_BEACON_INT = 3, 00044 PRISM2_PARAM_PSEUDO_IBSS = 4, 00045 PRISM2_PARAM_ALC = 5, 00046 /* PRISM2_PARAM_TXPOWER = 6, */ /* REMOVED 2003-10-22 */ 00047 PRISM2_PARAM_DUMP = 7, 00048 PRISM2_PARAM_OTHER_AP_POLICY = 8, 00049 PRISM2_PARAM_AP_MAX_INACTIVITY = 9, 00050 PRISM2_PARAM_AP_BRIDGE_PACKETS = 10, 00051 PRISM2_PARAM_DTIM_PERIOD = 11, 00052 PRISM2_PARAM_AP_NULLFUNC_ACK = 12, 00053 PRISM2_PARAM_MAX_WDS = 13, 00054 PRISM2_PARAM_AP_AUTOM_AP_WDS = 14, 00055 PRISM2_PARAM_AP_AUTH_ALGS = 15, 00056 PRISM2_PARAM_MONITOR_ALLOW_FCSERR = 16, 00057 PRISM2_PARAM_HOST_ENCRYPT = 17, 00058 PRISM2_PARAM_HOST_DECRYPT = 18, 00059 PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX = 19, 00060 PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX = 20, 00061 PRISM2_PARAM_HOST_ROAMING = 21, 00062 PRISM2_PARAM_BCRX_STA_KEY = 22, 00063 PRISM2_PARAM_IEEE_802_1X = 23, 00064 PRISM2_PARAM_ANTSEL_TX = 24, 00065 PRISM2_PARAM_ANTSEL_RX = 25, 00066 PRISM2_PARAM_MONITOR_TYPE = 26, 00067 PRISM2_PARAM_WDS_TYPE = 27, 00068 PRISM2_PARAM_HOSTSCAN = 28, 00069 PRISM2_PARAM_AP_SCAN = 29, 00070 PRISM2_PARAM_ENH_SEC = 30, 00071 PRISM2_PARAM_IO_DEBUG = 31, 00072 PRISM2_PARAM_BASIC_RATES = 32, 00073 PRISM2_PARAM_OPER_RATES = 33, 00074 PRISM2_PARAM_HOSTAPD = 34, 00075 PRISM2_PARAM_HOSTAPD_STA = 35, 00076 PRISM2_PARAM_WPA = 36, 00077 PRISM2_PARAM_PRIVACY_INVOKED = 37, 00078 PRISM2_PARAM_TKIP_COUNTERMEASURES = 38, 00079 PRISM2_PARAM_DROP_UNENCRYPTED = 39, 00080 PRISM2_PARAM_SCAN_CHANNEL_MASK = 40, 00081 }; 00082 00083 enum { HOSTAP_ANTSEL_DO_NOT_TOUCH = 0, HOSTAP_ANTSEL_DIVERSITY = 1, 00084 HOSTAP_ANTSEL_LOW = 2, HOSTAP_ANTSEL_HIGH = 3 }; 00085 00086 00087 /* PRISM2_IOCTL_MACCMD ioctl() subcommands: */ 00088 enum { AP_MAC_CMD_POLICY_OPEN = 0, AP_MAC_CMD_POLICY_ALLOW = 1, 00089 AP_MAC_CMD_POLICY_DENY = 2, AP_MAC_CMD_FLUSH = 3, 00090 AP_MAC_CMD_KICKALL = 4 }; 00091 00092 00093 /* PRISM2_IOCTL_DOWNLOAD ioctl() dl_cmd: */ 00094 enum { 00095 PRISM2_DOWNLOAD_VOLATILE = 1 /* RAM */, 00096 /* Note! Old versions of prism2_srec have a fatal error in CRC-16 00097 * calculation, which will corrupt all non-volatile downloads. 00098 * PRISM2_DOWNLOAD_NON_VOLATILE used to be 2, but it is now 3 to 00099 * prevent use of old versions of prism2_srec for non-volatile 00100 * download. */ 00101 PRISM2_DOWNLOAD_NON_VOLATILE = 3 /* FLASH */, 00102 PRISM2_DOWNLOAD_VOLATILE_GENESIS = 4 /* RAM in Genesis mode */, 00103 /* Persistent versions of volatile download commands (keep firmware 00104 * data in memory and automatically re-download after hw_reset */ 00105 PRISM2_DOWNLOAD_VOLATILE_PERSISTENT = 5, 00106 PRISM2_DOWNLOAD_VOLATILE_GENESIS_PERSISTENT = 6, 00107 }; 00108 00109 struct prism2_download_param { 00110 u32 dl_cmd; 00111 u32 start_addr; 00112 u32 num_areas; 00113 struct prism2_download_area { 00114 u32 addr; /* wlan card address */ 00115 u32 len; 00116 caddr_t ptr; /* pointer to data in user space */ 00117 } data[0]; 00118 }; 00119 00120 #define PRISM2_MAX_DOWNLOAD_AREA_LEN 131072 00121 #define PRISM2_MAX_DOWNLOAD_LEN 262144 00122 00123 00124 /* PRISM2_IOCTL_HOSTAPD ioctl() cmd: */ 00125 enum { 00126 PRISM2_HOSTAPD_FLUSH = 1, 00127 PRISM2_HOSTAPD_ADD_STA = 2, 00128 PRISM2_HOSTAPD_REMOVE_STA = 3, 00129 PRISM2_HOSTAPD_GET_INFO_STA = 4, 00130 /* REMOVED: PRISM2_HOSTAPD_RESET_TXEXC_STA = 5, */ 00131 PRISM2_SET_ENCRYPTION = 6, 00132 PRISM2_GET_ENCRYPTION = 7, 00133 PRISM2_HOSTAPD_SET_FLAGS_STA = 8, 00134 PRISM2_HOSTAPD_GET_RID = 9, 00135 PRISM2_HOSTAPD_SET_RID = 10, 00136 PRISM2_HOSTAPD_SET_ASSOC_AP_ADDR = 11, 00137 PRISM2_HOSTAPD_SET_GENERIC_ELEMENT = 12, 00138 PRISM2_HOSTAPD_MLME = 13, 00139 PRISM2_HOSTAPD_SCAN_REQ = 14, 00140 PRISM2_HOSTAPD_STA_CLEAR_STATS = 15, 00141 }; 00142 00143 #define PRISM2_HOSTAPD_MAX_BUF_SIZE 1024 00144 #define PRISM2_HOSTAPD_RID_HDR_LEN \ 00145 ((size_t) (&((struct prism2_hostapd_param *) 0)->u.rid.data)) 00146 #define PRISM2_HOSTAPD_GENERIC_ELEMENT_HDR_LEN \ 00147 ((size_t) (&((struct prism2_hostapd_param *) 0)->u.generic_elem.data)) 00148 00149 /* Maximum length for algorithm names (-1 for nul termination) used in ioctl() 00150 */ 00151 #define HOSTAP_CRYPT_ALG_NAME_LEN 16 00152 00153 00154 struct prism2_hostapd_param { 00155 u32 cmd; 00156 u8 sta_addr[ETH_ALEN]; 00157 union { 00158 struct { 00159 u16 aid; 00160 u16 capability; 00161 u8 tx_supp_rates; 00162 } add_sta; 00163 struct { 00164 u32 inactive_sec; 00165 } get_info_sta; 00166 struct { 00167 u8 alg[HOSTAP_CRYPT_ALG_NAME_LEN]; 00168 u32 flags; 00169 u32 err; 00170 u8 idx; 00171 u8 seq[8]; /* sequence counter (set: RX, get: TX) */ 00172 u16 key_len; 00173 u8 key[0]; 00174 } crypt; 00175 struct { 00176 u32 flags_and; 00177 u32 flags_or; 00178 } set_flags_sta; 00179 struct { 00180 u16 rid; 00181 u16 len; 00182 u8 data[0]; 00183 } rid; 00184 struct { 00185 u8 len; 00186 u8 data[0]; 00187 } generic_elem; 00188 struct { 00189 #define MLME_STA_DEAUTH 0 00190 #define MLME_STA_DISASSOC 1 00191 u16 cmd; 00192 u16 reason_code; 00193 } mlme; 00194 struct { 00195 u8 ssid_len; 00196 u8 ssid[32]; 00197 } scan_req; 00198 } u; 00199 }; 00200 00201 #define HOSTAP_CRYPT_FLAG_SET_TX_KEY BIT(0) 00202 #define HOSTAP_CRYPT_FLAG_PERMANENT BIT(1) 00203 00204 #define HOSTAP_CRYPT_ERR_UNKNOWN_ALG 2 00205 #define HOSTAP_CRYPT_ERR_UNKNOWN_ADDR 3 00206 #define HOSTAP_CRYPT_ERR_CRYPT_INIT_FAILED 4 00207 #define HOSTAP_CRYPT_ERR_KEY_SET_FAILED 5 00208 #define HOSTAP_CRYPT_ERR_TX_KEY_SET_FAILED 6 00209 #define HOSTAP_CRYPT_ERR_CARD_CONF_FAILED 7 00210 00211 #endif /* HOSTAP_DRIVER_H */ 00212
1.7.3