summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasashi Honma <masashi.honma@gmail.com>2014-11-15 10:35:31 +0900
committerJouni Malinen <j@w1.fi>2014-11-23 23:04:09 +0200
commitab111ec42a7ae8dd40efe0e5c67af8df2b3b08f5 (patch)
tree041d109e14a5c108d62a934153438336f3054209
parent714eba2cd8c632eec4abdd7cd8438730ca670f36 (diff)
downloadhostap-mesh.tar.gz
mesh: Display sae_group to result of status commandmesh
Existing code does not display sae_group. Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
-rw-r--r--wpa_supplicant/ap.c31
-rw-r--r--wpa_supplicant/ap.h2
-rw-r--r--wpa_supplicant/ctrl_iface.c18
3 files changed, 40 insertions, 11 deletions
diff --git a/wpa_supplicant/ap.c b/wpa_supplicant/ap.c
index f3acbc111..f8b345068 100644
--- a/wpa_supplicant/ap.c
+++ b/wpa_supplicant/ap.c
@@ -1064,6 +1064,37 @@ int ap_ctrl_iface_wpa_get_status(struct wpa_supplicant *wpa_s, char *buf,
return pos - buf;
}
+
+#ifdef CONFIG_SAE
+int ap_ctrl_iface_wpa_get_sae_status(struct wpa_supplicant *wpa_s, char *buf,
+ size_t buflen, int verbose)
+{
+ char *pos = buf, *end = buf + buflen;
+ int ret;
+ struct hostapd_data *hapd;
+ struct sta_info *sta;
+
+ if (wpa_s->ifmsh == NULL)
+ return 0;
+
+ hapd = wpa_s->ifmsh->bss[0];
+ sta = hapd->sta_list;
+
+ while (sta) {
+ if (sta->sae->state == SAE_ACCEPTED) {
+ ret = os_snprintf(pos, end - pos, "sae_group=%d\n",
+ sta->sae->group);
+ if (ret < 0 || ret >= end - pos)
+ return pos - buf;
+ pos += ret;
+ break;
+ }
+ sta = sta->next;
+ }
+ return pos - buf;
+}
+#endif /* CONFIG_SAE */
+
#endif /* CONFIG_CTRL_IFACE */
diff --git a/wpa_supplicant/ap.h b/wpa_supplicant/ap.h
index 4d80c7a7c..554ff5449 100644
--- a/wpa_supplicant/ap.h
+++ b/wpa_supplicant/ap.h
@@ -38,6 +38,8 @@ int ap_ctrl_iface_sta_disassociate(struct wpa_supplicant *wpa_s,
const char *txtaddr);
int ap_ctrl_iface_wpa_get_status(struct wpa_supplicant *wpa_s, char *buf,
size_t buflen, int verbose);
+int ap_ctrl_iface_wpa_get_sae_status(struct wpa_supplicant *wpa_s, char *buf,
+ size_t buflen, int verbose);
void ap_tx_status(void *ctx, const u8 *addr,
const u8 *buf, size_t len, int ack);
void ap_eapol_tx_status(void *ctx, const u8 *dst,
diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c
index 961a79a3c..f3f7214cf 100644
--- a/wpa_supplicant/ctrl_iface.c
+++ b/wpa_supplicant/ctrl_iface.c
@@ -1691,22 +1691,18 @@ static int wpa_supplicant_ctrl_iface_status(struct wpa_supplicant *wpa_s,
pos += wpa_sm_get_status(wpa_s->wpa, pos, end - pos, verbose);
}
#ifdef CONFIG_SAE
- if (wpa_s->wpa_state >= WPA_ASSOCIATED &&
-#ifdef CONFIG_AP
- !wpa_s->ap_iface &&
-#endif /* CONFIG_AP */
- wpa_s->sme.sae.state == SAE_ACCEPTED) {
- ret = os_snprintf(pos, end - pos, "sae_group=%d\n",
- wpa_s->sme.sae.group);
- if (ret < 0 || ret >= end - pos)
- return pos - buf;
- pos += ret;
- }
+ ret = ap_ctrl_iface_wpa_get_sae_status(wpa_s, pos, end - pos, verbose);
+ if (ret < 0 || ret >= end - pos)
+ return pos - buf;
+ if (ret < 1) {
#endif /* CONFIG_SAE */
ret = os_snprintf(pos, end - pos, "wpa_state=%s\n",
wpa_supplicant_state_txt(wpa_s->wpa_state));
if (ret < 0 || ret >= end - pos)
return pos - buf;
+#ifdef CONFIG_SAE
+ }
+#endif /* CONFIG_SAE */
pos += ret;
if (wpa_s->l2 &&