Jouni Malinen [Fri, 25 Dec 2009 18:12:26 +0000 (20:12 +0200)]
Get rid of direct hostapd_for_each_interface() calls
src/ap/*.c must not call functions in hostapd or wpa_supplicant
directories directly, so avoid this by using a callback function
pointer.
Jouni Malinen [Fri, 25 Dec 2009 18:06:07 +0000 (20:06 +0200)]
Move rest of the generic AP mode functionality into src/ap
Jouni Malinen [Fri, 25 Dec 2009 17:48:41 +0000 (19:48 +0200)]
test: Use more shared code for driver wrapper AP and station modes
This fixes AP mode use in wpa_supplicant with the
no-AP-driver-wrapper design.
Jouni Malinen [Fri, 25 Dec 2009 17:47:08 +0000 (19:47 +0200)]
Do not use virtual driver_ops for wpa_supplicant AP mode
Initialize struct hostapd_data driver context with the same driver
information that was initialized earlier during wpa_supplicant start.
This allows the AP mode operations to be completed directly with the
same calls in AP code without having to maintain a separate translation
layer between the AP and station mode driver context.
Jouni Malinen [Fri, 25 Dec 2009 16:32:44 +0000 (18:32 +0200)]
Move driver deinitialization away from hostapd.c
This matches with the earlier change of moving driver initialization
and allows more control on how the driver context is managed.
Jouni Malinen [Fri, 25 Dec 2009 12:20:35 +0000 (14:20 +0200)]
Clean up some of the hostapd.h function prototype definitions
Not all prototypes in hostapd.h really belong there. This is an initial
step in cleaning that up.
Jouni Malinen [Fri, 25 Dec 2009 12:06:26 +0000 (14:06 +0200)]
Move hostapd_prune_associations() into ap/utils.c
Jouni Malinen [Fri, 25 Dec 2009 12:02:17 +0000 (14:02 +0200)]
Move WPA authenticator glue code into a separate file
Jouni Malinen [Fri, 25 Dec 2009 11:43:43 +0000 (13:43 +0200)]
Move authentication server setup into separate file
Jouni Malinen [Fri, 25 Dec 2009 11:04:45 +0000 (13:04 +0200)]
Move iapp.c into src/ap
Jouni Malinen [Fri, 25 Dec 2009 10:25:55 +0000 (12:25 +0200)]
Move ctrl_iface_ap.c into src/ap
Jouni Malinen [Fri, 25 Dec 2009 10:21:11 +0000 (12:21 +0200)]
Move hostapd driver initialization away from hostapd.c
This makes it easier to customize AP mode initialization for
wpa_supplicant.
Jouni Malinen [Fri, 25 Dec 2009 10:06:53 +0000 (12:06 +0200)]
Fix wpa_supplicant CONFIG_AP build
Jouni Malinen [Fri, 25 Dec 2009 09:54:02 +0000 (11:54 +0200)]
wired: Use os_*() wrappers more consistently
Need to allocate and free memory with same style to avoid WPA_TRACE
errors.
Jouni Malinen [Fri, 25 Dec 2009 09:51:20 +0000 (11:51 +0200)]
hostapd: Do not call eloop_terminate() on interface setup failure
The caller is able to handle the error code properly and there is no
need to forcefully stop the eloop run here.
Jouni Malinen [Thu, 24 Dec 2009 23:31:28 +0000 (01:31 +0200)]
Add forgotten src/ap/utils.c file
Commit
32da61d9c9594a35db46dacd8ca3e0ae7167bac2 was supposed to add
this file.
Jouni Malinen [Thu, 24 Dec 2009 23:29:59 +0000 (01:29 +0200)]
WPS: Fix a memory leak if set_ie_cb() is not set
Skip WPS IE building for Beacon and Probe Response frames is set_ie_cb()
is not set. This fixes a memory leak and optimizes operations by not
allocating memory and building the WPS IEs unnecessarily.
Jouni Malinen [Thu, 24 Dec 2009 23:26:37 +0000 (01:26 +0200)]
Move wps_hostapd.c into src/ap
Jouni Malinen [Thu, 24 Dec 2009 23:12:50 +0000 (01:12 +0200)]
Move generic AP functionality implementation into src/ap
This code can be shared by both hostapd and wpa_supplicant and this
is an initial step in getting the generic code moved to be under the
src directories. Couple of generic files still remain under the
hostapd directory due to direct dependencies to files there. Once the
dependencies have been removed, they will also be moved to the src/ap
directory to allow wpa_supplicant to be built without requiring anything
from the hostapd directory.
Jouni Malinen [Thu, 24 Dec 2009 22:39:22 +0000 (00:39 +0200)]
Remove direct driver calls from tkip_countermeasures.c
Jouni Malinen [Thu, 24 Dec 2009 22:35:10 +0000 (00:35 +0200)]
Remove direct driver calls from ieee802_11.c
Jouni Malinen [Thu, 24 Dec 2009 22:30:16 +0000 (00:30 +0200)]
Remove direct driver calls from sta_info.c
Jouni Malinen [Thu, 24 Dec 2009 22:17:07 +0000 (00:17 +0200)]
Remove direct driver calls from vlan_init.c
Jouni Malinen [Thu, 24 Dec 2009 22:10:31 +0000 (00:10 +0200)]
Remove direct driver calls from beacon.c
Jouni Malinen [Thu, 24 Dec 2009 21:49:19 +0000 (23:49 +0200)]
Remove need for direct driver calls from ieee802_11_auth.c
Jouni Malinen [Thu, 24 Dec 2009 21:42:13 +0000 (23:42 +0200)]
Avoid direct call to hostapd_new_assoc_sta from ieee802_11.c
Jouni Malinen [Thu, 24 Dec 2009 21:30:32 +0000 (23:30 +0200)]
Removed hostapd_new_assoc_sta() from driver wrapper API
This is not called directly by any of the driver wrappers anymore, so
the function can be removed from driver.h and drv_callbacks.c.
Jouni Malinen [Thu, 24 Dec 2009 21:20:53 +0000 (23:20 +0200)]
Avoid a direct call to drv_callbacks.c from beacon.c
Jouni Malinen [Thu, 24 Dec 2009 21:17:11 +0000 (23:17 +0200)]
Move hostapd_set_drv_ieee8021x() into ap_drv_ops
Jouni Malinen [Thu, 24 Dec 2009 21:11:16 +0000 (23:11 +0200)]
Move hostapd-to-driver flag mapping to be within ap_drv_ops.c
Jouni Malinen [Thu, 24 Dec 2009 20:50:17 +0000 (22:50 +0200)]
Move wpa_drivers dependency into config_file.c
This cleans up config.o from driver wrapper dependencies.
Jouni Malinen [Thu, 24 Dec 2009 20:24:57 +0000 (22:24 +0200)]
Remove direct driver calls from accounting.c
Jouni Malinen [Thu, 24 Dec 2009 19:05:40 +0000 (21:05 +0200)]
Move hostapd configuration parser into separate file
config.c includes now only the generic helper functions that are needed
both for hostapd and the AP mode operations in wpa_supplicant.
hostapd/config_file.c is only needed for hostapd.
Jouni Malinen [Thu, 24 Dec 2009 18:41:30 +0000 (20:41 +0200)]
Move more driver ops into struct hostapd_driver_ops
This removes need to include driver_i.h into ieee802_1x.c.
Jouni Malinen [Thu, 24 Dec 2009 18:18:55 +0000 (20:18 +0200)]
Move hostapd_set_privacy() call to hostapd.c
IEEE 802.1X code does not need to know about this driver configuration
mechanism and all the other calls were already in hostapd.c.
Jouni Malinen [Thu, 24 Dec 2009 18:13:44 +0000 (20:13 +0200)]
Use hostapd driver op wrapper for send_mgmt_frame
Jouni Malinen [Thu, 24 Dec 2009 17:46:06 +0000 (19:46 +0200)]
Merge driver ops set_wps_beacon_ie and set_wps_probe_resp_ie
set_ap_wps_ie() is not used to set WPS IE for both Beacon and Probe
Response frames with a single call. In addition, struct wpabuf is used
instead of separate u8* and length fields. This avoids duplicated
allocation of the IEs and simplifies code in general.
Jouni Malinen [Thu, 24 Dec 2009 14:15:22 +0000 (16:15 +0200)]
hostapd: Use separate driver operations abstraction
It would be bettet to avoid including driver_i.h, i.e., direct driver
operation calls from hostapd components. This is an initial step in
that direction for WPS IE updates.
Jouni Malinen [Thu, 24 Dec 2009 10:41:20 +0000 (12:41 +0200)]
Drop WPA_TRACE reference before eloop timeout handler call
This avoids bogus error reports for cases where the timeout handler
frees the memory that was pointed to by the eloop timeout context.
Jouni Malinen [Thu, 24 Dec 2009 10:27:42 +0000 (12:27 +0200)]
Enable IPv6 support for libutils.a and libradius.a
Jouni Malinen [Thu, 24 Dec 2009 10:26:47 +0000 (12:26 +0200)]
Redesign struct hostapd_ip_addr to be of fixed size
This structure is embedded in some other structures and as such, it
would be nicer if this would not change its length based on build
options.
Jouni Malinen [Thu, 24 Dec 2009 10:18:57 +0000 (12:18 +0200)]
radius_example: Fix memory leak on deinit
Jouni Malinen [Thu, 24 Dec 2009 10:18:22 +0000 (12:18 +0200)]
Comment out CONFIG_IPV6 for now in RADIUS library build
This needs to be used consistently in order to get correct size for
struct hostapd_ip_addr.
Jouni Malinen [Thu, 24 Dec 2009 10:05:51 +0000 (12:05 +0200)]
Build radius_example using src/*/lib*.a
Jouni Malinen [Thu, 24 Dec 2009 10:03:40 +0000 (12:03 +0200)]
Fix RADIUS client callback function parameters
Jouni Malinen [Thu, 24 Dec 2009 09:59:08 +0000 (11:59 +0200)]
Add build rules for src/radius/libradius.a
Jouni Malinen [Thu, 24 Dec 2009 09:58:19 +0000 (11:58 +0200)]
Fix radius_example build
Felix Fietkau [Thu, 24 Dec 2009 09:46:22 +0000 (11:46 +0200)]
hostapd: Add WDS (4-address frame) mode with per-station interfaces
This mode allows associated stations to use 4-address frames to allow
layer 2 bridging to be used. At least for the time being, this is only
supported with driver=nl80211.
Jouni Malinen [Thu, 24 Dec 2009 09:07:02 +0000 (11:07 +0200)]
nl80211: Sync with wireless-testing.git linux/nl80211.h
Jouni Malinen [Wed, 23 Dec 2009 22:16:58 +0000 (00:16 +0200)]
Rename EAP TLS variables to make server and peer code consistent
Jouni Malinen [Wed, 23 Dec 2009 21:56:35 +0000 (23:56 +0200)]
Convert to use struct dl_list
Jouni Malinen [Wed, 23 Dec 2009 21:35:33 +0000 (23:35 +0200)]
Add developer documentation for WPA_TRACE
Jouni Malinen [Wed, 23 Dec 2009 21:20:11 +0000 (23:20 +0200)]
Comment CONFIG_WPA_TRACE_BFD=y out by default
Jouni Malinen [Wed, 23 Dec 2009 21:19:22 +0000 (23:19 +0200)]
Update documentation for uni tests to use the new tests directory
Jouni Malinen [Wed, 23 Dec 2009 21:16:21 +0000 (23:16 +0200)]
Avoid NULL dereference on error path when default driver is used
Jouni Malinen [Mon, 21 Dec 2009 23:52:48 +0000 (01:52 +0200)]
trace: Show eloop unregistered handler function name/file/line
Jouni Malinen [Mon, 21 Dec 2009 23:29:15 +0000 (01:29 +0200)]
trace: Filter out uninteresting functions from backtrace
This filters out the functions inside trace.c and functions before
main() since those are not relevant to the actual issue that is being
reported.
Jouni Malinen [Mon, 21 Dec 2009 23:11:15 +0000 (01:11 +0200)]
trace: Add active reference tracking
This WPA_TRACE=y additions allows components to register active references
to memory that has been provided to them as a pointer. If such an actively
referenced memory area is freed, tracer will report this as an error and
backtraces of both the invalid free and the location where this pointer
was marked referenced are shown.
Jouni Malinen [Mon, 21 Dec 2009 21:17:53 +0000 (23:17 +0200)]
Check fread return value
Jouni Malinen [Mon, 21 Dec 2009 20:32:59 +0000 (22:32 +0200)]
nl80211: Use couple more os_*() wrappers for allocation
Jouni Malinen [Mon, 21 Dec 2009 20:22:49 +0000 (22:22 +0200)]
Fix memory leak in config freeing
Both supported_rates and basic_rates arrays must be freed when freeing
hostapd configuration.
Jouni Malinen [Mon, 21 Dec 2009 20:21:10 +0000 (22:21 +0200)]
nl80211: Use os_* allocation wrappers to avoid WPA_TRACE issues
Jouni Malinen [Mon, 21 Dec 2009 14:10:21 +0000 (16:10 +0200)]
Copy config_methods and device_type configuration for AP mode
Jouni Malinen [Mon, 21 Dec 2009 13:59:25 +0000 (15:59 +0200)]
WPS: Make Config Methods configurable for wpa_supplicant
This adds config_methods configuration option for wpa_supplicant
following the design used in hostapd. In addition, the string is
now parsed in common code from src/wps/wps_common.c and the list
of configurable methods include all the defined methods from
WPS 1.0h spec.
Jouni Malinen [Mon, 21 Dec 2009 10:58:02 +0000 (12:58 +0200)]
WPS: Prefer PSK format if Enrollee does not advertise Display
Since an Enrollee that does not advertise display as one of the
Config Methods is unlikely to be able to show the ASCII passphrase
to the user, prefer PSK format with such an Enrollee to reduce key
derivation time. This can help with some low-powered devices that
would take long time to derive the PSK from the passphrase.
Jouni Malinen [Mon, 21 Dec 2009 10:46:19 +0000 (12:46 +0200)]
WPS: Add option for forcing Registrar to use PSK format in Credential
The use_psk_key parameter can now be used to force the Registrar to
use PSK format instead of ASCII passphrase when building a Credential
for the Enrollee. For now, this is not enabled, but it could be enabled
either based on external (to WPS) configuration or automatically set
based on some WPS attribute values from the Enrollee.
Jouni Malinen [Mon, 21 Dec 2009 10:11:08 +0000 (12:11 +0200)]
AP: Allow both WPA passphrase and PSK to be configured
Instead of dropping the configured PSK and deriving it based on
passphrase, use the provided PSK as-is and also maintain a copy of
the passphrase since it can be of use later. This allows both values
to be configured without havign to derive the PSK every time the
network is initialized.
Jouni Malinen [Mon, 21 Dec 2009 09:51:31 +0000 (11:51 +0200)]
Add "keypad" to config methods for wpa_supplicant AP mode with WPS
Jouni Malinen [Sun, 20 Dec 2009 21:41:06 +0000 (23:41 +0200)]
Describe tracing build options for developers
Jouni Malinen [Sun, 20 Dec 2009 21:35:06 +0000 (23:35 +0200)]
Add option libbfd support for tracing code
CONFIG_WPA_TRACE=y and CONFIG_WPA_TRACE_BFD=y can now be used to get
even more complete symbols (func/file/line and inline functions) for
backtraces.
Jouni Malinen [Sun, 20 Dec 2009 20:08:54 +0000 (22:08 +0200)]
GnuTLS: Implement tls_connection_enable_workaround()
Jouni Malinen [Sun, 20 Dec 2009 20:07:59 +0000 (22:07 +0200)]
GnuTLS: Add support for piggybacked Application Data
Jouni Malinen [Sun, 20 Dec 2009 19:37:36 +0000 (21:37 +0200)]
GnuTLS: Define empty tls_connection_set_session_ticket_cb()
This allows EAP-FAST build to be completed even if it does not actually
work yet with GnuTLS.
Jouni Malinen [Sun, 20 Dec 2009 19:34:56 +0000 (21:34 +0200)]
dbus: Fix build with "ctrl_iface_" prefix removed
Jouni Malinen [Sun, 20 Dec 2009 19:33:32 +0000 (21:33 +0200)]
Use wpabuf with tls_connection_ia_send_phase_finished()
Jouni Malinen [Sun, 20 Dec 2009 19:11:35 +0000 (21:11 +0200)]
dbus: Remove the confusing "ctrl_iface_" prefix from file names
The D-Bus interface does not really have anything to do with the
wpa_supplicant ctrl_iface interface and as such, this prefix in
dbus files is both confusing and unnecessarily. Make the file names
shorter by removing this prefix.
Jouni Malinen [Sun, 20 Dec 2009 19:04:40 +0000 (21:04 +0200)]
dbus: Move some of conditional WPS code into separate files
Jouni Malinen [Sun, 20 Dec 2009 18:40:23 +0000 (20:40 +0200)]
dbus: Remove unnecessary CONFIG_WPS ifdefs from header files
Jouni Malinen [Sun, 20 Dec 2009 18:29:09 +0000 (20:29 +0200)]
dbus: Clean dbus build files on wpa_supplicant 'make clean'
In addition, add preliminary build rules for build libwpadbus.a.
Jouni Malinen [Sun, 20 Dec 2009 18:15:40 +0000 (20:15 +0200)]
dbus: Rename .service file to use the service name as the file name
Witold Sowa [Sun, 20 Dec 2009 18:14:10 +0000 (20:14 +0200)]
dbus: Add missing .service file for the new D-Bus API
Jouni Malinen [Sun, 20 Dec 2009 18:11:14 +0000 (20:11 +0200)]
Move D-Bus related files into their own subdirectory
Jouni Malinen [Sun, 20 Dec 2009 17:28:47 +0000 (19:28 +0200)]
Allow TLS flags to be configured (allow MD5, disable time checks)
Undocumented (at least for the time being) TLS parameters can now
be provided in wpa_supplicant configuration to enable some workarounds
for being able to connect insecurely to some networks. phase1 and
phase2 network parameters can use following options:
tls_allow_md5=1
- allow MD5 signature to be used (disabled by default with GnuTLS)
tls_disable_time_checks=1
- ignore certificate expiration time
For now, only the GnuTLS TLS wrapper implements support for these.
Jouni Malinen [Sun, 20 Dec 2009 17:14:17 +0000 (19:14 +0200)]
GnuTLS: Report certificate validation failures with TLS alert
In addition, show more detailed reason for the failure in debug log.
Jouni Malinen [Sun, 20 Dec 2009 17:12:59 +0000 (19:12 +0200)]
OpenSSL: Fix memleak in previous wpabuf changes on an error path
Jouni Malinen [Sun, 20 Dec 2009 17:11:43 +0000 (19:11 +0200)]
Check TLS status on EAP server during handshake
The new TLS wrapper use may end up returning alert data and we need to
make sure here that it does not end up getting interpreted as success
due to non-NULL response.
Jouni Malinen [Sun, 20 Dec 2009 16:31:56 +0000 (18:31 +0200)]
GnuTLS: Use struct wpabuf for push/pull buffers
Jouni Malinen [Sun, 20 Dec 2009 16:17:55 +0000 (18:17 +0200)]
Convert TLS wrapper to use struct wpabuf
This converts tls_connection_handshake(),
tls_connection_server_handshake(), tls_connection_encrypt(), and
tls_connection_decrypt() to use struct wpa_buf to allow higher layer
code to be cleaned up with consistent struct wpabuf use.
Jouni Malinen [Sun, 20 Dec 2009 16:14:20 +0000 (18:14 +0200)]
Add empty FIPS PRF wrapper for CryptoAPI
Jouni Malinen [Sun, 20 Dec 2009 16:13:42 +0000 (18:13 +0200)]
Add empty crypto_mod_exp() wrapper for CryptoAPI.
Jouni Malinen [Sun, 20 Dec 2009 16:10:10 +0000 (18:10 +0200)]
Fix MinGW build: CertCreateCertificateContext() is now known
Jouni Malinen [Sun, 20 Dec 2009 15:48:55 +0000 (17:48 +0200)]
eloop_win: Fix build after eloop user_data removal
Jouni Malinen [Sun, 20 Dec 2009 15:22:25 +0000 (17:22 +0200)]
Fix lastReqData freeing to use wpabuf_free()
Jouni Malinen [Sun, 20 Dec 2009 11:11:31 +0000 (13:11 +0200)]
wpabuf: Add WPA_TRACE code to validate correct freeing of wpabuf
Use an extra header to move the returned pointer to break os_free()
or free() of the returned value and verify that the correct magic
is present when freeing or resizing the wpabuf. Show backtrace on
invalid wpabuf use.
Jouni Malinen [Sun, 20 Dec 2009 10:52:54 +0000 (12:52 +0200)]
wpabuf: Allow wpabuf_resize(NULL, len) to be used
This matches with realloc() usage, i.e., allocate a new buffer if no
buffer was specified.
Jouni Malinen [Sun, 20 Dec 2009 09:39:45 +0000 (11:39 +0200)]
EAP-FAST server: Piggyback Phase 2 start with end of Phase 1
If Finished message from peer has been received before the server
Finished message, start Phase 2 with the same message to avoid extra
roundtrip when the peer does not have anything to send after the server
Finished message.
Jouni Malinen [Sat, 19 Dec 2009 21:47:54 +0000 (23:47 +0200)]
WPS ER: Delay wpa_supplicant termination to allow unsubscription
Instead of forcefully deinitializing ER immediately, give it some
time to complete unsubscription and call eloop_terminate() only once
ER code has completed its work.
Jouni Malinen [Sat, 19 Dec 2009 21:20:22 +0000 (23:20 +0200)]
WPS ER: Unsubscribe from AP events whenever removing the AP entry
Store the subscription identifier during subscription process and use
this to unsubscribe from events when removing the AP.
Jouni Malinen [Sat, 19 Dec 2009 20:26:55 +0000 (22:26 +0200)]
WPS: Convert Registrar PIN list to use struct dl_list
Jouni Malinen [Sat, 19 Dec 2009 20:26:36 +0000 (22:26 +0200)]
hostapd_cli: Use os_program_{init,deinit}