--- src/drivers/driver_nl80211.c | 19 +++++++++++-------- 1 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index d7a2fdf..ae73868 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -1548,7 +1548,8 @@ static void nl80211_client_probe_event(struct wpa_driver_nl80211_data *drv, static int process_event(struct nl_msg *msg, void *arg) { - struct wpa_driver_nl80211_data *drv = arg; + struct i802_bss *bss = arg; + struct wpa_driver_nl80211_data *drv = bss->drv; struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); struct nlattr *tb[NL80211_ATTR_MAX + 1]; @@ -1673,7 +1674,8 @@ static void wpa_driver_nl80211_event_receive(int sock, void *eloop_ctx, void *handle) { struct nl_cb *cb; - struct wpa_driver_nl80211_data *drv = eloop_ctx; + struct i802_bss *bss = eloop_ctx; + struct wpa_driver_nl80211_data *drv = bss->drv; wpa_printf(MSG_DEBUG, "nl80211: Event message available"); @@ -1681,7 +1683,7 @@ static void wpa_driver_nl80211_event_receive(int sock, void *eloop_ctx, if (!cb) return; nl_cb_set(cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM, no_seq_check, NULL); - nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, process_event, drv); + nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, process_event, bss); nl_recvmsgs(handle, cb); nl_cb_put(cb); } @@ -1976,8 +1978,9 @@ static int wpa_driver_nl80211_capa(struct wpa_driver_nl80211_data *drv) } -static int wpa_driver_nl80211_init_nl(struct wpa_driver_nl80211_data *drv) +static int wpa_driver_nl80211_init_nl(struct i802_bss *bss) { + struct wpa_driver_nl80211_data *drv = bss->drv; int ret; /* Initialize generic netlink and nl80211 */ @@ -2080,7 +2083,7 @@ static int wpa_driver_nl80211_init_nl(struct wpa_driver_nl80211_data *drv) } eloop_register_read_sock(nl_socket_get_fd(drv->nl_handle_event), - wpa_driver_nl80211_event_receive, drv, + wpa_driver_nl80211_event_receive, bss, drv->nl_handle_event); return 0; @@ -2245,7 +2248,7 @@ static void * wpa_driver_nl80211_init(void *ctx, const char *ifname, drv->ioctl_sock = -1; drv->ap_scan_as_station = NL80211_IFTYPE_UNSPECIFIED; - if (wpa_driver_nl80211_init_nl(drv)) { + if (wpa_driver_nl80211_init_nl(bss)) { os_free(drv); return NULL; } @@ -4999,7 +5002,7 @@ static int nl80211_mgmt_subscribe(struct i802_bss *bss) } eloop_register_read_sock(nl_socket_get_fd(bss->nl_handle_mgmt), - wpa_driver_nl80211_event_receive, drv, + wpa_driver_nl80211_event_receive, bss, bss->nl_handle_mgmt); return 0; @@ -7083,7 +7086,7 @@ static int wpa_driver_nl80211_probe_req_report(void *priv, int report) } eloop_register_read_sock(nl_socket_get_fd(bss->nl_handle_preq), - wpa_driver_nl80211_event_receive, drv, + wpa_driver_nl80211_event_receive, bss, bss->nl_handle_preq); return 0; -- 1.7.6.3