]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Add 802.11 status code strings
authorAlex Khouderchah <akhouderchah@google.com>
Thu, 18 Apr 2019 18:03:21 +0000 (11:03 -0700)
committerJouni Malinen <j@w1.fi>
Mon, 22 Apr 2019 19:08:07 +0000 (22:08 +0300)
Logs involving IEEE 802.11 Status Codes output the Status Code value,
but do not provide any explanation of what the value means. This change
provides a terse explanation of each status code using the latter part
of the Status Code #define names.

Signed-off-by: Alex Khouderchah <akhouderchah@chromium.org>
src/ap/ieee802_11.c
src/ap/wpa_auth_ft.c
src/common/ieee802_11_common.c
src/common/ieee802_11_common.h

index fde19b526f05136dcd665a453392ba561bc46495..56f6363a3dba16837d7b3c3b2c2118011522ae07 100644 (file)
@@ -1038,8 +1038,8 @@ static void handle_auth_sae(struct hostapd_data *hapd, struct sta_info *sta,
 
                hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
                               HOSTAPD_LEVEL_DEBUG,
-                              "start SAE authentication (RX commit, status=%u)",
-                              status_code);
+                              "start SAE authentication (RX commit, status=%u (%s))",
+                              status_code, status2str(status_code));
 
                if ((hapd->conf->mesh & MESH_ENABLED) &&
                    status_code == WLAN_STATUS_ANTI_CLOGGING_TOKEN_REQ &&
@@ -1182,8 +1182,8 @@ static void handle_auth_sae(struct hostapd_data *hapd, struct sta_info *sta,
        } else if (auth_transaction == 2) {
                hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
                               HOSTAPD_LEVEL_DEBUG,
-                              "SAE authentication (RX confirm, status=%u)",
-                              status_code);
+                              "SAE authentication (RX confirm, status=%u (%s))",
+                              status_code, status2str(status_code));
                if (status_code != WLAN_STATUS_SUCCESS)
                        goto remove_sta;
                if (sta->sae->state >= SAE_CONFIRMED ||
@@ -1224,8 +1224,9 @@ static void handle_auth_sae(struct hostapd_data *hapd, struct sta_info *sta,
        } else {
                hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
                               HOSTAPD_LEVEL_DEBUG,
-                              "unexpected SAE authentication transaction %u (status=%u)",
-                              auth_transaction, status_code);
+                              "unexpected SAE authentication transaction %u (status=%u (%s))",
+                              auth_transaction, status_code,
+                              status2str(status_code));
                if (status_code != WLAN_STATUS_SUCCESS)
                        goto remove_sta;
                resp = WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION;
index ac16199a6006f742f87e3c2ec2ecfed314f7407a..09d579e0180faa70b0b8cb2523fa1638e788fd9b 100644 (file)
@@ -3090,8 +3090,9 @@ void wpa_ft_process_auth(struct wpa_state_machine *sm, const u8 *bssid,
        status = res;
 
        wpa_printf(MSG_DEBUG, "FT: FT authentication response: dst=" MACSTR
-                  " auth_transaction=%d status=%d",
-                  MAC2STR(sm->addr), auth_transaction + 1, status);
+                  " auth_transaction=%d status=%u (%s)",
+                  MAC2STR(sm->addr), auth_transaction + 1, status,
+                  status2str(status));
        wpa_hexdump(MSG_DEBUG, "FT: Response IEs", resp_ies, resp_ies_len);
        cb(ctx, sm->addr, bssid, auth_transaction + 1, status,
           resp_ies, resp_ies_len);
@@ -3449,8 +3450,9 @@ static int wpa_ft_send_rrb_auth_resp(struct wpa_state_machine *sm,
        u8 *pos;
 
        wpa_printf(MSG_DEBUG, "FT: RRB authentication response: STA=" MACSTR
-                  " CurrentAP=" MACSTR " status=%d",
-                  MAC2STR(sm->addr), MAC2STR(current_ap), status);
+                  " CurrentAP=" MACSTR " status=%u (%s)",
+                  MAC2STR(sm->addr), MAC2STR(current_ap), status,
+                  status2str(status));
        wpa_hexdump(MSG_DEBUG, "FT: Response IEs", resp_ies, resp_ies_len);
 
        /* RRB - Forward action frame response to the Current AP */
index e03f59e224b0200af80ddd93f92e3a4bbbbd7386..c02b99dbc3fac7493623ff14015729a550da7386 100644 (file)
@@ -1386,6 +1386,114 @@ const char * reason2str(u16 reason)
 }
 
 
+const char * status2str(u16 status)
+{
+#define S2S(s) case WLAN_STATUS_ ## s: return #s;
+       switch (status) {
+       S2S(SUCCESS)
+       S2S(UNSPECIFIED_FAILURE)
+       S2S(TDLS_WAKEUP_ALTERNATE)
+       S2S(TDLS_WAKEUP_REJECT)
+       S2S(SECURITY_DISABLED)
+       S2S(UNACCEPTABLE_LIFETIME)
+       S2S(NOT_IN_SAME_BSS)
+       S2S(CAPS_UNSUPPORTED)
+       S2S(REASSOC_NO_ASSOC)
+       S2S(ASSOC_DENIED_UNSPEC)
+       S2S(NOT_SUPPORTED_AUTH_ALG)
+       S2S(UNKNOWN_AUTH_TRANSACTION)
+       S2S(CHALLENGE_FAIL)
+       S2S(AUTH_TIMEOUT)
+       S2S(AP_UNABLE_TO_HANDLE_NEW_STA)
+       S2S(ASSOC_DENIED_RATES)
+       S2S(ASSOC_DENIED_NOSHORT)
+       S2S(SPEC_MGMT_REQUIRED)
+       S2S(PWR_CAPABILITY_NOT_VALID)
+       S2S(SUPPORTED_CHANNEL_NOT_VALID)
+       S2S(ASSOC_DENIED_NO_SHORT_SLOT_TIME)
+       S2S(ASSOC_DENIED_NO_HT)
+       S2S(R0KH_UNREACHABLE)
+       S2S(ASSOC_DENIED_NO_PCO)
+       S2S(ASSOC_REJECTED_TEMPORARILY)
+       S2S(ROBUST_MGMT_FRAME_POLICY_VIOLATION)
+       S2S(UNSPECIFIED_QOS_FAILURE)
+       S2S(DENIED_INSUFFICIENT_BANDWIDTH)
+       S2S(DENIED_POOR_CHANNEL_CONDITIONS)
+       S2S(DENIED_QOS_NOT_SUPPORTED)
+       S2S(REQUEST_DECLINED)
+       S2S(INVALID_PARAMETERS)
+       S2S(REJECTED_WITH_SUGGESTED_CHANGES)
+       S2S(INVALID_IE)
+       S2S(GROUP_CIPHER_NOT_VALID)
+       S2S(PAIRWISE_CIPHER_NOT_VALID)
+       S2S(AKMP_NOT_VALID)
+       S2S(UNSUPPORTED_RSN_IE_VERSION)
+       S2S(INVALID_RSN_IE_CAPAB)
+       S2S(CIPHER_REJECTED_PER_POLICY)
+       S2S(TS_NOT_CREATED)
+       S2S(DIRECT_LINK_NOT_ALLOWED)
+       S2S(DEST_STA_NOT_PRESENT)
+       S2S(DEST_STA_NOT_QOS_STA)
+       S2S(ASSOC_DENIED_LISTEN_INT_TOO_LARGE)
+       S2S(INVALID_FT_ACTION_FRAME_COUNT)
+       S2S(INVALID_PMKID)
+       S2S(INVALID_MDIE)
+       S2S(INVALID_FTIE)
+       S2S(REQUESTED_TCLAS_NOT_SUPPORTED)
+       S2S(INSUFFICIENT_TCLAS_PROCESSING_RESOURCES)
+       S2S(TRY_ANOTHER_BSS)
+       S2S(GAS_ADV_PROTO_NOT_SUPPORTED)
+       S2S(NO_OUTSTANDING_GAS_REQ)
+       S2S(GAS_RESP_NOT_RECEIVED)
+       S2S(STA_TIMED_OUT_WAITING_FOR_GAS_RESP)
+       S2S(GAS_RESP_LARGER_THAN_LIMIT)
+       S2S(REQ_REFUSED_HOME)
+       S2S(ADV_SRV_UNREACHABLE)
+       S2S(REQ_REFUSED_SSPN)
+       S2S(REQ_REFUSED_UNAUTH_ACCESS)
+       S2S(INVALID_RSNIE)
+       S2S(U_APSD_COEX_NOT_SUPPORTED)
+       S2S(U_APSD_COEX_MODE_NOT_SUPPORTED)
+       S2S(BAD_INTERVAL_WITH_U_APSD_COEX)
+       S2S(ANTI_CLOGGING_TOKEN_REQ)
+       S2S(FINITE_CYCLIC_GROUP_NOT_SUPPORTED)
+       S2S(CANNOT_FIND_ALT_TBTT)
+       S2S(TRANSMISSION_FAILURE)
+       S2S(REQ_TCLAS_NOT_SUPPORTED)
+       S2S(TCLAS_RESOURCES_EXCHAUSTED)
+       S2S(REJECTED_WITH_SUGGESTED_BSS_TRANSITION)
+       S2S(REJECT_WITH_SCHEDULE)
+       S2S(REJECT_NO_WAKEUP_SPECIFIED)
+       S2S(SUCCESS_POWER_SAVE_MODE)
+       S2S(PENDING_ADMITTING_FST_SESSION)
+       S2S(PERFORMING_FST_NOW)
+       S2S(PENDING_GAP_IN_BA_WINDOW)
+       S2S(REJECT_U_PID_SETTING)
+       S2S(REFUSED_EXTERNAL_REASON)
+       S2S(REFUSED_AP_OUT_OF_MEMORY)
+       S2S(REJECTED_EMERGENCY_SERVICE_NOT_SUPPORTED)
+       S2S(QUERY_RESP_OUTSTANDING)
+       S2S(REJECT_DSE_BAND)
+       S2S(TCLAS_PROCESSING_TERMINATED)
+       S2S(TS_SCHEDULE_CONFLICT)
+       S2S(DENIED_WITH_SUGGESTED_BAND_AND_CHANNEL)
+       S2S(MCCAOP_RESERVATION_CONFLICT)
+       S2S(MAF_LIMIT_EXCEEDED)
+       S2S(MCCA_TRACK_LIMIT_EXCEEDED)
+       S2S(DENIED_DUE_TO_SPECTRUM_MANAGEMENT)
+       S2S(ASSOC_DENIED_NO_VHT)
+       S2S(ENABLEMENT_DENIED)
+       S2S(RESTRICTION_FROM_AUTHORIZED_GDB)
+       S2S(AUTHORIZATION_DEENABLED)
+       S2S(FILS_AUTHENTICATION_FAILURE)
+       S2S(UNKNOWN_AUTHENTICATION_SERVER)
+       S2S(UNKNOWN_PASSWORD_IDENTIFIER)
+       }
+       return "UNKNOWN";
+#undef S2S
+}
+
+
 int mb_ies_info_by_ies(struct mb_ies_info *info, const u8 *ies_buf,
                       size_t ies_len)
 {
index e402e934403f24d92a9105ac395cd55b85d5ae79..930d45420077fed6f0e12302993a2c2a4a73a35f 100644 (file)
@@ -186,6 +186,7 @@ struct wpabuf * mb_ies_by_info(struct mb_ies_info *info);
 
 const char * fc2str(u16 fc);
 const char * reason2str(u16 reason);
+const char * status2str(u16 status);
 
 struct oper_class_map {
        enum hostapd_hw_mode mode;