#define WPS_EVENT_M2D "WPS-M2D "
/** WPS registration failed after M2/M2D */
#define WPS_EVENT_FAIL "WPS-FAIL "
+/** WPS registration completed successfully */
+#define WPS_EVENT_SUCCESS "WPS-SUCCESS "
/* hostapd control interface - fixed message prefixes */
#define WPS_EVENT_PIN_NEEDED "WPS-PIN-NEEDED "
enum wps_event {
WPS_EV_M2D,
- WPS_EV_FAIL
+ WPS_EV_FAIL,
+ WPS_EV_SUCCESS
};
union wps_event_data {
data.fail.msg = msg;
wps->event_cb(wps->cb_ctx, WPS_EV_FAIL, &data);
}
+
+
+void wps_success_event(struct wps_context *wps)
+{
+ if (wps->event_cb == NULL)
+ return;
+
+ wps->event_cb(wps->cb_ctx, WPS_EV_SUCCESS, NULL);
+}
return NULL;
}
- wps->state = wps->authenticator ? RECV_ACK : WPS_FINISHED;
+ if (wps->authenticator)
+ wps->state = RECV_ACK;
+ else {
+ wps_success_event(wps->wps);
+ wps->state = WPS_FINISHED;
+ }
return msg;
}
if (wps->state == RECV_ACK && wps->authenticator) {
wpa_printf(MSG_DEBUG, "WPS: External Registrar registration "
"completed successfully");
+ wps_success_event(wps->wps);
wps->state = WPS_FINISHED;
return WPS_DONE;
}
struct wpabuf * wps_decrypt_encr_settings(struct wps_data *wps, const u8 *encr,
size_t encr_len);
void wps_fail_event(struct wps_context *wps, enum wps_msg_type msg);
+void wps_success_event(struct wps_context *wps);
/* wps_attr_parse.c */
int wps_parse_msg(const struct wpabuf *msg, struct wps_parse_attr *attr);
wps_registrar_pbc_completed(wps->registrar);
}
+ wps_success_event(wps->wps);
+
return WPS_DONE;
}
wpsStatusText->setText("Registrar does not yet know PIN");
} else if (str_match(pos, WPS_EVENT_FAIL)) {
wpsStatusText->setText("Registration failed");
+ } else if (str_match(pos, WPS_EVENT_SUCCESS)) {
+ wpsStatusText->setText("Registration succeeded");
}
}
}
+static void wpa_supplicant_wps_event_success(struct wpa_supplicant *wpa_s)
+{
+ wpa_msg(wpa_s, MSG_INFO, WPS_EVENT_SUCCESS);
+}
+
+
static void wpa_supplicant_wps_event(void *ctx, enum wps_event event,
union wps_event_data *data)
{
case WPS_EV_FAIL:
wpa_supplicant_wps_event_fail(wpa_s, &data->fail);
break;
+ case WPS_EV_SUCCESS:
+ wpa_supplicant_wps_event_success(wpa_s);
+ break;
}
}