From patchwork Thu May 3 13:16:53 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [4/7] Adding ctrl iface command for autoscan From: Tomasz Bursztyka X-Patchwork-Id: 156696 Message-Id: <1336051016-15005-5-git-send-email-tomasz.bursztyka@linux.intel.com> To: hostap@lists.shmoo.com Date: Thu, 3 May 2012 16:16:53 +0300 Signed-hostap: Tomasz Bursztyka --- wpa_supplicant/ctrl_iface.c | 34 ++++++++++++++++++++++++++++++++++ 1 files changed, 34 insertions(+), 0 deletions(-) diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index 538f8df..8554094 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -35,6 +35,7 @@ #include "interworking.h" #include "blacklist.h" #include "wpas_glue.h" +#include "autoscan.h" extern struct wpa_driver_ops *wpa_drivers[]; @@ -3713,6 +3714,34 @@ static int wpa_supplicant_ctrl_iface_sta_autoconnect( } +#ifdef CONFIG_AUTOSCAN + +static int wpa_supplicant_ctrl_iface_autoscan(struct wpa_supplicant *wpa_s, + char *cmd) +{ + enum wpa_states state = wpa_s->wpa_state; + + if (wpa_s->conf->autoscan != NULL) { + os_free(wpa_s->conf->autoscan); + wpa_s->conf->autoscan = NULL; + } + + if (cmd != NULL && os_strlen(cmd) > 0) { + wpa_s->conf->autoscan = os_strdup(cmd); + if (wpa_s->conf->autoscan == NULL) + return -1; + + if (state == WPA_DISCONNECTED || state == WPA_INACTIVE) + autoscan_init(wpa_s); + } else if (os_strlen(cmd) == 0) + autoscan_deinit(wpa_s); + + return 0; +} + +#endif /* CONFIG_AUTOSCAN */ + + static int wpa_supplicant_signal_poll(struct wpa_supplicant *wpa_s, char *buf, size_t buflen) { @@ -4183,6 +4212,11 @@ char * wpa_supplicant_ctrl_iface_process(struct wpa_supplicant *wpa_s, } else if (os_strncmp(buf, "SIGNAL_POLL", 11) == 0) { reply_len = wpa_supplicant_signal_poll(wpa_s, reply, reply_size); +#ifdef CONFIG_AUTOSCAN + } else if (os_strncmp(buf, "AUTOSCAN ", 9) == 0) { + if (wpa_supplicant_ctrl_iface_autoscan(wpa_s, buf + 9)) + reply_len = -1; +#endif /* CONFIG_AUTOSCAN */ } else if (os_strcmp(buf, "REAUTHENTICATE") == 0) { eapol_sm_request_reauth(wpa_s->eapol); } else {