From b5b292ee2582c08cf2f76d6fda6a9a38d5d3466b Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 9 Aug 2014 12:32:29 -0700 Subject: [PATCH] monitor: Terminate program when setup of netlink monitor failed --- monitor/main.c | 5 ++++- monitor/nlmon.c | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/monitor/main.c b/monitor/main.c index 046b25c9..e41967cf 100644 --- a/monitor/main.c +++ b/monitor/main.c @@ -81,8 +81,11 @@ static void genl_parse(uint16_t type, const void *data, uint32_t len, if (id == GENL_ID_GENERATE) return; - if (!strcmp(name, NL80211_GENL_NAME)) + if (!strcmp(name, NL80211_GENL_NAME)) { nlmon = nlmon_open(ifname, id); + if (!nlmon) + l_main_quit(); + } } static void genl_notify(uint16_t type, const void *data, diff --git a/monitor/nlmon.c b/monitor/nlmon.c index 94062501..55e9f287 100644 --- a/monitor/nlmon.c +++ b/monitor/nlmon.c @@ -1182,11 +1182,16 @@ static struct l_io *open_packet(const char *name) struct nlmon *nlmon_open(const char *ifname, uint16_t id) { struct nlmon *nlmon; + struct l_io *io; + + io = open_packet(ifname); + if (!io) + return NULL; nlmon = l_new(struct nlmon, 1); nlmon->id = id; - nlmon->io = open_packet(ifname); + nlmon->io = io; nlmon->req_list = l_queue_new(); l_io_set_read_handler(nlmon->io, nlmon_receive, nlmon, NULL);