~ubuntu-branches/ubuntu/lucid/wpasupplicant/lucid-updates

« back to all changes in this revision

Viewing changes to debian/patches/10_madwifi_includes.dpatch

  • Committer: Bazaar Package Importer
  • Author(s): Kyle McMartin
  • Date: 2005-02-15 00:51:28 UTC
  • Revision ID: james.westby@ubuntu.com-20050215005128-4cnlxpp3vc3synqq
Tags: 0.3.8-1
* New upstream release.
* This release fixes a crash due to a buffer overflow, caused by
  a missing validation step on EAPOL-Key frames. Receiving malformed
  frames trigger the crash. More information available in the notes:
  http://lists.shmoo.com/pipermail/hostap/2005-February/009465.html
* Fix some badness with the init script. Missed the -B option
  to daemonize wpa_supplicant... pidfile is not currently being used
  as it requires modifying wpa_supplicant.
* patches/
  - 12_ipw_open_aps (closes: #295143)
    + merge patch against driver_ipw to fix association with
      open access points.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /bin/sh /usr/share/dpatch/dpatch-run
 
2
## 10_madwifi_includes.dpatch by  <kyle@debian.org>
 
3
##
 
4
## All lines beginning with `## DP:' are a description of the patch.
 
5
## DP: No description.
 
6
 
 
7
@DPATCH@
 
8
diff -urNad wpasupplicant-0.3.1/driver_madwifi/compat.h /tmp/dpep.kcIegg/wpasupplicant-0.3.1/driver_madwifi/compat.h
 
9
--- wpasupplicant-0.3.1/driver_madwifi/compat.h 1969-12-31 19:00:00.000000000 -0500
 
10
+++ /tmp/dpep.kcIegg/wpasupplicant-0.3.1/driver_madwifi/compat.h        2004-12-16 13:09:19.000000000 -0500
 
11
@@ -0,0 +1,86 @@
 
12
+/*-
 
13
+ * Copyright (c) 2002-2004 Sam Leffler, Errno Consulting
 
14
+ * All rights reserved.
 
15
+ *
 
16
+ * Redistribution and use in source and binary forms, with or without
 
17
+ * modification, are permitted provided that the following conditions
 
18
+ * are met:
 
19
+ * 1. Redistributions of source code must retain the above copyright
 
20
+ *    notice, this list of conditions and the following disclaimer,
 
21
+ *    without modification.
 
22
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
 
23
+ *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
 
24
+ *    redistribution must be conditioned upon including a substantially
 
25
+ *    similar Disclaimer requirement for further binary redistribution.
 
26
+ * 3. Neither the names of the above-listed copyright holders nor the names
 
27
+ *    of any contributors may be used to endorse or promote products derived
 
28
+ *    from this software without specific prior written permission.
 
29
+ *
 
30
+ * Alternatively, this software may be distributed under the terms of the
 
31
+ * GNU General Public License ("GPL") version 2 as published by the Free
 
32
+ * Software Foundation.
 
33
+ *
 
34
+ * NO WARRANTY
 
35
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 
36
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 
37
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
 
38
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
 
39
+ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
 
40
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 
41
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 
42
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 
43
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 
44
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 
45
+ * THE POSSIBILITY OF SUCH DAMAGES.
 
46
+ *
 
47
+ * $Id: compat.h,v 1.7 2004/08/05 17:34:51 samleffler Exp $
 
48
+ */
 
49
+#ifndef _ATH_COMPAT_H_
 
50
+#define _ATH_COMPAT_H_
 
51
+/*
 
52
+ * BSD/Linux compatibility shims.  These are used mainly to
 
53
+ * minimize differences when importing necesary BSD code.
 
54
+ */
 
55
+#define        NBBY    8                       /* number of bits/byte */
 
56
+
 
57
+#define        roundup(x, y)   ((((x)+((y)-1))/(y))*(y))  /* to any y */
 
58
+#define        howmany(x, y)   (((x)+((y)-1))/(y))
 
59
+
 
60
+/* Bit map related macros. */
 
61
+#define        setbit(a,i)     ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
 
62
+#define        clrbit(a,i)     ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
 
63
+#define        isset(a,i)      ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
 
64
+#define        isclr(a,i)      (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
 
65
+
 
66
+#define        __packed        __attribute__((__packed__))
 
67
+#define        __printflike(_a,_b) \
 
68
+       __attribute__ ((__format__ (__printf__, _a, _b)))
 
69
+
 
70
+#ifndef ALIGNED_POINTER
 
71
+/*
 
72
+ * ALIGNED_POINTER is a boolean macro that checks whether an address
 
73
+ * is valid to fetch data elements of type t from on this architecture.
 
74
+ * This does not reflect the optimal alignment, just the possibility
 
75
+ * (within reasonable limits). 
 
76
+ *
 
77
+ */
 
78
+#define ALIGNED_POINTER(p,t)   1
 
79
+#endif
 
80
+
 
81
+#ifdef __KERNEL__
 
82
+#include <asm/page.h>
 
83
+
 
84
+#define        KASSERT(exp, msg) do {                  \
 
85
+       if (unlikely(!(exp))) {                 \
 
86
+               printk msg;                     \
 
87
+               BUG();                          \
 
88
+       }                                       \
 
89
+} while (0)
 
90
+#endif /* __KERNEL__ */
 
91
+
 
92
+/*
 
93
+ * NetBSD/FreeBSD defines for file version.
 
94
+ */
 
95
+#define        __FBSDID(_s)
 
96
+#define        __KERNEL_RCSID(_n,_s)
 
97
+#endif /* _ATH_COMPAT_H_ */
 
98
diff -urNad wpasupplicant-0.3.1/driver_madwifi/net80211/ieee80211.h /tmp/dpep.kcIegg/wpasupplicant-0.3.1/driver_madwifi/net80211/ieee80211.h
 
99
--- wpasupplicant-0.3.1/driver_madwifi/net80211/ieee80211.h     1969-12-31 19:00:00.000000000 -0500
 
100
+++ /tmp/dpep.kcIegg/wpasupplicant-0.3.1/driver_madwifi/net80211/ieee80211.h    2004-12-16 13:09:19.000000000 -0500
 
101
@@ -0,0 +1,622 @@
 
102
+/*     $NetBSD: ieee80211.h,v 1.4 2003/10/15 11:43:51 dyoung Exp $     */
 
103
+/*-
 
104
+ * Copyright (c) 2001 Atsushi Onoe
 
105
+ * Copyright (c) 2002-2004 Sam Leffler, Errno Consulting
 
106
+ * All rights reserved.
 
107
+ *
 
108
+ * Redistribution and use in source and binary forms, with or without
 
109
+ * modification, are permitted provided that the following conditions
 
110
+ * are met:
 
111
+ * 1. Redistributions of source code must retain the above copyright
 
112
+ *    notice, this list of conditions and the following disclaimer.
 
113
+ * 2. Redistributions in binary form must reproduce the above copyright
 
114
+ *    notice, this list of conditions and the following disclaimer in the
 
115
+ *    documentation and/or other materials provided with the distribution.
 
116
+ * 3. The name of the author may not be used to endorse or promote products
 
117
+ *    derived from this software without specific prior written permission.
 
118
+ *
 
119
+ * Alternatively, this software may be distributed under the terms of the
 
120
+ * GNU General Public License ("GPL") version 2 as published by the Free
 
121
+ * Software Foundation.
 
122
+ *
 
123
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 
124
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 
125
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 
126
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 
127
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 
128
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
129
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
130
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
131
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 
132
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
133
+ *
 
134
+ * $FreeBSD: src/sys/net80211/ieee80211.h,v 1.4 2004/01/13 06:22:55 sam Exp $
 
135
+ */
 
136
+#ifndef _NET80211_IEEE80211_H_
 
137
+#define _NET80211_IEEE80211_H_
 
138
+
 
139
+/*
 
140
+ * 802.11 protocol definitions.
 
141
+ */
 
142
+
 
143
+#define        IEEE80211_ADDR_LEN      6               /* size of 802.11 address */
 
144
+/* is 802.11 address multicast/broadcast? */
 
145
+#define        IEEE80211_IS_MULTICAST(_a)      (*(_a) & 0x01)
 
146
+
 
147
+/* IEEE 802.11 PLCP header */
 
148
+struct ieee80211_plcp_hdr {
 
149
+       u_int16_t       i_sfd;
 
150
+       u_int8_t        i_signal;
 
151
+       u_int8_t        i_service;
 
152
+       u_int16_t       i_length;
 
153
+       u_int16_t       i_crc;
 
154
+} __packed;
 
155
+
 
156
+#define IEEE80211_PLCP_SFD      0xF3A0 
 
157
+#define IEEE80211_PLCP_SERVICE  0x00
 
158
+
 
159
+/*
 
160
+ * generic definitions for IEEE 802.11 frames
 
161
+ */
 
162
+struct ieee80211_frame {
 
163
+       u_int8_t        i_fc[2];
 
164
+       u_int8_t        i_dur[2];
 
165
+       u_int8_t        i_addr1[IEEE80211_ADDR_LEN];
 
166
+       u_int8_t        i_addr2[IEEE80211_ADDR_LEN];
 
167
+       u_int8_t        i_addr3[IEEE80211_ADDR_LEN];
 
168
+       u_int8_t        i_seq[2];
 
169
+       /* possibly followed by addr4[IEEE80211_ADDR_LEN]; */
 
170
+       /* see below */
 
171
+} __packed;
 
172
+
 
173
+struct ieee80211_qosframe {
 
174
+       u_int8_t        i_fc[2];
 
175
+       u_int8_t        i_dur[2];
 
176
+       u_int8_t        i_addr1[IEEE80211_ADDR_LEN];
 
177
+       u_int8_t        i_addr2[IEEE80211_ADDR_LEN];
 
178
+       u_int8_t        i_addr3[IEEE80211_ADDR_LEN];
 
179
+       u_int8_t        i_seq[2];
 
180
+       u_int8_t        i_qos[2];
 
181
+       /* possibly followed by addr4[IEEE80211_ADDR_LEN]; */
 
182
+       /* see below */
 
183
+} __packed;
 
184
+
 
185
+struct ieee80211_qoscntl {
 
186
+       u_int8_t        i_qos[2];
 
187
+};
 
188
+
 
189
+struct ieee80211_frame_addr4 {
 
190
+       u_int8_t        i_fc[2];
 
191
+       u_int8_t        i_dur[2];
 
192
+       u_int8_t        i_addr1[IEEE80211_ADDR_LEN];
 
193
+       u_int8_t        i_addr2[IEEE80211_ADDR_LEN];
 
194
+       u_int8_t        i_addr3[IEEE80211_ADDR_LEN];
 
195
+       u_int8_t        i_seq[2];
 
196
+       u_int8_t        i_addr4[IEEE80211_ADDR_LEN];
 
197
+} __packed;
 
198
+
 
199
+
 
200
+struct ieee80211_qosframe_addr4 {
 
201
+       u_int8_t        i_fc[2];
 
202
+       u_int8_t        i_dur[2];
 
203
+       u_int8_t        i_addr1[IEEE80211_ADDR_LEN];
 
204
+       u_int8_t        i_addr2[IEEE80211_ADDR_LEN];
 
205
+       u_int8_t        i_addr3[IEEE80211_ADDR_LEN];
 
206
+       u_int8_t        i_seq[2];
 
207
+       u_int8_t        i_addr4[IEEE80211_ADDR_LEN];
 
208
+       u_int8_t        i_qos[2];
 
209
+} __packed;
 
210
+
 
211
+#define        IEEE80211_FC0_VERSION_MASK              0x03
 
212
+#define        IEEE80211_FC0_VERSION_SHIFT             0
 
213
+#define        IEEE80211_FC0_VERSION_0                 0x00
 
214
+#define        IEEE80211_FC0_TYPE_MASK                 0x0c
 
215
+#define        IEEE80211_FC0_TYPE_SHIFT                2
 
216
+#define        IEEE80211_FC0_TYPE_MGT                  0x00
 
217
+#define        IEEE80211_FC0_TYPE_CTL                  0x04
 
218
+#define        IEEE80211_FC0_TYPE_DATA                 0x08
 
219
+
 
220
+#define        IEEE80211_FC0_SUBTYPE_MASK              0xf0
 
221
+#define        IEEE80211_FC0_SUBTYPE_SHIFT             4
 
222
+/* for TYPE_MGT */
 
223
+#define        IEEE80211_FC0_SUBTYPE_ASSOC_REQ         0x00
 
224
+#define        IEEE80211_FC0_SUBTYPE_ASSOC_RESP        0x10
 
225
+#define        IEEE80211_FC0_SUBTYPE_REASSOC_REQ       0x20
 
226
+#define        IEEE80211_FC0_SUBTYPE_REASSOC_RESP      0x30
 
227
+#define        IEEE80211_FC0_SUBTYPE_PROBE_REQ         0x40
 
228
+#define        IEEE80211_FC0_SUBTYPE_PROBE_RESP        0x50
 
229
+#define        IEEE80211_FC0_SUBTYPE_BEACON            0x80
 
230
+#define        IEEE80211_FC0_SUBTYPE_ATIM              0x90
 
231
+#define        IEEE80211_FC0_SUBTYPE_DISASSOC          0xa0
 
232
+#define        IEEE80211_FC0_SUBTYPE_AUTH              0xb0
 
233
+#define        IEEE80211_FC0_SUBTYPE_DEAUTH            0xc0
 
234
+/* for TYPE_CTL */
 
235
+#define        IEEE80211_FC0_SUBTYPE_PS_POLL           0xa0
 
236
+#define        IEEE80211_FC0_SUBTYPE_RTS               0xb0
 
237
+#define        IEEE80211_FC0_SUBTYPE_CTS               0xc0
 
238
+#define        IEEE80211_FC0_SUBTYPE_ACK               0xd0
 
239
+#define        IEEE80211_FC0_SUBTYPE_CF_END            0xe0
 
240
+#define        IEEE80211_FC0_SUBTYPE_CF_END_ACK        0xf0
 
241
+/* for TYPE_DATA (bit combination) */
 
242
+#define        IEEE80211_FC0_SUBTYPE_DATA              0x00
 
243
+#define        IEEE80211_FC0_SUBTYPE_CF_ACK            0x10
 
244
+#define        IEEE80211_FC0_SUBTYPE_CF_POLL           0x20
 
245
+#define        IEEE80211_FC0_SUBTYPE_CF_ACPL           0x30
 
246
+#define        IEEE80211_FC0_SUBTYPE_NODATA            0x40
 
247
+#define        IEEE80211_FC0_SUBTYPE_CFACK             0x50
 
248
+#define        IEEE80211_FC0_SUBTYPE_CFPOLL            0x60
 
249
+#define        IEEE80211_FC0_SUBTYPE_CF_ACK_CF_ACK     0x70
 
250
+#define        IEEE80211_FC0_SUBTYPE_QOS               0x80
 
251
+#define        IEEE80211_FC0_SUBTYPE_QOS_NULL          0xc0
 
252
+
 
253
+#define        IEEE80211_FC1_DIR_MASK                  0x03
 
254
+#define        IEEE80211_FC1_DIR_NODS                  0x00    /* STA->STA */
 
255
+#define        IEEE80211_FC1_DIR_TODS                  0x01    /* STA->AP  */
 
256
+#define        IEEE80211_FC1_DIR_FROMDS                0x02    /* AP ->STA */
 
257
+#define        IEEE80211_FC1_DIR_DSTODS                0x03    /* AP ->AP  */
 
258
+
 
259
+#define        IEEE80211_FC1_MORE_FRAG                 0x04
 
260
+#define        IEEE80211_FC1_RETRY                     0x08
 
261
+#define        IEEE80211_FC1_PWR_MGT                   0x10
 
262
+#define        IEEE80211_FC1_MORE_DATA                 0x20
 
263
+#define        IEEE80211_FC1_WEP                       0x40
 
264
+#define        IEEE80211_FC1_ORDER                     0x80
 
265
+
 
266
+#define        IEEE80211_SEQ_FRAG_MASK                 0x000f
 
267
+#define        IEEE80211_SEQ_FRAG_SHIFT                0
 
268
+#define        IEEE80211_SEQ_SEQ_MASK                  0xfff0
 
269
+#define        IEEE80211_SEQ_SEQ_SHIFT                 4
 
270
+
 
271
+#define        IEEE80211_NWID_LEN                      32
 
272
+
 
273
+#define        IEEE80211_QOS_TXOP                      0x00ff
 
274
+/* bit 8 is reserved */
 
275
+#define        IEEE80211_QOS_ACKPOLICY                 0x0600
 
276
+#define        IEEE80211_QOS_ESOP                      0x0800
 
277
+#define        IEEE80211_QOS_TID                       0xf000
 
278
+
 
279
+/* does frame have QoS sequence control data */
 
280
+#define        IEEE80211_QOS_HAS_SEQ(wh) \
 
281
+       (((wh)->i_fc[0] & \
 
282
+         (IEEE80211_FC0_TYPE_MASK | IEEE80211_FC0_SUBTYPE_QOS)) == \
 
283
+         (IEEE80211_FC0_TYPE_DATA | IEEE80211_FC0_SUBTYPE_QOS))
 
284
+
 
285
+/*
 
286
+ * WME/802.11e information element.
 
287
+ */
 
288
+struct ieee80211_ie_wme {
 
289
+       u_int8_t        wme_id;         /* IEEE80211_ELEMID_VENDOR */
 
290
+       u_int8_t        wme_len;        /* length in bytes */
 
291
+       u_int8_t        wme_oui[3];     /* 0x00, 0x50, 0xf2 */
 
292
+       u_int8_t        wme_type;       /* OUI type */
 
293
+       u_int8_t        wme_subtype;    /* OUI subtype */
 
294
+       u_int8_t        wme_version;    /* spec revision */
 
295
+       u_int8_t        wme_info;       /* AC info */
 
296
+} __packed;
 
297
+
 
298
+/*
 
299
+ * WME/802.11e Tspec Element
 
300
+ */
 
301
+struct ieee80211_wme_tspec {
 
302
+       u_int8_t        ts_id;
 
303
+       u_int8_t        ts_len;
 
304
+       u_int8_t        ts_oui[3];
 
305
+       u_int8_t        ts_oui_type;
 
306
+       u_int8_t        ts_oui_subtype;
 
307
+       u_int8_t        ts_version;
 
308
+       u_int8_t        ts_tsinfo[3];
 
309
+       u_int8_t        ts_nom_msdu[2];
 
310
+       u_int8_t        ts_max_msdu[2];
 
311
+       u_int8_t        ts_min_svc[4];
 
312
+       u_int8_t        ts_max_svc[4];
 
313
+       u_int8_t        ts_inactv_intv[4];
 
314
+       u_int8_t        ts_susp_intv[4];
 
315
+       u_int8_t        ts_start_svc[4];
 
316
+       u_int8_t        ts_min_rate[4];
 
317
+       u_int8_t        ts_mean_rate[4];
 
318
+       u_int8_t        ts_max_burst[4];
 
319
+       u_int8_t        ts_min_phy[4];
 
320
+       u_int8_t        ts_peak_rate[4];
 
321
+       u_int8_t        ts_delay[4];
 
322
+       u_int8_t        ts_surplus[2];
 
323
+       u_int8_t        ts_medium_time[2];
 
324
+} __packed;
 
325
+
 
326
+/*
 
327
+ * Management Notification Frame
 
328
+ */
 
329
+struct ieee80211_mnf {
 
330
+       u_int8_t        mnf_category;
 
331
+       u_int8_t        mnf_action;
 
332
+       u_int8_t        mnf_dialog;
 
333
+       u_int8_t        mnf_status;
 
334
+} __packed;
 
335
+#define        MNF_SETUP_REQ   0
 
336
+#define        MNF_SETUP_RESP  1
 
337
+#define        MNF_TEARDOWN    2
 
338
+
 
339
+/*
 
340
+ * Control frames.
 
341
+ */
 
342
+struct ieee80211_frame_min {
 
343
+       u_int8_t        i_fc[2];
 
344
+       u_int8_t        i_dur[2];
 
345
+       u_int8_t        i_addr1[IEEE80211_ADDR_LEN];
 
346
+       u_int8_t        i_addr2[IEEE80211_ADDR_LEN];
 
347
+       /* FCS */
 
348
+} __packed;
 
349
+
 
350
+struct ieee80211_frame_rts {
 
351
+       u_int8_t        i_fc[2];
 
352
+       u_int8_t        i_dur[2];
 
353
+       u_int8_t        i_ra[IEEE80211_ADDR_LEN];
 
354
+       u_int8_t        i_ta[IEEE80211_ADDR_LEN];
 
355
+       /* FCS */
 
356
+} __packed;
 
357
+
 
358
+struct ieee80211_frame_cts {
 
359
+       u_int8_t        i_fc[2];
 
360
+       u_int8_t        i_dur[2];
 
361
+       u_int8_t        i_ra[IEEE80211_ADDR_LEN];
 
362
+       /* FCS */
 
363
+} __packed;
 
364
+
 
365
+struct ieee80211_frame_ack {
 
366
+       u_int8_t        i_fc[2];
 
367
+       u_int8_t        i_dur[2];
 
368
+       u_int8_t        i_ra[IEEE80211_ADDR_LEN];
 
369
+       /* FCS */
 
370
+} __packed;
 
371
+
 
372
+struct ieee80211_frame_pspoll {
 
373
+       u_int8_t        i_fc[2];
 
374
+       u_int8_t        i_aid[2];
 
375
+       u_int8_t        i_bssid[IEEE80211_ADDR_LEN];
 
376
+       u_int8_t        i_ta[IEEE80211_ADDR_LEN];
 
377
+       /* FCS */
 
378
+} __packed;
 
379
+
 
380
+struct ieee80211_frame_cfend {         /* NB: also CF-End+CF-Ack */
 
381
+       u_int8_t        i_fc[2];
 
382
+       u_int8_t        i_dur[2];       /* should be zero */
 
383
+       u_int8_t        i_ra[IEEE80211_ADDR_LEN];
 
384
+       u_int8_t        i_bssid[IEEE80211_ADDR_LEN];
 
385
+       /* FCS */
 
386
+} __packed;
 
387
+
 
388
+/*
 
389
+ * BEACON management packets
 
390
+ *
 
391
+ *     octet timestamp[8]
 
392
+ *     octet beacon interval[2]
 
393
+ *     octet capability information[2]
 
394
+ *     information element
 
395
+ *             octet elemid
 
396
+ *             octet length
 
397
+ *             octet information[length]
 
398
+ */
 
399
+
 
400
+typedef u_int8_t *ieee80211_mgt_beacon_t;
 
401
+
 
402
+#define        IEEE80211_BEACON_INTERVAL(beacon) \
 
403
+       ((beacon)[8] | ((beacon)[9] << 8))
 
404
+#define        IEEE80211_BEACON_CAPABILITY(beacon) \
 
405
+       ((beacon)[10] | ((beacon)[11] << 8))
 
406
+
 
407
+#define        IEEE80211_CAPINFO_ESS                   0x0001
 
408
+#define        IEEE80211_CAPINFO_IBSS                  0x0002
 
409
+#define        IEEE80211_CAPINFO_CF_POLLABLE           0x0004
 
410
+#define        IEEE80211_CAPINFO_CF_POLLREQ            0x0008
 
411
+#define        IEEE80211_CAPINFO_PRIVACY               0x0010
 
412
+#define        IEEE80211_CAPINFO_SHORT_PREAMBLE        0x0020
 
413
+#define        IEEE80211_CAPINFO_PBCC                  0x0040
 
414
+#define        IEEE80211_CAPINFO_CHNL_AGILITY          0x0080
 
415
+/* bits 8-9 are reserved */
 
416
+#define        IEEE80211_CAPINFO_SHORT_SLOTTIME        0x0400
 
417
+#define        IEEE80211_CAPINFO_RSN                   0x0800
 
418
+/* bit 12 is reserved */
 
419
+#define        IEEE80211_CAPINFO_DSSSOFDM              0x2000
 
420
+/* bits 14-15 are reserved */
 
421
+
 
422
+/*
 
423
+ * 802.11i/WPA information element (maximally sized).
 
424
+ */
 
425
+struct ieee80211_ie_wpa {
 
426
+       u_int8_t        wpa_id;         /* IEEE80211_ELEMID_VENDOR */
 
427
+       u_int8_t        wpa_len;        /* length in bytes */
 
428
+       u_int8_t        wpa_oui[3];     /* 0x00, 0x50, 0xf2 */
 
429
+       u_int8_t        wpa_type;       /* OUI type */
 
430
+       u_int16_t       wpa_version;    /* spec revision */
 
431
+       u_int32_t       wpa_mcipher[1]; /* multicast/group key cipher */
 
432
+       u_int16_t       wpa_uciphercnt; /* # pairwise key ciphers */
 
433
+       u_int32_t       wpa_uciphers[8];/* ciphers */
 
434
+       u_int16_t       wpa_authselcnt; /* authentication selector cnt*/
 
435
+       u_int32_t       wpa_authsels[8];/* selectors */
 
436
+       u_int16_t       wpa_caps;       /* 802.11i capabilities */
 
437
+       u_int16_t       wpa_pmkidcnt;   /* 802.11i pmkid count */
 
438
+       u_int16_t       wpa_pmkids[8];  /* 802.11i pmkids */
 
439
+} __packed;
 
440
+
 
441
+/*
 
442
+ * Management information element payloads
 
443
+ */
 
444
+union ieee80211_information {
 
445
+       char    ssid[IEEE80211_NWID_LEN+1];
 
446
+       struct rates {
 
447
+               u_int8_t        *p;
 
448
+       } rates;
 
449
+       struct fh {
 
450
+               u_int16_t       dwell;
 
451
+               u_int8_t        set;
 
452
+               u_int8_t        pattern;
 
453
+               u_int8_t        index;
 
454
+       } fh;
 
455
+       struct ds {
 
456
+               u_int8_t        channel;
 
457
+       } ds;
 
458
+       struct cf {
 
459
+               u_int8_t        count;
 
460
+               u_int8_t        period;
 
461
+               u_int8_t        maxdur[2];
 
462
+               u_int8_t        dur[2];
 
463
+       } cf;
 
464
+       struct tim {
 
465
+               u_int8_t        count;
 
466
+               u_int8_t        period;
 
467
+               u_int8_t        bitctl;
 
468
+               /* u_int8_t     pvt[251]; The driver needs to use this. */
 
469
+       } tim;
 
470
+       struct ibss {
 
471
+               u_int16_t       atim;
 
472
+       } ibss;
 
473
+       struct challenge {
 
474
+               u_int8_t        *p;
 
475
+               u_int8_t        len;
 
476
+       } challenge;
 
477
+       struct erp {
 
478
+               u_int8_t        flags;
 
479
+       } erp;
 
480
+       struct country {
 
481
+               u_int8_t        cc[3];          /* ISO CC+(I)ndoor/(O)utdoor */
 
482
+               struct {
 
483
+                       u_int8_t schan;         /* starting channel */
 
484
+                       u_int8_t nchan;         /* number channels */
 
485
+                       u_int8_t maxtxpwr;      
 
486
+               } band[4];                      /* up to 4 sub bands */
 
487
+       } country;
 
488
+       struct ath {
 
489
+               u_int8_t        flags;
 
490
+       } ath;
 
491
+};
 
492
+
 
493
+enum {
 
494
+       IEEE80211_ELEMID_SSID           = 0,
 
495
+       IEEE80211_ELEMID_RATES          = 1,
 
496
+       IEEE80211_ELEMID_FHPARMS        = 2,
 
497
+       IEEE80211_ELEMID_DSPARMS        = 3,
 
498
+       IEEE80211_ELEMID_CFPARMS        = 4,
 
499
+       IEEE80211_ELEMID_TIM            = 5,
 
500
+       IEEE80211_ELEMID_IBSSPARMS      = 6,
 
501
+       IEEE80211_ELEMID_COUNTRY        = 7,
 
502
+       IEEE80211_ELEMID_CHALLENGE      = 16,
 
503
+       /* 17-31 reserved for challenge text extension */
 
504
+       IEEE80211_ELEMID_ERP            = 42,
 
505
+       IEEE80211_ELEMID_RSN            = 48,
 
506
+       IEEE80211_ELEMID_XRATES         = 50,
 
507
+       IEEE80211_ELEMID_TPC            = 150,
 
508
+       IEEE80211_ELEMID_CCKM           = 156,
 
509
+       IEEE80211_ELEMID_VENDOR         = 221,  /* vendor private */
 
510
+};
 
511
+
 
512
+#define IEEE80211_CHALLENGE_LEN                128
 
513
+
 
514
+#define        IEEE80211_RATE_BASIC            0x80
 
515
+#define        IEEE80211_RATE_VAL              0x7f
 
516
+
 
517
+/* EPR information element flags */
 
518
+#define        IEEE80211_ERP_NON_ERP_PRESENT   0x01
 
519
+#define        IEEE80211_ERP_USE_PROTECTION    0x02
 
520
+#define        IEEE80211_ERP_LONG_PREAMBLE     0x04
 
521
+
 
522
+/* Atheros private advanced capabilities info */
 
523
+#define        ATHEROS_CAP_TURBO_PRIME         0x01
 
524
+#define        ATHEROS_CAP_COMPRESSION         0x02
 
525
+#define        ATHEROS_CAP_FAST_FRAME          0x04
 
526
+/* bits 3-6 reserved */
 
527
+#define        ATHEROS_CAP_BOOST               0x80
 
528
+
 
529
+#define        ATH_OUI                 0x7f0300                /* Atheros OUI */
 
530
+#define        ATH_OUI_TYPE            0x01
 
531
+#define        ATH_OUI_VERSION         0x01
 
532
+
 
533
+#define        WPA_OUI                 0xf25000
 
534
+#define        WPA_OUI_TYPE            0x01
 
535
+#define        WPA_VERSION             1               /* current supported version */
 
536
+
 
537
+#define        WPA_CSE_NULL            0x00
 
538
+#define        WPA_CSE_WEP40           0x01
 
539
+#define        WPA_CSE_TKIP            0x02
 
540
+#define        WPA_CSE_CCMP            0x04
 
541
+#define        WPA_CSE_WEP104          0x05
 
542
+
 
543
+#define        WPA_ASE_NONE            0x00
 
544
+#define        WPA_ASE_8021X_UNSPEC    0x01
 
545
+#define        WPA_ASE_8021X_PSK       0x02
 
546
+
 
547
+#define        RSN_OUI                 0xac0f00
 
548
+#define        RSN_VERSION             1               /* current supported version */
 
549
+
 
550
+#define        RSN_CSE_NULL            0x00
 
551
+#define        RSN_CSE_WEP40           0x01
 
552
+#define        RSN_CSE_TKIP            0x02
 
553
+#define        RSN_CSE_WRAP            0x03
 
554
+#define        RSN_CSE_CCMP            0x04
 
555
+#define        RSN_CSE_WEP104          0x05
 
556
+
 
557
+#define        RSN_ASE_NONE            0x00
 
558
+#define        RSN_ASE_8021X_UNSPEC    0x01
 
559
+#define        RSN_ASE_8021X_PSK       0x02
 
560
+
 
561
+#define        RSN_CAP_PREAUTH         0x01
 
562
+
 
563
+#define        WME_OUI                 0xf25000
 
564
+#define        WME_OUI_TYPE            0x02
 
565
+#define        WME_VERSION             1
 
566
+
 
567
+/* WME stream classes */
 
568
+#define        WME_AC_BE       0               /* best effort */
 
569
+#define        WME_AC_BK       1               /* background */
 
570
+#define        WME_AC_VI       2               /* video */
 
571
+#define        WME_AC_VO       3               /* voice */
 
572
+
 
573
+/*
 
574
+ * AUTH management packets
 
575
+ *
 
576
+ *     octet algo[2]
 
577
+ *     octet seq[2]
 
578
+ *     octet status[2]
 
579
+ *     octet chal.id
 
580
+ *     octet chal.length
 
581
+ *     octet chal.text[253]
 
582
+ */
 
583
+
 
584
+typedef u_int8_t *ieee80211_mgt_auth_t;
 
585
+
 
586
+#define        IEEE80211_AUTH_ALGORITHM(auth) \
 
587
+       ((auth)[0] | ((auth)[1] << 8))
 
588
+#define        IEEE80211_AUTH_TRANSACTION(auth) \
 
589
+       ((auth)[2] | ((auth)[3] << 8))
 
590
+#define        IEEE80211_AUTH_STATUS(auth) \
 
591
+       ((auth)[4] | ((auth)[5] << 8))
 
592
+
 
593
+#define        IEEE80211_AUTH_ALG_OPEN         0x0000
 
594
+#define        IEEE80211_AUTH_ALG_SHARED       0x0001
 
595
+#define        IEEE80211_AUTH_ALG_LEAP         0x0080
 
596
+
 
597
+enum {
 
598
+       IEEE80211_AUTH_OPEN_REQUEST             = 1,
 
599
+       IEEE80211_AUTH_OPEN_RESPONSE            = 2,
 
600
+};
 
601
+
 
602
+enum {
 
603
+       IEEE80211_AUTH_SHARED_REQUEST           = 1,
 
604
+       IEEE80211_AUTH_SHARED_CHALLENGE         = 2,
 
605
+       IEEE80211_AUTH_SHARED_RESPONSE          = 3,
 
606
+       IEEE80211_AUTH_SHARED_PASS              = 4,
 
607
+};
 
608
+
 
609
+/*
 
610
+ * Reason codes
 
611
+ *
 
612
+ * Unlisted codes are reserved
 
613
+ */
 
614
+
 
615
+enum {
 
616
+       IEEE80211_REASON_UNSPECIFIED            = 1,
 
617
+       IEEE80211_REASON_AUTH_EXPIRE            = 2,
 
618
+       IEEE80211_REASON_AUTH_LEAVE             = 3,
 
619
+       IEEE80211_REASON_ASSOC_EXPIRE           = 4,
 
620
+       IEEE80211_REASON_ASSOC_TOOMANY          = 5,
 
621
+       IEEE80211_REASON_NOT_AUTHED             = 6,
 
622
+       IEEE80211_REASON_NOT_ASSOCED            = 7,
 
623
+       IEEE80211_REASON_ASSOC_LEAVE            = 8,
 
624
+       IEEE80211_REASON_ASSOC_NOT_AUTHED       = 9,
 
625
+
 
626
+       IEEE80211_REASON_RSN_REQUIRED           = 11,
 
627
+       IEEE80211_REASON_RSN_INCONSISTENT       = 12,
 
628
+       IEEE80211_REASON_IE_INVALID             = 13,
 
629
+       IEEE80211_REASON_MIC_FAILURE            = 14,
 
630
+
 
631
+       IEEE80211_STATUS_SUCCESS                = 0,
 
632
+       IEEE80211_STATUS_UNSPECIFIED            = 1,
 
633
+       IEEE80211_STATUS_CAPINFO                = 10,
 
634
+       IEEE80211_STATUS_NOT_ASSOCED            = 11,
 
635
+       IEEE80211_STATUS_OTHER                  = 12,
 
636
+       IEEE80211_STATUS_ALG                    = 13,
 
637
+       IEEE80211_STATUS_SEQUENCE               = 14,
 
638
+       IEEE80211_STATUS_CHALLENGE              = 15,
 
639
+       IEEE80211_STATUS_TIMEOUT                = 16,
 
640
+       IEEE80211_STATUS_TOOMANY                = 17,
 
641
+       IEEE80211_STATUS_BASIC_RATE             = 18,
 
642
+       IEEE80211_STATUS_SP_REQUIRED            = 19,
 
643
+       IEEE80211_STATUS_PBCC_REQUIRED          = 20,
 
644
+       IEEE80211_STATUS_CA_REQUIRED            = 21,
 
645
+       IEEE80211_STATUS_TOO_MANY_STATIONS      = 22,
 
646
+       IEEE80211_STATUS_RATES                  = 23,
 
647
+       IEEE80211_STATUS_SHORTSLOT_REQUIRED     = 25,
 
648
+       IEEE80211_STATUS_DSSSOFDM_REQUIRED      = 26,
 
649
+};
 
650
+
 
651
+#define        IEEE80211_WEP_KEYLEN            5       /* 40bit */
 
652
+#define        IEEE80211_WEP_IVLEN             3       /* 24bit */
 
653
+#define        IEEE80211_WEP_KIDLEN            1       /* 1 octet */
 
654
+#define        IEEE80211_WEP_CRCLEN            4       /* CRC-32 */
 
655
+#define        IEEE80211_WEP_NKID              4       /* number of key ids */
 
656
+
 
657
+/*
 
658
+ * 802.11i defines an extended IV for use with non-WEP ciphers.
 
659
+ * When the EXTIV bit is set in the key id byte an additional
 
660
+ * 4 bytes immediately follow the IV for TKIP.  For CCMP the
 
661
+ * EXTIV bit is likewise set but the 8 bytes represent the
 
662
+ * CCMP header rather than IV+extended-IV.
 
663
+ */
 
664
+#define        IEEE80211_WEP_EXTIV             0x20
 
665
+#define        IEEE80211_WEP_EXTIVLEN          4       /* extended IV length */
 
666
+#define        IEEE80211_WEP_MICLEN            8       /* trailing MIC */
 
667
+
 
668
+#define        IEEE80211_CRC_LEN               4
 
669
+
 
670
+/*
 
671
+ * Maximum acceptable MTU is:
 
672
+ *     IEEE80211_MAX_LEN - WEP overhead - CRC -
 
673
+ *             QoS overhead - RSN/WPA overhead
 
674
+ * Min is arbitrarily chosen > IEEE80211_MIN_LEN.  The default
 
675
+ * mtu is Ethernet-compatible; it's set by ether_ifattach.
 
676
+ */
 
677
+#define        IEEE80211_MTU_MAX               2290
 
678
+#define        IEEE80211_MTU_MIN               32
 
679
+
 
680
+#define        IEEE80211_MAX_LEN               (2300 + IEEE80211_CRC_LEN + \
 
681
+    (IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN))
 
682
+#define        IEEE80211_ACK_LEN \
 
683
+       (sizeof(struct ieee80211_frame_ack) + IEEE80211_CRC_LEN)
 
684
+#define        IEEE80211_MIN_LEN \
 
685
+       (sizeof(struct ieee80211_frame_min) + IEEE80211_CRC_LEN)
 
686
+
 
687
+/*
 
688
+ * The 802.11 spec says at most 2007 stations may be
 
689
+ * associated at once.  For most AP's this is way more
 
690
+ * than is feasible so we use a default of 128.  This
 
691
+ * number may be overridden by the driver and/or by
 
692
+ * user configuration.
 
693
+ */
 
694
+#define        IEEE80211_AID_MAX               2007
 
695
+#define        IEEE80211_AID_DEF               128
 
696
+
 
697
+#define        IEEE80211_AID(b)        ((b) &~ 0xc000)
 
698
+#define        IEEE80211_AID_SET(b, w) \
 
699
+       ((w)[IEEE80211_AID(b) / 32] |= (1 << (IEEE80211_AID(b) % 32)))
 
700
+#define        IEEE80211_AID_CLR(b, w) \
 
701
+       ((w)[IEEE80211_AID(b) / 32] &= ~(1 << (IEEE80211_AID(b) % 32)))
 
702
+#define        IEEE80211_AID_ISSET(b, w) \
 
703
+       ((w)[IEEE80211_AID(b) / 32] & (1 << (IEEE80211_AID(b) % 32)))
 
704
+
 
705
+/* 
 
706
+ * RTS frame length parameters.  The default is specified in
 
707
+ * the 802.11 spec.  The max may be wrong for jumbo frames.
 
708
+ */
 
709
+#define        IEEE80211_RTS_DEFAULT           512
 
710
+#define        IEEE80211_RTS_MIN               1
 
711
+#define        IEEE80211_RTS_MAX               IEEE80211_MAX_LEN
 
712
+
 
713
+enum {
 
714
+       IEEE80211_AUTH_NONE     = 0,
 
715
+       IEEE80211_AUTH_OPEN     = 1,            /* open */
 
716
+       IEEE80211_AUTH_SHARED   = 2,            /* shared-key */
 
717
+       IEEE80211_AUTH_8021X    = 3,            /* 802.1x */
 
718
+       IEEE80211_AUTH_AUTO     = 4,            /* auto-select/accept */
 
719
+       /* NB: these are used only for ioctls */
 
720
+       IEEE80211_AUTH_WPA      = 5,            /* WPA/RSN w/ 802.1x/PSK */
 
721
+};
 
722
+
 
723
+#endif /* _NET80211_IEEE80211_H_ */
 
724
diff -urNad wpasupplicant-0.3.1/driver_madwifi/net80211/ieee80211_crypto.h /tmp/dpep.kcIegg/wpasupplicant-0.3.1/driver_madwifi/net80211/ieee80211_crypto.h
 
725
--- wpasupplicant-0.3.1/driver_madwifi/net80211/ieee80211_crypto.h      1969-12-31 19:00:00.000000000 -0500
 
726
+++ /tmp/dpep.kcIegg/wpasupplicant-0.3.1/driver_madwifi/net80211/ieee80211_crypto.h     2004-12-16 13:09:19.000000000 -0500
 
727
@@ -0,0 +1,221 @@
 
728
+/*     $NetBSD: ieee80211_crypto.h,v 1.2 2003/09/14 01:14:55 dyoung Exp $      */
 
729
+/*-
 
730
+ * Copyright (c) 2001 Atsushi Onoe
 
731
+ * Copyright (c) 2002-2004 Sam Leffler, Errno Consulting
 
732
+ * All rights reserved.
 
733
+ *
 
734
+ * Redistribution and use in source and binary forms, with or without
 
735
+ * modification, are permitted provided that the following conditions
 
736
+ * are met:
 
737
+ * 1. Redistributions of source code must retain the above copyright
 
738
+ *    notice, this list of conditions and the following disclaimer.
 
739
+ * 2. Redistributions in binary form must reproduce the above copyright
 
740
+ *    notice, this list of conditions and the following disclaimer in the
 
741
+ *    documentation and/or other materials provided with the distribution.
 
742
+ * 3. The name of the author may not be used to endorse or promote products
 
743
+ *    derived from this software without specific prior written permission.
 
744
+ *
 
745
+ * Alternatively, this software may be distributed under the terms of the
 
746
+ * GNU General Public License ("GPL") version 2 as published by the Free
 
747
+ * Software Foundation.
 
748
+ *
 
749
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 
750
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 
751
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 
752
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 
753
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 
754
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
755
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
756
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
757
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 
758
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
759
+ *
 
760
+ * $FreeBSD: src/sys/net80211/ieee80211_crypto.h,v 1.2 2003/06/27 05:13:52 sam Exp $
 
761
+ */
 
762
+#ifndef _NET80211_IEEE80211_CRYPTO_H_
 
763
+#define _NET80211_IEEE80211_CRYPTO_H_
 
764
+
 
765
+/*
 
766
+ * 802.11 protocol crypto-related definitions.
 
767
+ */
 
768
+#define        IEEE80211_KEYBUF_SIZE   16
 
769
+#define        IEEE80211_MICBUF_SIZE   (8+8)   /* space for both tx+rx keys */
 
770
+
 
771
+/*
 
772
+ * Old WEP-style key.  Deprecated.
 
773
+ */
 
774
+struct ieee80211_wepkey {
 
775
+       u_int           wk_len;         /* key length in bytes */
 
776
+       u_int8_t        wk_key[IEEE80211_KEYBUF_SIZE];
 
777
+};
 
778
+
 
779
+struct ieee80211_cipher;
 
780
+
 
781
+/*
 
782
+ * Crypto key state.  There is sufficient room for all supported
 
783
+ * ciphers (see below).  The underlying ciphers are handled
 
784
+ * separately through loadable cipher modules that register with
 
785
+ * the generic crypto support.  A key has a reference to an instance
 
786
+ * of the cipher; any per-key state is hung off wk_private by the
 
787
+ * cipher when it is attached.  Ciphers are automatically called
 
788
+ * to detach and cleanup any such state when the key is deleted.
 
789
+ *
 
790
+ * The generic crypto support handles encap/decap of cipher-related
 
791
+ * frame contents for both hardware- and software-based implementations.
 
792
+ * A key requiring software crypto support is automatically flagged and
 
793
+ * the cipher is expected to honor this and do the necessary work.
 
794
+ * Ciphers such as TKIP may also support mixed hardware/software
 
795
+ * encrypt/decrypt and MIC processing.
 
796
+ */
 
797
+/* XXX need key index typedef */
 
798
+/* XXX pack better? */
 
799
+/* XXX 48-bit rsc/tsc */
 
800
+struct ieee80211_key {
 
801
+       u_int8_t        wk_keylen;      /* key length in bytes */
 
802
+       u_int8_t        wk_flags;
 
803
+#define        IEEE80211_KEY_XMIT      0x01    /* key used for xmit */
 
804
+#define        IEEE80211_KEY_RECV      0x02    /* key used for recv */
 
805
+#define        IEEE80211_KEY_SWCRYPT   0x04    /* host-based encrypt/decrypt */
 
806
+#define        IEEE80211_KEY_SWMIC     0x08    /* host-based enmic/demic */
 
807
+       u_int16_t       wk_keyix;       /* key index */
 
808
+       u_int8_t        wk_key[IEEE80211_KEYBUF_SIZE+IEEE80211_MICBUF_SIZE];
 
809
+#define        wk_txmic        wk_key+IEEE80211_KEYBUF_SIZE+0  /* XXX can't () right */
 
810
+#define        wk_rxmic        wk_key+IEEE80211_KEYBUF_SIZE+8  /* XXX can't () right */
 
811
+       u_int64_t       wk_keyrsc;      /* key receive sequence counter */
 
812
+       u_int64_t       wk_keytsc;      /* key transmit sequence counter */
 
813
+       const struct ieee80211_cipher *wk_cipher;
 
814
+       void            *wk_private;    /* private cipher state */
 
815
+};
 
816
+
 
817
+/*
 
818
+ * NB: these values are ordered carefully; there are lots of
 
819
+ * of implications in any reordering.  In particular beware
 
820
+ * that 4 is not used to avoid conflicting with IEEE80211_F_PRIVACY.
 
821
+ */
 
822
+#define        IEEE80211_CIPHER_WEP            0
 
823
+#define        IEEE80211_CIPHER_TKIP           1
 
824
+#define        IEEE80211_CIPHER_AES_OCB        2
 
825
+#define        IEEE80211_CIPHER_AES_CCM        3
 
826
+#define        IEEE80211_CIPHER_CKIP           5
 
827
+#define        IEEE80211_CIPHER_NONE           6       /* pseudo value */
 
828
+
 
829
+#define        IEEE80211_CIPHER_MAX            (IEEE80211_CIPHER_NONE+1)
 
830
+
 
831
+#define        IEEE80211_KEYIX_NONE    ((u_int16_t) -1)
 
832
+
 
833
+#if defined(__KERNEL__) || defined(_KERNEL)
 
834
+
 
835
+struct ieee80211com;
 
836
+struct ieee80211_node;
 
837
+struct sk_buff;
 
838
+
 
839
+/*
 
840
+ * Crypto state kept in each ieee80211com.  Some of this
 
841
+ * can/should be shared when virtual AP's are supported.
 
842
+ *
 
843
+ * XXX save reference to ieee80211com to properly encapsulate state.
 
844
+ * XXX split out crypto capabilities from ic_caps
 
845
+ */
 
846
+struct ieee80211_crypto_state {
 
847
+       struct ieee80211_key    cs_nw_keys[IEEE80211_WEP_NKID];
 
848
+       u_int16_t               cs_def_txkey;   /* default/group tx key index */
 
849
+
 
850
+       int                     (*cs_key_alloc)(struct ieee80211com *,
 
851
+                                       const struct ieee80211_key *);
 
852
+       int                     (*cs_key_delete)(struct ieee80211com *, 
 
853
+                                       const struct ieee80211_key *);
 
854
+       int                     (*cs_key_set)(struct ieee80211com *,
 
855
+                                       const struct ieee80211_key *,
 
856
+                                       const u_int8_t mac[IEEE80211_ADDR_LEN]);
 
857
+       void                    (*cs_key_update_begin)(struct ieee80211com *);
 
858
+       void                    (*cs_key_update_end)(struct ieee80211com *);
 
859
+};
 
860
+
 
861
+extern void ieee80211_crypto_attach(struct ieee80211com *);
 
862
+extern void ieee80211_crypto_detach(struct ieee80211com *);
 
863
+extern int ieee80211_crypto_newkey(struct ieee80211com *,
 
864
+               int cipher, struct ieee80211_key *);
 
865
+extern int ieee80211_crypto_delkey(struct ieee80211com *,
 
866
+               struct ieee80211_key *);
 
867
+extern int ieee80211_crypto_setkey(struct ieee80211com *,
 
868
+               struct ieee80211_key *, const u_int8_t macaddr[IEEE80211_ADDR_LEN]);
 
869
+extern void ieee80211_crypto_delglobalkeys(struct ieee80211com *);
 
870
+
 
871
+/*
 
872
+ * Template for a supported cipher.  Ciphers register with the
 
873
+ * crypto code and are typically loaded as separate modules
 
874
+ * (the null cipher is always present).
 
875
+ * XXX may need refcnts
 
876
+ */
 
877
+struct ieee80211_cipher {
 
878
+       const char *ic_name;            /* printable name */
 
879
+       u_int   ic_cipher;              /* IEEE80211_CIPHER_* */
 
880
+       u_int   ic_header;              /* size of privacy header (bytes) */
 
881
+       u_int   ic_trailer;             /* size of privacy trailer (bytes) */
 
882
+       u_int   ic_miclen;              /* size of mic trailer (bytes) */
 
883
+       void*   (*ic_attach)(struct ieee80211com *, struct ieee80211_key *);
 
884
+       void    (*ic_detach)(struct ieee80211_key *);
 
885
+       int     (*ic_setkey)(struct ieee80211_key *);
 
886
+       int     (*ic_encap)(struct ieee80211_key *, struct sk_buff *,
 
887
+                       u_int8_t keyid);
 
888
+       int     (*ic_decap)(struct ieee80211_key *, struct sk_buff *);
 
889
+       int     (*ic_enmic)(struct ieee80211_key *, struct sk_buff *);
 
890
+       int     (*ic_demic)(struct ieee80211_key *, struct sk_buff *);
 
891
+};
 
892
+extern const struct ieee80211_cipher ieee80211_cipher_none;
 
893
+
 
894
+extern void ieee80211_crypto_register(const struct ieee80211_cipher *);
 
895
+extern void ieee80211_crypto_unregister(const struct ieee80211_cipher *);
 
896
+
 
897
+extern struct ieee80211_key *ieee80211_crypto_encap(struct ieee80211com *,
 
898
+               struct ieee80211_node *, struct sk_buff *);
 
899
+extern struct ieee80211_key *ieee80211_crypto_decap(struct ieee80211com *,
 
900
+               struct ieee80211_node *, struct sk_buff *);
 
901
+
 
902
+/*
 
903
+ * Check and remove any MIC.
 
904
+ */
 
905
+static inline int
 
906
+ieee80211_crypto_demic(struct ieee80211com *ic, struct ieee80211_key *k,
 
907
+       struct sk_buff *skb)
 
908
+{
 
909
+       const struct ieee80211_cipher *cip = k->wk_cipher;
 
910
+       return (cip->ic_miclen > 0 ? (*cip->ic_demic)(k, skb) : 1);
 
911
+}
 
912
+
 
913
+/*
 
914
+ * Add any MIC.
 
915
+ */
 
916
+static inline int
 
917
+ieee80211_crypto_enmic(struct ieee80211com *ic,
 
918
+       struct ieee80211_key *k, struct sk_buff *skb)
 
919
+{
 
920
+       const struct ieee80211_cipher *cip = k->wk_cipher;
 
921
+       return (cip->ic_miclen > 0 ? (*cip->ic_enmic)(k, skb) : 1);
 
922
+}
 
923
+
 
924
+/* 
 
925
+ * Reset key state to an unused state.  The crypto
 
926
+ * key allocation mechanism insures other state (e.g.
 
927
+ * key data) is properly setup before a key is used.
 
928
+ */
 
929
+static inline void
 
930
+ieee80211_crypto_resetkey(struct ieee80211com *ic,
 
931
+       struct ieee80211_key *k, u_int16_t ix)
 
932
+{
 
933
+       k->wk_cipher = &ieee80211_cipher_none;;
 
934
+       k->wk_private = k->wk_cipher->ic_attach(ic, k);
 
935
+       k->wk_keyix = ix;
 
936
+       k->wk_flags = IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV;
 
937
+}
 
938
+
 
939
+/*
 
940
+ * Crypt-related notification methods.
 
941
+ */
 
942
+extern void ieee80211_notify_replay_failure(struct ieee80211com *,
 
943
+               const struct ieee80211_frame *, const struct ieee80211_key *,
 
944
+               u_int64_t rsc);
 
945
+extern void ieee80211_notify_michael_failure(struct ieee80211com *,
 
946
+               const struct ieee80211_frame *, u_int keyix);
 
947
+#endif /* defined(__KERNEL__) || defined(_KERNEL) */
 
948
+#endif /* _NET80211_IEEE80211_CRYPTO_H_ */
 
949
diff -urNad wpasupplicant-0.3.1/driver_madwifi/net80211/ieee80211_ioctl.h /tmp/dpep.kcIegg/wpasupplicant-0.3.1/driver_madwifi/net80211/ieee80211_ioctl.h
 
950
--- wpasupplicant-0.3.1/driver_madwifi/net80211/ieee80211_ioctl.h       1969-12-31 19:00:00.000000000 -0500
 
951
+++ /tmp/dpep.kcIegg/wpasupplicant-0.3.1/driver_madwifi/net80211/ieee80211_ioctl.h      2004-12-16 13:09:19.000000000 -0500
 
952
@@ -0,0 +1,389 @@
 
953
+/*     $NetBSD: ieee80211_ioctl.h,v 1.5 2003/10/13 04:16:59 dyoung Exp $       */
 
954
+/*-
 
955
+ * Copyright (c) 2001 Atsushi Onoe
 
956
+ * Copyright (c) 2002-2004 Sam Leffler, Errno Consulting
 
957
+ * All rights reserved.
 
958
+ *
 
959
+ * Redistribution and use in source and binary forms, with or without
 
960
+ * modification, are permitted provided that the following conditions
 
961
+ * are met:
 
962
+ * 1. Redistributions of source code must retain the above copyright
 
963
+ *    notice, this list of conditions and the following disclaimer.
 
964
+ * 2. Redistributions in binary form must reproduce the above copyright
 
965
+ *    notice, this list of conditions and the following disclaimer in the
 
966
+ *    documentation and/or other materials provided with the distribution.
 
967
+ * 3. The name of the author may not be used to endorse or promote products
 
968
+ *    derived from this software without specific prior written permission.
 
969
+ *
 
970
+ * Alternatively, this software may be distributed under the terms of the
 
971
+ * GNU General Public License ("GPL") version 2 as published by the Free
 
972
+ * Software Foundation.
 
973
+ *
 
974
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 
975
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 
976
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 
977
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 
978
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 
979
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
980
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
981
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
982
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 
983
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
984
+ *
 
985
+ * $FreeBSD: src/sys/net80211/ieee80211_ioctl.h,v 1.4 2003/10/17 23:15:30 sam Exp $
 
986
+ */
 
987
+#ifndef _NET80211_IEEE80211_IOCTL_H_
 
988
+#define _NET80211_IEEE80211_IOCTL_H_
 
989
+
 
990
+/*
 
991
+ * IEEE 802.11 ioctls.
 
992
+ */
 
993
+
 
994
+/*
 
995
+ * Per/node (station) statistics available when operating as an AP.
 
996
+ */
 
997
+struct ieee80211_nodestats {
 
998
+       u_int32_t       ns_rx_data;             /* rx data frames */
 
999
+       u_int32_t       ns_rx_mgmt;             /* rx management frames */
 
1000
+       u_int32_t       ns_rx_ctrl;             /* rx control frames */
 
1001
+       u_int32_t       ns_rx_ucast;            /* rx unicast frames */
 
1002
+       u_int32_t       ns_rx_mcast;            /* rx multi/broadcast frames */
 
1003
+       u_int64_t       ns_rx_bytes;            /* rx data count (bytes) */
 
1004
+
 
1005
+       u_int32_t       ns_rx_dup;              /* rx discard 'cuz dup */
 
1006
+       u_int32_t       ns_rx_noprivacy;        /* rx w/ wep but privacy off */
 
1007
+       u_int32_t       ns_rx_wepfail;          /* rx wep processing failed */
 
1008
+       u_int32_t       ns_rx_decap;            /* rx decapsulation failed */
 
1009
+       u_int32_t       ns_rx_disassoc;         /* rx disassociation */
 
1010
+       u_int32_t       ns_rx_deauth;           /* rx deauthentication */
 
1011
+       u_int32_t       ns_rx_decryptcrc;       /* rx decrypt failed on crc */
 
1012
+       u_int32_t       ns_rx_unauth;           /* rx on unauthorized port */
 
1013
+
 
1014
+       u_int32_t       ns_tx_data;             /* tx data frames */
 
1015
+       u_int32_t       ns_tx_mgmt;             /* tx management frames */
 
1016
+       u_int32_t       ns_tx_ucast;            /* tx unicast frames */
 
1017
+       u_int32_t       ns_tx_mcast;            /* tx multi/broadcast frames */
 
1018
+       u_int64_t       ns_tx_bytes;            /* tx data count (bytes) */
 
1019
+
 
1020
+       u_int32_t       ns_tx_novlantag;        /* tx discard 'cuz no tag */
 
1021
+       u_int32_t       ns_tx_vlanmismatch;     /* tx discard 'cuz bad tag */
 
1022
+
 
1023
+       /* MIB-related state */
 
1024
+       u_int32_t       ns_mib_assoc;           /* [re]associations */
 
1025
+       u_int32_t       ns_mib_assoc_fail;      /* [re]association failures */
 
1026
+       u_int32_t       ns_mib_auth;            /* [re]authentications */
 
1027
+       u_int32_t       ns_mib_auth_fail;       /* [re]authentication failures*/
 
1028
+       u_int32_t       ns_mib_deauth;          /* deauthentications */
 
1029
+       u_int32_t       ns_mib_deauth_code;     /* last deauth reason */
 
1030
+       u_int32_t       ns_mib_disassoc;        /* disassociations */
 
1031
+       u_int32_t       ns_mib_disassoc_code;   /* last disassociation reason */
 
1032
+};
 
1033
+
 
1034
+/*
 
1035
+ * Summary statistics.
 
1036
+ */
 
1037
+struct ieee80211_stats {
 
1038
+       u_int32_t       is_rx_badversion;       /* rx frame with bad version */
 
1039
+       u_int32_t       is_rx_tooshort;         /* rx frame too short */
 
1040
+       u_int32_t       is_rx_wrongbss;         /* rx from wrong bssid */
 
1041
+       u_int32_t       is_rx_dup;              /* rx discard 'cuz dup */
 
1042
+       u_int32_t       is_rx_wrongdir;         /* rx w/ wrong direction */
 
1043
+       u_int32_t       is_rx_mcastecho;        /* rx discard 'cuz mcast echo */
 
1044
+       u_int32_t       is_rx_notassoc;         /* rx discard 'cuz sta !assoc */
 
1045
+       u_int32_t       is_rx_noprivacy;        /* rx w/ wep but privacy off */
 
1046
+       u_int32_t       is_rx_unencrypted;      /* rx w/o wep and privacy on */
 
1047
+       u_int32_t       is_rx_wepfail;          /* rx wep processing failed */
 
1048
+       u_int32_t       is_rx_decap;            /* rx decapsulation failed */
 
1049
+       u_int32_t       is_rx_mgtdiscard;       /* rx discard mgt frames */
 
1050
+       u_int32_t       is_rx_ctl;              /* rx discard ctrl frames */
 
1051
+       u_int32_t       is_rx_beacon;           /* rx beacon frames */
 
1052
+       u_int32_t       is_rx_rstoobig;         /* rx rate set truncated */
 
1053
+       u_int32_t       is_rx_elem_missing;     /* rx required element missing*/
 
1054
+       u_int32_t       is_rx_elem_toobig;      /* rx element too big */
 
1055
+       u_int32_t       is_rx_elem_toosmall;    /* rx element too small */
 
1056
+       u_int32_t       is_rx_elem_unknown;     /* rx element unknown */
 
1057
+       u_int32_t       is_rx_badchan;          /* rx frame w/ invalid chan */
 
1058
+       u_int32_t       is_rx_chanmismatch;     /* rx frame chan mismatch */
 
1059
+       u_int32_t       is_rx_nodealloc;        /* rx frame dropped */
 
1060
+       u_int32_t       is_rx_ssidmismatch;     /* rx frame ssid mismatch  */
 
1061
+       u_int32_t       is_rx_auth_unsupported; /* rx w/ unsupported auth alg */
 
1062
+       u_int32_t       is_rx_auth_fail;        /* rx sta auth failure */
 
1063
+       u_int32_t       is_rx_auth_countermeasures;/* rx auth discard 'cuz CM */
 
1064
+       u_int32_t       is_rx_assoc_bss;        /* rx assoc from wrong bssid */
 
1065
+       u_int32_t       is_rx_assoc_notauth;    /* rx assoc w/o auth */
 
1066
+       u_int32_t       is_rx_assoc_capmismatch;/* rx assoc w/ cap mismatch */
 
1067
+       u_int32_t       is_rx_assoc_norate;     /* rx assoc w/ no rate match */
 
1068
+       u_int32_t       is_rx_assoc_badwpaie;   /* rx assoc w/ bad WPA IE */
 
1069
+       u_int32_t       is_rx_deauth;           /* rx deauthentication */
 
1070
+       u_int32_t       is_rx_disassoc;         /* rx disassociation */
 
1071
+       u_int32_t       is_rx_badsubtype;       /* rx frame w/ unknown subtype*/
 
1072
+       u_int32_t       is_rx_nobuf;            /* rx failed for lack of buf */
 
1073
+       u_int32_t       is_rx_decryptcrc;       /* rx decrypt failed on crc */
 
1074
+       u_int32_t       is_rx_ahdemo_mgt;       /* rx discard ahdemo mgt frame*/
 
1075
+       u_int32_t       is_rx_bad_auth;         /* rx bad auth request */
 
1076
+       u_int32_t       is_rx_unauth;           /* rx on unauthorized port */
 
1077
+       u_int32_t       is_rx_badkeyid;         /* rx w/ incorrect keyid */
 
1078
+       u_int32_t       is_rx_ccmpreplay;       /* rx seq# violation (CCMP) */
 
1079
+       u_int32_t       is_rx_ccmpformat;       /* rx format bad (CCMP) */
 
1080
+       u_int32_t       is_rx_ccmpmic;          /* rx MIC check failed (CCMP) */
 
1081
+       u_int32_t       is_rx_tkipreplay;       /* rx seq# violation (TKIP) */
 
1082
+       u_int32_t       is_rx_tkipformat;       /* rx format bad (TKIP) */
 
1083
+       u_int32_t       is_rx_tkipmic;          /* rx MIC check failed (TKIP) */
 
1084
+       u_int32_t       is_rx_tkipicv;          /* rx ICV check failed (TKIP) */
 
1085
+       u_int32_t       is_rx_badcipher;        /* rx failed 'cuz key type */
 
1086
+       u_int32_t       is_rx_nocipherctx;      /* rx failed 'cuz key !setup */
 
1087
+       u_int32_t       is_rx_acl;              /* rx discard 'cuz acl policy */
 
1088
+       u_int32_t       is_tx_nobuf;            /* tx failed for lack of buf */
 
1089
+       u_int32_t       is_tx_nonode;           /* tx failed for no node */
 
1090
+       u_int32_t       is_tx_unknownmgt;       /* tx of unknown mgt frame */
 
1091
+       u_int32_t       is_tx_badcipher;        /* tx failed 'cuz key type */
 
1092
+       u_int32_t       is_tx_nodefkey;         /* tx failed 'cuz no defkey */
 
1093
+       u_int32_t       is_tx_noheadroom;       /* tx failed 'cuz no space */
 
1094
+       u_int32_t       is_scan_active;         /* active scans started */
 
1095
+       u_int32_t       is_scan_passive;        /* passive scans started */
 
1096
+       u_int32_t       is_node_timeout;        /* nodes timed out inactivity */
 
1097
+       u_int32_t       is_crypto_nomem;        /* no memory for crypto ctx */
 
1098
+       u_int32_t       is_crypto_tkip;         /* tkip crypto done in s/w */
 
1099
+       u_int32_t       is_crypto_tkipenmic;    /* tkip en-MIC done in s/w */
 
1100
+       u_int32_t       is_crypto_tkipdemic;    /* tkip de-MIC done in s/w */
 
1101
+       u_int32_t       is_crypto_tkipcm;       /* tkip counter measures */
 
1102
+       u_int32_t       is_crypto_ccmp;         /* ccmp crypto done in s/w */
 
1103
+       u_int32_t       is_crypto_wep;          /* wep crypto done in s/w */
 
1104
+       u_int32_t       is_crypto_setkey_cipher;/* cipher rejected key */
 
1105
+       u_int32_t       is_crypto_setkey_nokey; /* no key index for setkey */
 
1106
+       u_int32_t       is_crypto_delkey;       /* driver key delete failed */
 
1107
+       u_int32_t       is_crypto_badcipher;    /* unknown cipher */
 
1108
+       u_int32_t       is_crypto_nocipher;     /* cipher not available */
 
1109
+       u_int32_t       is_crypto_attachfail;   /* cipher attach failed */
 
1110
+       u_int32_t       is_crypto_swfallback;   /* cipher fallback to s/w */
 
1111
+       u_int32_t       is_crypto_keyfail;      /* driver key alloc failed */
 
1112
+};
 
1113
+
 
1114
+/*
 
1115
+ * Max size of optional information elements.  We artificially
 
1116
+ * constrain this; it's limited only by the max frame size (and
 
1117
+ * the max parameter size of the wireless extensions).
 
1118
+ */
 
1119
+#define        IEEE80211_MAX_OPT_IE    256
 
1120
+
 
1121
+/*
 
1122
+ * WPA/RSN get/set key request.  Specify the key/cipher
 
1123
+ * type and whether the key is to be used for sending and/or
 
1124
+ * receiving.  The key index should be set only when working
 
1125
+ * with global keys (use IEEE80211_KEYIX_NONE for ``no index'').
 
1126
+ * Otherwise a unicast/pairwise key is specified by the bssid
 
1127
+ * (on a station) or mac address (on an ap).  They key length
 
1128
+ * must include any MIC key data; otherwise it should be no
 
1129
+ more than IEEE80211_KEYBUF_SIZE.
 
1130
+ */
 
1131
+struct ieee80211req_key {
 
1132
+       u_int8_t        ik_type;        /* key/cipher type */
 
1133
+       u_int8_t        ik_pad;
 
1134
+       u_int16_t       ik_keyix;       /* key index */
 
1135
+       u_int8_t        ik_keylen;      /* key length in bytes */
 
1136
+       u_int8_t        ik_flags;
 
1137
+/* NB: IEEE80211_KEY_XMIT and IEEE80211_KEY_RECV defined elsewhere */
 
1138
+#define        IEEE80211_KEY_DEFAULT   0x80    /* default xmit key */
 
1139
+       u_int8_t        ik_macaddr[IEEE80211_ADDR_LEN];
 
1140
+       u_int64_t       ik_keyrsc;      /* key receive sequence counter */
 
1141
+       u_int64_t       ik_keytsc;      /* key transmit sequence counter */
 
1142
+       u_int8_t        ik_keydata[IEEE80211_KEYBUF_SIZE+IEEE80211_MICBUF_SIZE];
 
1143
+};
 
1144
+
 
1145
+/*
 
1146
+ * Delete a key either by index or address.  Set the index
 
1147
+ * to IEEE80211_KEYIX_NONE when deleting a unicast key.
 
1148
+ */
 
1149
+struct ieee80211req_del_key {
 
1150
+       u_int8_t        idk_keyix;      /* key index */
 
1151
+       u_int8_t        idk_macaddr[IEEE80211_ADDR_LEN];
 
1152
+};
 
1153
+
 
1154
+/*
 
1155
+ * MLME state manipulation request.  IEEE80211_MLME_ASSOC
 
1156
+ * only makes sense when operating as a station.  The other
 
1157
+ * requests can be used when operating as a station or an
 
1158
+ * ap (to effect a station).
 
1159
+ */
 
1160
+struct ieee80211req_mlme {
 
1161
+       u_int8_t        im_op;          /* operation to perform */
 
1162
+#define        IEEE80211_MLME_ASSOC            1       /* associate station */
 
1163
+#define        IEEE80211_MLME_DISASSOC         2       /* disassociate station */
 
1164
+#define        IEEE80211_MLME_DEAUTH           3       /* deauthenticate station */
 
1165
+#define        IEEE80211_MLME_AUTHORIZE        4       /* authorize station */
 
1166
+#define        IEEE80211_MLME_UNAUTHORIZE      5       /* unauthorize station */
 
1167
+       u_int16_t       im_reason;      /* 802.11 reason code */
 
1168
+       u_int8_t        im_macaddr[IEEE80211_ADDR_LEN];
 
1169
+};
 
1170
+
 
1171
+/* 
 
1172
+ * MAC ACL operations.
 
1173
+ */
 
1174
+enum {
 
1175
+       IEEE80211_MACCMD_POLICY_OPEN    = 0,    /* set policy: no ACL's */
 
1176
+       IEEE80211_MACCMD_POLICY_ALLOW   = 1,    /* set policy: allow traffic */
 
1177
+       IEEE80211_MACCMD_POLICY_DENY    = 2,    /* set policy: deny traffic */
 
1178
+       IEEE80211_MACCMD_FLUSH          = 3,    /* flush ACL database */
 
1179
+       IEEE80211_MACCMD_DETACH         = 4,    /* detach ACL policy */
 
1180
+};
 
1181
+
 
1182
+/*
 
1183
+ * Set the active channel list.  Note this list is
 
1184
+ * intersected with the available channel list in
 
1185
+ * calculating the set of channels actually used in
 
1186
+ * scanning.
 
1187
+ */
 
1188
+struct ieee80211req_chanlist {
 
1189
+       u_int8_t        ic_channels[32];        /* 256 channels */
 
1190
+};
 
1191
+
 
1192
+/*
 
1193
+ * Retrieve the WPA/RSN information element for an associated station.
 
1194
+ */
 
1195
+struct ieee80211req_wpaie {
 
1196
+       u_int8_t        wpa_macaddr[IEEE80211_ADDR_LEN];
 
1197
+       u_int8_t        wpa_ie[IEEE80211_MAX_OPT_IE];
 
1198
+};
 
1199
+
 
1200
+#ifdef __FreeBSD__
 
1201
+/*
 
1202
+ * FreeBSD-style ioctls.
 
1203
+ */
 
1204
+/* the first member must be matched with struct ifreq */
 
1205
+struct ieee80211req {
 
1206
+       char            i_name[IFNAMSIZ];       /* if_name, e.g. "wi0" */
 
1207
+       u_int16_t       i_type;                 /* req type */
 
1208
+       int16_t         i_val;                  /* Index or simple value */
 
1209
+       int16_t         i_len;                  /* Index or simple value */
 
1210
+       void            *i_data;                /* Extra data */
 
1211
+};
 
1212
+#define        SIOCS80211               _IOW('i', 234, struct ieee80211req)
 
1213
+#define        SIOCG80211              _IOWR('i', 235, struct ieee80211req)
 
1214
+
 
1215
+#define IEEE80211_IOC_SSID             1
 
1216
+#define IEEE80211_IOC_NUMSSIDS         2
 
1217
+#define IEEE80211_IOC_WEP              3
 
1218
+#define        IEEE80211_WEP_NOSUP     -1
 
1219
+#define        IEEE80211_WEP_OFF       0
 
1220
+#define        IEEE80211_WEP_ON        1
 
1221
+#define        IEEE80211_WEP_MIXED     2
 
1222
+#define IEEE80211_IOC_WEPKEY           4
 
1223
+#define IEEE80211_IOC_NUMWEPKEYS       5
 
1224
+#define IEEE80211_IOC_WEPTXKEY         6
 
1225
+#define IEEE80211_IOC_AUTHMODE         7
 
1226
+#define IEEE80211_IOC_STATIONNAME      8
 
1227
+#define IEEE80211_IOC_CHANNEL          9
 
1228
+#define IEEE80211_IOC_POWERSAVE                10
 
1229
+#define        IEEE80211_POWERSAVE_NOSUP       -1
 
1230
+#define        IEEE80211_POWERSAVE_OFF         0
 
1231
+#define        IEEE80211_POWERSAVE_CAM         1
 
1232
+#define        IEEE80211_POWERSAVE_PSP         2
 
1233
+#define        IEEE80211_POWERSAVE_PSP_CAM     3
 
1234
+#define        IEEE80211_POWERSAVE_ON          IEEE80211_POWERSAVE_CAM
 
1235
+#define IEEE80211_IOC_POWERSAVESLEEP   11
 
1236
+#define        IEEE80211_IOC_RTSTHRESHOLD      12
 
1237
+#define IEEE80211_IOC_PROTMODE         13
 
1238
+#define        IEEE80211_PROTMODE_OFF          0
 
1239
+#define        IEEE80211_PROTMODE_CTS          1
 
1240
+#define        IEEE80211_PROTMODE_RTSCTS       2
 
1241
+#define        IEEE80211_IOC_TXPOWER           14
 
1242
+#define        IEEE80211_IOC_BSSID             15
 
1243
+#define        IEEE80211_IOC_ROAMING           16
 
1244
+#define        IEEE80211_IOC_PRIVACY           17
 
1245
+#define        IEEE80211_IOC_DROP_UNENCRYPTED  18
 
1246
+#define        IEEE80211_IOC_WPAKEY            19
 
1247
+#define        IEEE80211_IOC_DELKEY            20
 
1248
+#define        IEEE80211_IOC_MLME              21
 
1249
+#define        IEEE80211_IOC_OPTIE             22
 
1250
+#define        IEEE80211_IOC_SCAN_REQ          23
 
1251
+#define        IEEE80211_IOC_SCAN_RESULTS      24
 
1252
+#define        IEEE80211_IOC_COUNTERMEASURES   25
 
1253
+#define        IEEE80211_IOC_WPA               26
 
1254
+#define        IEEE80211_IOC_CHANLIST          27
 
1255
+#define        IEEE80211_IOC_WME               28
 
1256
+#define        IEEE80211_IOC_HIDESSID          29
 
1257
+#define        IEEE80211_IOC_APBRIDGE          30
 
1258
+
 
1259
+#ifndef IEEE80211_CHAN_ANY
 
1260
+#define        IEEE80211_CHAN_ANY      0xffff          /* token for ``any channel'' */
 
1261
+#endif
 
1262
+
 
1263
+struct ieee80211req_scan_req {
 
1264
+       u_int8_t        isq_ssid_len;                   /* SSID length */
 
1265
+       u_int8_t        isq_ssid[IEEE80211_NWID_LEN];
 
1266
+};
 
1267
+
 
1268
+struct ieee80211req_scan_result {
 
1269
+       u_int16_t       isr_len;                        /* length (mult of 4) */
 
1270
+       u_int16_t       isr_freq;                       /* MHz */
 
1271
+       u_int16_t       isr_flags;                      /* channel flags */
 
1272
+       u_int8_t        isr_noise;
 
1273
+       u_int8_t        isr_rssi;
 
1274
+       u_int8_t        isr_intval;                     /* beacon interval */
 
1275
+       u_int8_t        isr_capinfo;                    /* capabilities */
 
1276
+       u_int8_t        isr_erp;                        /* ERP element */
 
1277
+       u_int8_t        isr_bssid[IEEE80211_ADDR_LEN];
 
1278
+       u_int8_t        isr_nrates;
 
1279
+       u_int8_t        isr_rates[15];                  /* XXX */
 
1280
+       u_int8_t        isr_ssid_len;                   /* SSID length */
 
1281
+       u_int8_t        isr_ie_len;                     /* IE length */
 
1282
+       u_int8_t        isr_scangen;                    /* scan generation # */
 
1283
+       /* variable length SSID followed by IE data */
 
1284
+};
 
1285
+
 
1286
+#define        SIOCG80211STATS         _IOWR('i', 236, struct ifreq)
 
1287
+#endif /* __FreeBSD__ */
 
1288
+
 
1289
+#ifdef __linux__
 
1290
+/*
 
1291
+ * Wireless Extensions API, private ioctl interfaces.
 
1292
+ *
 
1293
+ * NB: Even-numbered ioctl numbers have set semantics and are privileged!
 
1294
+ *     (regardless of the incorrect comment in wireless.h!)
 
1295
+ */
 
1296
+#define        IEEE80211_IOCTL_SETPARAM        (SIOCIWFIRSTPRIV+0)
 
1297
+#define        IEEE80211_IOCTL_GETPARAM        (SIOCIWFIRSTPRIV+1)
 
1298
+#define        IEEE80211_IOCTL_SETKEY          (SIOCIWFIRSTPRIV+2)
 
1299
+#define        IEEE80211_IOCTL_DELKEY          (SIOCIWFIRSTPRIV+4)
 
1300
+#define        IEEE80211_IOCTL_SETMLME         (SIOCIWFIRSTPRIV+6)
 
1301
+#define        IEEE80211_IOCTL_SETOPTIE        (SIOCIWFIRSTPRIV+8)
 
1302
+#define        IEEE80211_IOCTL_GETOPTIE        (SIOCIWFIRSTPRIV+9)
 
1303
+#define        IEEE80211_IOCTL_ADDMAC          (SIOCIWFIRSTPRIV+10)
 
1304
+#define        IEEE80211_IOCTL_DELMAC          (SIOCIWFIRSTPRIV+12)
 
1305
+#define        IEEE80211_IOCTL_CHANLIST        (SIOCIWFIRSTPRIV+14)
 
1306
+
 
1307
+enum {
 
1308
+       IEEE80211_PARAM_TURBO           = 1,    /* turbo mode */
 
1309
+       IEEE80211_PARAM_MODE            = 2,    /* phy mode (11a, 11b, etc.) */
 
1310
+       IEEE80211_PARAM_AUTHMODE        = 3,    /* authentication mode */
 
1311
+       IEEE80211_PARAM_PROTMODE        = 4,    /* 802.11g protection */
 
1312
+       IEEE80211_PARAM_MCASTCIPHER     = 5,    /* multicast/default cipher */
 
1313
+       IEEE80211_PARAM_MCASTKEYLEN     = 6,    /* multicast key length */
 
1314
+       IEEE80211_PARAM_UCASTCIPHERS    = 7,    /* unicast cipher suites */
 
1315
+       IEEE80211_PARAM_UCASTCIPHER     = 8,    /* unicast cipher */
 
1316
+       IEEE80211_PARAM_UCASTKEYLEN     = 9,    /* unicast key length */
 
1317
+       IEEE80211_PARAM_WPA             = 10,   /* WPA mode (0,1,2) */
 
1318
+       IEEE80211_PARAM_ROAMING         = 12,   /* roaming mode */
 
1319
+       IEEE80211_PARAM_PRIVACY         = 13,   /* privacy invoked */
 
1320
+       IEEE80211_PARAM_COUNTERMEASURES = 14,   /* WPA/TKIP countermeasures */
 
1321
+       IEEE80211_PARAM_DROPUNENCRYPTED = 15,   /* discard unencrypted frames */
 
1322
+       IEEE80211_PARAM_DRIVER_CAPS     = 16,   /* driver capabilities */
 
1323
+       IEEE80211_PARAM_MACCMD          = 17,   /* MAC ACL operation */
 
1324
+       IEEE80211_PARAM_WME             = 18,   /* WME mode (on, off) */
 
1325
+       IEEE80211_PARAM_HIDESSID        = 19,   /* hide SSID mode (on, off) */
 
1326
+       IEEE80211_PARAM_APBRIDGE        = 20,   /* AP inter-sta bridging */
 
1327
+       IEEE80211_PARAM_KEYMGTALGS      = 21,   /* key management algorithms */
 
1328
+       IEEE80211_PARAM_RSNCAPS         = 22,   /* RSN capabilities */
 
1329
+       IEEE80211_PARAM_INACT           = 23,   /* station inactivity timeout */
 
1330
+       IEEE80211_PARAM_INACT_AUTH      = 24,   /* station auth inact timeout */
 
1331
+       IEEE80211_PARAM_INACT_INIT      = 25,   /* station init inact timeout */
 
1332
+};
 
1333
+
 
1334
+#define        SIOCG80211STATS         (SIOCDEVPRIVATE+2)
 
1335
+/* NB: require in+out parameters so cannot use wireless extensions, yech */
 
1336
+#define        IEEE80211_IOCTL_GETKEY          (SIOCDEVPRIVATE+3)
 
1337
+#define        IEEE80211_IOCTL_GETWPAIE        (SIOCDEVPRIVATE+4)
 
1338
+
 
1339
+#endif /* __linux__ */
 
1340
+
 
1341
+#endif /* _NET80211_IEEE80211_IOCTL_H_ */
 
1342
diff -urNad wpasupplicant-0.3.1/driver_madwifi.c /tmp/dpep.kcIegg/wpasupplicant-0.3.1/driver_madwifi.c
 
1343
--- wpasupplicant-0.3.1/driver_madwifi.c        2004-12-16 13:09:18.000000000 -0500
 
1344
+++ /tmp/dpep.kcIegg/wpasupplicant-0.3.1/driver_madwifi.c       2004-12-16 13:09:38.000000000 -0500
 
1345
@@ -26,10 +26,10 @@
 
1346
 #include "eloop.h"
 
1347
 #include "wpa_supplicant.h"
 
1348
 
 
1349
-#include <include/compat.h>
 
1350
-#include <net80211/ieee80211.h>
 
1351
-#include <net80211/ieee80211_crypto.h>
 
1352
-#include <net80211/ieee80211_ioctl.h>
 
1353
+#include "driver_madwifi/compat.h"
 
1354
+#include "driver_madwifi/net80211/ieee80211.h"
 
1355
+#include "driver_madwifi/net80211/ieee80211_crypto.h"
 
1356
+#include "driver_madwifi/net80211/ieee80211_ioctl.h"
 
1357
 
 
1358
 #include <net/if_arp.h>
 
1359
 #include <linux/wireless.h>