]> git.ipfire.org Git - thirdparty/iw.git/blobdiff - util.c
iw: link: mention the need for MAC addr arg in link get_sta cmd usage menu
[thirdparty/iw.git] / util.c
diff --git a/util.c b/util.c
index 9f21f5fba18e9342093b14aac7fa9fb79f95f238..bcf76a0024561752ed414a87d5e1c75c6e0c6990 100644 (file)
--- a/util.c
+++ b/util.c
@@ -290,15 +290,15 @@ static int parse_cipher_suite(const char *cipher_str)
 {
 
        if (!strcmp(cipher_str, "TKIP"))
-               return 0x000FAC02;
+               return WLAN_CIPHER_SUITE_TKIP;
        if (!strcmp(cipher_str, "CCMP") || !strcmp(cipher_str, "CCMP-128"))
-               return 0x000FAC04;
+               return WLAN_CIPHER_SUITE_CCMP;
        if (!strcmp(cipher_str, "GCMP") || !strcmp(cipher_str, "GCMP-128"))
-               return 0x000FAC08;
+               return WLAN_CIPHER_SUITE_GCMP;
        if (!strcmp(cipher_str, "GCMP-256"))
-               return 0x000FAC09;
+               return WLAN_CIPHER_SUITE_GCMP_256;
        if (!strcmp(cipher_str, "CCMP-256"))
-               return 0x000FAC0A;
+               return WLAN_CIPHER_SUITE_CCMP_256;
        return -EINVAL;
 }
 
@@ -407,14 +407,16 @@ int parse_keys(struct nl_msg *msg, char **argv[], int *argc)
                        keydata = hex2bin(keydata, keybuf);
                        /* fall through */
                case 5:
-                       NLA_PUT_U32(msg, NL80211_KEY_CIPHER, 0x000FAC01);
+                       NLA_PUT_U32(msg, NL80211_KEY_CIPHER,
+                                   WLAN_CIPHER_SUITE_WEP40);
                        keylen = 5;
                        break;
                case 26:
                        keydata = hex2bin(keydata, keybuf);
                        /* fall through */
                case 13:
-                       NLA_PUT_U32(msg, NL80211_KEY_CIPHER, 0x000FAC05);
+                       NLA_PUT_U32(msg, NL80211_KEY_CIPHER,
+                                   WLAN_CIPHER_SUITE_WEP104);
                        keylen = 13;
                        break;
                default:
@@ -1176,20 +1178,39 @@ static void __print_he_capa(const __u16 *mac_cap,
        }
 }
 
+void print_iftype_list(const char *name, const char *pfx, struct nlattr *attr)
+{
+       struct nlattr *ift;
+       int rem;
+
+       printf("%s:\n", name);
+       nla_for_each_nested(ift, attr, rem)
+               printf("%s * %s\n", pfx, iftype_name(nla_type(ift)));
+}
+
+void print_iftype_line(struct nlattr *attr)
+{
+       struct nlattr *ift;
+       bool first = true;
+       int rem;
+
+       nla_for_each_nested(ift, attr, rem) {
+               if (first)
+                       first = false;
+               else
+                       printf(", ");
+               printf("%s", iftype_name(nla_type(ift)));
+       }
+}
+
 void print_he_info(struct nlattr *nl_iftype)
 {
        struct nlattr *tb[NL80211_BAND_IFTYPE_ATTR_MAX + 1];
-       struct nlattr *tb_flags[NL80211_IFTYPE_MAX + 1];
-       char *iftypes[NUM_NL80211_IFTYPES] = {
-               "Unspec", "Adhoc", "Station", "AP", "AP/VLAN", "WDS", "Monitor",
-               "Mesh", "P2P/Client", "P2P/Go", "P2P/Device", "OCB", "NAN",
-       };
        __u16 mac_cap[3] = { 0 };
        __u16 phy_cap[6] = { 0 };
        __u16 mcs_set[6] = { 0 };
        __u8 ppet[25] = { 0 };
        size_t len;
-       int i;
        int mcs_len = 0, ppet_len = 0;
 
        nla_parse(tb, NL80211_BAND_IFTYPE_ATTR_MAX,
@@ -1198,14 +1219,8 @@ void print_he_info(struct nlattr *nl_iftype)
        if (!tb[NL80211_BAND_IFTYPE_ATTR_IFTYPES])
                return;
 
-       if (nla_parse_nested(tb_flags, NL80211_IFTYPE_MAX,
-                            tb[NL80211_BAND_IFTYPE_ATTR_IFTYPES], NULL))
-               return;
-
-       printf("\t\tHE Iftypes:");
-       for (i = 0; i < NUM_NL80211_IFTYPES; i++)
-               if (nla_get_flag(tb_flags[i]) && iftypes[i])
-                       printf(" %s", iftypes[i]);
+       printf("\t\tHE Iftypes: ");
+       print_iftype_line(tb[NL80211_BAND_IFTYPE_ATTR_IFTYPES]);
        printf("\n");
 
        if (tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC]) {