From: Ben Greear Date: Wed, 10 Jul 2024 18:37:11 +0000 (-0700) Subject: nl80211: Use wpa_msg() to report netlink errors X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=38ccd0677f1d0393cece086c0ad130e1a33e267c;p=thirdparty%2Fhostap.git nl80211: Use wpa_msg() to report netlink errors This allows errors to be propagated to listeners instead of just buried in the logs. Signed-off-by: Ben Greear --- diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index f2ea17a86..2c94360f0 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -348,6 +348,7 @@ struct nl80211_ack_err_args { int err; struct nl_msg *orig_msg; struct nl80211_err_info *err_info; + struct wpa_driver_nl80211_data *drv; }; static int error_handler(struct sockaddr_nl *nla, struct nlmsgerr *err, @@ -384,8 +385,12 @@ static int error_handler(struct sockaddr_nl *nla, struct nlmsgerr *err, if (tb[NLMSGERR_ATTR_MSG]) { len = strnlen((char *) nla_data(tb[NLMSGERR_ATTR_MSG]), nla_len(tb[NLMSGERR_ATTR_MSG])); - wpa_printf(MSG_ERROR, "nl80211: kernel reports: %*s", - len, (char *) nla_data(tb[NLMSGERR_ATTR_MSG])); + if (err_args->drv) + wpa_msg(err_args->drv->ctx, MSG_ERROR, "nl80211: kernel reports: %*s", + len, (char *) nla_data(tb[NLMSGERR_ATTR_MSG])); + else + wpa_printf(MSG_ERROR, "nl80211: kernel reports: %*s", + len, (char *) nla_data(tb[NLMSGERR_ATTR_MSG])); } if (!err_args->err_info) @@ -539,6 +544,7 @@ int send_and_recv_glb(struct nl80211_global *global, err.err = 1; err.orig_msg = msg; err.err_info = err_info; + err.drv = drv; nl_cb_err(cb, NL_CB_CUSTOM, error_handler, &err); nl_cb_set(cb, NL_CB_FINISH, NL_CB_CUSTOM, finish_handler, &err.err);