The branch main has been updated by bz:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=164bf9ffbe1a9fc8768b2f597fd4b32b3e406ac1

commit 164bf9ffbe1a9fc8768b2f597fd4b32b3e406ac1
Author:     Bjoern A. Zeeb <b...@freebsd.org>
AuthorDate: 2025-05-27 19:51:38 +0000
Commit:     Bjoern A. Zeeb <b...@freebsd.org>
CommitDate: 2025-06-09 21:44:25 +0000

    ifconfig: 802.11: factor out keyix printing
    
    The node unicast key (PTK) uses a key index of (-1) and printing
    a 64k number does not look great.  Factor out printing the key
    number into a buffer and use 'ucast' for the node unicast key.
    Hope is that this will be useful for the future as well when we
    will have more/different keys possibly.
    
    Looks like (with -vk):
            AES-CCM 2:128-bit <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> rsc 0 tsc 0 rx
            AES-CCM 3:128-bit <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> rsc 0 tsc 0 rx
            AES-GCM ucast:128-bit <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> rsc 0 tsc 
0 tx+rx
    
    Sponsored by:   The FreeBSD Foundation
    MFC after:      3 days
    Reviewed by:    adrian
    Differential Revision: https://reviews.freebsd.org/D50555
---
 sbin/ifconfig/ifieee80211.c | 31 ++++++++++++++++++++++---------
 1 file changed, 22 insertions(+), 9 deletions(-)

diff --git a/sbin/ifconfig/ifieee80211.c b/sbin/ifconfig/ifieee80211.c
index 9ece44960378..d08b5c861c76 100644
--- a/sbin/ifconfig/ifieee80211.c
+++ b/sbin/ifconfig/ifieee80211.c
@@ -4773,6 +4773,17 @@ printcipher(int s, struct ieee80211req *ireq, int 
keylenop)
 }
 #endif
 
+static void
+printkey_index(uint16_t keyix, char *buf, size_t buflen)
+{
+       buf[0] = '\0';
+       if (keyix == IEEE80211_KEYIX_NONE) {
+               snprintf(buf, buflen, "ucast");
+       } else {
+               snprintf(buf, buflen, "%u", keyix+1);
+       }
+}
+
 static void
 printkey(if_ctx *ctx, const struct ieee80211req_key *ik)
 {
@@ -4781,41 +4792,43 @@ printkey(if_ctx *ctx, const struct ieee80211req_key *ik)
        int printcontents;
        const int verbose = ctx->args->verbose;
        const bool printkeys = ctx->args->printkeys;
+       char keyix[16];
 
        printcontents = printkeys &&
                (memcmp(ik->ik_keydata, zerodata, keylen) != 0 || verbose);
        if (printcontents)
                LINE_BREAK();
+       printkey_index(ik->ik_keyix, keyix, sizeof(keyix));
        switch (ik->ik_type) {
        case IEEE80211_CIPHER_WEP:
                /* compatibility */
-               LINE_CHECK("wepkey %u:%s", ik->ik_keyix+1,
+               LINE_CHECK("wepkey %s:%s", keyix,
                    keylen <= 5 ? "40-bit" :
                    keylen <= 13 ? "104-bit" : "128-bit");
                break;
        case IEEE80211_CIPHER_TKIP:
                if (keylen > 128/8)
                        keylen -= 128/8;        /* ignore MIC for now */
-               LINE_CHECK("TKIP %u:%u-bit", ik->ik_keyix+1, 8*keylen);
+               LINE_CHECK("TKIP %s:%u-bit", keyix, 8*keylen);
                break;
        case IEEE80211_CIPHER_AES_OCB:
-               LINE_CHECK("AES-OCB %u:%u-bit", ik->ik_keyix+1, 8*keylen);
+               LINE_CHECK("AES-OCB %s:%u-bit", keyix, 8*keylen);
                break;
        case IEEE80211_CIPHER_AES_CCM:
-               LINE_CHECK("AES-CCM %u:%u-bit", ik->ik_keyix+1, 8*keylen);
+               LINE_CHECK("AES-CCM %s:%u-bit", keyix, 8*keylen);
                break;
        case IEEE80211_CIPHER_AES_GCM_128:
-               LINE_CHECK("AES-GCM %u:%u-bit", ik->ik_keyix+1, 8*keylen);
+               LINE_CHECK("AES-GCM %s:%u-bit", keyix, 8*keylen);
                break;
        case IEEE80211_CIPHER_CKIP:
-               LINE_CHECK("CKIP %u:%u-bit", ik->ik_keyix+1, 8*keylen);
+               LINE_CHECK("CKIP %s:%u-bit", keyix, 8*keylen);
                break;
        case IEEE80211_CIPHER_NONE:
-               LINE_CHECK("NULL %u:%u-bit", ik->ik_keyix+1, 8*keylen);
+               LINE_CHECK("NULL %s:%u-bit", keyix, 8*keylen);
                break;
        default:
-               LINE_CHECK("UNKNOWN (0x%x) %u:%u-bit",
-                       ik->ik_type, ik->ik_keyix+1, 8*keylen);
+               LINE_CHECK("UNKNOWN (0x%x) %s:%u-bit",
+                       ik->ik_type, keyix, 8*keylen);
                break;
        }
        if (printcontents) {

Reply via email to