driver_hostap.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. /*
  2. * WPA Supplicant - driver interaction with Linux Host AP driver
  3. * Copyright (c) 2003-2005, Jouni Malinen <j@w1.fi>
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License version 2 as
  7. * published by the Free Software Foundation.
  8. *
  9. * Alternatively, this software may be distributed under the terms of BSD
  10. * license.
  11. *
  12. * See README and COPYING for more details.
  13. */
  14. #ifndef HOSTAP_DRIVER_H
  15. #define HOSTAP_DRIVER_H
  16. #define PRISM2_IOCTL_PRISM2_PARAM (SIOCIWFIRSTPRIV + 0)
  17. #define PRISM2_IOCTL_RESET (SIOCIWFIRSTPRIV + 6)
  18. #define PRISM2_IOCTL_HOSTAPD (SIOCDEVPRIVATE + 14)
  19. /* PRISM2_IOCTL_PRISM2_PARAM ioctl() subtypes: */
  20. enum {
  21. /* PRISM2_PARAM_PTYPE = 1, */ /* REMOVED 2003-10-22 */
  22. PRISM2_PARAM_TXRATECTRL = 2,
  23. PRISM2_PARAM_BEACON_INT = 3,
  24. PRISM2_PARAM_PSEUDO_IBSS = 4,
  25. PRISM2_PARAM_ALC = 5,
  26. /* PRISM2_PARAM_TXPOWER = 6, */ /* REMOVED 2003-10-22 */
  27. PRISM2_PARAM_DUMP = 7,
  28. PRISM2_PARAM_OTHER_AP_POLICY = 8,
  29. PRISM2_PARAM_AP_MAX_INACTIVITY = 9,
  30. PRISM2_PARAM_AP_BRIDGE_PACKETS = 10,
  31. PRISM2_PARAM_DTIM_PERIOD = 11,
  32. PRISM2_PARAM_AP_NULLFUNC_ACK = 12,
  33. PRISM2_PARAM_MAX_WDS = 13,
  34. PRISM2_PARAM_AP_AUTOM_AP_WDS = 14,
  35. PRISM2_PARAM_AP_AUTH_ALGS = 15,
  36. PRISM2_PARAM_MONITOR_ALLOW_FCSERR = 16,
  37. PRISM2_PARAM_HOST_ENCRYPT = 17,
  38. PRISM2_PARAM_HOST_DECRYPT = 18,
  39. PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX = 19,
  40. PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX = 20,
  41. PRISM2_PARAM_HOST_ROAMING = 21,
  42. PRISM2_PARAM_BCRX_STA_KEY = 22,
  43. PRISM2_PARAM_IEEE_802_1X = 23,
  44. PRISM2_PARAM_ANTSEL_TX = 24,
  45. PRISM2_PARAM_ANTSEL_RX = 25,
  46. PRISM2_PARAM_MONITOR_TYPE = 26,
  47. PRISM2_PARAM_WDS_TYPE = 27,
  48. PRISM2_PARAM_HOSTSCAN = 28,
  49. PRISM2_PARAM_AP_SCAN = 29,
  50. PRISM2_PARAM_ENH_SEC = 30,
  51. PRISM2_PARAM_IO_DEBUG = 31,
  52. PRISM2_PARAM_BASIC_RATES = 32,
  53. PRISM2_PARAM_OPER_RATES = 33,
  54. PRISM2_PARAM_HOSTAPD = 34,
  55. PRISM2_PARAM_HOSTAPD_STA = 35,
  56. PRISM2_PARAM_WPA = 36,
  57. PRISM2_PARAM_PRIVACY_INVOKED = 37,
  58. PRISM2_PARAM_TKIP_COUNTERMEASURES = 38,
  59. PRISM2_PARAM_DROP_UNENCRYPTED = 39,
  60. PRISM2_PARAM_SCAN_CHANNEL_MASK = 40,
  61. };
  62. /* PRISM2_IOCTL_HOSTAPD ioctl() cmd: */
  63. enum {
  64. PRISM2_HOSTAPD_FLUSH = 1,
  65. PRISM2_HOSTAPD_ADD_STA = 2,
  66. PRISM2_HOSTAPD_REMOVE_STA = 3,
  67. PRISM2_HOSTAPD_GET_INFO_STA = 4,
  68. /* REMOVED: PRISM2_HOSTAPD_RESET_TXEXC_STA = 5, */
  69. PRISM2_SET_ENCRYPTION = 6,
  70. PRISM2_GET_ENCRYPTION = 7,
  71. PRISM2_HOSTAPD_SET_FLAGS_STA = 8,
  72. PRISM2_HOSTAPD_GET_RID = 9,
  73. PRISM2_HOSTAPD_SET_RID = 10,
  74. PRISM2_HOSTAPD_SET_ASSOC_AP_ADDR = 11,
  75. PRISM2_HOSTAPD_SET_GENERIC_ELEMENT = 12,
  76. PRISM2_HOSTAPD_MLME = 13,
  77. PRISM2_HOSTAPD_SCAN_REQ = 14,
  78. PRISM2_HOSTAPD_STA_CLEAR_STATS = 15,
  79. };
  80. #define PRISM2_HOSTAPD_MAX_BUF_SIZE 1024
  81. #define PRISM2_HOSTAPD_RID_HDR_LEN \
  82. ((size_t) (&((struct prism2_hostapd_param *) 0)->u.rid.data))
  83. #define PRISM2_HOSTAPD_GENERIC_ELEMENT_HDR_LEN \
  84. ((size_t) (&((struct prism2_hostapd_param *) 0)->u.generic_elem.data))
  85. /* Maximum length for algorithm names (-1 for nul termination) used in ioctl()
  86. */
  87. #define HOSTAP_CRYPT_ALG_NAME_LEN 16
  88. struct prism2_hostapd_param {
  89. u32 cmd;
  90. u8 sta_addr[ETH_ALEN];
  91. union {
  92. struct {
  93. u16 aid;
  94. u16 capability;
  95. u8 tx_supp_rates;
  96. } add_sta;
  97. struct {
  98. u32 inactive_sec;
  99. } get_info_sta;
  100. struct {
  101. u8 alg[HOSTAP_CRYPT_ALG_NAME_LEN];
  102. u32 flags;
  103. u32 err;
  104. u8 idx;
  105. u8 seq[8]; /* sequence counter (set: RX, get: TX) */
  106. u16 key_len;
  107. u8 key[0];
  108. } crypt;
  109. struct {
  110. u32 flags_and;
  111. u32 flags_or;
  112. } set_flags_sta;
  113. struct {
  114. u16 rid;
  115. u16 len;
  116. u8 data[0];
  117. } rid;
  118. struct {
  119. u8 len;
  120. u8 data[0];
  121. } generic_elem;
  122. struct {
  123. #define MLME_STA_DEAUTH 0
  124. #define MLME_STA_DISASSOC 1
  125. u16 cmd;
  126. u16 reason_code;
  127. } mlme;
  128. struct {
  129. u8 ssid_len;
  130. u8 ssid[32];
  131. } scan_req;
  132. } u;
  133. };
  134. #define HOSTAP_CRYPT_FLAG_SET_TX_KEY 0x01
  135. #define HOSTAP_CRYPT_FLAG_PERMANENT 0x02
  136. #define HOSTAP_CRYPT_ERR_UNKNOWN_ALG 2
  137. #define HOSTAP_CRYPT_ERR_UNKNOWN_ADDR 3
  138. #define HOSTAP_CRYPT_ERR_CRYPT_INIT_FAILED 4
  139. #define HOSTAP_CRYPT_ERR_KEY_SET_FAILED 5
  140. #define HOSTAP_CRYPT_ERR_TX_KEY_SET_FAILED 6
  141. #define HOSTAP_CRYPT_ERR_CARD_CONF_FAILED 7
  142. #endif /* HOSTAP_DRIVER_H */