git: 9c3afe71b10a - stable/14 - ifconfig: 802.11: decode RSNXE IE
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 11 Jun 2025 09:14:34 UTC
The branch stable/14 has been updated by bz:
URL: https://cgit.FreeBSD.org/src/commit/?id=9c3afe71b10a000ac2c3d45c439f000bbc25f147
commit 9c3afe71b10a000ac2c3d45c439f000bbc25f147
Author: Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2025-04-22 20:08:20 +0000
Commit: Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2025-06-10 23:41:14 +0000
ifconfig: 802.11: decode RSNXE IE
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D50675
(cherry picked from commit 1313f1c2a35f7dbaba1b2948d2f0c4a1f4113f67)
---
sbin/ifconfig/ifieee80211.c | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/sbin/ifconfig/ifieee80211.c b/sbin/ifconfig/ifieee80211.c
index 9c753f865bc0..57200cf4f8c1 100644
--- a/sbin/ifconfig/ifieee80211.c
+++ b/sbin/ifconfig/ifieee80211.c
@@ -3202,6 +3202,33 @@ printrsnie(if_ctx *ctx, const char *tag, const u_int8_t *ie, size_t ielen)
}
}
+static void
+printrsnxe(if_ctx *ctx, const char *tag, const u_int8_t *ie, size_t ielen)
+{
+ size_t n;
+
+ printf("%s", tag);
+ if (!ctx->args->verbose)
+ return;
+
+ ie += 2, ielen -= 2;
+
+ n = (*ie & 0x0f);
+ printf("<%zu", n + 1);
+
+ /* We do not yet know about more than n=1 (0). */
+ if (n != 0)
+ goto end;
+
+ if (*ie & 0x10)
+ printf(" PTWTOPS");
+ if (*ie & 0x20)
+ printf(" SAE h-t-e");
+
+end:
+ printf(">");
+}
+
#define BE_READ_2(p) \
((u_int16_t) \
((((const u_int8_t *)(p))[1] ) | \
@@ -3610,6 +3637,7 @@ iename(int elemid)
case IEEE80211_ELEMID_TPC: return " TPC";
case IEEE80211_ELEMID_CCKM: return " CCKM";
case IEEE80211_ELEMID_EXTCAP: return " EXTCAP";
+ case IEEE80211_ELEMID_RSN_EXT: return " RSNXE";
}
snprintf(iename_buf, sizeof(iename_buf), " UNKNOWN_ELEMID_%d",
elemid);
@@ -3693,6 +3721,9 @@ printies(if_ctx *ctx, const u_int8_t *vp, int ielen, unsigned int maxcols)
case IEEE80211_ELEMID_APCHANREP:
printapchanrep(ctx, " APCHANREP", vp, 2+vp[1]);
break;
+ case IEEE80211_ELEMID_RSN_EXT:
+ printrsnxe(ctx, " RSNXE", vp, 2+vp[1]);
+ break;
default:
if (verbose)
printie(ctx, iename(vp[0]), vp, 2+vp[1], maxcols);