Indicate CTRL-EVENT-AUTH-REJECT event on authentication rejection

This allows control interface monitors to get more detailed information
in cases where wpa_supplicant-based SME receives an Authentication frame
with non-zero status code.

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2015-09-05 18:33:35 +03:00
parent 142f7ba643
commit ec4387f9c9
2 changed files with 18 additions and 2 deletions

View file

@ -28,6 +28,8 @@ extern "C" {
#define WPA_EVENT_DISCONNECTED "CTRL-EVENT-DISCONNECTED " #define WPA_EVENT_DISCONNECTED "CTRL-EVENT-DISCONNECTED "
/** Association rejected during connection attempt */ /** Association rejected during connection attempt */
#define WPA_EVENT_ASSOC_REJECT "CTRL-EVENT-ASSOC-REJECT " #define WPA_EVENT_ASSOC_REJECT "CTRL-EVENT-ASSOC-REJECT "
/** Authentication rejected during connection attempt */
#define WPA_EVENT_AUTH_REJECT "CTRL-EVENT-AUTH-REJECT "
/** wpa_supplicant is exiting */ /** wpa_supplicant is exiting */
#define WPA_EVENT_TERMINATING "CTRL-EVENT-TERMINATING " #define WPA_EVENT_TERMINATING "CTRL-EVENT-TERMINATING "
/** Password change was completed successfully */ /** Password change was completed successfully */

View file

@ -817,8 +817,22 @@ void sme_event_auth(struct wpa_supplicant *wpa_s, union wpa_event_data *data)
#endif /* CONFIG_SAE */ #endif /* CONFIG_SAE */
if (data->auth.status_code != WLAN_STATUS_SUCCESS) { if (data->auth.status_code != WLAN_STATUS_SUCCESS) {
wpa_dbg(wpa_s, MSG_DEBUG, "SME: Authentication failed (status " char *ie_txt = NULL;
"code %d)", data->auth.status_code);
if (data->auth.ies && data->auth.ies_len) {
size_t buflen = 2 * data->auth.ies_len + 1;
ie_txt = os_malloc(buflen);
if (ie_txt) {
wpa_snprintf_hex(ie_txt, buflen, data->auth.ies,
data->auth.ies_len);
}
}
wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_AUTH_REJECT MACSTR
" auth_type=%u auth_transaction=%u status_code=%u ie=%s",
MAC2STR(data->auth.peer), data->auth.auth_type,
data->auth.auth_transaction, data->auth.status_code,
ie_txt);
os_free(ie_txt);
if (data->auth.status_code != if (data->auth.status_code !=
WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG || WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG ||