]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Show SAE flags in scan results
authorJouni Malinen <jouni@codeaurora.org>
Sat, 30 May 2020 20:30:42 +0000 (23:30 +0300)
committerJouni Malinen <j@w1.fi>
Tue, 2 Jun 2020 20:25:22 +0000 (23:25 +0300)
Indicate AP support for SAE H2E and SAE-PK in scan results.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
wpa_supplicant/ctrl_iface.c

index ff2f69ea46c0f3ec91988e2a5b26263aae941784..7569beddcf163735a52f961238866f60e0e0eaf9 100644 (file)
@@ -2940,7 +2940,7 @@ static int wpa_supplicant_ctrl_iface_scan_result(
 {
        char *pos, *end;
        int ret;
-       const u8 *ie, *ie2, *osen_ie, *p2p, *mesh, *owe;
+       const u8 *ie, *ie2, *osen_ie, *p2p, *mesh, *owe, *rsnxe;
 
        mesh = wpa_bss_get_ie(bss, WLAN_EID_MESH_ID);
        p2p = wpa_bss_get_vendor_ie(bss, P2P_IE_VENDOR_TYPE);
@@ -2967,6 +2967,21 @@ static int wpa_supplicant_ctrl_iface_scan_result(
                pos = wpa_supplicant_ie_txt(pos, end, mesh ? "RSN" : "WPA2",
                                            ie2, 2 + ie2[1]);
        }
+       rsnxe = wpa_bss_get_ie(bss, WLAN_EID_RSNX);
+       if (rsnxe && rsnxe[1] >= 1) {
+               if (rsnxe[2] & BIT(WLAN_RSNX_CAPAB_SAE_H2E)) {
+                       ret = os_snprintf(pos, end - pos, "[SAE-H2E]");
+                       if (os_snprintf_error(end - pos, ret))
+                               return -1;
+                       pos += ret;
+               }
+               if (rsnxe[2] & BIT(WLAN_RSNX_CAPAB_SAE_PK)) {
+                       ret = os_snprintf(pos, end - pos, "[SAE-PK]");
+                       if (os_snprintf_error(end - pos, ret))
+                               return -1;
+                       pos += ret;
+               }
+       }
        osen_ie = wpa_bss_get_vendor_ie(bss, OSEN_IE_VENDOR_TYPE);
        if (osen_ie)
                pos = wpa_supplicant_ie_txt(pos, end, "OSEN",
@@ -4831,7 +4846,7 @@ static int print_bss_info(struct wpa_supplicant *wpa_s, struct wpa_bss *bss,
        size_t i;
        int ret;
        char *pos, *end;
-       const u8 *ie, *ie2, *osen_ie, *mesh, *owe;
+       const u8 *ie, *ie2, *osen_ie, *mesh, *owe, *rsnxe;
 
        pos = buf;
        end = buf + buflen;
@@ -4951,6 +4966,21 @@ static int print_bss_info(struct wpa_supplicant *wpa_s, struct wpa_bss *bss,
                        pos = wpa_supplicant_ie_txt(pos, end,
                                                    mesh ? "RSN" : "WPA2", ie2,
                                                    2 + ie2[1]);
+               rsnxe = wpa_bss_get_ie(bss, WLAN_EID_RSNX);
+               if (rsnxe && rsnxe[1] >= 1) {
+                       if (rsnxe[2] & BIT(WLAN_RSNX_CAPAB_SAE_H2E)) {
+                               ret = os_snprintf(pos, end - pos, "[SAE-H2E]");
+                               if (os_snprintf_error(end - pos, ret))
+                                       return -1;
+                               pos += ret;
+                       }
+                       if (rsnxe[2] & BIT(WLAN_RSNX_CAPAB_SAE_PK)) {
+                               ret = os_snprintf(pos, end - pos, "[SAE-PK]");
+                               if (os_snprintf_error(end - pos, ret))
+                                       return -1;
+                               pos += ret;
+                       }
+               }
                osen_ie = wpa_bss_get_vendor_ie(bss, OSEN_IE_VENDOR_TYPE);
                if (osen_ie)
                        pos = wpa_supplicant_ie_txt(pos, end, "OSEN",