monitor: Add --noies option

To help understand scanning results a bit better and cut down on scan
output add an option to not print the contents of the IEs.  Only the
SSID IE will be printed.
This commit is contained in:
Denis Kenzior 2021-02-02 12:04:53 -06:00
parent 8bf43c95a8
commit 83e1265c6b
3 changed files with 20 additions and 0 deletions

View File

@ -671,6 +671,7 @@ static void usage(void)
"\t-n, --nortnl Don't show RTNL output\n" "\t-n, --nortnl Don't show RTNL output\n"
"\t-y, --nowiphy Don't show 'New Wiphy' output\n" "\t-y, --nowiphy Don't show 'New Wiphy' output\n"
"\t-s, --noscan Don't show scan result output\n" "\t-s, --noscan Don't show scan result output\n"
"\t-e, --noies Don't show IEs except SSID\n"
"\t-h, --help Show help options\n"); "\t-h, --help Show help options\n");
} }
@ -683,6 +684,7 @@ static const struct option main_options[] = {
{ "nortnl", no_argument, NULL, 'n' }, { "nortnl", no_argument, NULL, 'n' },
{ "nowiphy", no_argument, NULL, 'y' }, { "nowiphy", no_argument, NULL, 'y' },
{ "noscan", no_argument, NULL, 's' }, { "noscan", no_argument, NULL, 's' },
{ "noies", no_argument, NULL, 'e' },
{ "version", no_argument, NULL, 'v' }, { "version", no_argument, NULL, 'v' },
{ "help", no_argument, NULL, 'h' }, { "help", no_argument, NULL, 'h' },
{ } { }
@ -746,6 +748,9 @@ int main(int argc, char *argv[])
case 's': case 's':
config.noscan = true; config.noscan = true;
break; break;
case 'e':
config.noies = true;
break;
case 'v': case 'v':
printf("%s\n", VERSION); printf("%s\n", VERSION);
return EXIT_SUCCESS; return EXIT_SUCCESS;

View File

@ -82,6 +82,8 @@
#define BSS_CAPABILITY_APSD (1<<11) #define BSS_CAPABILITY_APSD (1<<11)
#define BSS_CAPABILITY_DSSS_OFDM (1<<13) #define BSS_CAPABILITY_DSSS_OFDM (1<<13)
struct nlmon *cur_nlmon;
enum msg_type { enum msg_type {
MSG_REQUEST, MSG_REQUEST,
MSG_RESPONSE, MSG_RESPONSE,
@ -99,6 +101,7 @@ struct nlmon {
bool nortnl; bool nortnl;
bool nowiphy; bool nowiphy;
bool noscan; bool noscan;
bool noies;
}; };
struct nlmon_req { struct nlmon_req {
@ -2124,6 +2127,9 @@ static void print_ie(unsigned int level, const char *label,
} }
} }
if (cur_nlmon && cur_nlmon->noies && tag != IE_TYPE_SSID)
continue;
if (entry && entry->function) if (entry && entry->function)
entry->function(level + 1, entry->str, entry->function(level + 1, entry->str,
iter.data, iter.len); iter.data, iter.len);
@ -3966,6 +3972,9 @@ static void print_management_ies(unsigned int level, const char *label,
print_ie(level, label, data, size); print_ie(level, label, data, size);
if (cur_nlmon && cur_nlmon->noies)
return;
wsc_data = ie_tlv_extract_wsc_payload(data, size, &wsc_len); wsc_data = ie_tlv_extract_wsc_payload(data, size, &wsc_len);
if (wsc_data) { if (wsc_data) {
print_wsc_attributes(level + 1, "WSC Payload", print_wsc_attributes(level + 1, "WSC Payload",
@ -6325,6 +6334,8 @@ static void print_message(struct nlmon *nlmon, const struct timeval *tv,
case MSG_REQUEST: case MSG_REQUEST:
case MSG_RESULT: case MSG_RESULT:
case MSG_EVENT: case MSG_EVENT:
cur_nlmon = nlmon;
switch (cmd) { switch (cmd) {
case NL80211_CMD_CONTROL_PORT_FRAME: case NL80211_CMD_CONTROL_PORT_FRAME:
print_attributes(0, control_port_attr_table, data, len); print_attributes(0, control_port_attr_table, data, len);
@ -6332,6 +6343,8 @@ static void print_message(struct nlmon *nlmon, const struct timeval *tv,
default: default:
print_attributes(0, attr_table, data, len); print_attributes(0, attr_table, data, len);
} }
cur_nlmon = NULL;
break; break;
case MSG_RESPONSE: case MSG_RESPONSE:
print_field("Status: %s (%d)", strerror(status), status); print_field("Status: %s (%d)", strerror(status), status);
@ -7692,6 +7705,7 @@ struct nlmon *nlmon_open(const char *ifname, uint16_t id, const char *pathname,
nlmon->nortnl = config->nortnl; nlmon->nortnl = config->nortnl;
nlmon->nowiphy = config->nowiphy; nlmon->nowiphy = config->nowiphy;
nlmon->noscan = config->noscan; nlmon->noscan = config->noscan;
nlmon->noies = config->noies;
l_io_set_read_handler(nlmon->io, nlmon_receive, nlmon, NULL); l_io_set_read_handler(nlmon->io, nlmon_receive, nlmon, NULL);
l_io_set_read_handler(nlmon->pae_io, pae_receive, nlmon, NULL); l_io_set_read_handler(nlmon->pae_io, pae_receive, nlmon, NULL);

View File

@ -29,6 +29,7 @@ struct nlmon_config {
bool nortnl; bool nortnl;
bool nowiphy; bool nowiphy;
bool noscan; bool noscan;
bool noies;
}; };
struct nlmon *nlmon_open(const char *ifname, uint16_t id, const char *pathname, struct nlmon *nlmon_open(const char *ifname, uint16_t id, const char *pathname,