From b4a449553700d157cdfa70ade89d320492d78040 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Wed, 13 Nov 2024 05:42:12 -0800 Subject: [PATCH] monitor: add better info about the country code IE The 3rd byte of the country code was being printed as ASCII but this byte isn't always a printable character. Instead we can check what the value is and describe what it means from the spec. --- monitor/nlmon.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/monitor/nlmon.c b/monitor/nlmon.c index ac594c3c..60adddc5 100644 --- a/monitor/nlmon.c +++ b/monitor/nlmon.c @@ -491,7 +491,30 @@ static void print_ie_country(unsigned int level, const char *label, return; } - print_attr(level, "%s: %c%c%c", label, code[0], code[1], code[2]); + print_attr(level, "%s: %c%c", label, code[0], code[1]); + + switch (code[2]) { + case ' ': + print_attr(level + 1, + "3rd octet: 0x%02x: All environments", code[2]); + break; + case 'O': + print_attr(level + 1, + "3rd octet: 0x%02x: Outdoor environments", code[2]); + break; + case 'I': + print_attr(level + 1, + "3rd octet: 0x%02x: Indoor environments", code[2]); + break; + case 'X': + print_attr(level + 1, + "3rd octet: 0x%02x: Non-country entity", code[2]); + break; + default: + print_attr(level + 1, + "3rd octet: 0x%02x: Annex E table", code[2]); + break; + } while (i < size) { if (code[i] > 200) {