static void wpa_supplicant_status_cb(void *ctx, const char *status, const char *parameter) { struct wpa_supplicant *wpa_s = ctx; wpas_notify_eap_status(wpa_s, status, parameter); }
static void wpa_supplicant_eap_param_needed(void *ctx, enum wpa_ctrl_req_type field, const char *default_txt) { struct wpa_supplicant *wpa_s = ctx; struct wpa_ssid *ssid = wpa_s->current_ssid; const char *field_name, *txt = NULL; if (ssid == NULL) return; if (field == WPA_CTRL_REQ_EXT_CERT_CHECK) ssid->eap.pending_ext_cert_check = PENDING_CHECK; wpas_notify_network_request(wpa_s, ssid, field, default_txt); field_name = wpa_supplicant_ctrl_req_to_string(field, default_txt, &txt); if (field_name == NULL) { wpa_printf(MSG_WARNING, "Unhandled EAP param %d needed", field); return; } wpas_notify_eap_status(wpa_s, "eap parameter needed", field_name); wpas_send_ctrl_req(wpa_s, ssid, field_name, txt); }
static void wpa_supplicant_eap_param_needed(void *ctx, enum wpa_ctrl_req_type field, const char *default_txt) { struct wpa_supplicant *wpa_s = ctx; struct wpa_ssid *ssid = wpa_s->current_ssid; const char *field_name, *txt = NULL; char *buf; size_t buflen; int len; if (ssid == NULL) return; wpas_notify_network_request(wpa_s, ssid, field, default_txt); field_name = wpa_supplicant_ctrl_req_to_string(field, default_txt, &txt); if (field_name == NULL) { wpa_printf(MSG_WARNING, "Unhandled EAP param %d needed", field); return; } wpas_notify_eap_status(wpa_s, "eap parameter needed", field_name); buflen = 100 + os_strlen(txt) + ssid->ssid_len; buf = os_malloc(buflen); if (buf == NULL) return; len = os_snprintf(buf, buflen, WPA_CTRL_REQ "%s-%d:%s needed for SSID ", field_name, ssid->id, txt); if (len < 0 || (size_t) len >= buflen) { os_free(buf); return; } if (ssid->ssid && buflen > len + ssid->ssid_len) { os_memcpy(buf + len, ssid->ssid, ssid->ssid_len); len += ssid->ssid_len; buf[len] = '\0'; } buf[buflen - 1] = '\0'; wpa_msg(wpa_s, MSG_INFO, "%s", buf); os_free(buf); }