Commit graph

371 commits

Author SHA1 Message Date
Felix Fietkau
a2e40bb650 hostapd: Fix interface selection for the nl80211 driver
This patch allows the nl80211 driver to create its own per-bss context
and pass it to the drv_priv pointer of the hostapd bss state.
With this and the following patch, stations can associate to and switch
between multiple BSS interfaces of a single wiphy.
This obsoletes a few instances of passing ifname to a callback, those
can be removed in a separate patch.
It might also be useful to move more fields from the driver data to the
per-bss data structure in the future.
2010-03-06 22:22:56 +02:00
Felix Fietkau
4c32757d22 hostapd: add ifname to the sta_set_flags callback
This fixes multi-BSS STA operations (e.g., setting AUTHORIZED flag) with
nl80211-based drivers.
2010-03-06 20:44:31 +02:00
Kel Modderman
09bd6e8cca wpa_supplicant: fix FTBFS on Debian GNU/kFreeBSD
This patch allows wpa_supplicant to compile on Debian's kfreebsd
architectures.

Patch by Stefan Lippers-Hollmann based on work done by Petr Salinger
and Emmanuel Bouthenot for 0.6.X (http://bugs.debian.org/480572).
2010-03-06 10:16:47 +02:00
Jouni Malinen
d2f46a2b13 bsd: Use os_strlcpy instead of strlcpy 2010-03-06 10:04:41 +02:00
Jouni Malinen
3812464cda Add optional scan result filter based on SSID
filter_ssids=1 global configuration parameter can now be used to
enable scan result filtering (with -Dnl80211 only for now) based on
the configured SSIDs. In other words, only the scan results that have
an SSID matching with one of the configured networks are included in the
BSS table. This can be used to reduce memory needs in environments that
have huge number of APs.
2010-03-05 21:42:06 +02:00
Jouni Malinen
207ef3fb12 Add suspend/resume notifications
wpa_supplicant can now be notified of suspend/resume events, e.g.,
from pm-action scripts. This allows wpa_supplicant to clear information
that may become invalid during a suspend operation.
2010-02-27 18:46:02 +02:00
Masashi Honma
c6611ed995 bsd: Use device capability information
This patch enables the use of device capability information from the
driver when possible.
2010-02-16 19:47:00 +02:00
Jouni Malinen
58f6fbe05c nl80211: Add support for off-channel Action TX/RX commands
The kernel side support for this was just added into
wireless-testing.git. This commit adds the driver wrapper code needed
to allow wpa_supplicant to use the new functionality.
2010-02-16 19:41:49 +02:00
Jouni Malinen
b7a2b0b68c Add alloc_interface_addr() drv op option for specifying ifname
Some drivers may need to use a specific ifname for the virtual
interface, so allow them to do this with a new parameter passed
to the alloc_interface_addr() handler.
2010-02-16 19:34:51 +02:00
Jouni Malinen
01b350ed74 Sync with linux/nl80211.h from wireless-testing.git 2010-02-16 19:28:38 +02:00
Masashi Honma
0c6bdf91ea bsd: Aggregate ioctl routines
This patch aggregates ioctls.

First is SIOCS80211. The SIOCS80211's arguments has 3 couples.
        1-1. i_len, i_data
        1-2. i_val
        1-3. i_len, i_data, i_val (currently only IEEE80211_IOC_APPIE)
There were 3 routines for each cases. This patch aggregates these to
one.

Second is SIOCG80211. The SIOCG80211 returns 2 type of value.
        2-1. i_len
        2-2. i_val
There were 2 routines for each cases. This patch aggregates these to
one.

I have tested on both FreeBSD 8.0 and NetBSD 5.0.1 with these cases.

[hostapd]
RSN-PSK(CCMP)/WPA-PSK(TKIP)

[wpa_supplicant(STA)]
RSN-PSK(CCMP)/WPA-PSK(TKIP)

[wpa_supplicant(AP)]
RSN-PSK(CCMP)/WPA-PSK(TKIP)
2010-02-13 13:59:29 +02:00
Masashi Honma
88487b0e0b FreeBSD: Add support for FreeBSD 8.0 STA/AP
This patch adds both wpa_supplicant and hostapd support for
FreeBSD 8.0.

I refered
http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/usr.sbin/wpa/hostapd/driver_freebsd
.c
http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/usr.sbin/wpa/wpa_supplicant/driver_
freebsd.c

I have tested on FreeBSD 8.0 with these cases.

[hostapd]
RSN-PSK(CCMP)/WPA-PSK(TKIP)

[wpa_supplicant(STA)]
RSN-PSK(CCMP)/WPA-PSK(TKIP)

[wpa_supplicant(AP)]
RSN-PSK(CCMP)/WPA-PSK(TKIP)
2010-02-13 13:57:39 +02:00
Masashi Honma
362468d117 FreeBSD: Enable channel control
This patch enables FreeBSD channel control.

I have tested on FreeBSD 7.2 with these cases.

[hostapd]
RSN-PSK(CCMP)/WPA-PSK(TKIP)

[wpa_supplicant(STA)]
RSN-PSK(CCMP)/WPA-PSK(TKIP)

[wpa_supplicant(AP)]
RSN-PSK(CCMP)/WPA-PSK(TKIP)
2010-02-13 13:54:27 +02:00
Masashi Honma
e1b1309b6a bsd: Unify wpa_driver_bsd_ops
The attached patch unifies hostapd wpa_driver_bsd_ops and
wpa_supplicant wpa_driver_bsd_ops.

I have tested on NetBSD 5.0.1 with these cases.

[hostapd]
RSN-PSK(CCMP)/WPA-PSK(TKIP)

[wpa_supplicant(STA)]
RSN-PSK(CCMP)/WPA-PSK(TKIP)

[wpa_supplicant(AP)]
RSN-PSK(CCMP)/WPA-PSK(TKIP)
2010-02-13 13:52:03 +02:00
Masashi Honma
86b24ea93c bsd: Unify struct bsd_driver_data and struct wpa_driver_bsd_data
This patch unifies struct bsd_driver_data and struct wpa_driver_bsd_data.
2010-02-13 13:50:19 +02:00
Masashi Honma
6850c70742 bsd: Use same field name between hostapd and wpa_supplicant
This patch modifies field name of struct bsd_driver_data to use
same name of struct wpa_driver_bsd_data. This is a preparation of
unifying struct bsd_driver_data and struct wpa_driver_bsd_data.
2010-02-13 13:48:52 +02:00
Jouni Malinen
e748062b58 nl80211: Do not try to remove non-existing STA WDS interface
This removes confusing error messages from the default (no WDS) case.
2010-02-10 11:29:53 +02:00
Jouni Malinen
aba7569ec8 driver_bsd: Fix build without SIOCS80211CHANNEL
At least FreeBSD 7 does not seem to define this and failed to build
after the previous changes.
2010-02-08 21:41:51 +02:00
Masashi Honma
42f34a9b41 driver_bsd.c: Enable AP mode wpa_supplicant 2010-02-08 21:33:59 +02:00
Masashi Honma
d373725686 driver_bsd: Clean up EAPOL frame transmission code
The bsd_send_eapol() adds Ethernet header by itself. This patch changes it
to use l2_packet functionality.

I have tested on NetBSD 5.0.1 with WPA-PSK(TKIP).
2010-02-08 21:28:59 +02:00
Masashi Honma
719196b159 driver_bsd.c: Reduce code duplication (setkey)
This patch reduces code duplication between hostapd and wpa_supplicant
for IEEE80211_IOC_WPAKEY.
2010-02-08 21:25:18 +02:00
Masashi Honma
60bc30333c driver_bsd.c: Reduce code duplication (ifflag)
This patch reduces code duplication between hostapd and wpa_supplicant
for SIOC[GS]IFFLAGS.
2010-02-08 21:23:28 +02:00
Masashi Honma
fa6b8afe6f driver_bsd.c: Reduce code duplication (MLME)
This patch reduces code duplication between hostapd and wpa_supplicant
about IEEE80211_IOC_MLME. This is a preparation for AP mode
wpa_supplicant.
2010-02-08 21:21:23 +02:00
Masashi Honma
cbdecd2b0d driver_bsd.c: Reduce code duplication (DELKEY)
This patch reduces code duplication between hostapd and wpa_supplicant
about IEEE80211_IOC_DELKEY. This is a preparation for AP mode
wpa_supplicant. This is a patch to
http://lists.shmoo.com/pipermail/hostap/2010-January/021030.html.
2010-02-08 21:18:09 +02:00
Masashi Honma
5197244a04 bsd: Enable auto configuration
On NetBSD, we should configure some parameters manually out of hostapd
like below.

  ifconfig ath0 mediaopt hostap
  ifconfig ath0 mode 11g
  ifconfig ath0 chan 6

This patch does these automatically. Maybe there will be some
objections, like "hardware configuration is not hostapd/wpa_supplican's
work". So I will write the reasons why I made this patch.

1. For usability.
2. The first command fails when previous state is adhoc. This patch is
free from previous state.
3. Some driver wrappers configure these automatically (like nl80211).
4. I have wasted time trying to find out these command were needed :(
2010-02-08 21:14:22 +02:00
Masashi Honma
82f36163ac driver_bsd.c: Use os_free() instead of free()
This patch replaces some free() with os_free() when the memory was
allocated by os_*().
2010-02-08 21:11:52 +02:00
Hamish Guthrie
79e4140c61 driver_ps3: Remove legacy ps3 wpa driver
The ps3 wireless kernel driver has wireless extension support.
There is a legacy wpa_supplicant driver, and support for this
has been removed from the kernel driver, as no distributions
are using it.
2010-02-08 21:08:54 +02:00
Jouni Malinen
8856462d61 nl80211: Dump scan results in debug log if association command fails
This may help in debugging why cfg80211 refused the association
command since the scan results should include information about all
pending authentication and association states.
2010-01-24 18:11:30 -08:00
Jouni Malinen
582507be85 nl80211: Clear cfg80211 authentication data for old entries
cfg80211 has a limit on pending authentications, so we better clear
the entries that we do not care about to avoid hitting the limit
when roaming between multiple APs.
2010-01-24 18:07:34 -08:00
Jouni Malinen
de1b2d143a Make sure the resutl from readlink is properly null terminated 2010-01-16 17:19:06 +02:00
Jouni Malinen
8c0906542c Fetch IEs from both Beacon and Probe Response frames if available
This allows the driver wrappers to return two sets of IEs, so that
the BSS code can use information from both Beacon and Probe Response
frames if needed. For example, some Cisco APs seem to include more
information in Wireless Provisioning Services IE when it is in the
Beacon frame.
2010-01-16 16:11:05 +02:00
Jouni Malinen
94627f6cc8 hostapd: Detect bridge interface automatically
This makes the bridge parameter unnecessary for cases where the interface
is already in a bridge and sysfs is mounted to /sys so that the detection
code works.

For nl80211, the bridge parameter can be used to request the AP
interface to be added to the bridge automatically (brctl may refuse to
do this before hostapd has been started to change the interface mode).
If needed, the bridge interface is also created.
2010-01-16 15:19:58 +02:00
Jouni Malinen
d455d0806e driver_test: Learn scan result channel from DS Params IE 2010-01-16 12:26:03 +02:00
Jouni Malinen
c35faef51a driver_test: Initialize bss_ctx based on drv->ctx for new BSS interfaces
This is needed with wpa_supplicant to get the correct context pointer
for a virtual BSS interface.
2010-01-16 12:24:31 +02:00
Jouni Malinen
37b776eac1 driver_test: Add support for per-SSID scans for non-MLME case 2010-01-16 12:23:39 +02:00
Jouni Malinen
af47308823 Add deinit_ap driver op to help wpa_supplicant AP mode use 2010-01-16 12:20:51 +02:00
Jouni Malinen
e882899981 Add BSSID to TX/RX Action frame driver ops
This meets better the needs for various Public Action frame use cases.
2010-01-16 12:16:20 +02:00
Jouni Malinen
4e5cb1a366 Add driver op for disabling 802.11b rates 2010-01-16 12:11:19 +02:00
Jouni Malinen
ae58592894 Sync with wireless-testing.git linux/nl80211.h 2010-01-16 12:06:42 +02:00
Masashi Honma
11386396cc driver_bsd.c: Clean up EAPOL frame transmission code
The bsd_send_eapol() prepares 3000 bytes buffer for every EAPOL
frame transmission. I think malloc() is better way for efficient
memory use.
2010-01-16 11:47:05 +02:00
Jouni Malinen
3145e6154c wext: Add cfg80211-specific optimization to avoid silly behavior
If the driver is detected to use cfg80211, we can rely on it being able
to disconnect with SIOCSIWMLME commands and to use empty SSID as a way
to stop it from associating when we are in progress of configuring the
driver for association. Consequently, we can remove the hack that uses
random 32-octet SSID to force disconnection and re-order association
commands to match the expectations that cfg80211 has for WEXT ioctls.
This gets rid of extra scan rounds and attempts to associate with the
silly 32-octet SSID.
2010-01-12 20:01:09 +02:00
Jouni Malinen
4a5869206e wext: Check hexstr2bin() return value in custom scan text processing 2010-01-10 22:26:11 +02:00
Jouni Malinen
a7efb16052 WEXT: Show BSSID/SSID set failures on disconnect in debug log 2010-01-10 22:18:50 +02:00
Jouni Malinen
fbe3e7f840 wext: Check hexstr2bin() return value 2010-01-10 22:16:51 +02:00
Masashi Honma
c610dba137 FreeBSD: Fix driver_bsd.c build
On FreeBSD 8.0, driver_bsd.c build fails because of changes from
older versions of FreeBSD. The error messages are below:

In file included from ../src/drivers/driver_bsd.c:38:
/usr/include/net80211/ieee80211_crypto.h:94: error: 'IEEE80211_TID_SIZE'
undeclared here (not in a function)
../src/drivers/driver_bsd.c: In function 'wpa_driver_bsd_set_wpa_ie':
../src/drivers/driver_bsd.c:968: error: 'IEEE80211_IOC_OPTIE' undeclared (first
use in this function)
../src/drivers/driver_bsd.c:968: error: (Each undeclared identifier is reported
only once
../src/drivers/driver_bsd.c:968: error: for each function it appears in.)
gmake: *** [../src/drivers/driver_bsd.o] Error 1

This patch solves this issue.
2010-01-09 11:04:44 +02:00
Masashi Honma
60e1ce7615 bsd: Fix driver_wired.c build 2010-01-09 10:53:44 +02:00
Jouni Malinen
3adca61c9c nl80211: Fix a typo 2010-01-03 22:20:27 +02:00
Jouni Malinen
2ac9688eb8 Use common driver code for Linux hwaddr get/set 2010-01-03 22:17:08 +02:00
Jouni Malinen
34f2f814e0 Share a single Linux ioctl helper fo setting interface up/down
Number of Linux driver wrappers included this more or less identical
function, so lets add a new helper file to be able to share some more
code between the driver wrappers.
2010-01-03 22:08:26 +02:00
Jouni Malinen
69378b7928 bsd: Fix a typo 2010-01-03 21:18:55 +02:00