diff options
author | <jt@hpl.hp.com> | 2005-05-12 20:24:19 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-05-12 20:24:19 -0400 |
commit | fff9cfd99c0f88645c3f50d7476d6c8cef99f140 (patch) | |
tree | 83ee9850fb74a01f57b27180d29ef501b8c28abe /net | |
parent | 88d7bd8cb9eb8d64bf7997600b0d64f7834047c5 (diff) |
[PATCH] Wireless Extensions 18 (aka WPA)
This is version 18 of the Wireless Extensions. The main change
is that it adds all the necessary APIs for WPA and WPA2 support. This
work was entirely done by Jouni Malinen, so let's thank him for both
his hard work and deep expertise on the subject ;-)
This APIs obviously doesn't do much by itself and works in
concert with driver support (Jouni already sent you the HostAP
changes) and userspace (Jouni is updating wpa_supplicant). This is
also orthogonal with the ongoing work on in-kernel IEEE support (but
potentially useful).
The patch is attached, tested with 2.6.11. Normally, I would
ask you to push that directly in the kernel (99% of the patch has been
on my web page for ages and it does not affect non-WPA stuff), but
Jouni convinced me that it should bake a few weeks in wireless-2.6
first, so that other driver maintainers can get up to speed with it.
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/wireless.c | 74 |
1 files changed, 72 insertions, 2 deletions
diff --git a/net/core/wireless.c b/net/core/wireless.c index 750cc5daeb03..b2fe378dfbf8 100644 --- a/net/core/wireless.c +++ b/net/core/wireless.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * This file implement the Wireless Extensions APIs. | 2 | * This file implement the Wireless Extensions APIs. |
3 | * | 3 | * |
4 | * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com> | 4 | * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com> |
5 | * Copyright (c) 1997-2004 Jean Tourrilhes, All Rights Reserved. | 5 | * Copyright (c) 1997-2005 Jean Tourrilhes, All Rights Reserved. |
6 | * | 6 | * |
7 | * (As all part of the Linux kernel, this file is GPL) | 7 | * (As all part of the Linux kernel, this file is GPL) |
8 | */ | 8 | */ |
@@ -187,6 +187,12 @@ static const struct iw_ioctl_description standard_ioctl[] = { | |||
187 | .header_type = IW_HEADER_TYPE_ADDR, | 187 | .header_type = IW_HEADER_TYPE_ADDR, |
188 | .flags = IW_DESCR_FLAG_DUMP, | 188 | .flags = IW_DESCR_FLAG_DUMP, |
189 | }, | 189 | }, |
190 | [SIOCSIWMLME - SIOCIWFIRST] = { | ||
191 | .header_type = IW_HEADER_TYPE_POINT, | ||
192 | .token_size = 1, | ||
193 | .min_tokens = sizeof(struct iw_mlme), | ||
194 | .max_tokens = sizeof(struct iw_mlme), | ||
195 | }, | ||
190 | [SIOCGIWAPLIST - SIOCIWFIRST] = { | 196 | [SIOCGIWAPLIST - SIOCIWFIRST] = { |
191 | .header_type = IW_HEADER_TYPE_POINT, | 197 | .header_type = IW_HEADER_TYPE_POINT, |
192 | .token_size = sizeof(struct sockaddr) + | 198 | .token_size = sizeof(struct sockaddr) + |
@@ -195,7 +201,10 @@ static const struct iw_ioctl_description standard_ioctl[] = { | |||
195 | .flags = IW_DESCR_FLAG_NOMAX, | 201 | .flags = IW_DESCR_FLAG_NOMAX, |
196 | }, | 202 | }, |
197 | [SIOCSIWSCAN - SIOCIWFIRST] = { | 203 | [SIOCSIWSCAN - SIOCIWFIRST] = { |
198 | .header_type = IW_HEADER_TYPE_PARAM, | 204 | .header_type = IW_HEADER_TYPE_POINT, |
205 | .token_size = 1, | ||
206 | .min_tokens = 0, | ||
207 | .max_tokens = sizeof(struct iw_scan_req), | ||
199 | }, | 208 | }, |
200 | [SIOCGIWSCAN - SIOCIWFIRST] = { | 209 | [SIOCGIWSCAN - SIOCIWFIRST] = { |
201 | .header_type = IW_HEADER_TYPE_POINT, | 210 | .header_type = IW_HEADER_TYPE_POINT, |
@@ -273,6 +282,42 @@ static const struct iw_ioctl_description standard_ioctl[] = { | |||
273 | [SIOCGIWPOWER - SIOCIWFIRST] = { | 282 | [SIOCGIWPOWER - SIOCIWFIRST] = { |
274 | .header_type = IW_HEADER_TYPE_PARAM, | 283 | .header_type = IW_HEADER_TYPE_PARAM, |
275 | }, | 284 | }, |
285 | [SIOCSIWGENIE - SIOCIWFIRST] = { | ||
286 | .header_type = IW_HEADER_TYPE_POINT, | ||
287 | .token_size = 1, | ||
288 | .max_tokens = IW_GENERIC_IE_MAX, | ||
289 | }, | ||
290 | [SIOCGIWGENIE - SIOCIWFIRST] = { | ||
291 | .header_type = IW_HEADER_TYPE_POINT, | ||
292 | .token_size = 1, | ||
293 | .max_tokens = IW_GENERIC_IE_MAX, | ||
294 | }, | ||
295 | [SIOCSIWAUTH - SIOCIWFIRST] = { | ||
296 | .header_type = IW_HEADER_TYPE_PARAM, | ||
297 | }, | ||
298 | [SIOCGIWAUTH - SIOCIWFIRST] = { | ||
299 | .header_type = IW_HEADER_TYPE_PARAM, | ||
300 | }, | ||
301 | [SIOCSIWENCODEEXT - SIOCIWFIRST] = { | ||
302 | .header_type = IW_HEADER_TYPE_POINT, | ||
303 | .token_size = 1, | ||
304 | .min_tokens = sizeof(struct iw_encode_ext), | ||
305 | .max_tokens = sizeof(struct iw_encode_ext) + | ||
306 | IW_ENCODING_TOKEN_MAX, | ||
307 | }, | ||
308 | [SIOCGIWENCODEEXT - SIOCIWFIRST] = { | ||
309 | .header_type = IW_HEADER_TYPE_POINT, | ||
310 | .token_size = 1, | ||
311 | .min_tokens = sizeof(struct iw_encode_ext), | ||
312 | .max_tokens = sizeof(struct iw_encode_ext) + | ||
313 | IW_ENCODING_TOKEN_MAX, | ||
314 | }, | ||
315 | [SIOCSIWPMKSA - SIOCIWFIRST] = { | ||
316 | .header_type = IW_HEADER_TYPE_POINT, | ||
317 | .token_size = 1, | ||
318 | .min_tokens = sizeof(struct iw_pmksa), | ||
319 | .max_tokens = sizeof(struct iw_pmksa), | ||
320 | }, | ||
276 | }; | 321 | }; |
277 | static const int standard_ioctl_num = (sizeof(standard_ioctl) / | 322 | static const int standard_ioctl_num = (sizeof(standard_ioctl) / |
278 | sizeof(struct iw_ioctl_description)); | 323 | sizeof(struct iw_ioctl_description)); |
@@ -299,6 +344,31 @@ static const struct iw_ioctl_description standard_event[] = { | |||
299 | [IWEVEXPIRED - IWEVFIRST] = { | 344 | [IWEVEXPIRED - IWEVFIRST] = { |
300 | .header_type = IW_HEADER_TYPE_ADDR, | 345 | .header_type = IW_HEADER_TYPE_ADDR, |
301 | }, | 346 | }, |
347 | [IWEVGENIE - IWEVFIRST] = { | ||
348 | .header_type = IW_HEADER_TYPE_POINT, | ||
349 | .token_size = 1, | ||
350 | .max_tokens = IW_GENERIC_IE_MAX, | ||
351 | }, | ||
352 | [IWEVMICHAELMICFAILURE - IWEVFIRST] = { | ||
353 | .header_type = IW_HEADER_TYPE_POINT, | ||
354 | .token_size = 1, | ||
355 | .max_tokens = sizeof(struct iw_michaelmicfailure), | ||
356 | }, | ||
357 | [IWEVASSOCREQIE - IWEVFIRST] = { | ||
358 | .header_type = IW_HEADER_TYPE_POINT, | ||
359 | .token_size = 1, | ||
360 | .max_tokens = IW_GENERIC_IE_MAX, | ||
361 | }, | ||
362 | [IWEVASSOCRESPIE - IWEVFIRST] = { | ||
363 | .header_type = IW_HEADER_TYPE_POINT, | ||
364 | .token_size = 1, | ||
365 | .max_tokens = IW_GENERIC_IE_MAX, | ||
366 | }, | ||
367 | [IWEVPMKIDCAND - IWEVFIRST] = { | ||
368 | .header_type = IW_HEADER_TYPE_POINT, | ||
369 | .token_size = 1, | ||
370 | .max_tokens = sizeof(struct iw_pmkid_cand), | ||
371 | }, | ||
302 | }; | 372 | }; |
303 | static const int standard_event_num = (sizeof(standard_event) / | 373 | static const int standard_event_num = (sizeof(standard_event) / |
304 | sizeof(struct iw_ioctl_description)); | 374 | sizeof(struct iw_ioctl_description)); |