Browse Source

monitor: print out extended feature name

This prints out the NL80211_* enum name for extended features
rather than a hex string.
upstream/latest^2
James Prestwood 2 years ago
committed by Denis Kenzior
parent
commit
b531444a7c
  1. 82
      monitor/nlmon.c

82
monitor/nlmon.c

@ -5415,6 +5415,85 @@ static void print_eapol(unsigned int level, const char *label,
print_hexdump(level + 1, data, size);
}
#define EXT_ENTRY(a) #a
static const char *ext_feature_map[] = {
EXT_ENTRY(NL80211_EXT_FEATURE_VHT_IBSS),
EXT_ENTRY(NL80211_EXT_FEATURE_RRM),
EXT_ENTRY(NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER),
EXT_ENTRY(NL80211_EXT_FEATURE_SCAN_START_TIME),
EXT_ENTRY(NL80211_EXT_FEATURE_BSS_PARENT_TSF),
EXT_ENTRY(NL80211_EXT_FEATURE_SET_SCAN_DWELL),
EXT_ENTRY(NL80211_EXT_FEATURE_BEACON_RATE_LEGACY),
EXT_ENTRY(NL80211_EXT_FEATURE_BEACON_RATE_HT),
EXT_ENTRY(NL80211_EXT_FEATURE_BEACON_RATE_VHT),
EXT_ENTRY(NL80211_EXT_FEATURE_FILS_STA),
EXT_ENTRY(NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA),
EXT_ENTRY(NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED),
EXT_ENTRY(NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI),
EXT_ENTRY(NL80211_EXT_FEATURE_CQM_RSSI_LIST),
EXT_ENTRY(NL80211_EXT_FEATURE_FILS_SK_OFFLOAD),
EXT_ENTRY(NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK),
EXT_ENTRY(NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X),
EXT_ENTRY(NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME),
EXT_ENTRY(NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP),
EXT_ENTRY(NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE),
EXT_ENTRY(NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION),
EXT_ENTRY(NL80211_EXT_FEATURE_MFP_OPTIONAL),
EXT_ENTRY(NL80211_EXT_FEATURE_LOW_SPAN_SCAN),
EXT_ENTRY(NL80211_EXT_FEATURE_LOW_POWER_SCAN),
EXT_ENTRY(NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN),
EXT_ENTRY(NL80211_EXT_FEATURE_DFS_OFFLOAD),
EXT_ENTRY(NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211),
EXT_ENTRY(NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT),
EXT_ENTRY(NL80211_EXT_FEATURE_TXQS),
EXT_ENTRY(NL80211_EXT_FEATURE_SCAN_RANDOM_SN),
EXT_ENTRY(NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT),
EXT_ENTRY(NL80211_EXT_FEATURE_CAN_REPLACE_PTK0),
EXT_ENTRY(NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER),
EXT_ENTRY(NL80211_EXT_FEATURE_AIRTIME_FAIRNESS),
EXT_ENTRY(NL80211_EXT_FEATURE_AP_PMKSA_CACHING),
EXT_ENTRY(NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD),
EXT_ENTRY(NL80211_EXT_FEATURE_EXT_KEY_ID),
EXT_ENTRY(NL80211_EXT_FEATURE_STA_TX_PWR),
EXT_ENTRY(NL80211_EXT_FEATURE_SAE_OFFLOAD),
EXT_ENTRY(NL80211_EXT_FEATURE_VLAN_OFFLOAD),
EXT_ENTRY(NL80211_EXT_FEATURE_AQL),
EXT_ENTRY(NL80211_EXT_FEATURE_BEACON_PROTECTION),
EXT_ENTRY(NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH),
EXT_ENTRY(NL80211_EXT_FEATURE_PROTECTED_TWT),
EXT_ENTRY(NL80211_EXT_FEATURE_DEL_IBSS_STA),
EXT_ENTRY(NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS),
EXT_ENTRY(NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT),
EXT_ENTRY(NL80211_EXT_FEATURE_SCAN_FREQ_KHZ),
EXT_ENTRY(NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS),
EXT_ENTRY(NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION),
EXT_ENTRY(NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK),
EXT_ENTRY(NL80211_EXT_FEATURE_SAE_OFFLOAD_AP),
EXT_ENTRY(NL80211_EXT_FEATURE_FILS_DISCOVERY),
EXT_ENTRY(NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP),
EXT_ENTRY(NL80211_EXT_FEATURE_BEACON_RATE_HE),
};
static void print_ext_features(unsigned int level, const char *label,
const void *data, uint16_t size)
{
int i;
uint16_t bits;
if (L_ARRAY_SIZE(ext_feature_map) < size * 8)
bits = L_ARRAY_SIZE(ext_feature_map);
else
bits = size * 8;
print_attr(level, "Extended Features:");
for (i = 0; i < bits; i++) {
if (test_bit(data, i))
print_attr(level + 1, "%s", ext_feature_map[i]);
}
}
/*
* Control Port sends a EAPoL frame inside ATTR_FRAME and not a management
* frame. So a separate table with all the possible attributes is provided
@ -5911,7 +5990,8 @@ static const struct attr_entry attr_table[] = {
{ NL80211_ATTR_USE_RRM,
"Use RRM", ATTR_FLAG },
{ NL80211_ATTR_EXT_FEATURES,
"Extended Features" },
"Extended Features", ATTR_CUSTOM,
{ .function = print_ext_features} },
{ NL80211_ATTR_FILS_KEK,
"FILS KEK" },
{ NL80211_ATTR_FILS_NONCES,

Loading…
Cancel
Save