mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-25 09:39:25 +01:00
nlmon: print Fast BSS Transition element
This commit is contained in:
parent
6dc7fde272
commit
5c7b5920b0
@ -2177,6 +2177,67 @@ static void print_measurement_report(unsigned int level, const char *label,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void print_fast_bss_transition(unsigned int level, const char *label,
|
||||||
|
const void *data,
|
||||||
|
uint16_t size)
|
||||||
|
{
|
||||||
|
struct ie_ft_info ft_info;
|
||||||
|
uint32_t mic_len = 16;
|
||||||
|
|
||||||
|
/* Most likely the MIC is 16 bytes */
|
||||||
|
if (ie_parse_fast_bss_transition_from_data(data - 2, size + 2,
|
||||||
|
mic_len, &ft_info) < 0) {
|
||||||
|
mic_len = 24;
|
||||||
|
|
||||||
|
/* Must be FILS, try 24 */
|
||||||
|
if (ie_parse_fast_bss_transition_from_data(data - 2, size + 2,
|
||||||
|
mic_len, &ft_info) < 0) {
|
||||||
|
print_attr(level + 1, "error parsing");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print_attr(level, "%s", label);
|
||||||
|
|
||||||
|
if (ft_info.rsnxe_used)
|
||||||
|
print_attr(level + 1, "RSNXE Used set");
|
||||||
|
|
||||||
|
print_attr(level + 1, "MIC Element Count: %u",
|
||||||
|
ft_info.mic_element_count);
|
||||||
|
print_attr(level + 1, "MIC:");
|
||||||
|
print_hexdump(level + 2, ft_info.mic, mic_len);
|
||||||
|
print_attr(level + 1, "ANONCE:");
|
||||||
|
print_hexdump(level + 2, ft_info.anonce, sizeof(ft_info.anonce));
|
||||||
|
print_attr(level + 1, "SNONCE:");
|
||||||
|
print_hexdump(level + 2, ft_info.snonce, sizeof(ft_info.snonce));
|
||||||
|
print_attr(level + 1, "R0KHID:");
|
||||||
|
print_hexdump(level + 2, ft_info.r0khid, ft_info.r0khid_len);
|
||||||
|
|
||||||
|
if (ft_info.r1khid_present) {
|
||||||
|
print_attr(level + 1, "R1KHID:");
|
||||||
|
print_hexdump(level + 2, ft_info.r1khid,
|
||||||
|
sizeof(ft_info.r1khid));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ft_info.gtk_len) {
|
||||||
|
print_attr(level + 1, "GTK Key ID: %u", ft_info.gtk_key_id);
|
||||||
|
print_attr(level + 1, "GTK RSC:");
|
||||||
|
print_hexdump(level + 2, ft_info.gtk_rsc,
|
||||||
|
sizeof(ft_info.gtk_rsc));
|
||||||
|
print_attr(level + 1, "GTK:");
|
||||||
|
print_hexdump(level + 2, ft_info.gtk, ft_info.gtk_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ft_info.igtk_len) {
|
||||||
|
print_attr(level + 1, "IGTK Key ID: %u", ft_info.igtk_key_id);
|
||||||
|
print_attr(level + 1, "IGTK IPN:");
|
||||||
|
print_hexdump(level + 2, ft_info.igtk_ipn,
|
||||||
|
sizeof(ft_info.igtk_ipn));
|
||||||
|
print_attr(level + 1, "IGTK:");
|
||||||
|
print_hexdump(level + 2, ft_info.igtk, ft_info.igtk_len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static struct attr_entry ie_entry[] = {
|
static struct attr_entry ie_entry[] = {
|
||||||
{ IE_TYPE_SSID, "SSID",
|
{ IE_TYPE_SSID, "SSID",
|
||||||
ATTR_CUSTOM, { .function = print_ie_ssid } },
|
ATTR_CUSTOM, { .function = print_ie_ssid } },
|
||||||
@ -2235,6 +2296,8 @@ static struct attr_entry ie_entry[] = {
|
|||||||
ATTR_CUSTOM, { .function = print_measurement_request } },
|
ATTR_CUSTOM, { .function = print_measurement_request } },
|
||||||
{ IE_TYPE_MEASUREMENT_REPORT, "Measurement Report",
|
{ IE_TYPE_MEASUREMENT_REPORT, "Measurement Report",
|
||||||
ATTR_CUSTOM, { .function = print_measurement_report } },
|
ATTR_CUSTOM, { .function = print_measurement_report } },
|
||||||
|
{ IE_TYPE_FAST_BSS_TRANSITION, "Fast BSS Transition",
|
||||||
|
ATTR_CUSTOM, { .function = print_fast_bss_transition } },
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user