Signed-off-by: Helmut Schaa <helmut.schaa@xxxxxxxxxxxxxx> --- Couldn't come up with a nice/short wording for "Managment frame protection" and "Wireless Multimedia Extension" so I just used MFP and WME/WMM instead. station.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 48 insertions(+), 0 deletions(-) diff --git a/station.c b/station.c index 6581d50..26a2b7c 100644 --- a/station.c +++ b/station.c @@ -37,6 +37,7 @@ static int print_sta_handler(struct nl_msg *msg, void *arg) struct nlattr *sinfo[NL80211_STA_INFO_MAX + 1]; struct nlattr *rinfo[NL80211_RATE_INFO_MAX + 1]; char mac_addr[20], state_name[10], dev[20]; + struct nl80211_sta_flag_update *sta_flags; static struct nla_policy stats_policy[NL80211_STA_INFO_MAX + 1] = { [NL80211_STA_INFO_INACTIVE_TIME] = { .type = NLA_U32 }, [NL80211_STA_INFO_RX_BYTES] = { .type = NLA_U32 }, @@ -50,6 +51,8 @@ static int print_sta_handler(struct nl_msg *msg, void *arg) [NL80211_STA_INFO_PLINK_STATE] = { .type = NLA_U8 }, [NL80211_STA_INFO_TX_RETRIES] = { .type = NLA_U32 }, [NL80211_STA_INFO_TX_FAILED] = { .type = NLA_U32 }, + [NL80211_STA_INFO_STA_FLAGS] = + { .minlen = sizeof(struct nl80211_sta_flag_update) }, }; static struct nla_policy rate_policy[NL80211_RATE_INFO_MAX + 1] = { @@ -167,6 +170,51 @@ static int print_sta_handler(struct nl_msg *msg, void *arg) printf("\n\tmesh plink:\t%s", state_name); } + if (sinfo[NL80211_STA_INFO_STA_FLAGS]) { + sta_flags = (struct nl80211_sta_flag_update *) + nla_data(sinfo[NL80211_STA_INFO_STA_FLAGS]); + + if (sta_flags->mask & BIT(NL80211_STA_FLAG_AUTHORIZED)) { + printf("\n\tauthorized:\t"); + if (sta_flags->set & BIT(NL80211_STA_FLAG_AUTHORIZED)) + printf("yes"); + else + printf("no"); + } + + if (sta_flags->mask & BIT(NL80211_STA_FLAG_AUTHENTICATED)) { + printf("\n\tauthenticated:\t"); + if (sta_flags->set & BIT(NL80211_STA_FLAG_AUTHENTICATED)) + printf("yes"); + else + printf("no"); + } + + if (sta_flags->mask & BIT(NL80211_STA_FLAG_SHORT_PREAMBLE)) { + printf("\n\tpreamble:\t"); + if (sta_flags->set & BIT(NL80211_STA_FLAG_SHORT_PREAMBLE)) + printf("short"); + else + printf("long"); + } + + if (sta_flags->mask & BIT(NL80211_STA_FLAG_WME)) { + printf("\n\tWMM/WME:\t"); + if (sta_flags->set & BIT(NL80211_STA_FLAG_WME)) + printf("yes"); + else + printf("no"); + } + + if (sta_flags->mask & BIT(NL80211_STA_FLAG_MFP)) { + printf("\n\tMFP:\t\t"); + if (sta_flags->set & BIT(NL80211_STA_FLAG_MFP)) + printf("yes"); + else + printf("no"); + } + } + printf("\n"); return NL_SKIP; } -- 1.7.3.4 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html