platform: log extack warning messages for netlink requests
The extack can also be returned on success. In that case, they are warnings. Log them, it might be useful.
This commit is contained in:
@@ -10176,9 +10176,16 @@ continue_reading:
|
||||
int errsv;
|
||||
|
||||
errsv = nlmsg_parse_error(msg.nm_nlh, &extack_msg);
|
||||
if (errsv == 0)
|
||||
if (errsv == 0) {
|
||||
seq_result = WAIT_FOR_NL_RESPONSE_RESULT_RESPONSE_OK;
|
||||
else {
|
||||
if (extack_msg) {
|
||||
_LOGD("%s: recvmsg: warning message from kernel: %s%s%s for request %d",
|
||||
log_prefix,
|
||||
NM_PRINT_FMT_QUOTE_STRING(extack_msg),
|
||||
msg.nm_nlh->nlmsg_seq);
|
||||
extack_msg = NULL;
|
||||
}
|
||||
} else {
|
||||
_LOGD("%s: recvmsg: error message from kernel: %s (%d)%s%s%s for request %d",
|
||||
log_prefix,
|
||||
nm_strerror(errsv),
|
||||
@@ -10636,9 +10643,10 @@ mptcp_addr_update(NMPlatform *platform, NMOptionBool add, const NMPlatformMptcpA
|
||||
return nle;
|
||||
}
|
||||
|
||||
_LOGT("mptcp: %s address %s: success",
|
||||
_LOGT("mptcp: %s address %s: success%s%s%s",
|
||||
cmd_str,
|
||||
nm_platform_mptcp_addr_to_string(addr, sbuf, sizeof(sbuf)));
|
||||
nm_platform_mptcp_addr_to_string(addr, sbuf, sizeof(sbuf)),
|
||||
NM_PRINT_FMT_QUOTED(extack_msg[0] != '\0', " Warning: \"", extack_msg, "\"", ""));
|
||||
|
||||
return 0;
|
||||
|
||||
|
@@ -313,9 +313,6 @@ nlmsg_parse_error(const struct nlmsghdr *nlh, const char **out_extack_msg)
|
||||
|
||||
e = nlmsg_data(nlh);
|
||||
|
||||
if (!e->error)
|
||||
return 0;
|
||||
|
||||
if (NM_FLAGS_HAS(nlh->nlmsg_flags, NLM_F_ACK_TLVS) && out_extack_msg
|
||||
&& nlh->nlmsg_len >= sizeof(*e) + e->msg.nlmsg_len) {
|
||||
static const struct nla_policy policy[] = {
|
||||
@@ -328,11 +325,19 @@ nlmsg_parse_error(const struct nlmsghdr *nlh, const char **out_extack_msg)
|
||||
tlvs = NM_CAST_ALIGN(struct nlattr,
|
||||
(((char *) e) + sizeof(*e) + e->msg.nlmsg_len - NLMSG_HDRLEN));
|
||||
if (nla_parse_arr(tb, tlvs, nlh->nlmsg_len - sizeof(*e) - e->msg.nlmsg_len, policy) >= 0) {
|
||||
if (tb[NLMSGERR_ATTR_MSG])
|
||||
*out_extack_msg = nla_get_string(tb[NLMSGERR_ATTR_MSG]);
|
||||
if (tb[NLMSGERR_ATTR_MSG]) {
|
||||
const char *s;
|
||||
|
||||
s = nla_get_string(tb[NLMSGERR_ATTR_MSG]);
|
||||
if (s[0] != '\0')
|
||||
*out_extack_msg = s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!e->error)
|
||||
return 0;
|
||||
|
||||
return -nm_errno_from_native(e->error);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user