aboutsummaryrefslogtreecommitdiffstats
path: root/src/wps
diff options
context:
space:
mode:
authorSubrat Dash <sdash@qca.qualcomm.com>2011-11-30 16:48:14 +0200
committerJouni Malinen <j@w1.fi>2011-11-30 16:48:14 +0200
commit910b482d9bdab425eb3e2e8a3e05bc9df1335ff2 (patch)
tree9cda8463c9f2742e872282decfde2f6d420a9176 /src/wps
parentd6d731b848d8d44b5a1db2e6d6b56625f2b83859 (diff)
downloadexternal_wpa_supplicant_8_ti-910b482d9bdab425eb3e2e8a3e05bc9df1335ff2.zip
external_wpa_supplicant_8_ti-910b482d9bdab425eb3e2e8a3e05bc9df1335ff2.tar.gz
external_wpa_supplicant_8_ti-910b482d9bdab425eb3e2e8a3e05bc9df1335ff2.tar.bz2
WPS: Fix stopping of active WPS operation on dual concurrent AP
When hostapd controls multiple radios, WPS operations are started on all interfaces. However, when the provisioning run had been completed successfully, actiove WPS mode was stopped only a single interface. Fix this to iterate through all interfaces so that this is handled consistently with the starting of WPS operation. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
Diffstat (limited to 'src/wps')
-rw-r--r--src/wps/wps.h1
-rw-r--r--src/wps/wps_registrar.c12
2 files changed, 13 insertions, 0 deletions
diff --git a/src/wps/wps.h b/src/wps/wps.h
index cdafc27..4986881 100644
--- a/src/wps/wps.h
+++ b/src/wps/wps.h
@@ -784,6 +784,7 @@ int wps_registrar_wps_cancel(struct wps_registrar *reg);
int wps_registrar_unlock_pin(struct wps_registrar *reg, const u8 *uuid);
int wps_registrar_button_pushed(struct wps_registrar *reg,
const u8 *p2p_dev_addr);
+void wps_registrar_complete(struct wps_registrar *registrar, const u8 *uuid_e);
void wps_registrar_probe_req_rx(struct wps_registrar *reg, const u8 *addr,
const struct wpabuf *wps_data,
int p2p_wildcard);
diff --git a/src/wps/wps_registrar.c b/src/wps/wps_registrar.c
index 66ed410..e59edb8 100644
--- a/src/wps/wps_registrar.c
+++ b/src/wps/wps_registrar.c
@@ -941,6 +941,18 @@ static void wps_registrar_pin_completed(struct wps_registrar *reg)
}
+void wps_registrar_complete(struct wps_registrar *registrar, const u8 *uuid_e)
+{
+ if (registrar->pbc) {
+ wps_registrar_remove_pbc_session(registrar,
+ uuid_e);
+ wps_registrar_pbc_completed(registrar);
+ } else {
+ wps_registrar_pin_completed(registrar);
+ }
+}
+
+
int wps_registrar_wps_cancel(struct wps_registrar *reg)
{
if (reg->pbc) {