hostapd: Make STA flags available through ctrl_iface STA command
Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
aa03dbd517
commit
b76f4c2763
4 changed files with 48 additions and 22 deletions
|
@ -100,33 +100,17 @@ static void hostapd_dump_state(struct hostapd_data *hapd)
|
||||||
hapd->iface->num_sta_no_short_preamble);
|
hapd->iface->num_sta_no_short_preamble);
|
||||||
|
|
||||||
for (sta = hapd->sta_list; sta != NULL; sta = sta->next) {
|
for (sta = hapd->sta_list; sta != NULL; sta = sta->next) {
|
||||||
|
char flags[200];
|
||||||
|
|
||||||
fprintf(f, "\nSTA=" MACSTR "\n", MAC2STR(sta->addr));
|
fprintf(f, "\nSTA=" MACSTR "\n", MAC2STR(sta->addr));
|
||||||
|
|
||||||
|
ap_sta_flags_txt(sta->flags, flags, sizeof(flags));
|
||||||
fprintf(f,
|
fprintf(f,
|
||||||
" AID=%d flags=0x%x %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
|
" AID=%d flags=0x%x %s\n"
|
||||||
"\n"
|
|
||||||
" capability=0x%x listen_interval=%d\n",
|
" capability=0x%x listen_interval=%d\n",
|
||||||
sta->aid,
|
sta->aid,
|
||||||
sta->flags,
|
sta->flags,
|
||||||
(sta->flags & WLAN_STA_AUTH ? "[AUTH]" : ""),
|
flags,
|
||||||
(sta->flags & WLAN_STA_ASSOC ? "[ASSOC]" : ""),
|
|
||||||
(ap_sta_is_authorized(sta) ? "[AUTHORIZED]" : ""),
|
|
||||||
(sta->flags & WLAN_STA_PENDING_POLL ? "[PENDING_POLL" :
|
|
||||||
""),
|
|
||||||
(sta->flags & WLAN_STA_SHORT_PREAMBLE ?
|
|
||||||
"[SHORT_PREAMBLE]" : ""),
|
|
||||||
(sta->flags & WLAN_STA_PREAUTH ? "[PREAUTH]" : ""),
|
|
||||||
(sta->flags & WLAN_STA_WMM ? "[WMM]" : ""),
|
|
||||||
(sta->flags & WLAN_STA_MFP ? "[MFP]" : ""),
|
|
||||||
(sta->flags & WLAN_STA_WPS ? "[WPS]" : ""),
|
|
||||||
(sta->flags & WLAN_STA_MAYBE_WPS ? "[MAYBE_WPS]" : ""),
|
|
||||||
(sta->flags & WLAN_STA_WDS ? "[WDS]" : ""),
|
|
||||||
(sta->flags & WLAN_STA_NONERP ? "[NonERP]" : ""),
|
|
||||||
(sta->flags & WLAN_STA_WPS2 ? "[WPS2]" : ""),
|
|
||||||
(sta->flags & WLAN_STA_GAS ? "[GAS]" : ""),
|
|
||||||
(sta->flags & WLAN_STA_VHT ? "[VHT]" : ""),
|
|
||||||
(sta->flags & WLAN_STA_WNM_SLEEP_MODE ?
|
|
||||||
"[WNM_SLEEP_MODE]" : ""),
|
|
||||||
sta->capability,
|
sta->capability,
|
||||||
sta->listen_interval);
|
sta->listen_interval);
|
||||||
|
|
||||||
|
|
|
@ -56,12 +56,22 @@ static int hostapd_ctrl_iface_sta_mib(struct hostapd_data *hapd,
|
||||||
}
|
}
|
||||||
|
|
||||||
len = 0;
|
len = 0;
|
||||||
ret = os_snprintf(buf + len, buflen - len, MACSTR "\n",
|
ret = os_snprintf(buf + len, buflen - len, MACSTR "\nflags=",
|
||||||
MAC2STR(sta->addr));
|
MAC2STR(sta->addr));
|
||||||
if (ret < 0 || (size_t) ret >= buflen - len)
|
if (ret < 0 || (size_t) ret >= buflen - len)
|
||||||
return len;
|
return len;
|
||||||
len += ret;
|
len += ret;
|
||||||
|
|
||||||
|
ret = ap_sta_flags_txt(sta->flags, buf + len, buflen - len);
|
||||||
|
if (ret < 0)
|
||||||
|
return len;
|
||||||
|
len += ret;
|
||||||
|
|
||||||
|
ret = os_snprintf(buf + len, buflen - len, "\n");
|
||||||
|
if (ret < 0 || (size_t) ret >= buflen - len)
|
||||||
|
return len;
|
||||||
|
len += ret;
|
||||||
|
|
||||||
res = ieee802_11_get_mib_sta(hapd, sta, buf + len, buflen - len);
|
res = ieee802_11_get_mib_sta(hapd, sta, buf + len, buflen - len);
|
||||||
if (res >= 0)
|
if (res >= 0)
|
||||||
len += res;
|
len += res;
|
||||||
|
|
|
@ -1011,3 +1011,33 @@ void ap_sta_disassoc_cb(struct hostapd_data *hapd, struct sta_info *sta)
|
||||||
eloop_cancel_timeout(ap_sta_disassoc_cb_timeout, hapd, sta);
|
eloop_cancel_timeout(ap_sta_disassoc_cb_timeout, hapd, sta);
|
||||||
ap_sta_disassoc_cb_timeout(hapd, sta);
|
ap_sta_disassoc_cb_timeout(hapd, sta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int ap_sta_flags_txt(u32 flags, char *buf, size_t buflen)
|
||||||
|
{
|
||||||
|
int res;
|
||||||
|
|
||||||
|
buf[0] = '\0';
|
||||||
|
res = os_snprintf(buf, buflen, "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
|
||||||
|
(flags & WLAN_STA_AUTH ? "[AUTH]" : ""),
|
||||||
|
(flags & WLAN_STA_ASSOC ? "[ASSOC]" : ""),
|
||||||
|
(flags & WLAN_STA_AUTHORIZED ? "[AUTHORIZED]" : ""),
|
||||||
|
(flags & WLAN_STA_PENDING_POLL ? "[PENDING_POLL" :
|
||||||
|
""),
|
||||||
|
(flags & WLAN_STA_SHORT_PREAMBLE ?
|
||||||
|
"[SHORT_PREAMBLE]" : ""),
|
||||||
|
(flags & WLAN_STA_PREAUTH ? "[PREAUTH]" : ""),
|
||||||
|
(flags & WLAN_STA_WMM ? "[WMM]" : ""),
|
||||||
|
(flags & WLAN_STA_MFP ? "[MFP]" : ""),
|
||||||
|
(flags & WLAN_STA_WPS ? "[WPS]" : ""),
|
||||||
|
(flags & WLAN_STA_MAYBE_WPS ? "[MAYBE_WPS]" : ""),
|
||||||
|
(flags & WLAN_STA_WDS ? "[WDS]" : ""),
|
||||||
|
(flags & WLAN_STA_NONERP ? "[NonERP]" : ""),
|
||||||
|
(flags & WLAN_STA_WPS2 ? "[WPS2]" : ""),
|
||||||
|
(flags & WLAN_STA_GAS ? "[GAS]" : ""),
|
||||||
|
(flags & WLAN_STA_VHT ? "[VHT]" : ""),
|
||||||
|
(flags & WLAN_STA_WNM_SLEEP_MODE ?
|
||||||
|
"[WNM_SLEEP_MODE]" : ""));
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
|
@ -193,4 +193,6 @@ static inline int ap_sta_is_authorized(struct sta_info *sta)
|
||||||
void ap_sta_deauth_cb(struct hostapd_data *hapd, struct sta_info *sta);
|
void ap_sta_deauth_cb(struct hostapd_data *hapd, struct sta_info *sta);
|
||||||
void ap_sta_disassoc_cb(struct hostapd_data *hapd, struct sta_info *sta);
|
void ap_sta_disassoc_cb(struct hostapd_data *hapd, struct sta_info *sta);
|
||||||
|
|
||||||
|
int ap_sta_flags_txt(u32 flags, char *buf, size_t buflen);
|
||||||
|
|
||||||
#endif /* STA_INFO_H */
|
#endif /* STA_INFO_H */
|
||||||
|
|
Loading…
Add table
Reference in a new issue