2 * Header bits derived from MadWifi source:
3 * Copyright (c) 2001 Atsushi Onoe
4 * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
7 * Distributed under the terms of the GPLv2 license.
9 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
10 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
11 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
12 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
13 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
14 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
15 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
16 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
17 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
18 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 #define IEEE80211_ADDR_LEN 6
26 #define IEEE80211_RATE_VAL 0x7f
29 /* ieee80211_crypto.h */
30 #define IEEE80211_KEYBUF_SIZE 16
31 #define IEEE80211_MICBUF_SIZE 16
32 #define IEEE80211_TID_SIZE 17
34 #define IEEE80211_CIPHER_WEP 0
35 #define IEEE80211_CIPHER_TKIP 1
36 #define IEEE80211_CIPHER_AES_OCB 2
37 #define IEEE80211_CIPHER_AES_CCM 3
38 #define IEEE80211_CIPHER_CKIP 5
39 #define IEEE80211_CIPHER_NONE 6
40 #define IEEE80211_CIPHER_MAX (IEEE80211_CIPHER_NONE + 1)
43 /* ieee80211_ioctl.h */
44 #define IEEE80211_KEY_DEFAULT 0x80
45 #define IEEE80211_CHAN_MAX 255
46 #define IEEE80211_CHAN_BYTES 32
47 #define IEEE80211_RATE_MAXSIZE 15
49 #define IEEE80211_IOCTL_GETKEY (SIOCDEVPRIVATE+3)
50 #define IEEE80211_IOCTL_STA_STATS (SIOCDEVPRIVATE+5)
51 #define IEEE80211_IOCTL_STA_INFO (SIOCDEVPRIVATE+6)
53 #define IEEE80211_IOCTL_GETPARAM (SIOCIWFIRSTPRIV+1)
54 #define IEEE80211_IOCTL_GETMODE (SIOCIWFIRSTPRIV+3)
55 #define IEEE80211_IOCTL_GETCHANLIST (SIOCIWFIRSTPRIV+7)
56 #define IEEE80211_IOCTL_GETCHANINFO (SIOCIWFIRSTPRIV+13)
59 IEEE80211_PARAM_AUTHMODE
= 3, /* authentication mode */
60 IEEE80211_PARAM_MCASTCIPHER
= 5, /* multicast/default cipher */
61 IEEE80211_PARAM_MCASTKEYLEN
= 6, /* multicast key length */
62 IEEE80211_PARAM_UCASTCIPHERS
= 7, /* unicast cipher suites */
63 IEEE80211_PARAM_WPA
= 10, /* WPA mode (0,1,2) */
67 * Authentication mode.
69 enum ieee80211_authmode
{
70 IEEE80211_AUTH_NONE
= 0,
71 IEEE80211_AUTH_OPEN
= 1, /* open */
72 IEEE80211_AUTH_SHARED
= 2, /* shared-key */
73 IEEE80211_AUTH_8021X
= 3, /* 802.1x */
74 IEEE80211_AUTH_AUTO
= 4, /* auto-select/accept */
75 /* NB: these are used only for ioctls */
76 IEEE80211_AUTH_WPA
= 5, /* WPA/RSN w/ 802.1x/PSK */
79 struct ieee80211_channel
{
80 u_int16_t ic_freq
; /* setting in MHz */
81 u_int16_t ic_flags
; /* see below */
82 u_int8_t ic_ieee
; /* IEEE channel number */
83 int8_t ic_maxregpower
; /* maximum regulatory tx power in dBm */
84 int8_t ic_maxpower
; /* maximum tx power in dBm */
85 int8_t ic_minpower
; /* minimum tx power in dBm */
86 u_int8_t ic_scanflags
;
87 u_int8_t ic_idletime
; /* phy idle time in % */
90 struct ieee80211req_key
{
91 u_int8_t ik_type
; /* key/cipher type */
93 u_int16_t ik_keyix
; /* key index */
94 u_int8_t ik_keylen
; /* key length in bytes */
96 u_int8_t ik_macaddr
[IEEE80211_ADDR_LEN
];
97 u_int64_t ik_keyrsc
; /* key receive sequence counter */
98 u_int64_t ik_keytsc
; /* key transmit sequence counter */
99 u_int8_t ik_keydata
[IEEE80211_KEYBUF_SIZE
+IEEE80211_MICBUF_SIZE
];
102 struct ieee80211req_chanlist
{
103 u_int8_t ic_channels
[IEEE80211_CHAN_BYTES
];
106 struct ieee80211req_chaninfo
{
108 struct ieee80211_channel ic_chans
[IEEE80211_CHAN_MAX
];
111 struct ieee80211req_sta_info
{
112 u_int16_t isi_len
; /* length (mult of 4) */
113 u_int16_t isi_freq
; /* MHz */
114 u_int16_t isi_flags
; /* channel flags */
115 u_int16_t isi_state
; /* state flags */
116 u_int8_t isi_authmode
; /* authentication algorithm */
119 u_int16_t isi_capinfo
; /* capabilities */
120 u_int8_t isi_athflags
; /* Atheros capabilities */
121 u_int8_t isi_erp
; /* ERP element */
122 u_int8_t isi_macaddr
[IEEE80211_ADDR_LEN
];
123 u_int8_t isi_nrates
; /* negotiated rates */
124 u_int8_t isi_rates
[IEEE80211_RATE_MAXSIZE
];
125 u_int8_t isi_txrate
; /* index to isi_rates[] */
126 u_int16_t isi_ie_len
; /* IE length */
127 u_int16_t isi_associd
; /* assoc response */
128 u_int16_t isi_txpower
; /* current tx power */
129 u_int16_t isi_vlan
; /* vlan tag */
130 u_int16_t isi_txseqs
[17]; /* seq to be transmitted */
131 u_int16_t isi_rxseqs
[17]; /* seq previous for qos frames*/
132 u_int16_t isi_inact
; /* inactivity timer */
133 u_int8_t isi_uapsd
; /* UAPSD queues */
134 u_int8_t isi_opmode
; /* sta operating mode */
138 * Country/Region Codes from MS WINNLS.H
139 * Numbering from ISO 3166
140 * XXX belongs elsewhere
144 CTRY_ALBANIA
= 8, /* Albania */
145 CTRY_ALGERIA
= 12, /* Algeria */
146 CTRY_ARGENTINA
= 32, /* Argentina */
147 CTRY_ARMENIA
= 51, /* Armenia */
148 CTRY_AUSTRALIA
= 36, /* Australia */
149 CTRY_AUSTRIA
= 40, /* Austria */
150 CTRY_AZERBAIJAN
= 31, /* Azerbaijan */
151 CTRY_BAHRAIN
= 48, /* Bahrain */
152 CTRY_BELARUS
= 112, /* Belarus */
153 CTRY_BELGIUM
= 56, /* Belgium */
154 CTRY_BELIZE
= 84, /* Belize */
155 CTRY_BOLIVIA
= 68, /* Bolivia */
156 CTRY_BRAZIL
= 76, /* Brazil */
157 CTRY_BRUNEI_DARUSSALAM
= 96, /* Brunei Darussalam */
158 CTRY_BULGARIA
= 100, /* Bulgaria */
159 CTRY_CANADA
= 124, /* Canada */
160 CTRY_CHILE
= 152, /* Chile */
161 CTRY_CHINA
= 156, /* People's Republic of China */
162 CTRY_COLOMBIA
= 170, /* Colombia */
163 CTRY_COSTA_RICA
= 188, /* Costa Rica */
164 CTRY_CROATIA
= 191, /* Croatia */
166 CTRY_CZECH
= 203, /* Czech Republic */
167 CTRY_DENMARK
= 208, /* Denmark */
168 CTRY_DOMINICAN_REPUBLIC
= 214, /* Dominican Republic */
169 CTRY_ECUADOR
= 218, /* Ecuador */
170 CTRY_EGYPT
= 818, /* Egypt */
171 CTRY_EL_SALVADOR
= 222, /* El Salvador */
172 CTRY_ESTONIA
= 233, /* Estonia */
173 CTRY_FAEROE_ISLANDS
= 234, /* Faeroe Islands */
174 CTRY_FINLAND
= 246, /* Finland */
175 CTRY_FRANCE
= 250, /* France */
176 CTRY_FRANCE2
= 255, /* France2 */
177 CTRY_GEORGIA
= 268, /* Georgia */
178 CTRY_GERMANY
= 276, /* Germany */
179 CTRY_GREECE
= 300, /* Greece */
180 CTRY_GUATEMALA
= 320, /* Guatemala */
181 CTRY_HONDURAS
= 340, /* Honduras */
182 CTRY_HONG_KONG
= 344, /* Hong Kong S.A.R., P.R.C. */
183 CTRY_HUNGARY
= 348, /* Hungary */
184 CTRY_ICELAND
= 352, /* Iceland */
185 CTRY_INDIA
= 356, /* India */
186 CTRY_INDONESIA
= 360, /* Indonesia */
187 CTRY_IRAN
= 364, /* Iran */
188 CTRY_IRAQ
= 368, /* Iraq */
189 CTRY_IRELAND
= 372, /* Ireland */
190 CTRY_ISRAEL
= 376, /* Israel */
191 CTRY_ITALY
= 380, /* Italy */
192 CTRY_JAMAICA
= 388, /* Jamaica */
193 CTRY_JAPAN
= 392, /* Japan */
194 CTRY_JAPAN1
= 393, /* Japan (JP1) */
195 CTRY_JAPAN2
= 394, /* Japan (JP0) */
196 CTRY_JAPAN3
= 395, /* Japan (JP1-1) */
197 CTRY_JAPAN4
= 396, /* Japan (JE1) */
198 CTRY_JAPAN5
= 397, /* Japan (JE2) */
199 CTRY_JAPAN6
= 399, /* Japan (JP6) */
200 CTRY_JAPAN7
= 900, /* Japan */
201 CTRY_JAPAN8
= 901, /* Japan */
202 CTRY_JAPAN9
= 902, /* Japan */
203 CTRY_JAPAN10
= 903, /* Japan */
204 CTRY_JAPAN11
= 904, /* Japan */
205 CTRY_JAPAN12
= 905, /* Japan */
206 CTRY_JAPAN13
= 906, /* Japan */
207 CTRY_JAPAN14
= 907, /* Japan */
208 CTRY_JAPAN15
= 908, /* Japan */
209 CTRY_JAPAN16
= 909, /* Japan */
210 CTRY_JAPAN17
= 910, /* Japan */
211 CTRY_JAPAN18
= 911, /* Japan */
212 CTRY_JAPAN19
= 912, /* Japan */
213 CTRY_JAPAN20
= 913, /* Japan */
214 CTRY_JAPAN21
= 914, /* Japan */
215 CTRY_JAPAN22
= 915, /* Japan */
216 CTRY_JAPAN23
= 916, /* Japan */
217 CTRY_JAPAN24
= 917, /* Japan */
218 CTRY_JAPAN25
= 918, /* Japan */
219 CTRY_JAPAN26
= 919, /* Japan */
220 CTRY_JAPAN27
= 920, /* Japan */
221 CTRY_JAPAN28
= 921, /* Japan */
222 CTRY_JAPAN29
= 922, /* Japan */
223 CTRY_JAPAN30
= 923, /* Japan */
224 CTRY_JAPAN31
= 924, /* Japan */
225 CTRY_JAPAN32
= 925, /* Japan */
226 CTRY_JAPAN33
= 926, /* Japan */
227 CTRY_JAPAN34
= 927, /* Japan */
228 CTRY_JAPAN35
= 928, /* Japan */
229 CTRY_JAPAN36
= 929, /* Japan */
230 CTRY_JAPAN37
= 930, /* Japan */
231 CTRY_JAPAN38
= 931, /* Japan */
232 CTRY_JAPAN39
= 932, /* Japan */
233 CTRY_JAPAN40
= 933, /* Japan */
234 CTRY_JAPAN41
= 934, /* Japan */
235 CTRY_JAPAN42
= 935, /* Japan */
236 CTRY_JAPAN43
= 936, /* Japan */
237 CTRY_JAPAN44
= 937, /* Japan */
238 CTRY_JAPAN45
= 938, /* Japan */
239 CTRY_JAPAN46
= 939, /* Japan */
240 CTRY_JAPAN47
= 940, /* Japan */
241 CTRY_JAPAN48
= 941, /* Japan */
242 CTRY_JORDAN
= 400, /* Jordan */
243 CTRY_KAZAKHSTAN
= 398, /* Kazakhstan */
244 CTRY_KENYA
= 404, /* Kenya */
245 CTRY_KOREA_NORTH
= 408, /* North Korea */
246 CTRY_KOREA_ROC
= 410, /* South Korea */
247 CTRY_KOREA_ROC2
= 411, /* South Korea */
248 CTRY_KUWAIT
= 414, /* Kuwait */
249 CTRY_LATVIA
= 428, /* Latvia */
250 CTRY_LEBANON
= 422, /* Lebanon */
251 CTRY_LIBYA
= 434, /* Libya */
252 CTRY_LIECHTENSTEIN
= 438, /* Liechtenstein */
253 CTRY_LITHUANIA
= 440, /* Lithuania */
254 CTRY_LUXEMBOURG
= 442, /* Luxembourg */
255 CTRY_MACAU
= 446, /* Macau */
256 CTRY_MACEDONIA
= 807, /* the Former Yugoslav Republic of Macedonia */
257 CTRY_MALAYSIA
= 458, /* Malaysia */
258 CTRY_MEXICO
= 484, /* Mexico */
259 CTRY_MONACO
= 492, /* Principality of Monaco */
260 CTRY_MOROCCO
= 504, /* Morocco */
261 CTRY_NETHERLANDS
= 528, /* Netherlands */
262 CTRY_NEW_ZEALAND
= 554, /* New Zealand */
263 CTRY_NICARAGUA
= 558, /* Nicaragua */
264 CTRY_NORWAY
= 578, /* Norway */
265 CTRY_OMAN
= 512, /* Oman */
266 CTRY_PAKISTAN
= 586, /* Islamic Republic of Pakistan */
267 CTRY_PANAMA
= 591, /* Panama */
268 CTRY_PARAGUAY
= 600, /* Paraguay */
269 CTRY_PERU
= 604, /* Peru */
270 CTRY_PHILIPPINES
= 608, /* Republic of the Philippines */
271 CTRY_POLAND
= 616, /* Poland */
272 CTRY_PORTUGAL
= 620, /* Portugal */
273 CTRY_PUERTO_RICO
= 630, /* Puerto Rico */
274 CTRY_QATAR
= 634, /* Qatar */
275 CTRY_ROMANIA
= 642, /* Romania */
276 CTRY_RUSSIA
= 643, /* Russia */
277 CTRY_SAUDI_ARABIA
= 682, /* Saudi Arabia */
278 CTRY_SINGAPORE
= 702, /* Singapore */
279 CTRY_SLOVAKIA
= 703, /* Slovak Republic */
280 CTRY_SLOVENIA
= 705, /* Slovenia */
281 CTRY_SOUTH_AFRICA
= 710, /* South Africa */
282 CTRY_SPAIN
= 724, /* Spain */
283 CTRY_SWEDEN
= 752, /* Sweden */
284 CTRY_SWITZERLAND
= 756, /* Switzerland */
285 CTRY_SYRIA
= 760, /* Syria */
286 CTRY_TAIWAN
= 158, /* Taiwan */
287 CTRY_THAILAND
= 764, /* Thailand */
288 CTRY_TRINIDAD_Y_TOBAGO
= 780, /* Trinidad y Tobago */
289 CTRY_TUNISIA
= 788, /* Tunisia */
290 CTRY_TURKEY
= 792, /* Turkey */
291 CTRY_UAE
= 784, /* U.A.E. */
292 CTRY_UKRAINE
= 804, /* Ukraine */
293 CTRY_UNITED_KINGDOM
= 826, /* United Kingdom */
294 CTRY_UNITED_STATES
= 840, /* United States */
295 CTRY_UNITED_STATES_FCC49
= 842, /* United States (Public Safety)*/
296 CTRY_URUGUAY
= 858, /* Uruguay */
297 CTRY_UZBEKISTAN
= 860, /* Uzbekistan */
298 CTRY_VENEZUELA
= 862, /* Venezuela */
299 CTRY_VIET_NAM
= 704, /* Viet Nam */
300 CTRY_YEMEN
= 887, /* Yemen */
301 CTRY_ZIMBABWE
= 716 /* Zimbabwe */