int mac_addr_a2n(unsigned char *mac_addr, char *arg);
int mac_addr_n2a(char *mac_addr, unsigned char *arg);
+int error_handler(struct sockaddr_nl *nla, struct nlmsgerr *err, void *arg);
+
const char *iftype_name(enum nl80211_iftype iftype);
#endif /* __IW_H */
return NL_STOP;
}
-static int error_handler(struct sockaddr_nl *nla, struct nlmsgerr *err,
- void *arg)
-{
- fprintf(stderr, "nl80211 error %d\n", err->error);
- exit(err->error);
-}
-
static int print_mpath_handler(struct nl_msg *msg, void *arg)
{
struct nlattr *tb[NL80211_ATTR_MAX + 1];
nl_cb_set(cb, NL_CB_FINISH, NL_CB_CUSTOM, wait_handler, &finished);
nl_recvmsgs(state->nl_handle, cb);
- err = 0;
+ err = finished;
if (!finished)
err = nl_wait_for_ack(state->nl_handle);
return NL_STOP;
}
-static int error_handler(struct sockaddr_nl *nla, struct nlmsgerr *err,
- void *arg)
-{
- fprintf(stderr, "nl80211 error %d\n", err->error);
- exit(err->error);
-}
-
static int print_sta_handler(struct nl_msg *msg, void *arg)
{
struct nlattr *tb[NL80211_ATTR_MAX + 1];
goto out;
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_sta_handler, NULL);
+ nl_cb_err(cb, NL_CB_CUSTOM, error_handler, &finished);
nl_cb_set(cb, NL_CB_FINISH, NL_CB_CUSTOM, wait_handler, &finished);
nl_recvmsgs(state->nl_handle, cb);
- err = 0;
+ err = finished;
if (!finished)
err = nl_wait_for_ack(state->nl_handle);
sprintf(modebuf, "Unknown mode (%d)", iftype);
return modebuf;
}
+
+int error_handler(struct sockaddr_nl *nla, struct nlmsgerr *err, void *arg)
+{
+ int *ret = arg;
+ *ret = err->error;
+ return NL_STOP;
+}