]> git.ipfire.org Git - thirdparty/iw.git/commitdiff
print BSS status
authorJohannes Berg <johannes@sipsolutions.net>
Fri, 10 Jul 2009 16:31:59 +0000 (18:31 +0200)
committerJohannes Berg <johannes@sipsolutions.net>
Fri, 10 Jul 2009 16:31:59 +0000 (18:31 +0200)
nl80211.h
scan.c

index b043b78dd2c3b76b1d758aefa3b4ed5ddb2b912b..962e2232a0748457f0e3436df4cd31b5e61d1017 100644 (file)
--- a/nl80211.h
+++ b/nl80211.h
@@ -1260,6 +1260,7 @@ enum nl80211_channel_type {
  *     in mBm (100 * dBm) (s32)
  * @NL80211_BSS_SIGNAL_UNSPEC: signal strength of the probe response/beacon
  *     in unspecified units, scaled to 0..100 (u8)
+ * @NL80211_BSS_STATUS: status, if this BSS is "used"
  * @__NL80211_BSS_AFTER_LAST: internal
  * @NL80211_BSS_MAX: highest BSS attribute
  */
@@ -1273,12 +1274,22 @@ enum nl80211_bss {
        NL80211_BSS_INFORMATION_ELEMENTS,
        NL80211_BSS_SIGNAL_MBM,
        NL80211_BSS_SIGNAL_UNSPEC,
+       NL80211_BSS_STATUS,
 
        /* keep last */
        __NL80211_BSS_AFTER_LAST,
        NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
 };
 
+/**
+ * enum nl80211_bss_status - BSS "status"
+ */
+enum nl80211_bss_status {
+       NL80211_BSS_STATUS_AUTHENTICATED,
+       NL80211_BSS_STATUS_ASSOCIATED,
+       NL80211_BSS_STATUS_IBSS_JOINED,
+};
+
 /**
  * enum nl80211_auth_type - AuthenticationType
  *
diff --git a/scan.c b/scan.c
index ee96285f93ae6791b12dc82fc96639ff0a452dbc..64c9260e0555e7b6b396897740b84aacd35c83e3 100644 (file)
--- a/scan.c
+++ b/scan.c
@@ -707,6 +707,7 @@ static int print_bss_handler(struct nl_msg *msg, void *arg)
                [NL80211_BSS_INFORMATION_ELEMENTS] = { },
                [NL80211_BSS_SIGNAL_MBM] = { .type = NLA_U32 },
                [NL80211_BSS_SIGNAL_UNSPEC] = { .type = NLA_U8 },
+               [NL80211_BSS_STATUS] = { .type = NLA_U32 },
        };
 
        nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
@@ -728,7 +729,26 @@ static int print_bss_handler(struct nl_msg *msg, void *arg)
 
        mac_addr_n2a(mac_addr, nla_data(bss[NL80211_BSS_BSSID]));
        if_indextoname(nla_get_u32(tb[NL80211_ATTR_IFINDEX]), dev);
-       printf("BSS %s (on %s)\n", mac_addr, dev);
+       printf("BSS %s (on %s)", mac_addr, dev);
+
+       if (bss[NL80211_BSS_STATUS]) {
+               switch (nla_get_u32(bss[NL80211_BSS_STATUS])) {
+               case NL80211_BSS_STATUS_AUTHENTICATED:
+                       printf(" -- authenticated");
+                       break;
+               case NL80211_BSS_STATUS_ASSOCIATED:
+                       printf(" -- associated");
+                       break;
+               case NL80211_BSS_STATUS_IBSS_JOINED:
+                       printf(" -- joined");
+                       break;
+               default:
+                       printf(" -- unknown status: %d",
+                               nla_get_u32(bss[NL80211_BSS_STATUS]));
+                       break;
+               }
+       }
+       printf("\n");
 
        if (bss[NL80211_BSS_TSF]) {
                unsigned long long tsf;