Lines Matching refs:wpa_s

34 static int wpas_dpp_listen_start(struct wpa_supplicant *wpa_s,
38 static void wpas_dpp_auth_success(struct wpa_supplicant *wpa_s, int initiator);
39 static void wpas_dpp_tx_status(struct wpa_supplicant *wpa_s,
45 static int wpas_dpp_auth_init_next(struct wpa_supplicant *wpa_s);
47 wpas_dpp_tx_pkex_status(struct wpa_supplicant *wpa_s,
56 static void wpas_dpp_start_gas_client(struct wpa_supplicant *wpa_s);
75 int wpas_dpp_qr_code(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_qr_code() argument
78 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_qr_code()
80 bi = dpp_add_qr_code(wpa_s->dpp, cmd); in wpas_dpp_qr_code()
88 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR in wpas_dpp_qr_code()
92 offchannel_send_action(wpa_s, auth->curr_freq, in wpas_dpp_qr_code()
93 auth->peer_mac_addr, wpa_s->own_addr, in wpas_dpp_qr_code()
101 dpp_controller_new_qr_code(wpa_s->dpp, bi); in wpas_dpp_qr_code()
114 int wpas_dpp_nfc_uri(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_nfc_uri() argument
118 bi = dpp_add_nfc_uri(wpa_s->dpp, cmd); in wpas_dpp_nfc_uri()
126 int wpas_dpp_nfc_handover_req(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_nfc_handover_req() argument
135 own_bi = dpp_bootstrap_get_id(wpa_s->dpp, atoi(pos)); in wpas_dpp_nfc_handover_req()
144 peer_bi = dpp_add_nfc_uri(wpa_s->dpp, pos); in wpas_dpp_nfc_handover_req()
158 int wpas_dpp_nfc_handover_sel(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_nfc_handover_sel() argument
167 own_bi = dpp_bootstrap_get_id(wpa_s->dpp, atoi(pos)); in wpas_dpp_nfc_handover_sel()
176 peer_bi = dpp_add_nfc_uri(wpa_s->dpp, pos); in wpas_dpp_nfc_handover_sel()
195 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_auth_resp_retry_timeout() local
196 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_auth_resp_retry_timeout()
203 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR in wpas_dpp_auth_resp_retry_timeout()
207 offchannel_send_action(wpa_s, auth->curr_freq, auth->peer_mac_addr, in wpas_dpp_auth_resp_retry_timeout()
208 wpa_s->own_addr, broadcast, in wpas_dpp_auth_resp_retry_timeout()
215 static void wpas_dpp_auth_resp_retry(struct wpa_supplicant *wpa_s) in wpas_dpp_auth_resp_retry() argument
217 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_auth_resp_retry()
223 if (wpa_s->dpp_resp_max_tries) in wpas_dpp_auth_resp_retry()
224 max_tries = wpa_s->dpp_resp_max_tries; in wpas_dpp_auth_resp_retry()
230 offchannel_send_action_done(wpa_s); in wpas_dpp_auth_resp_retry()
231 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_auth_resp_retry()
232 wpa_s->dpp_auth = NULL; in wpas_dpp_auth_resp_retry()
236 if (wpa_s->dpp_resp_retry_time) in wpas_dpp_auth_resp_retry()
237 wait_time = wpa_s->dpp_resp_retry_time; in wpas_dpp_auth_resp_retry()
240 if (wpa_s->dpp_tx_chan_change) { in wpas_dpp_auth_resp_retry()
241 wpa_s->dpp_tx_chan_change = false; in wpas_dpp_auth_resp_retry()
249 eloop_cancel_timeout(wpas_dpp_auth_resp_retry_timeout, wpa_s, NULL); in wpas_dpp_auth_resp_retry()
252 wpas_dpp_auth_resp_retry_timeout, wpa_s, NULL); in wpas_dpp_auth_resp_retry()
256 static void wpas_dpp_try_to_connect(struct wpa_supplicant *wpa_s) in wpas_dpp_try_to_connect() argument
259 wpa_s->suitable_network = 0; in wpas_dpp_try_to_connect()
260 wpa_s->no_suitable_network = 0; in wpas_dpp_try_to_connect()
261 wpa_s->disconnected = 0; in wpas_dpp_try_to_connect()
262 wpa_s->reassociate = 1; in wpas_dpp_try_to_connect()
263 wpa_s->scan_runs = 0; in wpas_dpp_try_to_connect()
264 wpa_s->normal_scans = 0; in wpas_dpp_try_to_connect()
265 wpa_supplicant_cancel_sched_scan(wpa_s); in wpas_dpp_try_to_connect()
266 wpa_supplicant_req_scan(wpa_s, 0, 0); in wpas_dpp_try_to_connect()
272 static void wpas_dpp_stop_listen_for_tx(struct wpa_supplicant *wpa_s, in wpas_dpp_stop_listen_for_tx() argument
279 if (!wpa_s->dpp_listen_freq) in wpas_dpp_stop_listen_for_tx()
283 if (os_reltime_before(&now, &wpa_s->dpp_listen_end)) { in wpas_dpp_stop_listen_for_tx()
284 os_reltime_sub(&wpa_s->dpp_listen_end, &now, &res); in wpas_dpp_stop_listen_for_tx()
289 if (wpa_s->dpp_listen_freq == freq && remaining > wait_time) in wpas_dpp_stop_listen_for_tx()
294 wpa_s->dpp_listen_freq, remaining, freq, wait_time); in wpas_dpp_stop_listen_for_tx()
295 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_stop_listen_for_tx()
304 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_conn_status_result_timeout() local
305 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_conn_status_result_timeout()
309 !dpp_tcp_conn_status_requested(wpa_s->dpp)) in wpas_dpp_conn_status_result_timeout()
314 if (wpa_s->suitable_network) in wpas_dpp_conn_status_result_timeout()
316 else if (wpa_s->no_suitable_network) in wpas_dpp_conn_status_result_timeout()
320 if (wpa_s->wpa_state == WPA_SCANNING) in wpas_dpp_conn_status_result_timeout()
321 wpas_abort_ongoing_scan(wpa_s); in wpas_dpp_conn_status_result_timeout()
322 wpas_dpp_send_conn_status_result(wpa_s, result); in wpas_dpp_conn_status_result_timeout()
326 static char * wpas_dpp_scan_channel_list(struct wpa_supplicant *wpa_s) in wpas_dpp_scan_channel_list() argument
334 if (!wpa_s->last_scan_freqs || !wpa_s->num_last_scan_freqs) in wpas_dpp_scan_channel_list()
337 len = wpa_s->num_last_scan_freqs * 8; in wpas_dpp_scan_channel_list()
344 for (i = 0; i < wpa_s->num_last_scan_freqs; i++) { in wpas_dpp_scan_channel_list()
348 mode = ieee80211_freq_to_channel_ext(wpa_s->last_scan_freqs[i], in wpas_dpp_scan_channel_list()
374 void wpas_dpp_send_conn_status_result(struct wpa_supplicant *wpa_s, in wpas_dpp_send_conn_status_result() argument
380 struct wpa_ssid *ssid = wpa_s->current_ssid; in wpas_dpp_send_conn_status_result()
381 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_send_conn_status_result()
383 eloop_cancel_timeout(wpas_dpp_conn_status_result_timeout, wpa_s, NULL); in wpas_dpp_send_conn_status_result()
386 !dpp_tcp_conn_status_requested(wpa_s->dpp)) in wpas_dpp_send_conn_status_result()
393 channel_list_buf = wpas_dpp_scan_channel_list(wpa_s); in wpas_dpp_send_conn_status_result()
398 dpp_tcp_send_conn_status(wpa_s->dpp, result, in wpas_dpp_send_conn_status_result()
400 wpa_s->dpp_last_ssid, in wpas_dpp_send_conn_status_result()
402 wpa_s->dpp_last_ssid_len, in wpas_dpp_send_conn_status_result()
412 wpa_s->dpp_last_ssid, in wpas_dpp_send_conn_status_result()
414 wpa_s->dpp_last_ssid_len, in wpas_dpp_send_conn_status_result()
418 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_send_conn_status_result()
419 wpa_s->dpp_auth = NULL; in wpas_dpp_send_conn_status_result()
423 wpa_msg(wpa_s, MSG_INFO, in wpas_dpp_send_conn_status_result()
427 offchannel_send_action(wpa_s, auth->curr_freq, in wpas_dpp_send_conn_status_result()
428 auth->peer_mac_addr, wpa_s->own_addr, broadcast, in wpas_dpp_send_conn_status_result()
442 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_connected_timeout() local
443 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_connected_timeout()
446 dpp_tcp_conn_status_requested(wpa_s->dpp)) in wpas_dpp_connected_timeout()
447 wpas_dpp_send_conn_status_result(wpa_s, DPP_STATUS_OK); in wpas_dpp_connected_timeout()
451 void wpas_dpp_connected(struct wpa_supplicant *wpa_s) in wpas_dpp_connected() argument
453 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_connected()
456 dpp_tcp_conn_status_requested(wpa_s->dpp)) { in wpas_dpp_connected()
462 wpa_s, NULL); in wpas_dpp_connected()
471 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_drv_wait_timeout() local
472 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_drv_wait_timeout()
478 wpas_dpp_auth_init_next(wpa_s); in wpas_dpp_drv_wait_timeout()
488 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_neg_freq_timeout() local
489 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_neg_freq_timeout()
491 if (!wpa_s->dpp_listen_on_tx_expire || !auth || !auth->neg_freq) in wpas_dpp_neg_freq_timeout()
497 wpas_dpp_listen_start(wpa_s, auth->neg_freq); in wpas_dpp_neg_freq_timeout()
501 static void wpas_dpp_tx_status(struct wpa_supplicant *wpa_s, in wpas_dpp_tx_status() argument
508 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_tx_status()
515 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX_STATUS "dst=" MACSTR in wpas_dpp_tx_status()
518 if (!wpa_s->dpp_auth) { in wpas_dpp_tx_status()
529 wpas_dpp_try_to_connect(wpa_s); in wpas_dpp_tx_status()
535 wpa_s, NULL); in wpas_dpp_tx_status()
538 wpa_s, NULL); in wpas_dpp_tx_status()
540 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_tx_status()
541 wpa_s->dpp_auth = NULL; in wpas_dpp_tx_status()
547 if (wpa_s->dpp_auth->remove_on_tx_status) { in wpas_dpp_tx_status()
550 eloop_cancel_timeout(wpas_dpp_init_timeout, wpa_s, NULL); in wpas_dpp_tx_status()
551 eloop_cancel_timeout(wpas_dpp_reply_wait_timeout, wpa_s, NULL); in wpas_dpp_tx_status()
552 eloop_cancel_timeout(wpas_dpp_auth_conf_wait_timeout, wpa_s, in wpas_dpp_tx_status()
554 eloop_cancel_timeout(wpas_dpp_auth_resp_retry_timeout, wpa_s, in wpas_dpp_tx_status()
558 wpa_s, NULL); in wpas_dpp_tx_status()
560 offchannel_send_action_done(wpa_s); in wpas_dpp_tx_status()
561 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_tx_status()
562 wpa_s->dpp_auth = NULL; in wpas_dpp_tx_status()
566 if (wpa_s->dpp_auth_ok_on_ack) in wpas_dpp_tx_status()
567 wpas_dpp_auth_success(wpa_s, 1); in wpas_dpp_tx_status()
576 offchannel_send_action_done(wpa_s); in wpas_dpp_tx_status()
582 wpa_s, NULL); in wpas_dpp_tx_status()
586 wpas_dpp_auth_resp_retry(wpa_s); in wpas_dpp_tx_status()
596 eloop_cancel_timeout(wpas_dpp_auth_conf_wait_timeout, wpa_s, in wpas_dpp_tx_status()
599 wpa_s, NULL); in wpas_dpp_tx_status()
609 if (!wpa_s->dpp_auth_ok_on_ack && wpa_s->dpp_auth->neg_freq > 0 && in wpas_dpp_tx_status()
610 wpa_s->dpp_auth->curr_freq != wpa_s->dpp_auth->neg_freq) { in wpas_dpp_tx_status()
613 wpa_s->dpp_auth->curr_freq, in wpas_dpp_tx_status()
614 wpa_s->dpp_auth->neg_freq); in wpas_dpp_tx_status()
615 offchannel_send_action_done(wpa_s); in wpas_dpp_tx_status()
616 wpa_s->dpp_listen_on_tx_expire = true; in wpas_dpp_tx_status()
618 wpa_s, NULL); in wpas_dpp_tx_status()
621 if (wpa_s->dpp_auth_ok_on_ack) in wpas_dpp_tx_status()
622 wpa_s->dpp_auth_ok_on_ack = 0; in wpas_dpp_tx_status()
628 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_reply_wait_timeout() local
629 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_reply_wait_timeout()
637 wait_time = wpa_s->dpp_resp_wait_time ? in wpas_dpp_reply_wait_timeout()
638 wpa_s->dpp_resp_wait_time : 2000; in wpas_dpp_reply_wait_timeout()
640 os_reltime_sub(&now, &wpa_s->dpp_last_init, &diff); in wpas_dpp_reply_wait_timeout()
651 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_AUTH_INIT_FAILED); in wpas_dpp_reply_wait_timeout()
652 offchannel_send_action_done(wpa_s); in wpas_dpp_reply_wait_timeout()
653 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_reply_wait_timeout()
655 wpa_s->dpp_auth = NULL; in wpas_dpp_reply_wait_timeout()
664 offchannel_send_action_done(wpa_s); in wpas_dpp_reply_wait_timeout()
665 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_reply_wait_timeout()
666 wpas_dpp_auth_init_next(wpa_s); in wpas_dpp_reply_wait_timeout()
684 wpa_s->dpp_in_response_listen = 1; in wpas_dpp_reply_wait_timeout()
685 wpas_dpp_listen_start(wpa_s, freq); in wpas_dpp_reply_wait_timeout()
688 wpas_dpp_reply_wait_timeout, wpa_s, NULL); in wpas_dpp_reply_wait_timeout()
694 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_auth_conf_wait_timeout() local
695 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_auth_conf_wait_timeout()
702 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL "No Auth Confirm received"); in wpas_dpp_auth_conf_wait_timeout()
703 offchannel_send_action_done(wpa_s); in wpas_dpp_auth_conf_wait_timeout()
705 wpa_s->dpp_auth = NULL; in wpas_dpp_auth_conf_wait_timeout()
709 static void wpas_dpp_set_testing_options(struct wpa_supplicant *wpa_s, in wpas_dpp_set_testing_options() argument
713 if (wpa_s->dpp_config_obj_override) in wpas_dpp_set_testing_options()
715 os_strdup(wpa_s->dpp_config_obj_override); in wpas_dpp_set_testing_options()
716 if (wpa_s->dpp_discovery_override) in wpas_dpp_set_testing_options()
718 os_strdup(wpa_s->dpp_discovery_override); in wpas_dpp_set_testing_options()
719 if (wpa_s->dpp_groups_override) in wpas_dpp_set_testing_options()
721 os_strdup(wpa_s->dpp_groups_override); in wpas_dpp_set_testing_options()
723 wpa_s->dpp_ignore_netaccesskey_mismatch; in wpas_dpp_set_testing_options()
730 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_init_timeout() local
732 if (!wpa_s->dpp_auth) in wpas_dpp_init_timeout()
735 wpas_dpp_auth_init_next(wpa_s); in wpas_dpp_init_timeout()
739 static int wpas_dpp_auth_init_next(struct wpa_supplicant *wpa_s) in wpas_dpp_auth_init_next() argument
741 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_auth_init_next()
746 eloop_cancel_timeout(wpas_dpp_drv_wait_timeout, wpa_s, NULL); in wpas_dpp_auth_init_next()
748 wpa_s->dpp_in_response_listen = 0; in wpas_dpp_auth_init_next()
753 os_get_reltime(&wpa_s->dpp_init_iter_start); in wpas_dpp_auth_init_next()
757 if (wpa_s->dpp_init_max_tries) in wpas_dpp_auth_init_next()
758 max_tries = wpa_s->dpp_init_max_tries; in wpas_dpp_auth_init_next()
764 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_AUTH_INIT_FAILED); in wpas_dpp_auth_init_next()
766 wpa_s, NULL); in wpas_dpp_auth_init_next()
767 offchannel_send_action_done(wpa_s); in wpas_dpp_auth_init_next()
768 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_auth_init_next()
769 wpa_s->dpp_auth = NULL; in wpas_dpp_auth_init_next()
773 eloop_cancel_timeout(wpas_dpp_init_timeout, wpa_s, NULL); in wpas_dpp_auth_init_next()
774 if (wpa_s->dpp_init_retry_time) in wpas_dpp_auth_init_next()
775 wait_time = wpa_s->dpp_init_retry_time; in wpas_dpp_auth_init_next()
779 os_reltime_sub(&now, &wpa_s->dpp_init_iter_start, &diff); in wpas_dpp_auth_init_next()
789 wpas_dpp_init_timeout, wpa_s, in wpas_dpp_auth_init_next()
802 wpa_s->dpp_auth_ok_on_ack = 0; in wpas_dpp_auth_init_next()
803 eloop_cancel_timeout(wpas_dpp_reply_wait_timeout, wpa_s, NULL); in wpas_dpp_auth_init_next()
804 wait_time = wpa_s->max_remain_on_chan; in wpas_dpp_auth_init_next()
805 max_wait_time = wpa_s->dpp_resp_wait_time ? in wpas_dpp_auth_init_next()
806 wpa_s->dpp_resp_wait_time : 2000; in wpas_dpp_auth_init_next()
812 wpa_s, NULL); in wpas_dpp_auth_init_next()
819 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_auth_init_next()
822 os_get_reltime(&wpa_s->dpp_last_init); in wpas_dpp_auth_init_next()
823 return offchannel_send_action(wpa_s, freq, dst, in wpas_dpp_auth_init_next()
824 wpa_s->own_addr, broadcast, in wpas_dpp_auth_init_next()
831 int wpas_dpp_auth_init(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_auth_init() argument
845 wpa_s->dpp_gas_client = 0; in wpas_dpp_auth_init()
846 wpa_s->dpp_gas_server = 0; in wpas_dpp_auth_init()
852 peer_bi = dpp_bootstrap_get_id(wpa_s->dpp, atoi(pos)); in wpas_dpp_auth_init()
891 own_bi = dpp_bootstrap_get_id(wpa_s->dpp, atoi(pos)); in wpas_dpp_auth_init()
924 wpa_s->dpp_netrole = DPP_NETROLE_AP; in wpas_dpp_auth_init()
926 wpa_s->dpp_netrole = DPP_NETROLE_CONFIGURATOR; in wpas_dpp_auth_init()
928 wpa_s->dpp_netrole = DPP_NETROLE_STA; in wpas_dpp_auth_init()
930 wpa_s->dpp_netrole = DPP_NETROLE_STA; in wpas_dpp_auth_init()
937 if (!tcp && wpa_s->dpp_auth) { in wpas_dpp_auth_init()
938 eloop_cancel_timeout(wpas_dpp_init_timeout, wpa_s, NULL); in wpas_dpp_auth_init()
939 eloop_cancel_timeout(wpas_dpp_reply_wait_timeout, wpa_s, NULL); in wpas_dpp_auth_init()
940 eloop_cancel_timeout(wpas_dpp_auth_conf_wait_timeout, wpa_s, in wpas_dpp_auth_init()
942 eloop_cancel_timeout(wpas_dpp_auth_resp_retry_timeout, wpa_s, in wpas_dpp_auth_init()
946 wpa_s, NULL); in wpas_dpp_auth_init()
948 offchannel_send_action_done(wpa_s); in wpas_dpp_auth_init()
949 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_auth_init()
950 wpa_s->dpp_auth = NULL; in wpas_dpp_auth_init()
953 auth = dpp_auth_init(wpa_s->dpp, wpa_s, peer_bi, own_bi, allowed_roles, in wpas_dpp_auth_init()
954 neg_freq, wpa_s->hw.modes, wpa_s->hw.num_modes); in wpas_dpp_auth_init()
957 wpas_dpp_set_testing_options(wpa_s, auth); in wpas_dpp_auth_init()
970 return dpp_tcp_init(wpa_s->dpp, auth, &ipaddr, tcp_port, in wpas_dpp_auth_init()
971 wpa_s->conf->dpp_name, DPP_NETROLE_STA, in wpas_dpp_auth_init()
972 wpa_s->conf->dpp_mud_url, in wpas_dpp_auth_init()
973 wpa_s->conf->dpp_extra_conf_req_name, in wpas_dpp_auth_init()
974 wpa_s->conf->dpp_extra_conf_req_value, in wpas_dpp_auth_init()
975 wpa_s, wpa_s, wpas_dpp_process_conf_obj, in wpas_dpp_auth_init()
979 wpa_s->dpp_auth = auth; in wpas_dpp_auth_init()
980 return wpas_dpp_auth_init_next(wpa_s); in wpas_dpp_auth_init()
1001 static void wpas_dpp_listen_work_done(struct wpa_supplicant *wpa_s) in wpas_dpp_listen_work_done() argument
1005 if (!wpa_s->dpp_listen_work) in wpas_dpp_listen_work_done()
1008 lwork = wpa_s->dpp_listen_work->ctx; in wpas_dpp_listen_work_done()
1010 radio_work_done(wpa_s->dpp_listen_work); in wpas_dpp_listen_work_done()
1011 wpa_s->dpp_listen_work = NULL; in wpas_dpp_listen_work_done()
1017 struct wpa_supplicant *wpa_s = work->wpa_s; in dpp_start_listen_cb() local
1022 wpa_s->dpp_listen_work = NULL; in dpp_start_listen_cb()
1023 wpas_dpp_listen_stop(wpa_s); in dpp_start_listen_cb()
1029 wpa_s->dpp_listen_work = work; in dpp_start_listen_cb()
1031 wpa_s->dpp_pending_listen_freq = lwork->freq; in dpp_start_listen_cb()
1033 if (wpa_drv_remain_on_channel(wpa_s, lwork->freq, in dpp_start_listen_cb()
1034 wpa_s->max_remain_on_chan) < 0) { in dpp_start_listen_cb()
1038 wpa_s->dpp_listen_freq = 0; in dpp_start_listen_cb()
1039 wpas_dpp_listen_work_done(wpa_s); in dpp_start_listen_cb()
1040 wpa_s->dpp_pending_listen_freq = 0; in dpp_start_listen_cb()
1043 wpa_s->off_channel_freq = 0; in dpp_start_listen_cb()
1044 wpa_s->roc_waiting_drv_freq = lwork->freq; in dpp_start_listen_cb()
1045 wpa_drv_dpp_listen(wpa_s, true); in dpp_start_listen_cb()
1046 wpa_s->dpp_tx_auth_resp_on_roc_stop = false; in dpp_start_listen_cb()
1047 wpa_s->dpp_tx_chan_change = false; in dpp_start_listen_cb()
1051 static int wpas_dpp_listen_start(struct wpa_supplicant *wpa_s, in wpas_dpp_listen_start() argument
1056 if (wpa_s->dpp_listen_work) { in wpas_dpp_listen_start()
1062 if (wpa_s->dpp_listen_freq) in wpas_dpp_listen_start()
1063 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_listen_start()
1064 wpa_s->dpp_listen_freq = freq; in wpas_dpp_listen_start()
1071 if (radio_add_work(wpa_s, freq, "dpp-listen", 0, dpp_start_listen_cb, in wpas_dpp_listen_start()
1081 int wpas_dpp_listen(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_listen() argument
1090 wpa_s->dpp_allowed_roles = DPP_CAPAB_CONFIGURATOR; in wpas_dpp_listen()
1092 wpa_s->dpp_allowed_roles = DPP_CAPAB_ENROLLEE; in wpas_dpp_listen()
1094 wpa_s->dpp_allowed_roles = DPP_CAPAB_CONFIGURATOR | in wpas_dpp_listen()
1096 wpa_s->dpp_qr_mutual = os_strstr(cmd, " qr=mutual") != NULL; in wpas_dpp_listen()
1098 wpa_s->dpp_netrole = DPP_NETROLE_AP; in wpas_dpp_listen()
1100 wpa_s->dpp_netrole = DPP_NETROLE_CONFIGURATOR; in wpas_dpp_listen()
1102 wpa_s->dpp_netrole = DPP_NETROLE_STA; in wpas_dpp_listen()
1103 if (wpa_s->dpp_listen_freq == (unsigned int) freq) { in wpas_dpp_listen()
1109 return wpas_dpp_listen_start(wpa_s, freq); in wpas_dpp_listen()
1113 void wpas_dpp_listen_stop(struct wpa_supplicant *wpa_s) in wpas_dpp_listen_stop() argument
1115 wpa_s->dpp_in_response_listen = 0; in wpas_dpp_listen_stop()
1116 if (!wpa_s->dpp_listen_freq) in wpas_dpp_listen_stop()
1120 wpa_s->dpp_listen_freq); in wpas_dpp_listen_stop()
1121 wpa_drv_cancel_remain_on_channel(wpa_s); in wpas_dpp_listen_stop()
1122 wpa_drv_dpp_listen(wpa_s, false); in wpas_dpp_listen_stop()
1123 wpa_s->dpp_listen_freq = 0; in wpas_dpp_listen_stop()
1124 wpas_dpp_listen_work_done(wpa_s); in wpas_dpp_listen_stop()
1125 radio_remove_works(wpa_s, "dpp-listen", 0); in wpas_dpp_listen_stop()
1129 void wpas_dpp_remain_on_channel_cb(struct wpa_supplicant *wpa_s, in wpas_dpp_remain_on_channel_cb() argument
1132 if (wpa_s->dpp_listen_freq != freq) in wpas_dpp_remain_on_channel_cb()
1138 os_get_reltime(&wpa_s->dpp_listen_end); in wpas_dpp_remain_on_channel_cb()
1139 wpa_s->dpp_listen_end.usec += duration * 1000; in wpas_dpp_remain_on_channel_cb()
1140 while (wpa_s->dpp_listen_end.usec >= 1000000) { in wpas_dpp_remain_on_channel_cb()
1141 wpa_s->dpp_listen_end.sec++; in wpas_dpp_remain_on_channel_cb()
1142 wpa_s->dpp_listen_end.usec -= 1000000; in wpas_dpp_remain_on_channel_cb()
1147 static void wpas_dpp_tx_auth_resp(struct wpa_supplicant *wpa_s) in wpas_dpp_tx_auth_resp() argument
1149 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_tx_auth_resp()
1154 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_tx_auth_resp()
1157 offchannel_send_action(wpa_s, auth->curr_freq, in wpas_dpp_tx_auth_resp()
1158 auth->peer_mac_addr, wpa_s->own_addr, broadcast, in wpas_dpp_tx_auth_resp()
1168 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_tx_auth_resp_roc_timeout() local
1169 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_tx_auth_resp_roc_timeout()
1171 if (!auth || !wpa_s->dpp_tx_auth_resp_on_roc_stop) in wpas_dpp_tx_auth_resp_roc_timeout()
1174 wpa_s->dpp_tx_auth_resp_on_roc_stop = false; in wpas_dpp_tx_auth_resp_roc_timeout()
1175 wpa_s->dpp_tx_chan_change = true; in wpas_dpp_tx_auth_resp_roc_timeout()
1178 wpas_dpp_tx_auth_resp(wpa_s); in wpas_dpp_tx_auth_resp_roc_timeout()
1182 void wpas_dpp_cancel_remain_on_channel_cb(struct wpa_supplicant *wpa_s, in wpas_dpp_cancel_remain_on_channel_cb() argument
1186 wpas_dpp_listen_work_done(wpa_s); in wpas_dpp_cancel_remain_on_channel_cb()
1188 if (wpa_s->dpp_auth && wpa_s->dpp_tx_auth_resp_on_roc_stop) { in wpas_dpp_cancel_remain_on_channel_cb()
1190 wpa_s, NULL); in wpas_dpp_cancel_remain_on_channel_cb()
1191 wpa_s->dpp_tx_auth_resp_on_roc_stop = false; in wpas_dpp_cancel_remain_on_channel_cb()
1192 wpa_s->dpp_tx_chan_change = true; in wpas_dpp_cancel_remain_on_channel_cb()
1195 wpas_dpp_tx_auth_resp(wpa_s); in wpas_dpp_cancel_remain_on_channel_cb()
1199 if (wpa_s->dpp_auth && wpa_s->dpp_in_response_listen) { in wpas_dpp_cancel_remain_on_channel_cb()
1203 if (wpa_s->dpp_auth->neg_freq > 0) in wpas_dpp_cancel_remain_on_channel_cb()
1204 new_freq = wpa_s->dpp_auth->neg_freq; in wpas_dpp_cancel_remain_on_channel_cb()
1206 new_freq = wpa_s->dpp_auth->curr_freq; in wpas_dpp_cancel_remain_on_channel_cb()
1210 wpas_dpp_listen_start(wpa_s, new_freq); in wpas_dpp_cancel_remain_on_channel_cb()
1214 if (wpa_s->dpp_listen_freq) { in wpas_dpp_cancel_remain_on_channel_cb()
1216 wpas_dpp_listen_start(wpa_s, wpa_s->dpp_listen_freq); in wpas_dpp_cancel_remain_on_channel_cb()
1221 static void wpas_dpp_rx_auth_req(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_auth_req() argument
1229 if (!wpa_s->dpp) in wpas_dpp_rx_auth_req()
1236 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_rx_auth_req()
1242 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL in wpas_dpp_rx_auth_req()
1252 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL in wpas_dpp_rx_auth_req()
1261 dpp_bootstrap_find_pair(wpa_s->dpp, i_bootstrap, r_bootstrap, in wpas_dpp_rx_auth_req()
1264 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL in wpas_dpp_rx_auth_req()
1271 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL in wpas_dpp_rx_auth_req()
1278 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL in wpas_dpp_rx_auth_req()
1284 if (wpa_s->dpp_auth) { in wpas_dpp_rx_auth_req()
1285 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL in wpas_dpp_rx_auth_req()
1290 wpa_s->dpp_pkex_wait_auth_req = false; in wpas_dpp_rx_auth_req()
1291 wpa_s->dpp_gas_client = 0; in wpas_dpp_rx_auth_req()
1292 wpa_s->dpp_gas_server = 0; in wpas_dpp_rx_auth_req()
1293 wpa_s->dpp_auth_ok_on_ack = 0; in wpas_dpp_rx_auth_req()
1294 wpa_s->dpp_auth = dpp_auth_req_rx(wpa_s->dpp, wpa_s, in wpas_dpp_rx_auth_req()
1295 wpa_s->dpp_allowed_roles, in wpas_dpp_rx_auth_req()
1296 wpa_s->dpp_qr_mutual, in wpas_dpp_rx_auth_req()
1298 if (!wpa_s->dpp_auth) { in wpas_dpp_rx_auth_req()
1302 wpas_dpp_set_testing_options(wpa_s, wpa_s->dpp_auth); in wpas_dpp_rx_auth_req()
1303 if (dpp_set_configurator(wpa_s->dpp_auth, in wpas_dpp_rx_auth_req()
1304 wpa_s->dpp_configurator_params) < 0) { in wpas_dpp_rx_auth_req()
1305 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_rx_auth_req()
1306 wpa_s->dpp_auth = NULL; in wpas_dpp_rx_auth_req()
1309 os_memcpy(wpa_s->dpp_auth->peer_mac_addr, src, ETH_ALEN); in wpas_dpp_rx_auth_req()
1311 if (wpa_s->dpp_listen_freq && in wpas_dpp_rx_auth_req()
1312 wpa_s->dpp_listen_freq != wpa_s->dpp_auth->curr_freq) { in wpas_dpp_rx_auth_req()
1315 wpa_s->dpp_listen_freq, wpa_s->dpp_auth->curr_freq); in wpas_dpp_rx_auth_req()
1316 wpa_s->dpp_tx_auth_resp_on_roc_stop = true; in wpas_dpp_rx_auth_req()
1319 wpa_s, NULL); in wpas_dpp_rx_auth_req()
1320 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_rx_auth_req()
1323 wpa_s->dpp_tx_auth_resp_on_roc_stop = false; in wpas_dpp_rx_auth_req()
1324 wpa_s->dpp_tx_chan_change = false; in wpas_dpp_rx_auth_req()
1326 wpas_dpp_tx_auth_resp(wpa_s); in wpas_dpp_rx_auth_req()
1330 void wpas_dpp_tx_wait_expire(struct wpa_supplicant *wpa_s) in wpas_dpp_tx_wait_expire() argument
1332 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_tx_wait_expire()
1335 if (wpa_s->dpp_listen_on_tx_expire && auth && auth->neg_freq) { in wpas_dpp_tx_wait_expire()
1339 eloop_cancel_timeout(wpas_dpp_neg_freq_timeout, wpa_s, NULL); in wpas_dpp_tx_wait_expire()
1340 wpas_dpp_listen_start(wpa_s, auth->neg_freq); in wpas_dpp_tx_wait_expire()
1344 if (!wpa_s->dpp_gas_server || !auth) { in wpas_dpp_tx_wait_expire()
1347 wpa_s, NULL)) { in wpas_dpp_tx_wait_expire()
1349 wpa_s, NULL); in wpas_dpp_tx_wait_expire()
1353 wpas_dpp_auth_init_next(wpa_s); in wpas_dpp_tx_wait_expire()
1359 if (wpa_s->dpp_listen_work || (int) wpa_s->dpp_listen_freq == freq) in wpas_dpp_tx_wait_expire()
1363 wpa_s->dpp_in_response_listen = 1; in wpas_dpp_tx_wait_expire()
1364 wpas_dpp_listen_start(wpa_s, freq); in wpas_dpp_tx_wait_expire()
1368 static void wpas_dpp_start_gas_server(struct wpa_supplicant *wpa_s) in wpas_dpp_start_gas_server() argument
1370 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_start_gas_server()
1374 auth->curr_freq, auth->neg_freq, wpa_s->dpp_listen_freq, in wpas_dpp_start_gas_server()
1375 !!wpa_s->dpp_listen_work); in wpas_dpp_start_gas_server()
1376 wpa_s->dpp_gas_server = 1; in wpas_dpp_start_gas_server()
1380 static struct wpa_ssid * wpas_dpp_add_network(struct wpa_supplicant *wpa_s, in wpas_dpp_add_network() argument
1392 res = wpa_drv_get_capa(wpa_s, &capa); in wpas_dpp_add_network()
1396 !(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SAE)) { in wpas_dpp_add_network()
1408 ssid = wpa_config_add_network(wpa_s->conf); in wpas_dpp_add_network()
1411 wpas_notify_network_added(wpa_s, ssid); in wpas_dpp_add_network()
1431 wpa_s->conf->dpp_connector_privacy_default; in wpas_dpp_add_network()
1512 if (!wpa_config_get_blob(wpa_s->conf, name)) in wpas_dpp_add_network()
1530 wpa_config_set_blob(wpa_s->conf, blob); in wpas_dpp_add_network()
1547 if (!wpa_config_get_blob(wpa_s->conf, name)) in wpas_dpp_add_network()
1565 wpa_config_set_blob(wpa_s->conf, blob); in wpas_dpp_add_network()
1586 os_memcpy(wpa_s->dpp_last_ssid, conf->ssid, conf->ssid_len); in wpas_dpp_add_network()
1587 wpa_s->dpp_last_ssid_len = conf->ssid_len; in wpas_dpp_add_network()
1591 wpas_notify_network_removed(wpa_s, ssid); in wpas_dpp_add_network()
1592 wpa_config_remove_network(wpa_s->conf, ssid->id); in wpas_dpp_add_network()
1597 static int wpas_dpp_process_config(struct wpa_supplicant *wpa_s, in wpas_dpp_process_config() argument
1603 if (wpa_s->conf->dpp_config_processing < 1) in wpas_dpp_process_config()
1606 ssid = wpas_dpp_add_network(wpa_s, auth, conf); in wpas_dpp_process_config()
1610 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_NETWORK_ID "%d", ssid->id); in wpas_dpp_process_config()
1611 if (wpa_s->conf->dpp_config_processing == 2) in wpas_dpp_process_config()
1615 if (wpa_s->conf->update_config && in wpas_dpp_process_config()
1616 wpa_config_write(wpa_s->confname, wpa_s->conf)) in wpas_dpp_process_config()
1624 static void wpas_dpp_post_process_config(struct wpa_supplicant *wpa_s, in wpas_dpp_post_process_config() argument
1628 if (auth->reconfig && wpa_s->dpp_reconfig_ssid && in wpas_dpp_post_process_config()
1629 wpa_config_get_network(wpa_s->conf, wpa_s->dpp_reconfig_ssid_id) == in wpas_dpp_post_process_config()
1630 wpa_s->dpp_reconfig_ssid) { in wpas_dpp_post_process_config()
1633 wpas_notify_network_removed(wpa_s, wpa_s->dpp_reconfig_ssid); in wpas_dpp_post_process_config()
1634 wpa_config_remove_network(wpa_s->conf, in wpas_dpp_post_process_config()
1635 wpa_s->dpp_reconfig_ssid_id); in wpas_dpp_post_process_config()
1636 wpa_s->dpp_reconfig_ssid = NULL; in wpas_dpp_post_process_config()
1637 wpa_s->dpp_reconfig_ssid_id = -1; in wpas_dpp_post_process_config()
1641 if (wpa_s->conf->dpp_config_processing < 2) in wpas_dpp_post_process_config()
1653 wpas_dpp_try_to_connect(wpa_s); in wpas_dpp_post_process_config()
1657 static int wpas_dpp_handle_config_obj(struct wpa_supplicant *wpa_s, in wpas_dpp_handle_config_obj() argument
1661 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_RECEIVED); in wpas_dpp_handle_config_obj()
1662 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONFOBJ_AKM "%s", in wpas_dpp_handle_config_obj()
1665 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONFOBJ_SSID "%s", in wpas_dpp_handle_config_obj()
1668 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONFOBJ_SSID_CHARSET "%d", in wpas_dpp_handle_config_obj()
1676 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONNECTOR "%s", in wpas_dpp_handle_config_obj()
1685 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONFOBJ_PASS "%s", in wpas_dpp_handle_config_obj()
1691 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONFOBJ_PSK "%s", in wpas_dpp_handle_config_obj()
1704 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_C_SIGN_KEY "%s", in wpas_dpp_handle_config_obj()
1719 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PP_KEY "%s", hex); in wpas_dpp_handle_config_obj()
1734 wpa_msg(wpa_s, MSG_INFO, in wpas_dpp_handle_config_obj()
1739 wpa_msg(wpa_s, MSG_INFO, in wpas_dpp_handle_config_obj()
1752 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CERTBAG "%s", b64); in wpas_dpp_handle_config_obj()
1762 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CACERT "%s", b64); in wpas_dpp_handle_config_obj()
1767 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_SERVER_NAME "%s", in wpas_dpp_handle_config_obj()
1772 if (!wpa_s->dpp_pb_result_indicated) { in wpas_dpp_handle_config_obj()
1773 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_RESULT "success"); in wpas_dpp_handle_config_obj()
1774 wpa_s->dpp_pb_result_indicated = true; in wpas_dpp_handle_config_obj()
1779 return wpas_dpp_process_config(wpa_s, auth, conf); in wpas_dpp_handle_config_obj()
1783 static int wpas_dpp_handle_key_pkg(struct wpa_supplicant *wpa_s, in wpas_dpp_handle_key_pkg() argument
1793 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_RECEIVED); in wpas_dpp_handle_key_pkg()
1794 wpa_s->dpp_conf_backup_received = true; in wpas_dpp_handle_key_pkg()
1797 res = dpp_configurator_from_backup(wpa_s->dpp, key); in wpas_dpp_handle_key_pkg()
1800 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONFIGURATOR_ID "%d", in wpas_dpp_handle_key_pkg()
1813 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_build_csr() local
1814 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_build_csr()
1822 auth->csr = dpp_build_csr(auth, wpa_s->conf->dpp_name ? in wpas_dpp_build_csr()
1823 wpa_s->conf->dpp_name : "Test"); in wpas_dpp_build_csr()
1825 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_build_csr()
1826 wpa_s->dpp_auth = NULL; in wpas_dpp_build_csr()
1830 wpas_dpp_start_gas_client(wpa_s); in wpas_dpp_build_csr()
1838 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_build_new_key() local
1839 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_build_new_key()
1845 wpas_dpp_start_gas_client(wpa_s); in wpas_dpp_build_new_key()
1855 struct wpa_supplicant *wpa_s = ctx; in wpas_dpp_gas_resp_cb() local
1857 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_gas_resp_cb()
1862 eloop_cancel_timeout(wpas_dpp_gas_client_timeout, wpa_s, NULL); in wpas_dpp_gas_resp_cb()
1863 wpa_s->dpp_gas_dialog_token = -1; in wpas_dpp_gas_resp_cb()
1899 eloop_register_timeout(0, 0, wpas_dpp_build_csr, wpa_s, NULL); in wpas_dpp_gas_resp_cb()
1906 eloop_register_timeout(0, 0, wpas_dpp_build_new_key, wpa_s, in wpas_dpp_gas_resp_cb()
1916 wpa_s->dpp_conf_backup_received = false; in wpas_dpp_gas_resp_cb()
1918 res = wpas_dpp_handle_config_obj(wpa_s, auth, in wpas_dpp_gas_resp_cb()
1924 wpas_dpp_post_process_config(wpa_s, auth); in wpas_dpp_gas_resp_cb()
1925 if (wpas_dpp_handle_key_pkg(wpa_s, auth->conf_key_pkg) < 0) in wpas_dpp_gas_resp_cb()
1937 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_FAILED); in wpas_dpp_gas_resp_cb()
1948 wpa_msg(wpa_s, MSG_INFO, in wpas_dpp_gas_resp_cb()
1952 offchannel_send_action(wpa_s, auth->curr_freq, in wpas_dpp_gas_resp_cb()
1953 addr, wpa_s->own_addr, broadcast, in wpas_dpp_gas_resp_cb()
1960 if (wpa_s->conf->dpp_config_processing < 2 || in wpas_dpp_gas_resp_cb()
1961 wpa_s->dpp_conf_backup_received) in wpas_dpp_gas_resp_cb()
1967 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_gas_resp_cb()
1968 wpa_s->dpp_auth = NULL; in wpas_dpp_gas_resp_cb()
1974 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_gas_client_timeout() local
1975 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_gas_client_timeout()
1977 if (!wpa_s->dpp_gas_client || !auth || in wpas_dpp_gas_client_timeout()
1982 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_FAILED); in wpas_dpp_gas_client_timeout()
1983 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_gas_client_timeout()
1984 wpa_s->dpp_auth = NULL; in wpas_dpp_gas_client_timeout()
1988 static void wpas_dpp_start_gas_client(struct wpa_supplicant *wpa_s) in wpas_dpp_start_gas_client() argument
1990 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_start_gas_client()
1995 wpa_s->dpp_gas_client = 1; in wpas_dpp_start_gas_client()
1996 offchannel_send_action_done(wpa_s); in wpas_dpp_start_gas_client()
1997 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_start_gas_client()
2002 supp_op_classes = wpas_supp_op_classes(wpa_s); in wpas_dpp_start_gas_client()
2004 buf = dpp_build_conf_req_helper(auth, wpa_s->conf->dpp_name, in wpas_dpp_start_gas_client()
2005 wpa_s->dpp_netrole, in wpas_dpp_start_gas_client()
2006 wpa_s->conf->dpp_mud_url, in wpas_dpp_start_gas_client()
2008 wpa_s->conf->dpp_extra_conf_req_name, in wpas_dpp_start_gas_client()
2009 wpa_s->conf->dpp_extra_conf_req_value); in wpas_dpp_start_gas_client()
2028 wpa_s, NULL); in wpas_dpp_start_gas_client()
2030 res = gas_query_req(wpa_s->gas, auth->peer_mac_addr, auth->curr_freq, in wpas_dpp_start_gas_client()
2031 1, 1, buf, wpas_dpp_gas_resp_cb, wpa_s); in wpas_dpp_start_gas_client()
2033 wpa_msg(wpa_s, MSG_DEBUG, "GAS: Failed to send Query Request"); in wpas_dpp_start_gas_client()
2038 wpa_s->dpp_gas_dialog_token = res; in wpas_dpp_start_gas_client()
2043 static void wpas_dpp_auth_success(struct wpa_supplicant *wpa_s, int initiator) in wpas_dpp_auth_success() argument
2046 dpp_notify_auth_success(wpa_s->dpp_auth, initiator); in wpas_dpp_auth_success()
2051 if (wpa_s->dpp_auth->configurator) { in wpas_dpp_auth_success()
2053 wpa_s->dpp_auth->auth_success = 0; in wpas_dpp_auth_success()
2059 if (wpa_s->dpp_auth->configurator) in wpas_dpp_auth_success()
2060 wpas_dpp_start_gas_server(wpa_s); in wpas_dpp_auth_success()
2062 wpas_dpp_start_gas_client(wpa_s); in wpas_dpp_auth_success()
2066 static void wpas_dpp_rx_auth_resp(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_auth_resp() argument
2070 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_rx_auth_resp()
2089 eloop_cancel_timeout(wpas_dpp_reply_wait_timeout, wpa_s, NULL); in wpas_dpp_rx_auth_resp()
2097 eloop_cancel_timeout(wpas_dpp_init_timeout, wpa_s, NULL); in wpas_dpp_rx_auth_resp()
2103 offchannel_send_action_done(wpa_s); in wpas_dpp_rx_auth_resp()
2104 wpas_dpp_listen_start(wpa_s, auth->curr_freq); in wpas_dpp_rx_auth_resp()
2112 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_rx_auth_resp()
2114 offchannel_send_action(wpa_s, auth->curr_freq, in wpas_dpp_rx_auth_resp()
2115 src, wpa_s->own_addr, broadcast, in wpas_dpp_rx_auth_resp()
2119 wpa_s->dpp_auth_ok_on_ack = 1; in wpas_dpp_rx_auth_resp()
2123 static void wpas_dpp_rx_auth_conf(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_auth_conf() argument
2126 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_rx_auth_conf()
2143 eloop_cancel_timeout(wpas_dpp_auth_conf_wait_timeout, wpa_s, NULL); in wpas_dpp_rx_auth_conf()
2150 wpas_dpp_auth_success(wpa_s, 0); in wpas_dpp_rx_auth_conf()
2159 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_config_result_wait_timeout() local
2160 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_config_result_wait_timeout()
2167 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_FAILED); in wpas_dpp_config_result_wait_timeout()
2169 wpa_s->dpp_auth = NULL; in wpas_dpp_config_result_wait_timeout()
2176 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_conn_status_result_wait_timeout() local
2177 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_conn_status_result_wait_timeout()
2184 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONN_STATUS_RESULT "timeout"); in wpas_dpp_conn_status_result_wait_timeout()
2185 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_conn_status_result_wait_timeout()
2187 wpa_s->dpp_auth = NULL; in wpas_dpp_conn_status_result_wait_timeout()
2193 static bool wpas_dpp_pb_active(struct wpa_supplicant *wpa_s) in wpas_dpp_pb_active() argument
2195 return (wpa_s->dpp_pb_time.sec || wpa_s->dpp_pb_time.usec) && in wpas_dpp_pb_active()
2196 wpa_s->dpp_pb_configurator; in wpas_dpp_pb_active()
2200 static void wpas_dpp_remove_pb_hash(struct wpa_supplicant *wpa_s) in wpas_dpp_remove_pb_hash() argument
2204 if (!wpa_s->dpp_pb_bi) in wpas_dpp_remove_pb_hash()
2207 struct dpp_pb_info *info = &wpa_s->dpp_pb[i]; in wpas_dpp_remove_pb_hash()
2211 if (os_memcmp(info->hash, wpa_s->dpp_pb_resp_hash, in wpas_dpp_remove_pb_hash()
2227 static void wpas_dpp_rx_conf_result(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_conf_result() argument
2230 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_rx_conf_result()
2239 gas_server_response_sent(wpa_s->gas_server, in wpas_dpp_rx_conf_result()
2266 wpa_msg(wpa_s, MSG_INFO, in wpas_dpp_rx_conf_result()
2271 wpa_s, NULL); in wpas_dpp_rx_conf_result()
2274 wpa_s, NULL); in wpas_dpp_rx_conf_result()
2277 wpa_s, NULL); in wpas_dpp_rx_conf_result()
2278 offchannel_send_action_done(wpa_s); in wpas_dpp_rx_conf_result()
2280 if (!wpa_s->dpp_in_response_listen || in wpas_dpp_rx_conf_result()
2281 (int) wpa_s->dpp_listen_freq != freq) in wpas_dpp_rx_conf_result()
2282 wpas_dpp_listen_start(wpa_s, freq); in wpas_dpp_rx_conf_result()
2285 offchannel_send_action_done(wpa_s); in wpas_dpp_rx_conf_result()
2286 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_rx_conf_result()
2288 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_SENT "conf_status=%d", in wpas_dpp_rx_conf_result()
2291 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_FAILED); in wpas_dpp_rx_conf_result()
2293 wpa_s->dpp_auth = NULL; in wpas_dpp_rx_conf_result()
2294 eloop_cancel_timeout(wpas_dpp_config_result_wait_timeout, wpa_s, NULL); in wpas_dpp_rx_conf_result()
2296 if (!wpa_s->dpp_pb_result_indicated && wpas_dpp_pb_active(wpa_s)) { in wpas_dpp_rx_conf_result()
2298 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_RESULT in wpas_dpp_rx_conf_result()
2301 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_RESULT in wpas_dpp_rx_conf_result()
2303 wpa_s->dpp_pb_result_indicated = true; in wpas_dpp_rx_conf_result()
2305 wpas_dpp_remove_pb_hash(wpa_s); in wpas_dpp_rx_conf_result()
2306 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_rx_conf_result()
2312 static void wpas_dpp_rx_conn_status_result(struct wpa_supplicant *wpa_s, in wpas_dpp_rx_conn_status_result() argument
2316 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_rx_conn_status_result()
2332 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONN_STATUS_RESULT in wpas_dpp_rx_conn_status_result()
2337 offchannel_send_action_done(wpa_s); in wpas_dpp_rx_conn_status_result()
2338 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_rx_conn_status_result()
2340 wpa_s->dpp_auth = NULL; in wpas_dpp_rx_conn_status_result()
2342 wpa_s, NULL); in wpas_dpp_rx_conn_status_result()
2349 struct wpa_supplicant *wpa_s = ctx; in wpas_dpp_process_conf_obj() local
2354 res = wpas_dpp_handle_config_obj(wpa_s, auth, in wpas_dpp_process_conf_obj()
2360 wpas_dpp_post_process_config(wpa_s, auth); in wpas_dpp_process_conf_obj()
2368 struct wpa_supplicant *wpa_s = ctx; in wpas_dpp_tcp_msg_sent() local
2376 wpas_dpp_try_to_connect(wpa_s); in wpas_dpp_tcp_msg_sent()
2382 wpa_s, NULL); in wpas_dpp_tcp_msg_sent()
2385 wpa_s, NULL); in wpas_dpp_tcp_msg_sent()
2396 struct wpa_supplicant *wpa_s = ctx; in wpas_dpp_remove_bi() local
2398 if (bi == wpa_s->dpp_chirp_bi) in wpas_dpp_remove_bi()
2399 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_remove_bi()
2404 wpas_dpp_rx_presence_announcement(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_presence_announcement() argument
2414 if (!wpa_s->dpp) in wpas_dpp_rx_presence_announcement()
2417 if (wpa_s->dpp_auth) { in wpas_dpp_rx_presence_announcement()
2429 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL in wpas_dpp_rx_presence_announcement()
2435 peer_bi = dpp_bootstrap_find_chirp(wpa_s->dpp, r_bootstrap); in wpas_dpp_rx_presence_announcement()
2436 dpp_notify_chirp_received(wpa_s, peer_bi ? (int) peer_bi->id : -1, src, in wpas_dpp_rx_presence_announcement()
2447 auth = dpp_auth_init(wpa_s->dpp, wpa_s, peer_bi, NULL, in wpas_dpp_rx_presence_announcement()
2451 wpas_dpp_set_testing_options(wpa_s, auth); in wpas_dpp_rx_presence_announcement()
2452 if (dpp_set_configurator(auth, wpa_s->dpp_configurator_params) < 0) { in wpas_dpp_rx_presence_announcement()
2463 wait_time = wpa_s->max_remain_on_chan; in wpas_dpp_rx_presence_announcement()
2464 max_wait_time = wpa_s->dpp_resp_wait_time ? in wpas_dpp_rx_presence_announcement()
2465 wpa_s->dpp_resp_wait_time : 2000; in wpas_dpp_rx_presence_announcement()
2468 wpas_dpp_stop_listen_for_tx(wpa_s, freq, wait_time); in wpas_dpp_rx_presence_announcement()
2470 wpa_s->dpp_auth = auth; in wpas_dpp_rx_presence_announcement()
2471 if (wpas_dpp_auth_init_next(wpa_s) < 0) { in wpas_dpp_rx_presence_announcement()
2472 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_rx_presence_announcement()
2473 wpa_s->dpp_auth = NULL; in wpas_dpp_rx_presence_announcement()
2481 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_reconfig_reply_wait_timeout() local
2482 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_reconfig_reply_wait_timeout()
2488 offchannel_send_action_done(wpa_s); in wpas_dpp_reconfig_reply_wait_timeout()
2489 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_reconfig_reply_wait_timeout()
2491 wpa_s->dpp_auth = NULL; in wpas_dpp_reconfig_reply_wait_timeout()
2496 wpas_dpp_rx_reconfig_announcement(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_reconfig_announcement() argument
2507 if (!wpa_s->dpp) in wpas_dpp_rx_reconfig_announcement()
2510 if (wpa_s->dpp_auth) { in wpas_dpp_rx_reconfig_announcement()
2522 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL in wpas_dpp_rx_reconfig_announcement()
2528 conf = dpp_configurator_find_kid(wpa_s->dpp, csign_hash); in wpas_dpp_rx_reconfig_announcement()
2538 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL in wpas_dpp_rx_reconfig_announcement()
2548 auth = dpp_reconfig_init(wpa_s->dpp, wpa_s, conf, freq, group, in wpas_dpp_rx_reconfig_announcement()
2552 wpas_dpp_set_testing_options(wpa_s, auth); in wpas_dpp_rx_reconfig_announcement()
2553 if (dpp_set_configurator(auth, wpa_s->dpp_configurator_params) < 0) { in wpas_dpp_rx_reconfig_announcement()
2559 wpa_s->dpp_auth = auth; in wpas_dpp_rx_reconfig_announcement()
2561 wpa_s->dpp_in_response_listen = 0; in wpas_dpp_rx_reconfig_announcement()
2562 wpa_s->dpp_auth_ok_on_ack = 0; in wpas_dpp_rx_reconfig_announcement()
2563 wait_time = wpa_s->max_remain_on_chan; in wpas_dpp_rx_reconfig_announcement()
2564 max_wait_time = wpa_s->dpp_resp_wait_time ? in wpas_dpp_rx_reconfig_announcement()
2565 wpa_s->dpp_resp_wait_time : 2000; in wpas_dpp_rx_reconfig_announcement()
2571 wpa_s, NULL); in wpas_dpp_rx_reconfig_announcement()
2574 wpas_dpp_stop_listen_for_tx(wpa_s, freq, wait_time); in wpas_dpp_rx_reconfig_announcement()
2576 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_rx_reconfig_announcement()
2578 if (offchannel_send_action(wpa_s, freq, src, wpa_s->own_addr, broadcast, in wpas_dpp_rx_reconfig_announcement()
2582 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_rx_reconfig_announcement()
2583 wpa_s->dpp_auth = NULL; in wpas_dpp_rx_reconfig_announcement()
2589 wpas_dpp_rx_reconfig_auth_req(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_reconfig_auth_req() argument
2599 if (!wpa_s->dpp) in wpas_dpp_rx_reconfig_auth_req()
2601 if (wpa_s->dpp_auth) { in wpas_dpp_rx_reconfig_auth_req()
2606 if (!wpa_s->dpp_reconfig_ssid) { in wpas_dpp_rx_reconfig_auth_req()
2611 for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next) { in wpas_dpp_rx_reconfig_auth_req()
2612 if (ssid == wpa_s->dpp_reconfig_ssid && in wpas_dpp_rx_reconfig_auth_req()
2613 ssid->id == wpa_s->dpp_reconfig_ssid_id) in wpas_dpp_rx_reconfig_auth_req()
2623 auth = dpp_reconfig_auth_req_rx(wpa_s->dpp, wpa_s, ssid->dpp_connector, in wpas_dpp_rx_reconfig_auth_req()
2631 wpa_s->dpp_auth = auth; in wpas_dpp_rx_reconfig_auth_req()
2633 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_rx_reconfig_auth_req()
2635 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_rx_reconfig_auth_req()
2637 if (offchannel_send_action(wpa_s, freq, src, wpa_s->own_addr, broadcast, in wpas_dpp_rx_reconfig_auth_req()
2641 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_rx_reconfig_auth_req()
2642 wpa_s->dpp_auth = NULL; in wpas_dpp_rx_reconfig_auth_req()
2648 wpas_dpp_rx_reconfig_auth_resp(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_reconfig_auth_resp() argument
2652 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_rx_reconfig_auth_resp()
2674 eloop_cancel_timeout(wpas_dpp_reconfig_reply_wait_timeout, wpa_s, NULL); in wpas_dpp_rx_reconfig_auth_resp()
2676 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_rx_reconfig_auth_resp()
2678 if (offchannel_send_action(wpa_s, freq, src, wpa_s->own_addr, broadcast, in wpas_dpp_rx_reconfig_auth_resp()
2682 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_rx_reconfig_auth_resp()
2683 wpa_s->dpp_auth = NULL; in wpas_dpp_rx_reconfig_auth_resp()
2688 wpas_dpp_start_gas_server(wpa_s); in wpas_dpp_rx_reconfig_auth_resp()
2693 wpas_dpp_rx_reconfig_auth_conf(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_reconfig_auth_conf() argument
2697 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_rx_reconfig_auth_conf()
2717 wpas_dpp_start_gas_client(wpa_s); in wpas_dpp_rx_reconfig_auth_conf()
2723 static void wpas_dpp_rx_peer_disc_resp(struct wpa_supplicant *wpa_s, in wpas_dpp_rx_peer_disc_resp() argument
2745 if (is_zero_ether_addr(wpa_s->dpp_intro_bssid) || in wpas_dpp_rx_peer_disc_resp()
2746 !ether_addr_equal(src, wpa_s->dpp_intro_bssid)) { in wpas_dpp_rx_peer_disc_resp()
2751 offchannel_send_action_done(wpa_s); in wpas_dpp_rx_peer_disc_resp()
2753 for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next) { in wpas_dpp_rx_peer_disc_resp()
2754 if (ssid == wpa_s->dpp_intro_network) in wpas_dpp_rx_peer_disc_resp()
2771 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR in wpas_dpp_rx_peer_disc_resp()
2779 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR in wpas_dpp_rx_peer_disc_resp()
2787 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR in wpas_dpp_rx_peer_disc_resp()
2795 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR in wpas_dpp_rx_peer_disc_resp()
2798 wpas_dpp_send_conn_status_result(wpa_s, status[0]); in wpas_dpp_rx_peer_disc_resp()
2807 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR in wpas_dpp_rx_peer_disc_resp()
2821 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR in wpas_dpp_rx_peer_disc_resp()
2824 wpas_dpp_send_conn_status_result(wpa_s, res); in wpas_dpp_rx_peer_disc_resp()
2833 os_memcpy(entry->spa, wpa_s->own_addr, ETH_ALEN); in wpas_dpp_rx_peer_disc_resp()
2849 wpas_dpp_send_conn_status_result(wpa_s, DPP_STATUS_NO_MATCH); in wpas_dpp_rx_peer_disc_resp()
2865 wpa_sm_pmksa_cache_add_entry(wpa_s->wpa, entry); in wpas_dpp_rx_peer_disc_resp()
2867 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR in wpas_dpp_rx_peer_disc_resp()
2872 if (wpa_supplicant_fast_associate(wpa_s) != 1) { in wpas_dpp_rx_peer_disc_resp()
2873 wpa_supplicant_cancel_sched_scan(wpa_s); in wpas_dpp_rx_peer_disc_resp()
2874 wpa_supplicant_req_scan(wpa_s, 0, 0); in wpas_dpp_rx_peer_disc_resp()
2881 static int wpas_dpp_allow_ir(struct wpa_supplicant *wpa_s, unsigned int freq) in wpas_dpp_allow_ir() argument
2885 if (!wpa_s->hw.modes) in wpas_dpp_allow_ir()
2888 for (i = 0; i < wpa_s->hw.num_modes; i++) { in wpas_dpp_allow_ir()
2889 struct hostapd_hw_modes *mode = &wpa_s->hw.modes[i]; in wpas_dpp_allow_ir()
2914 static int wpas_dpp_pkex_next_channel(struct wpa_supplicant *wpa_s, in wpas_dpp_pkex_next_channel() argument
2926 if (wpas_dpp_allow_ir(wpa_s, pkex->freq) == 1) { in wpas_dpp_pkex_next_channel()
2933 return wpas_dpp_pkex_next_channel(wpa_s, pkex); in wpas_dpp_pkex_next_channel()
2937 static void wpas_dpp_pkex_clear_code(struct wpa_supplicant *wpa_s) in wpas_dpp_pkex_clear_code() argument
2939 if (!wpa_s->dpp_pkex_code && !wpa_s->dpp_pkex_identifier) in wpas_dpp_pkex_clear_code()
2946 os_free(wpa_s->dpp_pkex_code); in wpas_dpp_pkex_clear_code()
2947 wpa_s->dpp_pkex_code = NULL; in wpas_dpp_pkex_clear_code()
2948 os_free(wpa_s->dpp_pkex_identifier); in wpas_dpp_pkex_clear_code()
2949 wpa_s->dpp_pkex_identifier = NULL; in wpas_dpp_pkex_clear_code()
2958 struct wpa_supplicant *wpa_s = ctx; in wpas_dpp_pkex_done() local
2965 wpas_dpp_pkex_clear_code(wpa_s); in wpas_dpp_pkex_done()
2968 wpa_s->dpp_pkex_auth_cmd ? wpa_s->dpp_pkex_auth_cmd : ""); in wpas_dpp_pkex_done()
2975 own_bi = dpp_bootstrap_get_id(wpa_s->dpp, atoi(pos)); in wpas_dpp_pkex_done()
3004 auth = dpp_auth_init(wpa_s->dpp, wpa_s, peer_bi, own_bi, allowed_roles, in wpas_dpp_pkex_done()
3005 0, wpa_s->hw.modes, wpa_s->hw.num_modes); in wpas_dpp_pkex_done()
3009 wpas_dpp_set_testing_options(wpa_s, auth); in wpas_dpp_pkex_done()
3015 return dpp_tcp_auth(wpa_s->dpp, conn, auth, wpa_s->conf->dpp_name, in wpas_dpp_pkex_done()
3017 wpa_s->conf->dpp_mud_url, in wpas_dpp_pkex_done()
3018 wpa_s->conf->dpp_extra_conf_req_name, in wpas_dpp_pkex_done()
3019 wpa_s->conf->dpp_extra_conf_req_value, in wpas_dpp_pkex_done()
3026 static int wpas_dpp_pkex_init(struct wpa_supplicant *wpa_s, in wpas_dpp_pkex_init() argument
3037 dpp_pkex_free(wpa_s->dpp_pkex); in wpas_dpp_pkex_init()
3038 wpa_s->dpp_pkex = NULL; in wpas_dpp_pkex_init()
3039 pkex = dpp_pkex_init(wpa_s, wpa_s->dpp_pkex_bi, wpa_s->own_addr, in wpas_dpp_pkex_init()
3040 wpa_s->dpp_pkex_identifier, in wpas_dpp_pkex_init()
3041 wpa_s->dpp_pkex_code, wpa_s->dpp_pkex_code_len, in wpas_dpp_pkex_init()
3049 return dpp_tcp_pkex_init(wpa_s->dpp, pkex, ipaddr, tcp_port, in wpas_dpp_pkex_init()
3050 wpa_s, wpa_s, wpas_dpp_pkex_done); in wpas_dpp_pkex_init()
3056 wpa_s->dpp_pkex = pkex; in wpas_dpp_pkex_init()
3058 wait_time = wpa_s->max_remain_on_chan; in wpas_dpp_pkex_init()
3062 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR in wpas_dpp_pkex_init()
3067 offchannel_send_action(wpa_s, pkex->freq, broadcast, in wpas_dpp_pkex_init()
3068 wpa_s->own_addr, broadcast, in wpas_dpp_pkex_init()
3082 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_pkex_retry_timeout() local
3083 struct dpp_pkex *pkex = wpa_s->dpp_pkex; in wpas_dpp_pkex_retry_timeout()
3088 if (wpas_dpp_pkex_next_channel(wpa_s, pkex) < 0) { in wpas_dpp_pkex_retry_timeout()
3093 wpas_dpp_pkex_init(wpa_s, PKEX_VER_ONLY_1, in wpas_dpp_pkex_retry_timeout()
3098 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL in wpas_dpp_pkex_retry_timeout()
3101 wpa_s->dpp_pkex = NULL; in wpas_dpp_pkex_retry_timeout()
3110 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_pkex_retry_timeout()
3114 offchannel_send_action(wpa_s, pkex->freq, broadcast, in wpas_dpp_pkex_retry_timeout()
3115 wpa_s->own_addr, broadcast, in wpas_dpp_pkex_retry_timeout()
3124 wpas_dpp_tx_pkex_status(struct wpa_supplicant *wpa_s, in wpas_dpp_tx_pkex_status() argument
3131 struct dpp_pkex *pkex = wpa_s->dpp_pkex; in wpas_dpp_tx_pkex_status()
3139 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX_STATUS "dst=" MACSTR in wpas_dpp_tx_pkex_status()
3154 wpa_s->dpp_pkex = NULL; in wpas_dpp_tx_pkex_status()
3161 eloop_cancel_timeout(wpas_dpp_pkex_retry_timeout, wpa_s, NULL); in wpas_dpp_tx_pkex_status()
3164 wpas_dpp_pkex_retry_timeout, wpa_s, in wpas_dpp_tx_pkex_status()
3171 wpas_dpp_rx_pkex_exchange_req(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_pkex_exchange_req() argument
3181 if (wpa_s->dpp_pkex_ver == PKEX_VER_ONLY_1 && v2) { in wpas_dpp_rx_pkex_exchange_req()
3186 if (wpa_s->dpp_pkex_ver == PKEX_VER_ONLY_2 && !v2) { in wpas_dpp_rx_pkex_exchange_req()
3195 if (!wpa_s->dpp_pkex_code || !wpa_s->dpp_pkex_bi) { in wpas_dpp_rx_pkex_exchange_req()
3202 if (dpp_controller_is_own_pkex_req(wpa_s->dpp, buf, len)) { in wpas_dpp_rx_pkex_exchange_req()
3209 if (wpa_s->dpp_pkex) { in wpas_dpp_rx_pkex_exchange_req()
3216 wpa_s->dpp_pkex = dpp_pkex_rx_exchange_req(wpa_s, wpa_s->dpp_pkex_bi, in wpas_dpp_rx_pkex_exchange_req()
3217 wpa_s->own_addr, src, in wpas_dpp_rx_pkex_exchange_req()
3218 wpa_s->dpp_pkex_identifier, in wpas_dpp_rx_pkex_exchange_req()
3219 wpa_s->dpp_pkex_code, in wpas_dpp_rx_pkex_exchange_req()
3220 wpa_s->dpp_pkex_code_len, in wpas_dpp_rx_pkex_exchange_req()
3222 if (!wpa_s->dpp_pkex) { in wpas_dpp_rx_pkex_exchange_req()
3229 if (wpa_s->dpp_pb_bi && wpa_s->dpp_pb_announcement) { in wpas_dpp_rx_pkex_exchange_req()
3232 wpabuf_free(wpa_s->dpp_pb_announcement); in wpas_dpp_rx_pkex_exchange_req()
3233 wpa_s->dpp_pb_announcement = NULL; in wpas_dpp_rx_pkex_exchange_req()
3236 wpa_s->dpp_pkex_wait_auth_req = false; in wpas_dpp_rx_pkex_exchange_req()
3237 msg = wpa_s->dpp_pkex->exchange_resp; in wpas_dpp_rx_pkex_exchange_req()
3238 wait_time = wpa_s->max_remain_on_chan; in wpas_dpp_rx_pkex_exchange_req()
3241 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_rx_pkex_exchange_req()
3243 offchannel_send_action(wpa_s, freq, src, wpa_s->own_addr, in wpas_dpp_rx_pkex_exchange_req()
3251 wpas_dpp_rx_pkex_exchange_resp(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_pkex_exchange_resp() argument
3263 if (!wpa_s->dpp_pkex || !wpa_s->dpp_pkex->initiator || in wpas_dpp_rx_pkex_exchange_resp()
3264 wpa_s->dpp_pkex->exchange_done) { in wpas_dpp_rx_pkex_exchange_resp()
3269 eloop_cancel_timeout(wpas_dpp_pkex_retry_timeout, wpa_s, NULL); in wpas_dpp_rx_pkex_exchange_resp()
3270 wpa_s->dpp_pkex->exch_req_wait_time = 0; in wpas_dpp_rx_pkex_exchange_resp()
3272 msg = dpp_pkex_rx_exchange_resp(wpa_s->dpp_pkex, src, buf, len); in wpas_dpp_rx_pkex_exchange_resp()
3281 wait_time = wpa_s->max_remain_on_chan; in wpas_dpp_rx_pkex_exchange_resp()
3284 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_rx_pkex_exchange_resp()
3286 offchannel_send_action(wpa_s, freq, src, wpa_s->own_addr, in wpas_dpp_rx_pkex_exchange_resp()
3295 wpas_dpp_pkex_finish(struct wpa_supplicant *wpa_s, const u8 *peer, in wpas_dpp_pkex_finish() argument
3300 wpas_dpp_pkex_clear_code(wpa_s); in wpas_dpp_pkex_finish()
3301 bi = dpp_pkex_finish(wpa_s->dpp, wpa_s->dpp_pkex, peer, freq); in wpas_dpp_pkex_finish()
3305 wpa_s->dpp_pkex = NULL; in wpas_dpp_pkex_finish()
3308 if (wpa_s->dpp_pb_bi && !wpa_s->dpp_pb_configurator && in wpas_dpp_pkex_finish()
3309 os_memcmp(bi->pubkey_hash_chirp, wpa_s->dpp_pb_init_hash, in wpas_dpp_pkex_finish()
3320 wpa_s->dpp_pb_init_hash, SHA256_MAC_LEN); in wpas_dpp_pkex_finish()
3323 dpp_bootstrap_remove(wpa_s->dpp, id); in wpas_dpp_pkex_finish()
3324 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pkex_finish()
3334 wpas_dpp_rx_pkex_commit_reveal_req(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_pkex_commit_reveal_req() argument
3340 struct dpp_pkex *pkex = wpa_s->dpp_pkex; in wpas_dpp_rx_pkex_commit_reveal_req()
3357 dpp_pkex_free(wpa_s->dpp_pkex); in wpas_dpp_rx_pkex_commit_reveal_req()
3358 wpa_s->dpp_pkex = NULL; in wpas_dpp_rx_pkex_commit_reveal_req()
3366 wait_time = wpa_s->max_remain_on_chan; in wpas_dpp_rx_pkex_commit_reveal_req()
3369 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_rx_pkex_commit_reveal_req()
3371 offchannel_send_action(wpa_s, freq, src, wpa_s->own_addr, in wpas_dpp_rx_pkex_commit_reveal_req()
3377 wpas_dpp_pkex_finish(wpa_s, src, freq); in wpas_dpp_rx_pkex_commit_reveal_req()
3378 wpa_s->dpp_pkex_wait_auth_req = true; in wpas_dpp_rx_pkex_commit_reveal_req()
3383 wpas_dpp_rx_pkex_commit_reveal_resp(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_pkex_commit_reveal_resp() argument
3389 struct dpp_pkex *pkex = wpa_s->dpp_pkex; in wpas_dpp_rx_pkex_commit_reveal_resp()
3406 bi = wpas_dpp_pkex_finish(wpa_s, src, freq); in wpas_dpp_rx_pkex_commit_reveal_resp()
3411 if (wpa_s->dpp_pb_bi && wpa_s->dpp_pb_configurator && in wpas_dpp_rx_pkex_commit_reveal_resp()
3412 os_memcmp(bi->pubkey_hash_chirp, wpa_s->dpp_pb_resp_hash, in wpas_dpp_rx_pkex_commit_reveal_resp()
3423 wpa_s->dpp_pb_resp_hash, SHA256_MAC_LEN); in wpas_dpp_rx_pkex_commit_reveal_resp()
3426 dpp_bootstrap_remove(wpa_s->dpp, id); in wpas_dpp_rx_pkex_commit_reveal_resp()
3427 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_rx_pkex_commit_reveal_resp()
3434 wpa_s->dpp_pkex_auth_cmd ? wpa_s->dpp_pkex_auth_cmd : ""); in wpas_dpp_rx_pkex_commit_reveal_resp()
3438 if (wpas_dpp_auth_init(wpa_s, cmd) < 0) { in wpas_dpp_rx_pkex_commit_reveal_resp()
3441 offchannel_send_action_done(wpa_s); in wpas_dpp_rx_pkex_commit_reveal_resp()
3449 static void wpas_dpp_pb_pkex_init(struct wpa_supplicant *wpa_s, in wpas_dpp_pb_pkex_init() argument
3458 if (wpa_s->dpp_pkex) { in wpas_dpp_pb_pkex_init()
3462 msg = wpa_s->dpp_pkex->exchange_req; in wpas_dpp_pb_pkex_init()
3463 wait_time = wpa_s->max_remain_on_chan; in wpas_dpp_pb_pkex_init()
3466 offchannel_send_action(wpa_s, freq, src, in wpas_dpp_pb_pkex_init()
3467 wpa_s->own_addr, broadcast, in wpas_dpp_pb_pkex_init()
3476 if (!wpa_s->dpp_pb_cmd) { in wpas_dpp_pb_pkex_init()
3479 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pb_pkex_init()
3483 wpa_s->dpp_pkex_bi = wpa_s->dpp_pb_bi; in wpas_dpp_pb_pkex_init()
3484 os_memcpy(wpa_s->dpp_pb_resp_hash, r_hash, SHA256_MAC_LEN); in wpas_dpp_pb_pkex_init()
3486 pkex = dpp_pkex_init(wpa_s, wpa_s->dpp_pkex_bi, wpa_s->own_addr, in wpas_dpp_pb_pkex_init()
3487 "PBPKEX", (const char *) wpa_s->dpp_pb_c_nonce, in wpas_dpp_pb_pkex_init()
3488 wpa_s->dpp_pb_bi->curve->nonce_len, in wpas_dpp_pb_pkex_init()
3491 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pb_pkex_init()
3496 wpa_s->dpp_pkex = pkex; in wpas_dpp_pb_pkex_init()
3497 msg = wpa_s->dpp_pkex->exchange_req; in wpas_dpp_pb_pkex_init()
3498 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR in wpas_dpp_pb_pkex_init()
3501 wait_time = wpa_s->max_remain_on_chan; in wpas_dpp_pb_pkex_init()
3504 offchannel_send_action(wpa_s, pkex->freq, src, in wpas_dpp_pb_pkex_init()
3505 wpa_s->own_addr, broadcast, in wpas_dpp_pb_pkex_init()
3512 os_free(wpa_s->dpp_pkex_auth_cmd); in wpas_dpp_pb_pkex_init()
3513 len = 30 + os_strlen(wpa_s->dpp_pb_cmd); in wpas_dpp_pb_pkex_init()
3514 wpa_s->dpp_pkex_auth_cmd = os_malloc(len); in wpas_dpp_pb_pkex_init()
3515 if (wpa_s->dpp_pkex_auth_cmd) in wpas_dpp_pb_pkex_init()
3516 os_snprintf(wpa_s->dpp_pkex_auth_cmd, len, " own=%d %s", in wpas_dpp_pb_pkex_init()
3517 wpa_s->dpp_pkex_bi->id, wpa_s->dpp_pb_cmd); in wpas_dpp_pb_pkex_init()
3519 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pb_pkex_init()
3524 wpas_dpp_rx_pb_presence_announcement(struct wpa_supplicant *wpa_s, in wpas_dpp_rx_pb_presence_announcement() argument
3552 info = &wpa_s->dpp_pb[i]; in wpas_dpp_rx_pb_presence_announcement()
3564 tmp = &wpa_s->dpp_pb[i]; in wpas_dpp_rx_pb_presence_announcement()
3580 if (!wpa_s->dpp_pb_result_indicated && in wpas_dpp_rx_pb_presence_announcement()
3581 wpas_dpp_pb_active(wpa_s)) { in wpas_dpp_rx_pb_presence_announcement()
3582 wpa_msg(wpa_s, MSG_INFO, in wpas_dpp_rx_pb_presence_announcement()
3584 wpa_s->dpp_pb_result_indicated = true; in wpas_dpp_rx_pb_presence_announcement()
3586 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_rx_pb_presence_announcement()
3591 info = &wpa_s->dpp_pb[0]; in wpas_dpp_rx_pb_presence_announcement()
3593 tmp = &wpa_s->dpp_pb[i]; in wpas_dpp_rx_pb_presence_announcement()
3602 if (!wpas_dpp_pb_active(wpa_s)) { in wpas_dpp_rx_pb_presence_announcement()
3608 if (wpa_s->dpp_pb_announce_time.sec == 0 && in wpas_dpp_rx_pb_presence_announcement()
3609 wpa_s->dpp_pb_announce_time.usec == 0) { in wpas_dpp_rx_pb_presence_announcement()
3611 wpa_s->dpp_pb_announce_time = now; in wpas_dpp_rx_pb_presence_announcement()
3614 if (!wpa_s->dpp_pb_bi) { in wpas_dpp_rx_pb_presence_announcement()
3617 res = dpp_bootstrap_gen(wpa_s->dpp, "type=pkex"); in wpas_dpp_rx_pb_presence_announcement()
3620 wpa_s->dpp_pb_bi = dpp_bootstrap_get_id(wpa_s->dpp, res); in wpas_dpp_rx_pb_presence_announcement()
3621 if (!wpa_s->dpp_pb_bi) in wpas_dpp_rx_pb_presence_announcement()
3624 if (random_get_bytes(wpa_s->dpp_pb_c_nonce, in wpas_dpp_rx_pb_presence_announcement()
3625 wpa_s->dpp_pb_bi->curve->nonce_len)) { in wpas_dpp_rx_pb_presence_announcement()
3628 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_rx_pb_presence_announcement()
3636 os_reltime_sub(&now, &wpa_s->dpp_pb_last_resp, &age); in wpas_dpp_rx_pb_presence_announcement()
3644 wpa_s->dpp_pb_bi, r_hash, wpa_s->dpp_pb_c_nonce, in wpas_dpp_rx_pb_presence_announcement()
3645 wpa_s->dpp_pb_bi->curve->nonce_len); in wpas_dpp_rx_pb_presence_announcement()
3647 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_rx_pb_presence_announcement()
3654 wpa_s->dpp_pb_last_resp = now; in wpas_dpp_rx_pb_presence_announcement()
3656 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_rx_pb_presence_announcement()
3658 offchannel_send_action(wpa_s, freq, src, wpa_s->own_addr, broadcast, in wpas_dpp_rx_pb_presence_announcement()
3663 if (os_reltime_expired(&now, &wpa_s->dpp_pb_announce_time, 15)) in wpas_dpp_rx_pb_presence_announcement()
3664 wpas_dpp_pb_pkex_init(wpa_s, freq, src, r_hash); in wpas_dpp_rx_pb_presence_announcement()
3669 wpas_dpp_rx_pb_presence_announcement_resp(struct wpa_supplicant *wpa_s, in wpas_dpp_rx_pb_presence_announcement_resp() argument
3678 if (!wpa_s->dpp_pb_announcement || !wpa_s->dpp_pb_bi || in wpas_dpp_rx_pb_presence_announcement_resp()
3679 wpa_s->dpp_pb_configurator) { in wpas_dpp_rx_pb_presence_announcement_resp()
3712 os_memcmp(r_hash, wpa_s->dpp_pb_bi->pubkey_hash_chirp, in wpas_dpp_rx_pb_presence_announcement_resp()
3716 if (os_memcmp(r_hash, wpa_s->dpp_pb_bi->pubkey_hash_chirp, in wpas_dpp_rx_pb_presence_announcement_resp()
3726 if (wpa_s->dpp_pb_resp_freq && in wpas_dpp_rx_pb_presence_announcement_resp()
3727 os_memcmp(i_hash, wpa_s->dpp_pb_init_hash, SHA256_MAC_LEN) != 0) { in wpas_dpp_rx_pb_presence_announcement_resp()
3734 if (!wpa_s->dpp_pb_result_indicated) { in wpas_dpp_rx_pb_presence_announcement_resp()
3735 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_RESULT in wpas_dpp_rx_pb_presence_announcement_resp()
3737 wpa_s->dpp_pb_result_indicated = true; in wpas_dpp_rx_pb_presence_announcement_resp()
3739 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_rx_pb_presence_announcement_resp()
3743 if (!wpa_s->dpp_pb_resp_freq) { in wpas_dpp_rx_pb_presence_announcement_resp()
3744 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_STATUS in wpas_dpp_rx_pb_presence_announcement_resp()
3747 wpa_s->dpp_pb_resp_freq = freq; in wpas_dpp_rx_pb_presence_announcement_resp()
3748 os_memcpy(wpa_s->dpp_pb_init_hash, i_hash, SHA256_MAC_LEN); in wpas_dpp_rx_pb_presence_announcement_resp()
3749 os_memcpy(wpa_s->dpp_pb_c_nonce, c_nonce, c_nonce_len); in wpas_dpp_rx_pb_presence_announcement_resp()
3750 wpa_s->dpp_pb_c_nonce_len = c_nonce_len; in wpas_dpp_rx_pb_presence_announcement_resp()
3754 wpa_s->dpp_pb_stop_iter = 3; in wpas_dpp_rx_pb_presence_announcement_resp()
3760 wpas_dpp_tx_priv_intro_status(struct wpa_supplicant *wpa_s, in wpas_dpp_tx_priv_intro_status() argument
3774 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX_STATUS "dst=" MACSTR in wpas_dpp_tx_priv_intro_status()
3777 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR " version=%u", in wpas_dpp_tx_priv_intro_status()
3778 MAC2STR(src), wpa_s->dpp_intro_peer_version); in wpas_dpp_tx_priv_intro_status()
3782 if (wpa_supplicant_fast_associate(wpa_s) != 1) { in wpas_dpp_tx_priv_intro_status()
3783 wpa_supplicant_cancel_sched_scan(wpa_s); in wpas_dpp_tx_priv_intro_status()
3784 wpa_supplicant_req_scan(wpa_s, 0, 0); in wpas_dpp_tx_priv_intro_status()
3790 wpas_dpp_send_private_peer_intro_update(struct wpa_supplicant *wpa_s, in wpas_dpp_send_private_peer_intro_update() argument
3873 wait_time = wpa_s->max_remain_on_chan; in wpas_dpp_send_private_peer_intro_update()
3876 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_send_private_peer_intro_update()
3878 offchannel_send_action(wpa_s, freq, dst, wpa_s->own_addr, broadcast, in wpas_dpp_send_private_peer_intro_update()
3888 wpas_dpp_rx_priv_peer_intro_notify(struct wpa_supplicant *wpa_s, in wpas_dpp_rx_priv_peer_intro_notify() argument
3909 if (is_zero_ether_addr(wpa_s->dpp_intro_bssid) || in wpas_dpp_rx_priv_peer_intro_notify()
3910 !ether_addr_equal(src, wpa_s->dpp_intro_bssid)) { in wpas_dpp_rx_priv_peer_intro_notify()
3915 offchannel_send_action_done(wpa_s); in wpas_dpp_rx_priv_peer_intro_notify()
3917 for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next) { in wpas_dpp_rx_priv_peer_intro_notify()
3918 if (ssid == wpa_s->dpp_intro_network) in wpas_dpp_rx_priv_peer_intro_notify()
3933 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR in wpas_dpp_rx_priv_peer_intro_notify()
3941 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR in wpas_dpp_rx_priv_peer_intro_notify()
3950 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR in wpas_dpp_rx_priv_peer_intro_notify()
3960 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR in wpas_dpp_rx_priv_peer_intro_notify()
3974 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_INTRO "peer=" MACSTR in wpas_dpp_rx_priv_peer_intro_notify()
3976 wpas_dpp_send_conn_status_result(wpa_s, res); in wpas_dpp_rx_priv_peer_intro_notify()
3986 wpas_dpp_send_conn_status_result(wpa_s, DPP_STATUS_NO_MATCH); in wpas_dpp_rx_priv_peer_intro_notify()
3989 wpa_s->dpp_intro_peer_version = peer_version; in wpas_dpp_rx_priv_peer_intro_notify()
3996 os_memcpy(entry->spa, wpa_s->own_addr, ETH_ALEN); in wpas_dpp_rx_priv_peer_intro_notify()
4008 if (wpas_dpp_send_private_peer_intro_update(wpa_s, &intro, ssid, src, in wpas_dpp_rx_priv_peer_intro_notify()
4018 wpa_sm_pmksa_cache_add_entry(wpa_s->wpa, entry); in wpas_dpp_rx_priv_peer_intro_notify()
4030 void wpas_dpp_rx_action(struct wpa_supplicant *wpa_s, const u8 *src, in wpas_dpp_rx_action() argument
4054 if (wpa_s->dpp_discard_public_action && in wpas_dpp_rx_action()
4065 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_RX "src=" MACSTR in wpas_dpp_rx_action()
4072 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_RX "src=" MACSTR in wpas_dpp_rx_action()
4077 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_RX "src=" MACSTR " freq=%u type=%d", in wpas_dpp_rx_action()
4082 wpas_dpp_rx_auth_req(wpa_s, src, hdr, buf, len, freq); in wpas_dpp_rx_action()
4085 wpas_dpp_rx_auth_resp(wpa_s, src, hdr, buf, len, freq); in wpas_dpp_rx_action()
4088 wpas_dpp_rx_auth_conf(wpa_s, src, hdr, buf, len); in wpas_dpp_rx_action()
4091 wpas_dpp_rx_peer_disc_resp(wpa_s, src, buf, len); in wpas_dpp_rx_action()
4098 wpas_dpp_rx_pkex_exchange_req(wpa_s, src, buf, len, freq, true); in wpas_dpp_rx_action()
4102 wpas_dpp_rx_pkex_exchange_req(wpa_s, src, buf, len, freq, in wpas_dpp_rx_action()
4106 wpas_dpp_rx_pkex_exchange_resp(wpa_s, src, buf, len, freq); in wpas_dpp_rx_action()
4109 wpas_dpp_rx_pkex_commit_reveal_req(wpa_s, src, hdr, buf, len, in wpas_dpp_rx_action()
4113 wpas_dpp_rx_pkex_commit_reveal_resp(wpa_s, src, hdr, buf, len, in wpas_dpp_rx_action()
4118 wpas_dpp_rx_conf_result(wpa_s, src, hdr, buf, len); in wpas_dpp_rx_action()
4121 wpas_dpp_rx_conn_status_result(wpa_s, src, hdr, buf, len); in wpas_dpp_rx_action()
4124 wpas_dpp_rx_presence_announcement(wpa_s, src, hdr, buf, len, in wpas_dpp_rx_action()
4128 wpas_dpp_rx_reconfig_announcement(wpa_s, src, hdr, buf, len, in wpas_dpp_rx_action()
4132 wpas_dpp_rx_reconfig_auth_req(wpa_s, src, hdr, buf, len, freq); in wpas_dpp_rx_action()
4135 wpas_dpp_rx_reconfig_auth_resp(wpa_s, src, hdr, buf, len, freq); in wpas_dpp_rx_action()
4138 wpas_dpp_rx_reconfig_auth_conf(wpa_s, src, hdr, buf, len, freq); in wpas_dpp_rx_action()
4143 wpas_dpp_rx_pb_presence_announcement(wpa_s, src, hdr, in wpas_dpp_rx_action()
4147 wpas_dpp_rx_pb_presence_announcement_resp(wpa_s, src, hdr, in wpas_dpp_rx_action()
4151 wpas_dpp_rx_priv_peer_intro_notify(wpa_s, src, hdr, in wpas_dpp_rx_action()
4161 if (wpa_s->dpp_pkex) in wpas_dpp_rx_action()
4162 pkex_t = wpa_s->dpp_pkex->t; in wpas_dpp_rx_action()
4163 else if (wpa_s->dpp_pkex_bi) in wpas_dpp_rx_action()
4164 pkex_t = wpa_s->dpp_pkex_bi->pkex_t; in wpas_dpp_rx_action()
4168 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PKEX_T_LIMIT "id=0"); in wpas_dpp_rx_action()
4169 wpas_dpp_pkex_remove(wpa_s, "*"); in wpas_dpp_rx_action()
4177 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_gas_initial_resp_timeout() local
4178 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_gas_initial_resp_timeout()
4185 gas_server_set_comeback_delay(wpa_s->gas_server, auth->config_resp_ctx, in wpas_dpp_gas_initial_resp_timeout()
4194 struct wpa_supplicant *wpa_s = ctx; in wpas_dpp_gas_req_handler() local
4195 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_gas_req_handler()
4206 if (wpa_s->dpp_auth_ok_on_ack && auth->configurator) { in wpas_dpp_gas_req_handler()
4214 wpa_s->dpp_auth_ok_on_ack = 0; in wpas_dpp_gas_req_handler()
4227 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_REQ_RX "src=" MACSTR, in wpas_dpp_gas_req_handler()
4280 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_NEEDED "peer=%d src=" in wpas_dpp_gas_req_handler()
4287 eloop_cancel_timeout(wpas_dpp_gas_initial_resp_timeout, wpa_s, in wpas_dpp_gas_req_handler()
4290 wpas_dpp_gas_initial_resp_timeout, wpa_s, in wpas_dpp_gas_req_handler()
4297 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_FAILED); in wpas_dpp_gas_req_handler()
4298 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_gas_req_handler()
4299 wpa_s->dpp_auth = NULL; in wpas_dpp_gas_req_handler()
4308 struct wpa_supplicant *wpa_s = ctx; in wpas_dpp_gas_status_handler() local
4309 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_gas_status_handler()
4341 eloop_cancel_timeout(wpas_dpp_reply_wait_timeout, wpa_s, NULL); in wpas_dpp_gas_status_handler()
4342 eloop_cancel_timeout(wpas_dpp_auth_conf_wait_timeout, wpa_s, NULL); in wpas_dpp_gas_status_handler()
4343 eloop_cancel_timeout(wpas_dpp_auth_resp_retry_timeout, wpa_s, NULL); in wpas_dpp_gas_status_handler()
4353 wpa_s, NULL); in wpas_dpp_gas_status_handler()
4356 wpa_s, NULL); in wpas_dpp_gas_status_handler()
4360 offchannel_send_action_done(wpa_s); in wpas_dpp_gas_status_handler()
4361 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_gas_status_handler()
4363 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_SENT "conf_status=%d", in wpas_dpp_gas_status_handler()
4366 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_FAILED); in wpas_dpp_gas_status_handler()
4367 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_gas_status_handler()
4368 wpa_s->dpp_auth = NULL; in wpas_dpp_gas_status_handler()
4371 if (!wpa_s->dpp_pb_result_indicated && wpas_dpp_pb_active(wpa_s)) { in wpas_dpp_gas_status_handler()
4373 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_RESULT in wpas_dpp_gas_status_handler()
4376 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_RESULT in wpas_dpp_gas_status_handler()
4378 wpa_s->dpp_pb_result_indicated = true; in wpas_dpp_gas_status_handler()
4380 wpas_dpp_remove_pb_hash(wpa_s); in wpas_dpp_gas_status_handler()
4381 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_gas_status_handler()
4387 int wpas_dpp_configurator_sign(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_configurator_sign() argument
4393 auth = dpp_alloc_auth(wpa_s->dpp, wpa_s); in wpas_dpp_configurator_sign()
4398 wpas_dpp_set_testing_options(wpa_s, auth); in wpas_dpp_configurator_sign()
4401 ret = wpas_dpp_handle_config_obj(wpa_s, auth, in wpas_dpp_configurator_sign()
4404 wpas_dpp_post_process_config(wpa_s, auth); in wpas_dpp_configurator_sign()
4414 wpas_dpp_tx_introduction_status(struct wpa_supplicant *wpa_s, in wpas_dpp_tx_introduction_status() argument
4428 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX_STATUS "dst=" MACSTR in wpas_dpp_tx_introduction_status()
4435 static int wpas_dpp_start_private_peer_intro(struct wpa_supplicant *wpa_s, in wpas_dpp_start_private_peer_intro() argument
4471 wait_time = wpa_s->max_remain_on_chan; in wpas_dpp_start_private_peer_intro()
4474 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_start_private_peer_intro()
4476 offchannel_send_action(wpa_s, bss->freq, bss->bssid, wpa_s->own_addr, in wpas_dpp_start_private_peer_intro()
4484 os_memcpy(wpa_s->dpp_intro_bssid, bss->bssid, ETH_ALEN); in wpas_dpp_start_private_peer_intro()
4485 wpa_s->dpp_intro_network = ssid; in wpas_dpp_start_private_peer_intro()
4491 int wpas_dpp_check_connect(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid, in wpas_dpp_check_connect() argument
4507 if (wpa_sm_pmksa_exists(wpa_s->wpa, bss->bssid, wpa_s->own_addr, ssid)) in wpas_dpp_check_connect()
4512 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_MISSING_CONNECTOR in wpas_dpp_check_connect()
4524 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_MISSING_CONNECTOR in wpas_dpp_check_connect()
4534 if (wpa_s->wpa_state == WPA_SCANNING) in wpas_dpp_check_connect()
4535 wpa_supplicant_set_state(wpa_s, wpa_s->scan_prev_wpa_state); in wpas_dpp_check_connect()
4539 return wpas_dpp_start_private_peer_intro(wpa_s, ssid, bss); in wpas_dpp_check_connect()
4639 wait_time = wpa_s->max_remain_on_chan; in wpas_dpp_check_connect()
4642 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_check_connect()
4644 offchannel_send_action(wpa_s, bss->freq, bss->bssid, wpa_s->own_addr, in wpas_dpp_check_connect()
4652 os_memcpy(wpa_s->dpp_intro_bssid, bss->bssid, ETH_ALEN); in wpas_dpp_check_connect()
4653 wpa_s->dpp_intro_network = ssid; in wpas_dpp_check_connect()
4658 int wpas_dpp_pkex_add(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_pkex_add() argument
4695 own_bi = dpp_bootstrap_get_id(wpa_s->dpp, atoi(pos)); in wpas_dpp_pkex_add()
4706 wpa_s->dpp_pkex_bi = own_bi; in wpas_dpp_pkex_add()
4709 os_free(wpa_s->dpp_pkex_identifier); in wpas_dpp_pkex_add()
4710 wpa_s->dpp_pkex_identifier = NULL; in wpas_dpp_pkex_add()
4717 wpa_s->dpp_pkex_identifier = os_malloc(end - pos + 1); in wpas_dpp_pkex_add()
4718 if (!wpa_s->dpp_pkex_identifier) in wpas_dpp_pkex_add()
4720 os_memcpy(wpa_s->dpp_pkex_identifier, pos, end - pos); in wpas_dpp_pkex_add()
4721 wpa_s->dpp_pkex_identifier[end - pos] = '\0'; in wpas_dpp_pkex_add()
4727 os_free(wpa_s->dpp_pkex_code); in wpas_dpp_pkex_add()
4728 wpa_s->dpp_pkex_code = os_strdup(pos + 6); in wpas_dpp_pkex_add()
4729 if (!wpa_s->dpp_pkex_code) in wpas_dpp_pkex_add()
4731 wpa_s->dpp_pkex_code_len = os_strlen(wpa_s->dpp_pkex_code); in wpas_dpp_pkex_add()
4746 wpa_s->dpp_pkex_ver = ver; in wpas_dpp_pkex_add()
4749 if (wpas_dpp_pkex_init(wpa_s, ver, ipaddr, tcp_port) < 0) in wpas_dpp_pkex_add()
4753 dpp_controller_pkex_add(wpa_s->dpp, own_bi, in wpas_dpp_pkex_add()
4754 wpa_s->dpp_pkex_code, in wpas_dpp_pkex_add()
4755 wpa_s->dpp_pkex_identifier); in wpas_dpp_pkex_add()
4761 os_free(wpa_s->dpp_pkex_auth_cmd); in wpas_dpp_pkex_add()
4762 wpa_s->dpp_pkex_auth_cmd = os_strdup(cmd); in wpas_dpp_pkex_add()
4768 int wpas_dpp_pkex_remove(struct wpa_supplicant *wpa_s, const char *id) in wpas_dpp_pkex_remove() argument
4784 os_free(wpa_s->dpp_pkex_code); in wpas_dpp_pkex_remove()
4785 wpa_s->dpp_pkex_code = NULL; in wpas_dpp_pkex_remove()
4786 os_free(wpa_s->dpp_pkex_identifier); in wpas_dpp_pkex_remove()
4787 wpa_s->dpp_pkex_identifier = NULL; in wpas_dpp_pkex_remove()
4788 os_free(wpa_s->dpp_pkex_auth_cmd); in wpas_dpp_pkex_remove()
4789 wpa_s->dpp_pkex_auth_cmd = NULL; in wpas_dpp_pkex_remove()
4790 wpa_s->dpp_pkex_bi = NULL; in wpas_dpp_pkex_remove()
4792 dpp_pkex_free(wpa_s->dpp_pkex); in wpas_dpp_pkex_remove()
4793 wpa_s->dpp_pkex = NULL; in wpas_dpp_pkex_remove()
4798 void wpas_dpp_stop(struct wpa_supplicant *wpa_s) in wpas_dpp_stop() argument
4800 if (wpa_s->dpp_auth || wpa_s->dpp_pkex || wpa_s->dpp_pkex_wait_auth_req) in wpas_dpp_stop()
4801 offchannel_send_action_done(wpa_s); in wpas_dpp_stop()
4802 dpp_auth_deinit(wpa_s->dpp_auth); in wpas_dpp_stop()
4803 wpa_s->dpp_auth = NULL; in wpas_dpp_stop()
4804 dpp_pkex_free(wpa_s->dpp_pkex); in wpas_dpp_stop()
4805 wpa_s->dpp_pkex = NULL; in wpas_dpp_stop()
4806 wpa_s->dpp_pkex_wait_auth_req = false; in wpas_dpp_stop()
4807 if (wpa_s->dpp_gas_client && wpa_s->dpp_gas_dialog_token >= 0) in wpas_dpp_stop()
4808 gas_query_stop(wpa_s->gas, wpa_s->dpp_gas_dialog_token); in wpas_dpp_stop()
4810 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_stop()
4815 int wpas_dpp_init(struct wpa_supplicant *wpa_s) in wpas_dpp_init() argument
4826 if (gas_server_register(wpa_s->gas_server, adv_proto_id, in wpas_dpp_init()
4828 wpas_dpp_gas_status_handler, wpa_s) < 0) in wpas_dpp_init()
4832 config.cb_ctx = wpa_s; in wpas_dpp_init()
4836 wpa_s->dpp = dpp_global_init(&config); in wpas_dpp_init()
4837 return wpa_s->dpp ? 0 : -1; in wpas_dpp_init()
4841 void wpas_dpp_deinit(struct wpa_supplicant *wpa_s) in wpas_dpp_deinit() argument
4844 os_free(wpa_s->dpp_config_obj_override); in wpas_dpp_deinit()
4845 wpa_s->dpp_config_obj_override = NULL; in wpas_dpp_deinit()
4846 os_free(wpa_s->dpp_discovery_override); in wpas_dpp_deinit()
4847 wpa_s->dpp_discovery_override = NULL; in wpas_dpp_deinit()
4848 os_free(wpa_s->dpp_groups_override); in wpas_dpp_deinit()
4849 wpa_s->dpp_groups_override = NULL; in wpas_dpp_deinit()
4850 wpa_s->dpp_ignore_netaccesskey_mismatch = 0; in wpas_dpp_deinit()
4852 if (!wpa_s->dpp) in wpas_dpp_deinit()
4854 eloop_cancel_timeout(wpas_dpp_pkex_retry_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4855 eloop_cancel_timeout(wpas_dpp_reply_wait_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4856 eloop_cancel_timeout(wpas_dpp_auth_conf_wait_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4857 eloop_cancel_timeout(wpas_dpp_init_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4858 eloop_cancel_timeout(wpas_dpp_auth_resp_retry_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4859 eloop_cancel_timeout(wpas_dpp_gas_initial_resp_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4860 eloop_cancel_timeout(wpas_dpp_gas_client_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4861 eloop_cancel_timeout(wpas_dpp_drv_wait_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4862 eloop_cancel_timeout(wpas_dpp_tx_auth_resp_roc_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4863 eloop_cancel_timeout(wpas_dpp_neg_freq_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4865 eloop_cancel_timeout(wpas_dpp_config_result_wait_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4867 wpa_s, NULL); in wpas_dpp_deinit()
4868 eloop_cancel_timeout(wpas_dpp_conn_status_result_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4870 wpa_s, NULL); in wpas_dpp_deinit()
4871 eloop_cancel_timeout(wpas_dpp_build_csr, wpa_s, NULL); in wpas_dpp_deinit()
4872 eloop_cancel_timeout(wpas_dpp_connected_timeout, wpa_s, NULL); in wpas_dpp_deinit()
4873 dpp_pfs_free(wpa_s->dpp_pfs); in wpas_dpp_deinit()
4874 wpa_s->dpp_pfs = NULL; in wpas_dpp_deinit()
4875 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_deinit()
4876 dpp_free_reconfig_id(wpa_s->dpp_reconfig_id); in wpas_dpp_deinit()
4877 wpa_s->dpp_reconfig_id = NULL; in wpas_dpp_deinit()
4880 eloop_cancel_timeout(wpas_dpp_build_new_key, wpa_s, NULL); in wpas_dpp_deinit()
4882 offchannel_send_action_done(wpa_s); in wpas_dpp_deinit()
4883 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_deinit()
4884 wpas_dpp_stop(wpa_s); in wpas_dpp_deinit()
4885 wpas_dpp_pkex_remove(wpa_s, "*"); in wpas_dpp_deinit()
4886 os_memset(wpa_s->dpp_intro_bssid, 0, ETH_ALEN); in wpas_dpp_deinit()
4887 os_free(wpa_s->dpp_configurator_params); in wpas_dpp_deinit()
4888 wpa_s->dpp_configurator_params = NULL; in wpas_dpp_deinit()
4889 dpp_global_clear(wpa_s->dpp); in wpas_dpp_deinit()
4893 static int wpas_dpp_build_conf_resp(struct wpa_supplicant *wpa_s, in wpas_dpp_build_conf_resp() argument
4908 eloop_cancel_timeout(wpas_dpp_gas_initial_resp_timeout, wpa_s, NULL); in wpas_dpp_build_conf_resp()
4909 if (gas_server_set_resp(wpa_s->gas_server, auth->config_resp_ctx, in wpas_dpp_build_conf_resp()
4921 int wpas_dpp_conf_set(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_conf_set() argument
4925 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_conf_set()
4936 auth = dpp_controller_get_auth(wpa_s->dpp, peer); in wpas_dpp_conf_set()
4957 eloop_cancel_timeout(wpas_dpp_gas_initial_resp_timeout, wpa_s, in wpas_dpp_conf_set()
4959 gas_server_set_comeback_delay(wpa_s->gas_server, in wpas_dpp_conf_set()
4970 return wpas_dpp_build_conf_resp(wpa_s, auth, tcp); in wpas_dpp_conf_set()
4976 int wpas_dpp_controller_start(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_controller_start() argument
4984 config.msg_ctx = wpa_s; in wpas_dpp_controller_start()
4985 config.cb_ctx = wpa_s; in wpas_dpp_controller_start()
5011 config.configurator_params = wpa_s->dpp_configurator_params; in wpas_dpp_controller_start()
5012 return dpp_controller_start(wpa_s->dpp, &config); in wpas_dpp_controller_start()
5020 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_chirp_timeout() local
5023 offchannel_send_action_done(wpa_s); in wpas_dpp_chirp_timeout()
5024 wpas_dpp_chirp_next(wpa_s, NULL); in wpas_dpp_chirp_timeout()
5028 static void wpas_dpp_chirp_tx_status(struct wpa_supplicant *wpa_s, in wpas_dpp_chirp_tx_status() argument
5036 wpa_s->dpp_chirp_freq); in wpas_dpp_chirp_tx_status()
5038 wpa_s, NULL) < 0) in wpas_dpp_chirp_tx_status()
5039 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_chirp_tx_status()
5045 wpa_s, NULL) < 0) in wpas_dpp_chirp_tx_status()
5046 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_chirp_tx_status()
5050 static void wpas_dpp_chirp_start(struct wpa_supplicant *wpa_s) in wpas_dpp_chirp_start() argument
5055 msg = wpa_s->dpp_presence_announcement; in wpas_dpp_chirp_start()
5058 struct wpa_ssid *ssid = wpa_s->dpp_reconfig_ssid; in wpas_dpp_chirp_start()
5060 if (ssid && wpa_s->dpp_reconfig_id && in wpas_dpp_chirp_start()
5061 wpa_config_get_network(wpa_s->conf, in wpas_dpp_chirp_start()
5062 wpa_s->dpp_reconfig_ssid_id) == in wpas_dpp_chirp_start()
5069 wpa_s->dpp_reconfig_id); in wpas_dpp_chirp_start()
5076 wpa_printf(MSG_DEBUG, "DPP: Chirp on %d MHz", wpa_s->dpp_chirp_freq); in wpas_dpp_chirp_start()
5077 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d", in wpas_dpp_chirp_start()
5078 MAC2STR(broadcast), wpa_s->dpp_chirp_freq, type); in wpas_dpp_chirp_start()
5080 wpa_s, wpa_s->dpp_chirp_freq, broadcast, in wpas_dpp_chirp_start()
5081 wpa_s->own_addr, broadcast, in wpas_dpp_chirp_start()
5084 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_chirp_start()
5090 static int * wpas_dpp_presence_ann_channels(struct wpa_supplicant *wpa_s, in wpas_dpp_presence_ann_channels() argument
5097 bool chan6 = wpa_s->hw.modes == NULL; in wpas_dpp_presence_ann_channels()
5107 mode = get_mode(wpa_s->hw.modes, wpa_s->hw.num_modes, in wpas_dpp_presence_ann_channels()
5123 mode = get_mode(wpa_s->hw.modes, wpa_s->hw.num_modes, in wpas_dpp_presence_ann_channels()
5145 mode = get_mode(wpa_s->hw.modes, wpa_s->hw.num_modes, in wpas_dpp_presence_ann_channels()
5162 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) { in wpas_dpp_presence_ann_channels()
5171 static void wpas_dpp_chirp_scan_res_handler(struct wpa_supplicant *wpa_s, in wpas_dpp_chirp_scan_res_handler() argument
5174 struct dpp_bootstrap_info *bi = wpa_s->dpp_chirp_bi; in wpas_dpp_chirp_scan_res_handler()
5176 if (!bi && !wpa_s->dpp_reconfig_ssid) in wpas_dpp_chirp_scan_res_handler()
5179 wpa_s->dpp_chirp_scan_done = 1; in wpas_dpp_chirp_scan_res_handler()
5181 os_free(wpa_s->dpp_chirp_freqs); in wpas_dpp_chirp_scan_res_handler()
5182 wpa_s->dpp_chirp_freqs = wpas_dpp_presence_ann_channels(wpa_s, bi); in wpas_dpp_chirp_scan_res_handler()
5184 if (!wpa_s->dpp_chirp_freqs || in wpas_dpp_chirp_scan_res_handler()
5185 eloop_register_timeout(0, 0, wpas_dpp_chirp_next, wpa_s, NULL) < 0) in wpas_dpp_chirp_scan_res_handler()
5186 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_chirp_scan_res_handler()
5192 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_chirp_next() local
5195 if (wpa_s->dpp_chirp_listen) in wpas_dpp_chirp_next()
5196 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_chirp_next()
5198 if (wpa_s->dpp_chirp_freq == 0) { in wpas_dpp_chirp_next()
5199 if (wpa_s->dpp_chirp_round % 4 == 0 && in wpas_dpp_chirp_next()
5200 !wpa_s->dpp_chirp_scan_done) { in wpas_dpp_chirp_next()
5201 if (wpas_scan_scheduled(wpa_s)) { in wpas_dpp_chirp_next()
5206 wpa_s, NULL) < 0) { in wpas_dpp_chirp_next()
5207 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_chirp_next()
5214 wpa_s->scan_req = MANUAL_SCAN_REQ; in wpas_dpp_chirp_next()
5215 wpa_s->scan_res_handler = in wpas_dpp_chirp_next()
5217 wpa_supplicant_req_scan(wpa_s, 0, 0); in wpas_dpp_chirp_next()
5220 wpa_s->dpp_chirp_freq = wpa_s->dpp_chirp_freqs[0]; in wpas_dpp_chirp_next()
5221 wpa_s->dpp_chirp_round++; in wpas_dpp_chirp_next()
5223 wpa_s->dpp_chirp_round); in wpas_dpp_chirp_next()
5225 for (i = 0; wpa_s->dpp_chirp_freqs[i]; i++) in wpas_dpp_chirp_next()
5226 if (wpa_s->dpp_chirp_freqs[i] == wpa_s->dpp_chirp_freq) in wpas_dpp_chirp_next()
5228 if (!wpa_s->dpp_chirp_freqs[i]) { in wpas_dpp_chirp_next()
5231 wpa_s->dpp_chirp_freq); in wpas_dpp_chirp_next()
5235 if (wpa_s->dpp_chirp_freqs[i]) { in wpas_dpp_chirp_next()
5236 wpa_s->dpp_chirp_freq = wpa_s->dpp_chirp_freqs[i]; in wpas_dpp_chirp_next()
5238 wpa_s->dpp_chirp_iter--; in wpas_dpp_chirp_next()
5239 if (wpa_s->dpp_chirp_iter <= 0) { in wpas_dpp_chirp_next()
5242 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_chirp_next()
5245 wpa_s->dpp_chirp_freq = 0; in wpas_dpp_chirp_next()
5246 wpa_s->dpp_chirp_scan_done = 0; in wpas_dpp_chirp_next()
5248 wpa_s, NULL) < 0) { in wpas_dpp_chirp_next()
5249 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_chirp_next()
5252 if (wpa_s->dpp_chirp_listen) { in wpas_dpp_chirp_next()
5255 wpa_s->dpp_chirp_listen); in wpas_dpp_chirp_next()
5256 wpas_dpp_listen_start(wpa_s, in wpas_dpp_chirp_next()
5257 wpa_s->dpp_chirp_listen); in wpas_dpp_chirp_next()
5266 wpas_dpp_chirp_start(wpa_s); in wpas_dpp_chirp_next()
5270 int wpas_dpp_chirp(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_chirp() argument
5280 bi = dpp_bootstrap_get_id(wpa_s->dpp, atoi(pos)); in wpas_dpp_chirp()
5301 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_chirp()
5302 wpa_s->dpp_allowed_roles = DPP_CAPAB_ENROLLEE; in wpas_dpp_chirp()
5303 wpa_s->dpp_netrole = DPP_NETROLE_STA; in wpas_dpp_chirp()
5304 wpa_s->dpp_qr_mutual = 0; in wpas_dpp_chirp()
5305 wpa_s->dpp_chirp_bi = bi; in wpas_dpp_chirp()
5306 wpa_s->dpp_presence_announcement = dpp_build_presence_announcement(bi); in wpas_dpp_chirp()
5307 if (!wpa_s->dpp_presence_announcement) in wpas_dpp_chirp()
5309 wpa_s->dpp_chirp_iter = iter; in wpas_dpp_chirp()
5310 wpa_s->dpp_chirp_round = 0; in wpas_dpp_chirp()
5311 wpa_s->dpp_chirp_scan_done = 0; in wpas_dpp_chirp()
5312 wpa_s->dpp_chirp_listen = listen_freq; in wpas_dpp_chirp()
5314 return eloop_register_timeout(0, 0, wpas_dpp_chirp_next, wpa_s, NULL); in wpas_dpp_chirp()
5318 void wpas_dpp_chirp_stop(struct wpa_supplicant *wpa_s) in wpas_dpp_chirp_stop() argument
5320 if (wpa_s->dpp_presence_announcement || in wpas_dpp_chirp_stop()
5321 wpa_s->dpp_reconfig_ssid) { in wpas_dpp_chirp_stop()
5322 offchannel_send_action_done(wpa_s); in wpas_dpp_chirp_stop()
5323 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CHIRP_STOPPED); in wpas_dpp_chirp_stop()
5325 wpa_s->dpp_chirp_bi = NULL; in wpas_dpp_chirp_stop()
5326 wpabuf_free(wpa_s->dpp_presence_announcement); in wpas_dpp_chirp_stop()
5327 wpa_s->dpp_presence_announcement = NULL; in wpas_dpp_chirp_stop()
5328 if (wpa_s->dpp_chirp_listen) in wpas_dpp_chirp_stop()
5329 wpas_dpp_listen_stop(wpa_s); in wpas_dpp_chirp_stop()
5330 wpa_s->dpp_chirp_listen = 0; in wpas_dpp_chirp_stop()
5331 wpa_s->dpp_chirp_freq = 0; in wpas_dpp_chirp_stop()
5332 os_free(wpa_s->dpp_chirp_freqs); in wpas_dpp_chirp_stop()
5333 wpa_s->dpp_chirp_freqs = NULL; in wpas_dpp_chirp_stop()
5334 eloop_cancel_timeout(wpas_dpp_chirp_next, wpa_s, NULL); in wpas_dpp_chirp_stop()
5335 eloop_cancel_timeout(wpas_dpp_chirp_timeout, wpa_s, NULL); in wpas_dpp_chirp_stop()
5336 if (wpa_s->scan_res_handler == wpas_dpp_chirp_scan_res_handler) { in wpas_dpp_chirp_stop()
5337 wpas_abort_ongoing_scan(wpa_s); in wpas_dpp_chirp_stop()
5338 wpa_s->scan_res_handler = NULL; in wpas_dpp_chirp_stop()
5343 int wpas_dpp_reconfig(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_reconfig() argument
5349 ssid = wpa_config_get_network(wpa_s->conf, atoi(cmd)); in wpas_dpp_reconfig()
5364 if (wpa_s->dpp_auth) { in wpas_dpp_reconfig()
5370 dpp_free_reconfig_id(wpa_s->dpp_reconfig_id); in wpas_dpp_reconfig()
5371 wpa_s->dpp_reconfig_id = dpp_gen_reconfig_id(ssid->dpp_csign, in wpas_dpp_reconfig()
5375 if (!wpa_s->dpp_reconfig_id) { in wpas_dpp_reconfig()
5380 if (wpa_s->wpa_state >= WPA_AUTHENTICATING) { in wpas_dpp_reconfig()
5382 wpa_s->own_disconnect_req = 1; in wpas_dpp_reconfig()
5384 wpa_s, WLAN_REASON_DEAUTH_LEAVING); in wpas_dpp_reconfig()
5386 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_reconfig()
5387 wpa_s->dpp_allowed_roles = DPP_CAPAB_ENROLLEE; in wpas_dpp_reconfig()
5388 wpa_s->dpp_netrole = DPP_NETROLE_STA; in wpas_dpp_reconfig()
5389 wpa_s->dpp_qr_mutual = 0; in wpas_dpp_reconfig()
5390 wpa_s->dpp_reconfig_ssid = ssid; in wpas_dpp_reconfig()
5391 wpa_s->dpp_reconfig_ssid_id = ssid->id; in wpas_dpp_reconfig()
5392 wpa_s->dpp_chirp_iter = iter; in wpas_dpp_reconfig()
5393 wpa_s->dpp_chirp_round = 0; in wpas_dpp_reconfig()
5394 wpa_s->dpp_chirp_scan_done = 0; in wpas_dpp_reconfig()
5395 wpa_s->dpp_chirp_listen = 0; in wpas_dpp_reconfig()
5397 return eloop_register_timeout(0, 0, wpas_dpp_chirp_next, wpa_s, NULL); in wpas_dpp_reconfig()
5401 int wpas_dpp_ca_set(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_ca_set() argument
5405 struct dpp_authentication *auth = wpa_s->dpp_auth; in wpas_dpp_ca_set()
5417 auth = dpp_controller_get_auth(wpa_s->dpp, peer); in wpas_dpp_ca_set()
5449 return wpas_dpp_build_conf_resp(wpa_s, auth, tcp); in wpas_dpp_ca_set()
5473 return wpas_dpp_build_conf_resp(wpa_s, auth, tcp); in wpas_dpp_ca_set()
5487 static int wpas_dpp_pb_announce(struct wpa_supplicant *wpa_s, int freq);
5491 static void wpas_dpp_pb_tx_status(struct wpa_supplicant *wpa_s, in wpas_dpp_pb_tx_status() argument
5502 wpa_s, NULL) < 0) in wpas_dpp_pb_tx_status()
5503 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pb_tx_status()
5509 if (wpa_s->dpp_pb_discovery_done) { in wpas_dpp_pb_tx_status()
5510 wpa_s->dpp_pb_announce_count = 0; in wpas_dpp_pb_tx_status()
5515 wpa_s, NULL) < 0) in wpas_dpp_pb_tx_status()
5516 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pb_tx_status()
5518 } else if (wpa_s->dpp_pb_announce_count >= DPP_PB_ANNOUNCE_PER_CHAN) { in wpas_dpp_pb_tx_status()
5523 wpa_s, NULL) < 0) in wpas_dpp_pb_tx_status()
5524 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pb_tx_status()
5528 if (wpas_dpp_pb_announce(wpa_s, freq) < 0) in wpas_dpp_pb_tx_status()
5529 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pb_tx_status()
5533 static int wpas_dpp_pb_announce(struct wpa_supplicant *wpa_s, int freq) in wpas_dpp_pb_announce() argument
5538 msg = wpa_s->dpp_pb_announcement; in wpas_dpp_pb_announce()
5542 wpa_s->dpp_pb_announce_count++; in wpas_dpp_pb_announce()
5545 wpa_s->dpp_pb_announce_count, DPP_PB_ANNOUNCE_PER_CHAN, in wpas_dpp_pb_announce()
5549 if (wpa_s->dpp_pb_announce_count == 1) in wpas_dpp_pb_announce()
5550 wpa_msg(wpa_s, MSG_INFO, in wpas_dpp_pb_announce()
5554 wpa_s, freq, broadcast, wpa_s->own_addr, broadcast, in wpas_dpp_pb_announce()
5565 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_pb_next() local
5569 if (!wpa_s->dpp_pb_freqs) in wpas_dpp_pb_next()
5573 offchannel_send_action_done(wpa_s); in wpas_dpp_pb_next()
5575 if (os_reltime_expired(&now, &wpa_s->dpp_pb_time, 100)) { in wpas_dpp_pb_next()
5577 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pb_next()
5581 if (wpa_s->dpp_pb_freq_idx >= int_array_len(wpa_s->dpp_pb_freqs)) { in wpas_dpp_pb_next()
5584 wpa_s->dpp_pb_freq_idx = 0; in wpas_dpp_pb_next()
5585 if (wpa_s->dpp_pb_stop_iter > 0) { in wpas_dpp_pb_next()
5586 wpa_s->dpp_pb_stop_iter--; in wpas_dpp_pb_next()
5588 if (wpa_s->dpp_pb_stop_iter == 1) { in wpas_dpp_pb_next()
5589 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_STATUS in wpas_dpp_pb_next()
5593 wpa_s, NULL) < 0) { in wpas_dpp_pb_next()
5594 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pb_next()
5600 if (wpa_s->dpp_pb_stop_iter == 0) { in wpas_dpp_pb_next()
5601 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_STATUS in wpas_dpp_pb_next()
5603 wpa_s->dpp_pb_resp_freq); in wpas_dpp_pb_next()
5604 wpa_s->dpp_pb_discovery_done = true; in wpas_dpp_pb_next()
5606 wpa_s->dpp_pkex_bi = wpa_s->dpp_pb_bi; in wpas_dpp_pb_next()
5608 os_free(wpa_s->dpp_pkex_code); in wpas_dpp_pb_next()
5609 wpa_s->dpp_pkex_code = os_memdup( in wpas_dpp_pb_next()
5610 wpa_s->dpp_pb_c_nonce, in wpas_dpp_pb_next()
5611 wpa_s->dpp_pb_c_nonce_len); in wpas_dpp_pb_next()
5612 wpa_s->dpp_pkex_code_len = in wpas_dpp_pb_next()
5613 wpa_s->dpp_pb_c_nonce_len; in wpas_dpp_pb_next()
5615 os_free(wpa_s->dpp_pkex_identifier); in wpas_dpp_pb_next()
5616 wpa_s->dpp_pkex_identifier = in wpas_dpp_pb_next()
5619 if (!wpa_s->dpp_pkex_code || in wpas_dpp_pb_next()
5620 !wpa_s->dpp_pkex_identifier) { in wpas_dpp_pb_next()
5621 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pb_next()
5625 wpa_s->dpp_pkex_ver = PKEX_VER_ONLY_2; in wpas_dpp_pb_next()
5627 os_free(wpa_s->dpp_pkex_auth_cmd); in wpas_dpp_pb_next()
5628 wpa_s->dpp_pkex_auth_cmd = NULL; in wpas_dpp_pb_next()
5633 if (wpa_s->dpp_pb_discovery_done) in wpas_dpp_pb_next()
5634 freq = wpa_s->dpp_pb_resp_freq; in wpas_dpp_pb_next()
5636 freq = wpa_s->dpp_pb_freqs[wpa_s->dpp_pb_freq_idx++]; in wpas_dpp_pb_next()
5637 wpa_s->dpp_pb_announce_count = 0; in wpas_dpp_pb_next()
5638 if (!wpa_s->dpp_pb_announcement) { in wpas_dpp_pb_next()
5642 if (wpas_dpp_pb_announce(wpa_s, freq) < 0) { in wpas_dpp_pb_next()
5643 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pb_next()
5651 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_dpp_push_button_expire() local
5655 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_push_button_expire()
5659 static int wpas_dpp_push_button_configurator(struct wpa_supplicant *wpa_s, in wpas_dpp_push_button_configurator() argument
5662 wpa_s->dpp_pb_configurator = true; in wpas_dpp_push_button_configurator()
5663 wpa_s->dpp_pb_announce_time.sec = 0; in wpas_dpp_push_button_configurator()
5664 wpa_s->dpp_pb_announce_time.usec = 0; in wpas_dpp_push_button_configurator()
5665 str_clear_free(wpa_s->dpp_pb_cmd); in wpas_dpp_push_button_configurator()
5666 wpa_s->dpp_pb_cmd = NULL; in wpas_dpp_push_button_configurator()
5668 wpa_s->dpp_pb_cmd = os_strdup(cmd); in wpas_dpp_push_button_configurator()
5669 if (!wpa_s->dpp_pb_cmd) in wpas_dpp_push_button_configurator()
5673 wpa_s, NULL); in wpas_dpp_push_button_configurator()
5675 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_STATUS "started"); in wpas_dpp_push_button_configurator()
5680 static void wpas_dpp_pb_scan_res_handler(struct wpa_supplicant *wpa_s, in wpas_dpp_pb_scan_res_handler() argument
5683 if (!wpa_s->dpp_pb_time.sec && !wpa_s->dpp_pb_time.usec) in wpas_dpp_pb_scan_res_handler()
5686 os_free(wpa_s->dpp_pb_freqs); in wpas_dpp_pb_scan_res_handler()
5687 wpa_s->dpp_pb_freqs = wpas_dpp_presence_ann_channels(wpa_s, NULL); in wpas_dpp_pb_scan_res_handler()
5690 if (!wpa_s->dpp_pb_freqs || in wpas_dpp_pb_scan_res_handler()
5691 eloop_register_timeout(0, 0, wpas_dpp_pb_next, wpa_s, NULL) < 0) in wpas_dpp_pb_scan_res_handler()
5692 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_pb_scan_res_handler()
5696 int wpas_dpp_push_button(struct wpa_supplicant *wpa_s, const char *cmd) in wpas_dpp_push_button() argument
5700 if (!wpa_s->dpp) in wpas_dpp_push_button()
5702 wpas_dpp_push_button_stop(wpa_s); in wpas_dpp_push_button()
5703 wpas_dpp_stop(wpa_s); in wpas_dpp_push_button()
5704 wpas_dpp_chirp_stop(wpa_s); in wpas_dpp_push_button()
5706 os_get_reltime(&wpa_s->dpp_pb_time); in wpas_dpp_push_button()
5711 return wpas_dpp_push_button_configurator(wpa_s, cmd); in wpas_dpp_push_button()
5713 wpa_s->dpp_pb_configurator = false; in wpas_dpp_push_button()
5715 wpa_s->dpp_pb_freq_idx = 0; in wpas_dpp_push_button()
5717 res = dpp_bootstrap_gen(wpa_s->dpp, "type=pkex"); in wpas_dpp_push_button()
5720 wpa_s->dpp_pb_bi = dpp_bootstrap_get_id(wpa_s->dpp, res); in wpas_dpp_push_button()
5721 if (!wpa_s->dpp_pb_bi) in wpas_dpp_push_button()
5724 wpa_s->dpp_allowed_roles = DPP_CAPAB_ENROLLEE; in wpas_dpp_push_button()
5725 wpa_s->dpp_netrole = DPP_NETROLE_STA; in wpas_dpp_push_button()
5726 wpa_s->dpp_qr_mutual = 0; in wpas_dpp_push_button()
5727 wpa_s->dpp_pb_announcement = in wpas_dpp_push_button()
5728 dpp_build_pb_announcement(wpa_s->dpp_pb_bi); in wpas_dpp_push_button()
5729 if (!wpa_s->dpp_pb_announcement) in wpas_dpp_push_button()
5734 wpa_s->scan_req = MANUAL_SCAN_REQ; in wpas_dpp_push_button()
5735 wpa_s->scan_res_handler = wpas_dpp_pb_scan_res_handler; in wpas_dpp_push_button()
5736 wpa_supplicant_req_scan(wpa_s, 0, 0); in wpas_dpp_push_button()
5737 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_STATUS "started"); in wpas_dpp_push_button()
5742 void wpas_dpp_push_button_stop(struct wpa_supplicant *wpa_s) in wpas_dpp_push_button_stop() argument
5744 if (!wpa_s->dpp) in wpas_dpp_push_button_stop()
5746 os_free(wpa_s->dpp_pb_freqs); in wpas_dpp_push_button_stop()
5747 wpa_s->dpp_pb_freqs = NULL; in wpas_dpp_push_button_stop()
5748 wpabuf_free(wpa_s->dpp_pb_announcement); in wpas_dpp_push_button_stop()
5749 wpa_s->dpp_pb_announcement = NULL; in wpas_dpp_push_button_stop()
5750 if (wpa_s->dpp_pb_bi) { in wpas_dpp_push_button_stop()
5753 if (wpa_s->dpp_pb_bi == wpa_s->dpp_pkex_bi) in wpas_dpp_push_button_stop()
5754 wpa_s->dpp_pkex_bi = NULL; in wpas_dpp_push_button_stop()
5755 os_snprintf(id, sizeof(id), "%u", wpa_s->dpp_pb_bi->id); in wpas_dpp_push_button_stop()
5756 dpp_bootstrap_remove(wpa_s->dpp, id); in wpas_dpp_push_button_stop()
5757 wpa_s->dpp_pb_bi = NULL; in wpas_dpp_push_button_stop()
5758 if (!wpa_s->dpp_pb_result_indicated) { in wpas_dpp_push_button_stop()
5759 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_RESULT "failed"); in wpas_dpp_push_button_stop()
5760 wpa_s->dpp_pb_result_indicated = true; in wpas_dpp_push_button_stop()
5764 wpa_s->dpp_pb_resp_freq = 0; in wpas_dpp_push_button_stop()
5765 wpa_s->dpp_pb_stop_iter = 0; in wpas_dpp_push_button_stop()
5766 wpa_s->dpp_pb_discovery_done = false; in wpas_dpp_push_button_stop()
5767 os_free(wpa_s->dpp_pb_cmd); in wpas_dpp_push_button_stop()
5768 wpa_s->dpp_pb_cmd = NULL; in wpas_dpp_push_button_stop()
5770 eloop_cancel_timeout(wpas_dpp_pb_next, wpa_s, NULL); in wpas_dpp_push_button_stop()
5771 eloop_cancel_timeout(wpas_dpp_push_button_expire, wpa_s, NULL); in wpas_dpp_push_button_stop()
5772 if (wpas_dpp_pb_active(wpa_s)) { in wpas_dpp_push_button_stop()
5774 if (!wpa_s->dpp_pb_result_indicated) in wpas_dpp_push_button_stop()
5775 wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_PB_RESULT "failed"); in wpas_dpp_push_button_stop()
5777 wpa_s->dpp_pb_time.sec = 0; in wpas_dpp_push_button_stop()
5778 wpa_s->dpp_pb_time.usec = 0; in wpas_dpp_push_button_stop()
5779 dpp_pkex_free(wpa_s->dpp_pkex); in wpas_dpp_push_button_stop()
5780 wpa_s->dpp_pkex = NULL; in wpas_dpp_push_button_stop()
5781 os_free(wpa_s->dpp_pkex_auth_cmd); in wpas_dpp_push_button_stop()
5782 wpa_s->dpp_pkex_auth_cmd = NULL; in wpas_dpp_push_button_stop()
5784 wpa_s->dpp_pb_result_indicated = false; in wpas_dpp_push_button_stop()
5786 str_clear_free(wpa_s->dpp_pb_cmd); in wpas_dpp_push_button_stop()
5787 wpa_s->dpp_pb_cmd = NULL; in wpas_dpp_push_button_stop()
5789 if (wpa_s->scan_res_handler == wpas_dpp_pb_scan_res_handler) { in wpas_dpp_push_button_stop()
5790 wpas_abort_ongoing_scan(wpa_s); in wpas_dpp_push_button_stop()
5791 wpa_s->scan_res_handler = NULL; in wpas_dpp_push_button_stop()