iPXE
net80211_err.h
Go to the documentation of this file.
1 #ifndef _IPXE_NET80211_ERR_H
2 #define _IPXE_NET80211_ERR_H
3 
4 #include <errno.h>
5 #include <ipxe/ieee80211.h>
6 
7 /*
8  * The iPXE 802.11 MAC layer.
9  *
10  * Copyright (c) 2009 Joshua Oreman <oremanj@rwcr.net>.
11  */
12 
13 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
14 
15 /** @file
16  *
17  * The iPXE 802.11 MAC layer errors.
18  */
19 
20 /* Disambiguate the EINVAL's a bit */
21 #define EINVAL_PKT_TOO_SHORT __einfo_error ( EINFO_EINVAL_PKT_TOO_SHORT )
22 #define EINFO_EINVAL_PKT_TOO_SHORT __einfo_uniqify \
23  ( EINFO_EINVAL, 0x01, "Packet too short" )
24 #define EINVAL_PKT_VERSION __einfo_error ( EINFO_EINVAL_PKT_VERSION )
25 #define EINFO_EINVAL_PKT_VERSION __einfo_uniqify \
26  ( EINFO_EINVAL, 0x02, "Packet 802.11 version not supported" )
27 #define EINVAL_PKT_NOT_DATA __einfo_error ( EINFO_EINVAL_PKT_NOT_DATA )
28 #define EINFO_EINVAL_PKT_NOT_DATA __einfo_uniqify \
29  ( EINFO_EINVAL, 0x03, "Packet not a data packet" )
30 #define EINVAL_PKT_NOT_FROMDS __einfo_error ( EINFO_EINVAL_PKT_NOT_FROMDS )
31 #define EINFO_EINVAL_PKT_NOT_FROMDS __einfo_uniqify \
32  ( EINFO_EINVAL, 0x04, "Packet not from an Access Point" )
33 #define EINVAL_PKT_LLC_HEADER __einfo_error ( EINFO_EINVAL_PKT_LLC_HEADER )
34 #define EINFO_EINVAL_PKT_LLC_HEADER __einfo_uniqify \
35  ( EINFO_EINVAL, 0x05, "Packet has invalid LLC header" )
36 #define EINVAL_CRYPTO_REQUEST __einfo_error ( EINFO_EINVAL_CRYPTO_REQUEST )
37 #define EINFO_EINVAL_CRYPTO_REQUEST __einfo_uniqify \
38  ( EINFO_EINVAL, 0x06, "Packet decryption error" )
39 #define EINVAL_ACTIVE_SCAN __einfo_error ( EINFO_EINVAL_ACTIVE_SCAN )
40 #define EINFO_EINVAL_ACTIVE_SCAN __einfo_uniqify \
41  ( EINFO_EINVAL, 0x07, "Invalid active scan requested" )
42 
43 /*
44  * 802.11 error codes: The AP can give us a status code explaining why
45  * authentication failed, or a reason code explaining why we were
46  * deauthenticated/disassociated. These codes range from 0-63 (the
47  * field is 16 bits wide, but only up to 45 or so are defined yet; we
48  * allow up to 63 for extensibility). This is encoded into an error
49  * code as such:
50  *
51  * status & 0x1f goes here --vv--
52  * Status code 0-31: ECONNREFUSED | EUNIQ_(status & 0x1f) (0e1a6038)
53  * Status code 32-63: EHOSTUNREACH | EUNIQ_(status & 0x1f) (171a6011)
54  * Reason code 0-31: ECONNRESET | EUNIQ_(reason & 0x1f) (0f1a6039)
55  * Reason code 32-63: ENETRESET | EUNIQ_(reason & 0x1f) (271a6001)
56  *
57  * The POSIX error codes more or less convey the appropriate message
58  * (status codes occur when we can't associate at all, reason codes
59  * when we lose association unexpectedly) and let us extract the
60  * complete 802.11 error code from the rc value.
61  *
62  * The error messages follow the 802.11 standard as much as is
63  * feasible, but most have been abbreviated to fit the 50-character
64  * limit imposed by strerror().
65  */
66 
67 /* 802.11 status codes (IEEE Std 802.11-2007, Table 7-23) */
68 
69 #define ECONNREFUSED_FAILURE __einfo_error \
70  ( EINFO_ECONNREFUSED_FAILURE )
71 #define EINFO_ECONNREFUSED_FAILURE __einfo_uniqify \
72  ( EINFO_ECONNREFUSED, \
73  ( IEEE80211_STATUS_FAILURE & 0x1f ), \
74  "Unspecified failure" )
75 
76 #define ECONNREFUSED_CAPAB_UNSUPP __einfo_error \
77  ( EINFO_ECONNREFUSED_CAPAB_UNSUPP )
78 #define EINFO_ECONNREFUSED_CAPAB_UNSUPP __einfo_uniqify \
79  ( EINFO_ECONNREFUSED, \
80  ( IEEE80211_STATUS_CAPAB_UNSUPP & 0x1f ), \
81  "Cannot support all requested capabilities" )
82 
83 #define ECONNREFUSED_REASSOC_INVALID __einfo_error \
84  ( EINFO_ECONNREFUSED_REASSOC_INVALID )
85 #define EINFO_ECONNREFUSED_REASSOC_INVALID __einfo_uniqify \
86  ( EINFO_ECONNREFUSED, \
87  ( IEEE80211_STATUS_REASSOC_INVALID & 0x1f ), \
88  "Reassociation denied due to lack of association" )
89 
90 #define ECONNREFUSED_ASSOC_DENIED __einfo_error \
91  ( EINFO_ECONNREFUSED_ASSOC_DENIED )
92 #define EINFO_ECONNREFUSED_ASSOC_DENIED __einfo_uniqify \
93  ( EINFO_ECONNREFUSED, \
94  ( IEEE80211_STATUS_ASSOC_DENIED & 0x1f ), \
95  "Association denied for another reason" )
96 
97 #define ECONNREFUSED_AUTH_ALGO_UNSUPP __einfo_error \
98  ( EINFO_ECONNREFUSED_AUTH_ALGO_UNSUPP )
99 #define EINFO_ECONNREFUSED_AUTH_ALGO_UNSUPP __einfo_uniqify \
100  ( EINFO_ECONNREFUSED, \
101  ( IEEE80211_STATUS_AUTH_ALGO_UNSUPP & 0x1f ), \
102  "Authentication algorithm unsupported" )
103 
104 #define ECONNREFUSED_AUTH_SEQ_INVALID __einfo_error \
105  ( EINFO_ECONNREFUSED_AUTH_SEQ_INVALID )
106 #define EINFO_ECONNREFUSED_AUTH_SEQ_INVALID __einfo_uniqify \
107  ( EINFO_ECONNREFUSED, \
108  ( IEEE80211_STATUS_AUTH_SEQ_INVALID & 0x1f ), \
109  "Authentication sequence number unexpected" )
110 
111 #define ECONNREFUSED_AUTH_CHALL_INVALID __einfo_error \
112  ( EINFO_ECONNREFUSED_AUTH_CHALL_INVALID )
113 #define EINFO_ECONNREFUSED_AUTH_CHALL_INVALID __einfo_uniqify \
114  ( EINFO_ECONNREFUSED, \
115  ( IEEE80211_STATUS_AUTH_CHALL_INVALID & 0x1f ), \
116  "Authentication rejected due to challenge failure" )
117 
118 #define ECONNREFUSED_AUTH_TIMEOUT __einfo_error \
119  ( EINFO_ECONNREFUSED_AUTH_TIMEOUT )
120 #define EINFO_ECONNREFUSED_AUTH_TIMEOUT __einfo_uniqify \
121  ( EINFO_ECONNREFUSED, \
122  ( IEEE80211_STATUS_AUTH_TIMEOUT & 0x1f ), \
123  "Authentication rejected due to timeout" )
124 
125 #define ECONNREFUSED_ASSOC_NO_ROOM __einfo_error \
126  ( EINFO_ECONNREFUSED_ASSOC_NO_ROOM )
127 #define EINFO_ECONNREFUSED_ASSOC_NO_ROOM __einfo_uniqify \
128  ( EINFO_ECONNREFUSED, \
129  ( IEEE80211_STATUS_ASSOC_NO_ROOM & 0x1f ), \
130  "Association denied because AP is out of resources" )
131 
132 #define ECONNREFUSED_ASSOC_NEED_RATE __einfo_error \
133  ( EINFO_ECONNREFUSED_ASSOC_NEED_RATE )
134 #define EINFO_ECONNREFUSED_ASSOC_NEED_RATE __einfo_uniqify \
135  ( EINFO_ECONNREFUSED, \
136  ( IEEE80211_STATUS_ASSOC_NEED_RATE & 0x1f ), \
137  "Association denied; basic rate support required" )
138 
139 #define ECONNREFUSED_ASSOC_NEED_SHORT_PMBL __einfo_error \
140  ( EINFO_ECONNREFUSED_ASSOC_NEED_SHORT_PMBL )
141 #define EINFO_ECONNREFUSED_ASSOC_NEED_SHORT_PMBL __einfo_uniqify \
142  ( EINFO_ECONNREFUSED, \
143  ( IEEE80211_STATUS_ASSOC_NEED_SHORT_PMBL & 0x1f ), \
144  "Association denied; short preamble support req'd" )
145 
146 #define ECONNREFUSED_ASSOC_NEED_PBCC __einfo_error \
147  ( EINFO_ECONNREFUSED_ASSOC_NEED_PBCC )
148 #define EINFO_ECONNREFUSED_ASSOC_NEED_PBCC __einfo_uniqify \
149  ( EINFO_ECONNREFUSED, \
150  ( IEEE80211_STATUS_ASSOC_NEED_PBCC & 0x1f ), \
151  "Association denied; PBCC modulation support req'd" )
152 
153 #define ECONNREFUSED_ASSOC_NEED_CHAN_AGILITY __einfo_error \
154  ( EINFO_ECONNREFUSED_ASSOC_NEED_CHAN_AGILITY )
155 #define EINFO_ECONNREFUSED_ASSOC_NEED_CHAN_AGILITY __einfo_uniqify \
156  ( EINFO_ECONNREFUSED, \
157  ( IEEE80211_STATUS_ASSOC_NEED_CHAN_AGILITY & 0x1f ), \
158  "Association denied; Channel Agility support req'd" )
159 
160 #define ECONNREFUSED_ASSOC_NEED_SPECTRUM_MGMT __einfo_error \
161  ( EINFO_ECONNREFUSED_ASSOC_NEED_SPECTRUM_MGMT )
162 #define EINFO_ECONNREFUSED_ASSOC_NEED_SPECTRUM_MGMT __einfo_uniqify \
163  ( EINFO_ECONNREFUSED, \
164  ( IEEE80211_STATUS_ASSOC_NEED_SPECTRUM_MGMT & 0x1f ), \
165  "Association denied; Spectrum Management required" )
166 
167 #define ECONNREFUSED_ASSOC_BAD_POWER __einfo_error \
168  ( EINFO_ECONNREFUSED_ASSOC_BAD_POWER )
169 #define EINFO_ECONNREFUSED_ASSOC_BAD_POWER __einfo_uniqify \
170  ( EINFO_ECONNREFUSED, \
171  ( IEEE80211_STATUS_ASSOC_BAD_POWER & 0x1f ), \
172  "Association denied; Power Capability unacceptable" )
173 
174 #define ECONNREFUSED_ASSOC_BAD_CHANNELS __einfo_error \
175  ( EINFO_ECONNREFUSED_ASSOC_BAD_CHANNELS )
176 #define EINFO_ECONNREFUSED_ASSOC_BAD_CHANNELS __einfo_uniqify \
177  ( EINFO_ECONNREFUSED, \
178  ( IEEE80211_STATUS_ASSOC_BAD_CHANNELS & 0x1f ), \
179  "Association denied; Supported Channels unacceptable" )
180 
181 #define ECONNREFUSED_ASSOC_NEED_SHORT_SLOT __einfo_error \
182  ( EINFO_ECONNREFUSED_ASSOC_NEED_SHORT_SLOT )
183 #define EINFO_ECONNREFUSED_ASSOC_NEED_SHORT_SLOT __einfo_uniqify \
184  ( EINFO_ECONNREFUSED, \
185  ( IEEE80211_STATUS_ASSOC_NEED_SHORT_SLOT & 0x1f ), \
186  "Association denied; Short Slot Tume support req'd" )
187 
188 #define ECONNREFUSED_ASSOC_NEED_DSSS_OFDM __einfo_error \
189  ( EINFO_ECONNREFUSED_ASSOC_NEED_DSSS_OFDM )
190 #define EINFO_ECONNREFUSED_ASSOC_NEED_DSSS_OFDM __einfo_uniqify \
191  ( EINFO_ECONNREFUSED, \
192  ( IEEE80211_STATUS_ASSOC_NEED_DSSS_OFDM & 0x1f ), \
193  "Association denied; DSSS-OFDM support required" )
194 
195 #define EHOSTUNREACH_QOS_FAILURE __einfo_error \
196  ( EINFO_EHOSTUNREACH_QOS_FAILURE )
197 #define EINFO_EHOSTUNREACH_QOS_FAILURE __einfo_uniqify \
198  ( EINFO_EHOSTUNREACH, \
199  ( IEEE80211_STATUS_QOS_FAILURE & 0x1f ), \
200  "Unspecified, QoS-related failure" )
201 
202 #define EHOSTUNREACH_QOS_NO_ROOM __einfo_error \
203  ( EINFO_EHOSTUNREACH_QOS_NO_ROOM )
204 #define EINFO_EHOSTUNREACH_QOS_NO_ROOM __einfo_uniqify \
205  ( EINFO_EHOSTUNREACH, \
206  ( IEEE80211_STATUS_QOS_NO_ROOM & 0x1f ), \
207  "Association denied; QoS AP out of QoS resources" )
208 
209 #define EHOSTUNREACH_LINK_IS_HORRIBLE __einfo_error \
210  ( EINFO_EHOSTUNREACH_LINK_IS_HORRIBLE )
211 #define EINFO_EHOSTUNREACH_LINK_IS_HORRIBLE __einfo_uniqify \
212  ( EINFO_EHOSTUNREACH, \
213  ( IEEE80211_STATUS_LINK_IS_HORRIBLE & 0x1f ), \
214  "Association denied due to excessively poor link" )
215 
216 #define EHOSTUNREACH_ASSOC_NEED_QOS __einfo_error \
217  ( EINFO_EHOSTUNREACH_ASSOC_NEED_QOS )
218 #define EINFO_EHOSTUNREACH_ASSOC_NEED_QOS __einfo_uniqify \
219  ( EINFO_EHOSTUNREACH, \
220  ( IEEE80211_STATUS_ASSOC_NEED_QOS & 0x1f ), \
221  "Association denied; QoS support required" )
222 
223 #define EHOSTUNREACH_REQUEST_DECLINED __einfo_error \
224  ( EINFO_EHOSTUNREACH_REQUEST_DECLINED )
225 #define EINFO_EHOSTUNREACH_REQUEST_DECLINED __einfo_uniqify \
226  ( EINFO_EHOSTUNREACH, \
227  ( IEEE80211_STATUS_REQUEST_DECLINED & 0x1f ), \
228  "The request has been declined" )
229 
230 #define EHOSTUNREACH_REQUEST_INVALID __einfo_error \
231  ( EINFO_EHOSTUNREACH_REQUEST_INVALID )
232 #define EINFO_EHOSTUNREACH_REQUEST_INVALID __einfo_uniqify \
233  ( EINFO_EHOSTUNREACH, \
234  ( IEEE80211_STATUS_REQUEST_INVALID & 0x1f ), \
235  "Request unsuccessful due to invalid parameters" )
236 
237 #define EHOSTUNREACH_TS_NOT_CREATED_AGAIN __einfo_error \
238  ( EINFO_EHOSTUNREACH_TS_NOT_CREATED_AGAIN )
239 #define EINFO_EHOSTUNREACH_TS_NOT_CREATED_AGAIN __einfo_uniqify \
240  ( EINFO_EHOSTUNREACH, \
241  ( IEEE80211_STATUS_TS_NOT_CREATED_AGAIN & 0x1f ), \
242  "TS not created due to bad specification" )
243 
244 #define EHOSTUNREACH_INVALID_IE __einfo_error \
245  ( EINFO_EHOSTUNREACH_INVALID_IE )
246 #define EINFO_EHOSTUNREACH_INVALID_IE __einfo_uniqify \
247  ( EINFO_EHOSTUNREACH, \
248  ( IEEE80211_STATUS_INVALID_IE & 0x1f ), \
249  "Invalid information element" )
250 
251 #define EHOSTUNREACH_GROUP_CIPHER_INVALID __einfo_error \
252  ( EINFO_EHOSTUNREACH_GROUP_CIPHER_INVALID )
253 #define EINFO_EHOSTUNREACH_GROUP_CIPHER_INVALID __einfo_uniqify \
254  ( EINFO_EHOSTUNREACH, \
255  ( IEEE80211_STATUS_GROUP_CIPHER_INVALID & 0x1f ), \
256  "Invalid group cipher" )
257 
258 #define EHOSTUNREACH_PAIR_CIPHER_INVALID __einfo_error \
259  ( EINFO_EHOSTUNREACH_PAIR_CIPHER_INVALID )
260 #define EINFO_EHOSTUNREACH_PAIR_CIPHER_INVALID __einfo_uniqify \
261  ( EINFO_EHOSTUNREACH, \
262  ( IEEE80211_STATUS_PAIR_CIPHER_INVALID & 0x1f ), \
263  "Invalid pairwise cipher" )
264 
265 #define EHOSTUNREACH_AKMP_INVALID __einfo_error \
266  ( EINFO_EHOSTUNREACH_AKMP_INVALID )
267 #define EINFO_EHOSTUNREACH_AKMP_INVALID __einfo_uniqify \
268  ( EINFO_EHOSTUNREACH, \
269  ( IEEE80211_STATUS_AKMP_INVALID & 0x1f ), \
270  "Invalid AKMP" )
271 
272 #define EHOSTUNREACH_RSN_VERSION_UNSUPP __einfo_error \
273  ( EINFO_EHOSTUNREACH_RSN_VERSION_UNSUPP )
274 #define EINFO_EHOSTUNREACH_RSN_VERSION_UNSUPP __einfo_uniqify \
275  ( EINFO_EHOSTUNREACH, \
276  ( IEEE80211_STATUS_RSN_VERSION_UNSUPP & 0x1f ), \
277  "Unsupported RSN information element version" )
278 
279 #define EHOSTUNREACH_RSN_CAPAB_INVALID __einfo_error \
280  ( EINFO_EHOSTUNREACH_RSN_CAPAB_INVALID )
281 #define EINFO_EHOSTUNREACH_RSN_CAPAB_INVALID __einfo_uniqify \
282  ( EINFO_EHOSTUNREACH, \
283  ( IEEE80211_STATUS_RSN_CAPAB_INVALID & 0x1f ), \
284  "Invalid RSN information element capabilities" )
285 
286 #define EHOSTUNREACH_CIPHER_REJECTED __einfo_error \
287  ( EINFO_EHOSTUNREACH_CIPHER_REJECTED )
288 #define EINFO_EHOSTUNREACH_CIPHER_REJECTED __einfo_uniqify \
289  ( EINFO_EHOSTUNREACH, \
290  ( IEEE80211_STATUS_CIPHER_REJECTED & 0x1f ), \
291  "Cipher suite rejected because of security policy" )
292 
293 #define EHOSTUNREACH_TS_NOT_CREATED_WAIT __einfo_error \
294  ( EINFO_EHOSTUNREACH_TS_NOT_CREATED_WAIT )
295 #define EINFO_EHOSTUNREACH_TS_NOT_CREATED_WAIT __einfo_uniqify \
296  ( EINFO_EHOSTUNREACH, \
297  ( IEEE80211_STATUS_TS_NOT_CREATED_WAIT & 0x1f ), \
298  "TS not created due to insufficient delay" )
299 
300 #define EHOSTUNREACH_DIRECT_LINK_FORBIDDEN __einfo_error \
301  ( EINFO_EHOSTUNREACH_DIRECT_LINK_FORBIDDEN )
302 #define EINFO_EHOSTUNREACH_DIRECT_LINK_FORBIDDEN __einfo_uniqify \
303  ( EINFO_EHOSTUNREACH, \
304  ( IEEE80211_STATUS_DIRECT_LINK_FORBIDDEN & 0x1f ), \
305  "Direct link is not allowed in the BSS by policy" )
306 
307 #define EHOSTUNREACH_DEST_NOT_PRESENT __einfo_error \
308  ( EINFO_EHOSTUNREACH_DEST_NOT_PRESENT )
309 #define EINFO_EHOSTUNREACH_DEST_NOT_PRESENT __einfo_uniqify \
310  ( EINFO_EHOSTUNREACH, \
311  ( IEEE80211_STATUS_DEST_NOT_PRESENT & 0x1f ), \
312  "The Destination STA is not present within the BSS" )
313 
314 #define EHOSTUNREACH_DEST_NOT_QOS __einfo_error \
315  ( EINFO_EHOSTUNREACH_DEST_NOT_QOS )
316 #define EINFO_EHOSTUNREACH_DEST_NOT_QOS __einfo_uniqify \
317  ( EINFO_EHOSTUNREACH, \
318  ( IEEE80211_STATUS_DEST_NOT_QOS & 0x1f ), \
319  "The Destination STA is not a QoS STA" )
320 
321 #define EHOSTUNREACH_ASSOC_LISTEN_TOO_HIGH __einfo_error \
322  ( EINFO_EHOSTUNREACH_ASSOC_LISTEN_TOO_HIGH )
323 #define EINFO_EHOSTUNREACH_ASSOC_LISTEN_TOO_HIGH __einfo_uniqify \
324  ( EINFO_EHOSTUNREACH, \
325  ( IEEE80211_STATUS_ASSOC_LISTEN_TOO_HIGH & 0x1f ), \
326  "Association denied; Listen Interval is too large" )
327 
328 /* 802.11 reason codes (IEEE Std 802.11-2007, Table 7-22) */
329 
330 #define ECONNRESET_UNSPECIFIED __einfo_error \
331  ( EINFO_ECONNRESET_UNSPECIFIED )
332 #define EINFO_ECONNRESET_UNSPECIFIED __einfo_uniqify \
333  ( EINFO_ECONNRESET, \
334  ( IEEE80211_REASON_UNSPECIFIED & 0x1f ), \
335  "Unspecified reason" )
336 
337 #define ECONNRESET_AUTH_NO_LONGER_VALID __einfo_error \
338  ( EINFO_ECONNRESET_AUTH_NO_LONGER_VALID )
339 #define EINFO_ECONNRESET_AUTH_NO_LONGER_VALID __einfo_uniqify \
340  ( EINFO_ECONNRESET, \
341  ( IEEE80211_REASON_AUTH_NO_LONGER_VALID & 0x1f ), \
342  "Previous authentication no longer valid" )
343 
344 #define ECONNRESET_LEAVING __einfo_error \
345  ( EINFO_ECONNRESET_LEAVING )
346 #define EINFO_ECONNRESET_LEAVING __einfo_uniqify \
347  ( EINFO_ECONNRESET, \
348  ( IEEE80211_REASON_LEAVING & 0x1f ), \
349  "Deauthenticated due to leaving network" )
350 
351 #define ECONNRESET_INACTIVITY __einfo_error \
352  ( EINFO_ECONNRESET_INACTIVITY )
353 #define EINFO_ECONNRESET_INACTIVITY __einfo_uniqify \
354  ( EINFO_ECONNRESET, \
355  ( IEEE80211_REASON_INACTIVITY & 0x1f ), \
356  "Disassociated due to inactivity" )
357 
358 #define ECONNRESET_OUT_OF_RESOURCES __einfo_error \
359  ( EINFO_ECONNRESET_OUT_OF_RESOURCES )
360 #define EINFO_ECONNRESET_OUT_OF_RESOURCES __einfo_uniqify \
361  ( EINFO_ECONNRESET, \
362  ( IEEE80211_REASON_OUT_OF_RESOURCES & 0x1f ), \
363  "Disassociated because AP is out of resources" )
364 
365 #define ECONNRESET_NEED_AUTH __einfo_error \
366  ( EINFO_ECONNRESET_NEED_AUTH )
367 #define EINFO_ECONNRESET_NEED_AUTH __einfo_uniqify \
368  ( EINFO_ECONNRESET, \
369  ( IEEE80211_REASON_NEED_AUTH & 0x1f ), \
370  "Class 2 frame received from nonauthenticated STA" )
371 
372 #define ECONNRESET_NEED_ASSOC __einfo_error \
373  ( EINFO_ECONNRESET_NEED_ASSOC )
374 #define EINFO_ECONNRESET_NEED_ASSOC __einfo_uniqify \
375  ( EINFO_ECONNRESET, \
376  ( IEEE80211_REASON_NEED_ASSOC & 0x1f ), \
377  "Class 3 frame received from nonassociated STA" )
378 
379 #define ECONNRESET_LEAVING_TO_ROAM __einfo_error \
380  ( EINFO_ECONNRESET_LEAVING_TO_ROAM )
381 #define EINFO_ECONNRESET_LEAVING_TO_ROAM __einfo_uniqify \
382  ( EINFO_ECONNRESET, \
383  ( IEEE80211_REASON_LEAVING_TO_ROAM & 0x1f ), \
384  "Disassociated due to roaming" )
385 
386 #define ECONNRESET_REASSOC_INVALID __einfo_error \
387  ( EINFO_ECONNRESET_REASSOC_INVALID )
388 #define EINFO_ECONNRESET_REASSOC_INVALID __einfo_uniqify \
389  ( EINFO_ECONNRESET, \
390  ( IEEE80211_REASON_REASSOC_INVALID & 0x1f ), \
391  "STA requesting (re)association not authenticated" )
392 
393 #define ECONNRESET_BAD_POWER __einfo_error \
394  ( EINFO_ECONNRESET_BAD_POWER )
395 #define EINFO_ECONNRESET_BAD_POWER __einfo_uniqify \
396  ( EINFO_ECONNRESET, \
397  ( IEEE80211_REASON_BAD_POWER & 0x1f ), \
398  "Disassociated; Power Capability unacceptable" )
399 
400 #define ECONNRESET_BAD_CHANNELS __einfo_error \
401  ( EINFO_ECONNRESET_BAD_CHANNELS )
402 #define EINFO_ECONNRESET_BAD_CHANNELS __einfo_uniqify \
403  ( EINFO_ECONNRESET, \
404  ( IEEE80211_REASON_BAD_CHANNELS & 0x1f ), \
405  "Disassociated; Supported Channels unacceptable" )
406 
407 #define ECONNRESET_INVALID_IE __einfo_error \
408  ( EINFO_ECONNRESET_INVALID_IE )
409 #define EINFO_ECONNRESET_INVALID_IE __einfo_uniqify \
410  ( EINFO_ECONNRESET, \
411  ( IEEE80211_REASON_INVALID_IE & 0x1f ), \
412  "Invalid information element" )
413 
414 #define ECONNRESET_MIC_FAILURE __einfo_error \
415  ( EINFO_ECONNRESET_MIC_FAILURE )
416 #define EINFO_ECONNRESET_MIC_FAILURE __einfo_uniqify \
417  ( EINFO_ECONNRESET, \
418  ( IEEE80211_REASON_MIC_FAILURE & 0x1f ), \
419  "Message integrity code (MIC) failure" )
420 
421 #define ECONNRESET_4WAY_TIMEOUT __einfo_error \
422  ( EINFO_ECONNRESET_4WAY_TIMEOUT )
423 #define EINFO_ECONNRESET_4WAY_TIMEOUT __einfo_uniqify \
424  ( EINFO_ECONNRESET, \
425  ( IEEE80211_REASON_4WAY_TIMEOUT & 0x1f ), \
426  "4-Way Handshake timeout" )
427 
428 #define ECONNRESET_GROUPKEY_TIMEOUT __einfo_error \
429  ( EINFO_ECONNRESET_GROUPKEY_TIMEOUT )
430 #define EINFO_ECONNRESET_GROUPKEY_TIMEOUT __einfo_uniqify \
431  ( EINFO_ECONNRESET, \
432  ( IEEE80211_REASON_GROUPKEY_TIMEOUT & 0x1f ), \
433  "Group Key Handshake timeout" )
434 
435 #define ECONNRESET_4WAY_INVALID __einfo_error \
436  ( EINFO_ECONNRESET_4WAY_INVALID )
437 #define EINFO_ECONNRESET_4WAY_INVALID __einfo_uniqify \
438  ( EINFO_ECONNRESET, \
439  ( IEEE80211_REASON_4WAY_INVALID & 0x1f ), \
440  "4-Way Handshake information element changed unduly" )
441 
442 #define ECONNRESET_GROUP_CIPHER_INVALID __einfo_error \
443  ( EINFO_ECONNRESET_GROUP_CIPHER_INVALID )
444 #define EINFO_ECONNRESET_GROUP_CIPHER_INVALID __einfo_uniqify \
445  ( EINFO_ECONNRESET, \
446  ( IEEE80211_REASON_GROUP_CIPHER_INVALID & 0x1f ), \
447  "Invalid group cipher" )
448 
449 #define ECONNRESET_PAIR_CIPHER_INVALID __einfo_error \
450  ( EINFO_ECONNRESET_PAIR_CIPHER_INVALID )
451 #define EINFO_ECONNRESET_PAIR_CIPHER_INVALID __einfo_uniqify \
452  ( EINFO_ECONNRESET, \
453  ( IEEE80211_REASON_PAIR_CIPHER_INVALID & 0x1f ), \
454  "Invalid pairwise cipher" )
455 
456 #define ECONNRESET_AKMP_INVALID __einfo_error \
457  ( EINFO_ECONNRESET_AKMP_INVALID )
458 #define EINFO_ECONNRESET_AKMP_INVALID __einfo_uniqify \
459  ( EINFO_ECONNRESET, \
460  ( IEEE80211_REASON_AKMP_INVALID & 0x1f ), \
461  "Invalid AKMP" )
462 
463 #define ECONNRESET_RSN_VERSION_INVALID __einfo_error \
464  ( EINFO_ECONNRESET_RSN_VERSION_INVALID )
465 #define EINFO_ECONNRESET_RSN_VERSION_INVALID __einfo_uniqify \
466  ( EINFO_ECONNRESET, \
467  ( IEEE80211_REASON_RSN_VERSION_INVALID & 0x1f ), \
468  "Unsupported RSN information element version" )
469 
470 #define ECONNRESET_RSN_CAPAB_INVALID __einfo_error \
471  ( EINFO_ECONNRESET_RSN_CAPAB_INVALID )
472 #define EINFO_ECONNRESET_RSN_CAPAB_INVALID __einfo_uniqify \
473  ( EINFO_ECONNRESET, \
474  ( IEEE80211_REASON_RSN_CAPAB_INVALID & 0x1f ), \
475  "Invalid RSN information element capabilities" )
476 
477 #define ECONNRESET_8021X_FAILURE __einfo_error \
478  ( EINFO_ECONNRESET_8021X_FAILURE )
479 #define EINFO_ECONNRESET_8021X_FAILURE __einfo_uniqify \
480  ( EINFO_ECONNRESET, \
481  ( IEEE80211_REASON_8021X_FAILURE & 0x1f ), \
482  "IEEE 802.1X authentication failed" )
483 
484 #define ECONNRESET_CIPHER_REJECTED __einfo_error \
485  ( EINFO_ECONNRESET_CIPHER_REJECTED )
486 #define EINFO_ECONNRESET_CIPHER_REJECTED __einfo_uniqify \
487  ( EINFO_ECONNRESET, \
488  ( IEEE80211_REASON_CIPHER_REJECTED & 0x1f ), \
489  "Cipher suite rejected because of security policy" )
490 
491 #define ENETRESET_QOS_UNSPECIFIED __einfo_error \
492  ( EINFO_ENETRESET_QOS_UNSPECIFIED )
493 #define EINFO_ENETRESET_QOS_UNSPECIFIED __einfo_uniqify \
494  ( EINFO_ENETRESET, \
495  ( IEEE80211_REASON_QOS_UNSPECIFIED & 0x1f ), \
496  "Disassociated for unspecified, QoS-related reason" )
497 
498 #define ENETRESET_QOS_OUT_OF_RESOURCES __einfo_error \
499  ( EINFO_ENETRESET_QOS_OUT_OF_RESOURCES )
500 #define EINFO_ENETRESET_QOS_OUT_OF_RESOURCES __einfo_uniqify \
501  ( EINFO_ENETRESET, \
502  ( IEEE80211_REASON_QOS_OUT_OF_RESOURCES & 0x1f ), \
503  "Disassociated; QoS AP is out of QoS resources" )
504 
505 #define ENETRESET_LINK_IS_HORRIBLE __einfo_error \
506  ( EINFO_ENETRESET_LINK_IS_HORRIBLE )
507 #define EINFO_ENETRESET_LINK_IS_HORRIBLE __einfo_uniqify \
508  ( EINFO_ENETRESET, \
509  ( IEEE80211_REASON_LINK_IS_HORRIBLE & 0x1f ), \
510  "Disassociated due to excessively poor link" )
511 
512 #define ENETRESET_INVALID_TXOP __einfo_error \
513  ( EINFO_ENETRESET_INVALID_TXOP )
514 #define EINFO_ENETRESET_INVALID_TXOP __einfo_uniqify \
515  ( EINFO_ENETRESET, \
516  ( IEEE80211_REASON_INVALID_TXOP & 0x1f ), \
517  "Disassociated due to TXOP limit violation" )
518 
519 #define ENETRESET_REQUESTED_LEAVING __einfo_error \
520  ( EINFO_ENETRESET_REQUESTED_LEAVING )
521 #define EINFO_ENETRESET_REQUESTED_LEAVING __einfo_uniqify \
522  ( EINFO_ENETRESET, \
523  ( IEEE80211_REASON_REQUESTED_LEAVING & 0x1f ), \
524  "Requested; STA is leaving the BSS (or resetting)" )
525 
526 #define ENETRESET_REQUESTED_NO_USE __einfo_error \
527  ( EINFO_ENETRESET_REQUESTED_NO_USE )
528 #define EINFO_ENETRESET_REQUESTED_NO_USE __einfo_uniqify \
529  ( EINFO_ENETRESET, \
530  ( IEEE80211_REASON_REQUESTED_NO_USE & 0x1f ), \
531  "Requested; does not want to use the mechanism" )
532 
533 #define ENETRESET_REQUESTED_NEED_SETUP __einfo_error \
534  ( EINFO_ENETRESET_REQUESTED_NEED_SETUP )
535 #define EINFO_ENETRESET_REQUESTED_NEED_SETUP __einfo_uniqify \
536  ( EINFO_ENETRESET, \
537  ( IEEE80211_REASON_REQUESTED_NEED_SETUP & 0x1f ), \
538  "Requested; setup is required" )
539 
540 #define ENETRESET_REQUESTED_TIMEOUT __einfo_error \
541  ( EINFO_ENETRESET_REQUESTED_TIMEOUT )
542 #define EINFO_ENETRESET_REQUESTED_TIMEOUT __einfo_uniqify \
543  ( EINFO_ENETRESET, \
544  ( IEEE80211_REASON_REQUESTED_TIMEOUT & 0x1f ), \
545  "Requested from peer STA due to timeout" )
546 
547 #define ENETRESET_CIPHER_UNSUPPORTED __einfo_error \
548  ( EINFO_ENETRESET_CIPHER_UNSUPPORTED )
549 #define EINFO_ENETRESET_CIPHER_UNSUPPORTED __einfo_uniqify \
550  ( EINFO_ENETRESET, \
551  ( IEEE80211_REASON_CIPHER_UNSUPPORTED & 0x1f ), \
552  "Peer STA does not support requested cipher suite" )
553 
554 /** Make return status code from 802.11 status code */
555 #define E80211_STATUS( stat ) \
556  ( ( (stat) & 0x20 ) ? \
557  EUNIQ ( EINFO_EHOSTUNREACH, ( (stat) & 0x1f ), \
558  EHOSTUNREACH_QOS_FAILURE, \
559  EHOSTUNREACH_QOS_NO_ROOM, \
560  EHOSTUNREACH_LINK_IS_HORRIBLE, \
561  EHOSTUNREACH_ASSOC_NEED_QOS, \
562  EHOSTUNREACH_REQUEST_DECLINED, \
563  EHOSTUNREACH_REQUEST_INVALID, \
564  EHOSTUNREACH_TS_NOT_CREATED_AGAIN, \
565  EHOSTUNREACH_INVALID_IE, \
566  EHOSTUNREACH_GROUP_CIPHER_INVALID, \
567  EHOSTUNREACH_PAIR_CIPHER_INVALID, \
568  EHOSTUNREACH_AKMP_INVALID, \
569  EHOSTUNREACH_RSN_VERSION_UNSUPP, \
570  EHOSTUNREACH_RSN_CAPAB_INVALID, \
571  EHOSTUNREACH_CIPHER_REJECTED, \
572  EHOSTUNREACH_TS_NOT_CREATED_WAIT, \
573  EHOSTUNREACH_DIRECT_LINK_FORBIDDEN, \
574  EHOSTUNREACH_DEST_NOT_PRESENT, \
575  EHOSTUNREACH_DEST_NOT_QOS, \
576  EHOSTUNREACH_ASSOC_LISTEN_TOO_HIGH ) : \
577  EUNIQ ( EINFO_ECONNREFUSED, ( (stat) & 0x1f ), \
578  ECONNREFUSED_FAILURE, \
579  ECONNREFUSED_CAPAB_UNSUPP, \
580  ECONNREFUSED_REASSOC_INVALID, \
581  ECONNREFUSED_ASSOC_DENIED, \
582  ECONNREFUSED_AUTH_ALGO_UNSUPP, \
583  ECONNREFUSED_AUTH_SEQ_INVALID, \
584  ECONNREFUSED_AUTH_CHALL_INVALID, \
585  ECONNREFUSED_AUTH_TIMEOUT, \
586  ECONNREFUSED_ASSOC_NO_ROOM, \
587  ECONNREFUSED_ASSOC_NEED_RATE, \
588  ECONNREFUSED_ASSOC_NEED_SHORT_PMBL, \
589  ECONNREFUSED_ASSOC_NEED_PBCC, \
590  ECONNREFUSED_ASSOC_NEED_CHAN_AGILITY, \
591  ECONNREFUSED_ASSOC_NEED_SPECTRUM_MGMT, \
592  ECONNREFUSED_ASSOC_BAD_POWER, \
593  ECONNREFUSED_ASSOC_BAD_CHANNELS, \
594  ECONNREFUSED_ASSOC_NEED_SHORT_SLOT, \
595  ECONNREFUSED_ASSOC_NEED_DSSS_OFDM ) )
596 
597 /** Make return status code from 802.11 reason code */
598 #define E80211_REASON( reas ) \
599  ( ( (reas) & 0x20 ) ? \
600  EUNIQ ( EINFO_ENETRESET, ( (reas) & 0x1f ), \
601  ENETRESET_QOS_UNSPECIFIED, \
602  ENETRESET_QOS_OUT_OF_RESOURCES, \
603  ENETRESET_LINK_IS_HORRIBLE, \
604  ENETRESET_INVALID_TXOP, \
605  ENETRESET_REQUESTED_LEAVING, \
606  ENETRESET_REQUESTED_NO_USE, \
607  ENETRESET_REQUESTED_NEED_SETUP, \
608  ENETRESET_REQUESTED_TIMEOUT, \
609  ENETRESET_CIPHER_UNSUPPORTED ) : \
610  EUNIQ ( EINFO_ECONNRESET, ( (reas) & 0x1f ), \
611  ECONNRESET_UNSPECIFIED, \
612  ECONNRESET_AUTH_NO_LONGER_VALID, \
613  ECONNRESET_LEAVING, \
614  ECONNRESET_INACTIVITY, \
615  ECONNRESET_OUT_OF_RESOURCES, \
616  ECONNRESET_NEED_AUTH, \
617  ECONNRESET_NEED_ASSOC, \
618  ECONNRESET_LEAVING_TO_ROAM, \
619  ECONNRESET_REASSOC_INVALID, \
620  ECONNRESET_BAD_POWER, \
621  ECONNRESET_BAD_CHANNELS, \
622  ECONNRESET_INVALID_IE, \
623  ECONNRESET_MIC_FAILURE, \
624  ECONNRESET_4WAY_TIMEOUT, \
625  ECONNRESET_GROUPKEY_TIMEOUT, \
626  ECONNRESET_4WAY_INVALID, \
627  ECONNRESET_GROUP_CIPHER_INVALID, \
628  ECONNRESET_PAIR_CIPHER_INVALID, \
629  ECONNRESET_AKMP_INVALID, \
630  ECONNRESET_RSN_VERSION_INVALID, \
631  ECONNRESET_RSN_CAPAB_INVALID, \
632  ECONNRESET_8021X_FAILURE, \
633  ECONNRESET_CIPHER_REJECTED ) )
634 
635 #endif /* _IPXE_NET80211_ERR_H */
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
Error codes.
Constants and data structures defined in IEEE 802.11, subsetted according to what iPXE knows how to u...