summaryrefslogtreecommitdiff
path: root/iwinfo_cli.c
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2019-09-20 08:55:37 +0200
committerJo-Philipp Wich <jo@mein.io>2019-09-20 13:12:56 +0200
commit02112f9b105752fa05fd1314092347e60c1aeaf7 (patch)
tree6e2861ad3cbd7d539f4ae560ba91b1a3bb9e56d1 /iwinfo_cli.c
parent7faeaeafe1cda153a0784bd62ea3835ddd0c935d (diff)
downloadiwinfo-02112f9b105752fa05fd1314092347e60c1aeaf7.tar.gz
cli: fix reporting of mixed WPA2/WPA3 versions
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'iwinfo_cli.c')
-rw-r--r--iwinfo_cli.c40
1 files changed, 18 insertions, 22 deletions
diff --git a/iwinfo_cli.c b/iwinfo_cli.c
index acfeb75..0332bc2 100644
--- a/iwinfo_cli.c
+++ b/iwinfo_cli.c
@@ -203,6 +203,8 @@ static char * format_enc_suites(int suites)
static char * format_encryption(struct iwinfo_crypto_entry *c)
{
static char buf[512];
+ char *pos = buf;
+ int i, n;
if (!c)
{
@@ -234,31 +236,25 @@ static char * format_encryption(struct iwinfo_crypto_entry *c)
/* WPA */
else if (c->wpa_version)
{
- switch (c->wpa_version) {
- case 4:
- snprintf(buf, sizeof(buf), "WPA3 %s (%s)",
- format_enc_suites(c->auth_suites),
- format_enc_ciphers(c->pair_ciphers | c->group_ciphers));
- break;
+ for (i = 0, n = 0; i < 3; i++)
+ if (c->wpa_version & (1 << i))
+ n++;
- case 3:
- snprintf(buf, sizeof(buf), "mixed WPA/WPA2 %s (%s)",
- format_enc_suites(c->auth_suites),
- format_enc_ciphers(c->pair_ciphers | c->group_ciphers));
- break;
+ if (n > 1)
+ pos += sprintf(pos, "mixed ");
- case 2:
- snprintf(buf, sizeof(buf), "WPA2 %s (%s)",
- format_enc_suites(c->auth_suites),
- format_enc_ciphers(c->pair_ciphers | c->group_ciphers));
- break;
+ for (i = 0; i < 3; i++)
+ if (c->wpa_version & (1 << i))
+ if (i)
+ pos += sprintf(pos, "WPA%d/", i + 1);
+ else
+ pos += sprintf(pos, "WPA/");
- case 1:
- snprintf(buf, sizeof(buf), "WPA %s (%s)",
- format_enc_suites(c->auth_suites),
- format_enc_ciphers(c->pair_ciphers | c->group_ciphers));
- break;
- }
+ pos--;
+
+ sprintf(pos, " %s (%s)",
+ format_enc_suites(c->auth_suites),
+ format_enc_ciphers(c->pair_ciphers | c->group_ciphers));
}
else
{