Jouni Malinen [Mon, 20 Apr 2009 13:27:45 +0000 (16:27 +0300)]
wpa_supplicant AP: Add EAPOL frame TX and RX
This allows WPA-Personal 4-way handshake to be completed successfully.
Jouni Malinen [Mon, 20 Apr 2009 13:11:08 +0000 (16:11 +0300)]
wpa_supplicant AP: Update WPA/RSN configuration
Couple of additional operations are needed to make hostapd configuration
valid for WPA.
Jouni Malinen [Mon, 20 Apr 2009 08:37:35 +0000 (11:37 +0300)]
nl80211: Mark state disassociated on local deauth/disassoc
Jouni Malinen [Mon, 20 Apr 2009 08:36:47 +0000 (11:36 +0300)]
Make deauthentication and disassociation consistent
This fixes an issue where the station was not marked disassociated
properly with locally requested deauthentication.
Jouni Malinen [Mon, 20 Apr 2009 08:35:21 +0000 (11:35 +0300)]
Disconnect if 4-way handshake processing fails
There is no point in trying to continue if a 4-way handshake frame is
discarded or if PTK/GTK/IGTK configuration fails. Force the client to
disconnect in such a case to avoid confusing user by claiming the
connection was successfully completed.
Jouni Malinen [Fri, 17 Apr 2009 17:09:20 +0000 (20:09 +0300)]
wpa_supplicant AP: add sta_add() and sta_remove()
Jouni Malinen [Fri, 17 Apr 2009 13:41:53 +0000 (16:41 +0300)]
wpa_supplicant AP: Fix build after hostapd driver_ops changes
Jouni Malinen [Fri, 17 Apr 2009 13:27:38 +0000 (16:27 +0300)]
nl80211: Add/remove monitor interface dynamically based on mode
Jouni Malinen [Fri, 17 Apr 2009 13:06:12 +0000 (16:06 +0300)]
nl80211: Delete Beacon information on deinit in wpa_supplicant AP mode
Jouni Malinen [Fri, 17 Apr 2009 12:58:34 +0000 (15:58 +0300)]
Use C99 designated initializers to cleanup driver_ops setup
These driver wrappers use UNIX domain sockets and as such, won't be
built with Microsoft compiler. Consequently, use of C99-style designated
initializers can be used to make these files easier to maintain. Only
driver_ndis.c needs to support the old C89-style due to Microsoft
compiler not supporting newer C standard.
Jouni Malinen [Fri, 17 Apr 2009 12:47:37 +0000 (15:47 +0300)]
hostapd: Remove unused passive scan functionality
This was not really supported by any of the included driver wrappers. If
this functionality is desired in the future, this (or something similar)
can be added with the changes needed into a driver wrapper to use the
mechanism.
Jouni Malinen [Fri, 17 Apr 2009 12:36:06 +0000 (15:36 +0300)]
nl80211: Use ifndef hostapd to reduce binary size
Number of areas are not used by hostapd, so remove them from the build.
Jouni Malinen [Fri, 17 Apr 2009 10:33:30 +0000 (13:33 +0300)]
nl80211: Fix secondary BSS ifindex
This was broken by a cleanup patch that moved from ifname to ifindex.
Jouni Malinen [Fri, 17 Apr 2009 10:29:29 +0000 (13:29 +0300)]
Move more multi-BSSID processing into drv_callbacks.c
This simplifies driver wrapper operations and removes last direct
struct hostapd_data dereferences from driver_nl80211.c. In addition,
some of the TX callbacks are now fixed for secondary BSSes.
Jouni Malinen [Fri, 17 Apr 2009 08:55:51 +0000 (11:55 +0300)]
Provide own_addr buffer in hapd_init() parameters
This reduces number of places in driver wrapper that would need to
dereference struct hostapd_data pointer directly.
Jouni Malinen [Fri, 17 Apr 2009 08:37:22 +0000 (11:37 +0300)]
Add own_addr as a parameter to sta_deauth() and sta_disassoc()
This fixes deauth/disassoc frames in secondary BSSes when using
multi-BSSID. In addition, it reduces need to dereference
struct hostapd_data inside driver wrappers.
Jouni Malinen [Fri, 17 Apr 2009 08:23:24 +0000 (11:23 +0300)]
nl80211: Fix wpa_supplicant build
Jouni Malinen [Fri, 17 Apr 2009 08:22:16 +0000 (11:22 +0300)]
nl80211: Add helper functions for SIOC{G,S}IFHWADDR
Jouni Malinen [Thu, 16 Apr 2009 16:08:58 +0000 (19:08 +0300)]
Remove dead code related to WDS setup
hostapd does not have any code that would actually call this, so there
is no current need to try to figure out how to set up WDS links with
nl80211.
Jouni Malinen [Thu, 16 Apr 2009 14:16:41 +0000 (17:16 +0300)]
nl80211: Share more of init/deinit code
Jouni Malinen [Thu, 16 Apr 2009 13:36:03 +0000 (16:36 +0300)]
nl80211: Make it possible to build without WEXT support
NO_WEXT can be defined to disable all remaining WEXT uses from
driver_nl80211.c. This breaks some functionality, so the code is still
in use by default. Anyway, the new #ifdef blocks make it easy to search
for areas that need to be converted to nl80211.
Jouni Malinen [Thu, 16 Apr 2009 13:22:40 +0000 (16:22 +0300)]
Clean up HT40 scan and share nl80211 scanning code
Instead of adding a new driver_ops for fetching neighbor BSS data (that
nl80211 driver interface had to scan during initialization), share the
same scan operations that wpa_supplicant is using. This gets rid of
duplicated scan code in driver_nl80211.c (and better yet, removes large
part of old WEXT code).
hostapd interface initialization is now completed in a callback, if
needed, i.e., he_features channel/hw_mode selection can use as much time
as needed. This can also help with radar detection in the future.
Jouni Malinen [Wed, 15 Apr 2009 08:18:09 +0000 (11:18 +0300)]
Fix small HTTP processing issues
Parse "Transfer-Encoding: chunked" properly.
Get more data if read buffer is empty when starting to process the body.
Jouni Malinen [Tue, 14 Apr 2009 12:52:05 +0000 (15:52 +0300)]
nl80211: Use shared code for netlink initialization
Jouni Malinen [Tue, 14 Apr 2009 12:35:03 +0000 (15:35 +0300)]
nl80211: Merge handle_frame() implementations
Jouni Malinen [Tue, 14 Apr 2009 12:15:33 +0000 (15:15 +0300)]
nl82011: Use common code for setting channel
Jouni Malinen [Tue, 14 Apr 2009 12:03:07 +0000 (15:03 +0300)]
nl80211: Remove inclusion of unneeded header files
Jouni Malinen [Tue, 14 Apr 2009 10:12:58 +0000 (13:12 +0300)]
nl80211: Fix management frame sending after driver_ops cleanup
hostapd ended up with unregistered send_mlme() in commit
9f324b61babe2fb2a80544a8739eee065e73cd7b. Fix this by registering the
handler both for wpa_supplicant-AP and hostapd use. [Bug 310]
Jouni Malinen [Sun, 12 Apr 2009 09:10:08 +0000 (12:10 +0300)]
wpa_supplicant AP: Fix hw_mode for 5 GHz channels
Jouni Malinen [Thu, 9 Apr 2009 20:44:39 +0000 (23:44 +0300)]
Share driver beacon configuration handlers
Jouni Malinen [Thu, 9 Apr 2009 20:28:21 +0000 (23:28 +0300)]
Merge hostapd driver init functions into one
Use a parameter structure to pass in information that can be more easily
extended in the future. Include some of the parameters that were
previously read directly from hapd->conf in order to reduce need for
including hostapd/config.h into driver wrappers.
Jouni Malinen [Thu, 9 Apr 2009 17:53:29 +0000 (20:53 +0300)]
Remove unneeded inclusion of hostapd header files
Jouni Malinen [Thu, 9 Apr 2009 17:41:21 +0000 (20:41 +0300)]
nl80211: Share common interface processing code
Jouni Malinen [Thu, 9 Apr 2009 17:20:21 +0000 (20:20 +0300)]
nl80211: Share monitor mode filtering and reading functions
Jouni Malinen [Thu, 9 Apr 2009 17:01:25 +0000 (20:01 +0300)]
Share same set_country driver op for hostapd and wpa_supplicant
Jouni Malinen [Thu, 9 Apr 2009 16:57:20 +0000 (19:57 +0300)]
Share management frame send driver op for hostapd and wpa_supplicant
The same implementation can be shared in most cases, so better share the
same driver_ops handler function.
Jouni Malinen [Thu, 9 Apr 2009 16:42:19 +0000 (19:42 +0300)]
Remove flags parameter from send_mgmt_frame() driver op
This was not documented properly and was not really used nor would it be
suitable to be used in generic way as it was implemented. It is better
to just remove the parameter since there does not seem to be any
reasonable use for it.
Jouni Malinen [Thu, 9 Apr 2009 14:10:22 +0000 (17:10 +0300)]
nl80211: Replace hostapd WEXT events with nl80211 events
This shares the nl80211 event processing with wpa_supplicant and removes
the old WEXT code from driver_nl80211.c.
Jouni Malinen [Thu, 9 Apr 2009 13:50:48 +0000 (16:50 +0300)]
nl80211: Add Michael MIC failure event processing for wpa_supplicant
Jouni Malinen [Thu, 9 Apr 2009 13:39:24 +0000 (16:39 +0300)]
Sync linux/nl80211.h with wireless-testing.git
This adds support for Michael MIC failure events and info on maximum
supported scan IE length.
Jouni Malinen [Thu, 9 Apr 2009 13:31:11 +0000 (16:31 +0300)]
nl80211: Merge hostapd and wpa_supplicant key configuration
No need to duplicate more or less identical code.
Francesco Gringoli [Thu, 9 Apr 2009 11:51:31 +0000 (14:51 +0300)]
nl80211: Fix channel 14 use
nl80211 interface has a trivial bug that prevents it to work correctly
with channel 14. Channel frequency is erroneously 2848 instead of 2484.
To correct it just apply this patch. [Bug 308]
Jouni Malinen [Thu, 9 Apr 2009 11:11:39 +0000 (14:11 +0300)]
Use common get_hw_feature_data for hostapd and wpa_supplicant
This merges the driver wrapper implementations to use the same
implementation both for hostapd and wpa_supplicant operations to avoid
code duplication.
Jouni Malinen [Thu, 9 Apr 2009 10:40:12 +0000 (13:40 +0300)]
Merge wpa_supplicant and hostapd driver wrapper implementations
This commit merges the driver_ops structures and implementations from
hostapd/driver*.[ch] into src/drivers. This is only an initial step and
there is room for number of cleanups to share code between the hostapd
and wpa_supplicant parts of the wrappers to avoid unnecessary source
code duplication.
Jouni Malinen [Mon, 6 Apr 2009 12:02:48 +0000 (15:02 +0300)]
Fix couple of forgotten wpa_hw_modes -> hostapd_hw_modes
Some build configurations resulted in failure due to missed structure
rename.
Jouni Malinen [Sat, 4 Apr 2009 13:58:16 +0000 (16:58 +0300)]
nl80211: Fix static WEP key configuration when using SME
Need to set WEP keys before requesting authentication in order to get
Shared Key authentication working. Previously, the WEP keys were not set
at all when using SME in wpa_supplicant.
Jouni Malinen [Fri, 3 Apr 2009 18:17:23 +0000 (21:17 +0300)]
nl80211: Add bridge interfaces from secondary BSSes to ifidx list
This fixes EAPOL RX for secondary BSSes that are in a bridge that does
not match with the bridge used for the primary BSS.
Jouni Malinen [Fri, 3 Apr 2009 18:04:25 +0000 (21:04 +0300)]
nl80211: Fix EAPOL frame RX for secondary BSSes
Need to figure out which BSS should process the frame based on the
source address (STA/Supplicant MAC address).
Jouni Malinen [Fri, 3 Apr 2009 17:55:19 +0000 (20:55 +0300)]
nl80211: Remove dead code
The EAPOL packet socket is not bound to a specific ifindex, so no need
to setup the address for a bind() call that is not here anyway.
Jouni Malinen [Fri, 3 Apr 2009 17:44:03 +0000 (20:44 +0300)]
nl80211: Remove unuset set_privacy() and set_internal_bridge()
Jouni Malinen [Fri, 3 Apr 2009 17:40:07 +0000 (20:40 +0300)]
Mark STA authorized if IEEE 802.1X and WPA is not used
This fixes multi-BSS configuration with driver_nl80211.c to mark STAs
that use secondary BSSes with open/static WEP without having to make
driver_nl80211.c track 802.1X configuration for each BSS.
Jouni Malinen [Fri, 3 Apr 2009 17:14:39 +0000 (20:14 +0300)]
Fix some multi-BSSID configuration operations
Static WEP keys were configured only for the first BSS. In addition,
STAs were flushed only for the first BSS. These operations should be in
hostapd_setup_bss(), not setup_interface().
Remove extra call to ieee802_11_set_beacon() for the first BSS. This
should only be done from hostapd_setup_bss(), i.e., once for each BSS.
Jouni Malinen [Fri, 3 Apr 2009 16:11:22 +0000 (19:11 +0300)]
wpa_supplicant AP: Add get_hw_feature_data
This is enough to allow open mode association to be completed with
driver_nl80211.c.
Jouni Malinen [Fri, 3 Apr 2009 16:04:20 +0000 (19:04 +0300)]
Share same hw_feature definitions between hostapd and wpa_supplicant
Jouni Malinen [Fri, 3 Apr 2009 13:53:09 +0000 (16:53 +0300)]
Set own MAC address in AP data structures
Jouni Malinen [Fri, 3 Apr 2009 13:45:09 +0000 (16:45 +0300)]
Implement management frame TX for wpa_supplicant AP mode
Jouni Malinen [Fri, 3 Apr 2009 13:35:46 +0000 (16:35 +0300)]
Fix driver_ops function documentation
Jouni Malinen [Fri, 3 Apr 2009 08:59:08 +0000 (11:59 +0300)]
Remove unused driver_ops
get_rts, get_frag, get_retry, and set_key_tx_rx_threshold were not used
anywhere, so get rid of them.
Jouni Malinen [Fri, 3 Apr 2009 08:51:40 +0000 (11:51 +0300)]
Merge wireless_event_{,de}init() into {,de}init() driver op
Jouni Malinen [Thu, 2 Apr 2009 18:59:14 +0000 (21:59 +0300)]
wpa_supplicant AP: Add management frame RX for nl80211
Jouni Malinen [Thu, 2 Apr 2009 16:54:13 +0000 (19:54 +0300)]
Fix RSN parameter setting for multi-BSS case
rsn_pairwise and wpa_group were set properly only for the last BSS, but
they do need to be set for all BSSes.
Jouni Malinen [Thu, 2 Apr 2009 13:09:48 +0000 (16:09 +0300)]
Add Beacon configuration for wpa_supplicant AP mode
Jouni Malinen [Thu, 2 Apr 2009 13:05:21 +0000 (16:05 +0300)]
Merge set_dtim_period() into set_beacon()
No need for a separate driver_ops handler for setting DTIM period since
this is always set at the same time with the Beacon data. Beacon
interval is still set separately since it is consider per-radio
parameter (Beacon data and DTIM period are per-BSS parameters).
Jouni Malinen [Wed, 1 Apr 2009 14:14:07 +0000 (17:14 +0300)]
nl80211: Add IGTK (AES-128-CMAC) configuration
This was somehow forgotten from IEEE 802.11w/MFP patches from
wpa_supplicant -Dnl80211.
Jouni Malinen [Wed, 1 Apr 2009 14:10:36 +0000 (17:10 +0300)]
SME: Add processing for rejected associations
Jouni Malinen [Wed, 1 Apr 2009 09:04:36 +0000 (12:04 +0300)]
Fix SHA-256-based KDF when using CCMP as the pairwise cipher
IEEE 802.11r KDF uses key length in the derivation and as such, the PTK
length must be specified correctly. The previous version was deriving
using 512-bit PTK regardless of the negotiated cipher suite; this works
for TKIP, but not for CCMP. Update the code to use proper PTK length
based on the pairwise cipher.
This fixed PTK derivation for both IEEE 802.11r and IEEE 802.11w (when
using AKMP that specifies SHA-256-based key derivation). The fixed
version does not interoperate with the previous versions. [Bug 307]
Jouni Malinen [Tue, 31 Mar 2009 12:25:10 +0000 (15:25 +0300)]
nl80211: Remove forgotten comment about SIOCSIWMODE
Jouni Malinen [Tue, 31 Mar 2009 11:25:15 +0000 (14:25 +0300)]
nl80211: Remove SIOCGIWRANGE and assume TKIP+CCMP+WPA+WPA2
All currently known drivers that use nl80211/cfg80211 support these, so
no need to use old WEXT ioctl for figuring out capabilities.
Jouni Malinen [Tue, 31 Mar 2009 11:14:16 +0000 (14:14 +0300)]
nl80211: Remove WEXT Michael MIC event processing
mac80211 does not use this type of Michael MIC event, so this is not
really used and proper Michael MIC failure processing will be added
using an nl80211 event once that gets added into wireless-testing.git.
Jouni Malinen [Tue, 31 Mar 2009 11:09:30 +0000 (14:09 +0300)]
nl80211: Remove WEXT_COMPAT
It looks like both new nl80211 operations (scan and auth/assoc) end up
being added in Linux 2.6.30, so we do not need to maintain the backwards
compatibility code in wpa_supplicant.
Jouni Malinen [Mon, 30 Mar 2009 16:00:55 +0000 (19:00 +0300)]
WPS: Fix local configuration update after AP configuration
Update credential to only include a single authentication and
encryption type in case the AP configuration includes more than one
option. Without this, the credential would be rejected if the AP was
configured to allow more than one authentication type.
Jouni Malinen [Mon, 30 Mar 2009 15:48:41 +0000 (18:48 +0300)]
WPS: Fix hostapd runtime WPS configuration after Enrollee run
If the AP is configured with WPS, we need to update the local WPS data
in order to provide correct credentials for Enrollees.
Jouni Malinen [Mon, 30 Mar 2009 14:55:37 +0000 (17:55 +0300)]
Make channel number available to set_freq()
Since we have the channel number, we could as well pass it to the driver
wrapper should there be drivers that use channel number instead of
frequency.
Jouni Malinen [Fri, 27 Mar 2009 15:13:54 +0000 (17:13 +0200)]
Add needed AP driver wrappers (most of which are still to-do)
Jouni Malinen [Fri, 27 Mar 2009 14:45:47 +0000 (16:45 +0200)]
Set hostapd configuration based on wpa_supplicant AP mode config
Jouni Malinen [Fri, 27 Mar 2009 14:10:14 +0000 (16:10 +0200)]
Update driver SSID and 802.1X/WPA parameters on configuration reload
This is needed for WPS AP reconfiguration with driver wrappers that do
not use hostapd MLME.
Masashi Honma [Fri, 27 Mar 2009 08:49:47 +0000 (10:49 +0200)]
Fix: Loop in driver selection routine
Increment an index variable not 'i' but 'j'.
(this was broken yesterday by a cleanup change
3067ac2bb82553c99cb84e32ede82de434ee1070)
Jouni Malinen [Thu, 26 Mar 2009 19:55:01 +0000 (21:55 +0200)]
Add support for specifying subset of enabled frequencies to scan
A new network block parameter, scan_freq, can be used to specify subset
of frequencies to scan. This can speed up scanning process considerably
if it is known that only a small subset of channels is actually used in
the network. A union of configured frequencies for all enabled network
blocks is used in scan requests.
Currently, only driver_nl80211.c has support for this functionality.
For example, following parameter marks 2.4 GHz channels 1, 6, 11 to be
scanned: scan_freq=2412 2437 2462
Jouni Malinen [Thu, 26 Mar 2009 18:37:05 +0000 (20:37 +0200)]
Add preliminary hostapd data structure initialization for AP mode
wpa_supplicant can now initialize hostapd data structures when mode=2 is
used to set up an AP. The hostapd configuration is not yet set based on
wpa_supplicant network configuration block. In addition, the glue code
for hostapd driver_ops needs number of functions that will be needed for
AP functionality.
Jouni Malinen [Thu, 26 Mar 2009 18:35:49 +0000 (20:35 +0200)]
Rename struct wpa_driver_ops to hapd_driver_ops
This avoids conflicts with the wpa_supplicant structure with the same
name.
Jouni Malinen [Thu, 26 Mar 2009 17:23:41 +0000 (19:23 +0200)]
Move hostapd_init() into main.c
Jouni Malinen [Thu, 26 Mar 2009 17:23:02 +0000 (19:23 +0200)]
Get rid of couple of shadowed variable warnings
Jouni Malinen [Thu, 26 Mar 2009 17:09:25 +0000 (19:09 +0200)]
Remove shadowed variable
Jouni Malinen [Thu, 26 Mar 2009 17:06:02 +0000 (19:06 +0200)]
Move main() and configuration file related functions into main.c
This makes it easier to share hostapd.c with wpa_supplicant
Jouni Malinen [Thu, 26 Mar 2009 14:08:17 +0000 (16:08 +0200)]
Move wpa_supplicant_create_ap() into ap.c
Jouni Malinen [Thu, 26 Mar 2009 14:06:15 +0000 (16:06 +0200)]
Allow hostapd/config.h and wpa_supplicant/config_ssid.h coexist
Move the shared IEEE 802.11w enum definition into src/common/defs.h to
avoid redefinition when both configuration structures are included into
the same file.
Jouni Malinen [Thu, 26 Mar 2009 13:32:02 +0000 (15:32 +0200)]
Fix WPS UPnP SSDP on 32-bit targets
The memcpy was using incorrect size (of pointer; should have been of
data structure) for the client address. This ended up working on 64-bit
targets, but left part of the address uninitialized on 32-bit targets.
Jouni Malinen [Wed, 25 Mar 2009 15:49:22 +0000 (17:49 +0200)]
Move hostapd driver_ops to use similar set_key with wpa_supplicant
Jouni Malinen [Wed, 25 Mar 2009 14:55:09 +0000 (16:55 +0200)]
Replace deprecated add_sta() with add_sta2()
Jouni Malinen [Wed, 25 Mar 2009 14:48:22 +0000 (16:48 +0200)]
Remove deprecated version of set_freq() and rename the new version
Jouni Malinen [Wed, 25 Mar 2009 14:45:57 +0000 (16:45 +0200)]
Remove unused set_assoc_ap() wpa_driver_ops
The need for this was removed with the experimental
hostapd-as-a-client-STA functionality.
Jouni Malinen [Wed, 25 Mar 2009 14:35:26 +0000 (16:35 +0200)]
Fix wpa_supplicant AP build after hostapd header file cleanup
Jouni Malinen [Wed, 25 Mar 2009 14:29:00 +0000 (16:29 +0200)]
Include config.h explicitly into files that actually use it
hostapd.h does not need to include config.h.
Jouni Malinen [Wed, 25 Mar 2009 14:13:35 +0000 (16:13 +0200)]
Move STA entry structure into sta_info.h and remove ap.h
This cleans up some of the hostapd include file usage and only includes
the needed STA flags into driver wrappers.
Jouni Malinen [Wed, 25 Mar 2009 13:54:25 +0000 (15:54 +0200)]
Replace sta_aid array with bitfield
The actual pointer to struct sta_info was not really used and it is
enough to use a single bit to indicate whether an AID is allocated. This
makes the BSS data take less memory while making the allocation routine
faster and removing the arbitrary MAX_AID_TABLE_SIZE limit of 128 STAs.
Jouni Malinen [Wed, 25 Mar 2009 13:35:00 +0000 (15:35 +0200)]
Move AID derivation into a separate function
Jouni Malinen [Wed, 25 Mar 2009 10:23:42 +0000 (12:23 +0200)]
Link in AP functionality from hostapd when CONFIG_AP=y
This is only allowing the code to be compiled and linked in; the actual
functionality is not yet enabled.
Jouni Malinen [Wed, 25 Mar 2009 10:06:19 +0000 (12:06 +0200)]
Rename EAP server defines from EAP_* to EAP_SERVER_*
This allows separate set of EAP server and peer methods to be built into
a single binary.
Jouni Malinen [Wed, 25 Mar 2009 09:38:47 +0000 (11:38 +0200)]
Initial step in adding simple AP mode support into wpa_supplicant
This version is adding the configuration option (mode=2) for this and
driver capability reporting to figure out whether AP mode can be used.
However, this does not actually implement any real functionality yet.
Jouni Malinen [Wed, 25 Mar 2009 09:36:09 +0000 (11:36 +0200)]
Remove local variable shadowing to avoid a warning