Home | History | Annotate | Download | only in wpa_supplicant

Lines Matching refs:wpa_s

36 static void wpas_clear_wps(struct wpa_supplicant *wpa_s);
39 int wpas_wps_eapol_cb(struct wpa_supplicant *wpa_s)
41 if (!wpa_s->wps_success &&
42 wpa_s->current_ssid &&
43 eap_is_wps_pin_enrollee(&wpa_s->current_ssid->eap)) {
44 const u8 *bssid = wpa_s->bssid;
46 bssid = wpa_s->pending_bssid;
51 wpa_blacklist_add(wpa_s, bssid);
53 wpa_supplicant_deauthenticate(wpa_s,
55 wpa_s->reassociate = 1;
56 wpa_supplicant_req_scan(wpa_s,
57 wpa_s->blacklist_cleared ? 5 : 0, 0);
58 wpa_s->blacklist_cleared = 0;
62 eloop_cancel_timeout(wpas_wps_timeout, wpa_s, NULL);
64 if (wpa_s->key_mgmt == WPA_KEY_MGMT_WPS && wpa_s->current_ssid &&
65 !(wpa_s->current_ssid->key_mgmt & WPA_KEY_MGMT_WPS)) {
68 wpa_supplicant_deauthenticate(wpa_s,
70 wpa_s->reassociate = 1;
71 wpa_supplicant_req_scan(wpa_s, 0, 0);
75 if (wpa_s->key_mgmt == WPA_KEY_MGMT_WPS && wpa_s->current_ssid) {
78 wpas_clear_wps(wpa_s);
79 wpa_supplicant_deauthenticate(wpa_s,
88 static void wpas_wps_security_workaround(struct wpa_supplicant *wpa_s,
107 if (wpa_drv_get_capa(wpa_s, &capa))
110 if (wpa_supplicant_get_scan_results(wpa_s) || wpa_s->scan_res == NULL)
114 for (i = 0; i < wpa_s->scan_res->num; i++) {
115 bss = wpa_s->scan_res->res[i];
129 if (i == wpa_s->scan_res->num) {
165 if (wpa_s->conf->ap_scan == 1)
176 if (wpa_s->conf->ap_scan == 1)
187 struct wpa_supplicant *wpa_s = ctx;
188 struct wpa_ssid *ssid = wpa_s->current_ssid;
192 if ((wpa_s->conf->wps_cred_processing == 1 ||
193 wpa_s->conf->wps_cred_processing == 2) && cred->cred_attr) {
199 wpa_msg(wpa_s, MSG_INFO, "%s%s",
203 wpa_supplicant_dbus_notify_wps_cred(wpa_s, cred);
205 wpa_msg(wpa_s, MSG_INFO, WPS_EVENT_CRED_RECEIVED);
210 if (wpa_s->conf->wps_cred_processing == 1)
253 ssid = wpa_config_add_network(wpa_s->conf);
368 wpas_wps_security_workaround(wpa_s, ssid, cred);
371 if (wpa_s->conf->update_config &&
372 wpa_config_write(wpa_s->confname, wpa_s->conf)) {
382 static void wpa_supplicant_wps_event_m2d(struct wpa_supplicant *wpa_s,
385 wpa_msg(wpa_s, MSG_INFO, WPS_EVENT_M2D
391 static void wpa_supplicant_wps_event_fail(struct wpa_supplicant *wpa_s,
394 wpa_msg(wpa_s, MSG_INFO, WPS_EVENT_FAIL "msg=%d", fail->msg);
395 wpas_clear_wps(wpa_s);
399 static void wpa_supplicant_wps_event_success(struct wpa_supplicant *wpa_s)
401 wpa_msg(wpa_s, MSG_INFO, WPS_EVENT_SUCCESS);
402 wpa_s->wps_success = 1;
409 struct wpa_supplicant *wpa_s = ctx;
412 wpa_supplicant_wps_event_m2d(wpa_s, &data->m2d);
415 wpa_supplicant_wps_event_fail(wpa_s, &data->fail);
418 wpa_supplicant_wps_event_success(wpa_s);
440 static void wpas_clear_wps(struct wpa_supplicant *wpa_s)
445 eloop_cancel_timeout(wpas_wps_timeout, wpa_s, NULL);
448 ssid = wpa_s->conf->ssid;
451 if (ssid == wpa_s->current_ssid)
452 wpa_s->current_ssid = NULL;
458 wpa_config_remove_network(wpa_s->conf, id);
465 struct wpa_supplicant *wpa_s = eloop_ctx;
468 wpas_clear_wps(wpa_s);
472 static struct wpa_ssid * wpas_wps_add_network(struct wpa_supplicant *wpa_s,
477 ssid = wpa_config_add_network(wpa_s->conf);
486 wpa_config_remove_network(wpa_s->conf, ssid->id);
498 if (wpa_s->scan_res == NULL &&
499 wpa_supplicant_get_scan_results(wpa_s) < 0)
502 for (i = 0; i < wpa_s->scan_res->num; i++) {
506 res = wpa_s->scan_res->res[i];
538 static void wpas_wps_reassoc(struct wpa_supplicant *wpa_s,
544 ssid = wpa_s->conf->ssid;
549 wpa_s->disconnected = 0;
550 wpa_s->reassociate = 1;
551 wpa_s->scan_runs = 0;
552 wpa_s->wps_success = 0;
553 wpa_s->blacklist_cleared = 0;
554 wpa_supplicant_req_scan(wpa_s, 0, 0);
558 int wpas_wps_start_pbc(struct wpa_supplicant *wpa_s, const u8 *bssid)
561 wpas_clear_wps(wpa_s);
562 ssid = wpas_wps_add_network(wpa_s, 0, bssid);
567 wpa_s, NULL);
568 wpas_wps_reassoc(wpa_s, ssid);
573 int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid,
580 wpas_clear_wps(wpa_s);
581 ssid = wpas_wps_add_network(wpa_s, 0, bssid);
592 wpa_s, NULL);
593 wpas_wps_reassoc(wpa_s, ssid);
598 int wpas_wps_start_reg(struct wpa_supplicant *wpa_s, const u8 *bssid,
606 wpas_clear_wps(wpa_s);
607 ssid = wpas_wps_add_network(wpa_s, 1, bssid);
613 wpa_s, NULL);
614 wpas_wps_reassoc(wpa_s, ssid);
651 int wpas_wps_init(struct wpa_supplicant *wpa_s)
662 wps->cb_ctx = wpa_s;
664 wps->dev.device_name = wpa_s->conf->device_name;
665 wps->dev.manufacturer = wpa_s->conf->manufacturer;
666 wps->dev.model_name = wpa_s->conf->model_name;
667 wps->dev.model_number = wpa_s->conf->model_number;
668 wps->dev.serial_number = wpa_s->conf->serial_number;
669 if (wpa_s->conf->device_type) {
673 wps->dev.categ = atoi(wpa_s->conf->device_type);
674 pos = os_strchr(wpa_s->conf->device_type, '-');
696 wps->dev.os_version = WPA_GET_BE32(wpa_s->conf->os_version);
698 os_memcpy(wps->dev.mac_addr, wpa_s->own_addr, ETH_ALEN);
699 if (is_nil_uuid(wpa_s->conf->uuid)) {
700 uuid_gen_mac_addr(wpa_s->own_addr, wps->uuid);
704 os_memcpy(wps->uuid, wpa_s->conf->uuid, WPS_UUID_LEN);
712 rcfg.cb_ctx = wpa_s;
721 wpa_s->wps = wps;
727 void wpas_wps_deinit(struct wpa_supplicant *wpa_s)
729 eloop_cancel_timeout(wpas_wps_timeout, wpa_s, NULL);
731 if (wpa_s->wps == NULL)
734 wps_registrar_deinit(wpa_s->wps->registrar);
735 os_free(wpa_s->wps->network_key);
736 os_free(wpa_s->wps);
737 wpa_s->wps = NULL;
741 int wpas_wps_ssid_bss_match(struct wpa_supplicant *wpa_s,
783 if (wpa_s->scan_runs < WPS_PIN_SCAN_IGNORE_SEL_REG) {
808 int wpas_wps_ssid_wildcard_ok(struct wpa_supplicant *wpa_s,
825 wpa_s->scan_runs >= WPS_PIN_SCAN_IGNORE_SEL_REG)) {
843 int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
862 for (i = 0; i < wpa_s->scan_res->num; i++) {
863 struct wpa_scan_res *bss = wpa_s->scan_res->res[i];
893 void wpas_wps_notify_scan_results(struct wpa_supplicant *wpa_s)
897 if (wpa_s->disconnected || wpa_s->wpa_state >= WPA_ASSOCIATED)
900 for (i = 0; i < wpa_s->scan_res->num; i++) {
901 struct wpa_scan_res *bss = wpa_s->scan_res->res[i];
907 wpa_msg(wpa_s, MSG_INFO, WPS_EVENT_AP_AVAILABLE_PBC);
909 wpa_msg(wpa_s, MSG_INFO, WPS_EVENT_AP_AVAILABLE_PIN);
911 wpa_msg(wpa_s, MSG_INFO, WPS_EVENT_AP_AVAILABLE);
918 int wpas_wps_searching(struct wpa_supplicant *wpa_s)
922 for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next) {