3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-11-22 06:29:23 +01:00

monitor: pass config to nlmon_create

Expand nlmon_create to be useful for both pcaps and monitoring. Doing
this also lets iwmon filter pcaps based on --no-ies,rtnl,scan etc
flags since they are part of the config.
This commit is contained in:
James Prestwood 2022-10-26 13:45:57 -07:00 committed by Denis Kenzior
parent 5d8b86ff7c
commit 5ebcc48814
3 changed files with 13 additions and 12 deletions

View File

@ -569,7 +569,8 @@ done:
return exit_status; return exit_status;
} }
static int process_pcap(struct pcap *pcap, uint16_t id) static int process_pcap(struct pcap *pcap, uint16_t id,
const struct nlmon_config *config)
{ {
struct nlmon *nlmon = NULL; struct nlmon *nlmon = NULL;
struct timeval tv; struct timeval tv;
@ -586,7 +587,7 @@ static int process_pcap(struct pcap *pcap, uint16_t id)
return EXIT_FAILURE; return EXIT_FAILURE;
} }
nlmon = nlmon_create(id); nlmon = nlmon_create(id, config);
while (pcap_read(pcap, &tv, buf, snaplen, &len, &real_len)) { while (pcap_read(pcap, &tv, buf, snaplen, &len, &real_len)) {
uint16_t arphrd_type; uint16_t arphrd_type;
@ -797,7 +798,8 @@ int main(int argc, char *argv[])
fprintf(stderr, "Invalid packet format\n"); fprintf(stderr, "Invalid packet format\n");
exit_status = EXIT_FAILURE; exit_status = EXIT_FAILURE;
} else } else
exit_status = process_pcap(pcap, nl80211_family); exit_status = process_pcap(pcap, nl80211_family,
&config);
pcap_close(pcap); pcap_close(pcap);

View File

@ -7253,7 +7253,7 @@ static void nlmon_message(struct nlmon *nlmon, const struct timeval *tv,
} }
} }
struct nlmon *nlmon_create(uint16_t id) struct nlmon *nlmon_create(uint16_t id, const struct nlmon_config *config)
{ {
struct nlmon *nlmon; struct nlmon *nlmon;
@ -7261,6 +7261,10 @@ struct nlmon *nlmon_create(uint16_t id)
nlmon->id = id; nlmon->id = id;
nlmon->req_list = l_queue_new(); nlmon->req_list = l_queue_new();
nlmon->nortnl = config->nortnl;
nlmon->nowiphy = config->nowiphy;
nlmon->noscan = config->noscan;
nlmon->noies = config->noies;
return nlmon; return nlmon;
} }
@ -8449,17 +8453,12 @@ struct nlmon *nlmon_open(const char *ifname, uint16_t id, const char *pathname,
} else } else
pcap = NULL; pcap = NULL;
nlmon = l_new(struct nlmon, 1);
nlmon->id = id; nlmon = nlmon_create(id, config);
nlmon->io = io; nlmon->io = io;
nlmon->pae_io = pae_io; nlmon->pae_io = pae_io;
nlmon->req_list = l_queue_new();
nlmon->pcap = pcap; nlmon->pcap = pcap;
nlmon->nortnl = config->nortnl;
nlmon->nowiphy = config->nowiphy;
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

@ -36,7 +36,7 @@ struct nlmon *nlmon_open(const char *ifname, uint16_t id, const char *pathname,
const struct nlmon_config *config); const struct nlmon_config *config);
void nlmon_close(struct nlmon *nlmon); void nlmon_close(struct nlmon *nlmon);
struct nlmon *nlmon_create(uint16_t id); struct nlmon *nlmon_create(uint16_t id, const struct nlmon_config *config);
void nlmon_destroy(struct nlmon *nlmon); void nlmon_destroy(struct nlmon *nlmon);
void nlmon_print_rtnl(struct nlmon *nlmon, const struct timeval *tv, void nlmon_print_rtnl(struct nlmon *nlmon, const struct timeval *tv,
const void *data, uint32_t size); const void *data, uint32_t size);