dns: print dns server address when query failed

When debugging the actual dns resolution failure encountered, it is found
that if you know the address of dnsserver, the difficulty of debugging the
problem is reduced.

Signed-off-by: zhanghongyu <zhanghongyu@xiaomi.com>
This commit is contained in:
zhanghongyu 2023-07-18 19:24:37 +08:00 committed by Alin Jerpelea
parent a51be33a41
commit 3c359da8b9

View File

@ -559,6 +559,45 @@ static int dns_recv_response(int sd, FAR union dns_addr_u *addr, int naddr,
return naddr_read > 0 ? naddr_read : ret;
}
/****************************************************************************
* Name: dns_query_error
*
* Description:
* Displays information about dns query errors
*
* Input Parameters:
* prompt - Error description.
* ret - Error code.
* uaddr - DNS name server address.
*
****************************************************************************/
static void dns_query_error(FAR const char *prompt, int ret,
FAR union dns_addr_u *uaddr)
{
char addrstr[INET6_ADDRSTRLEN];
#ifdef CONFIG_NET_IPv4
if (uaddr->addr.sa_family == AF_INET)
{
inet_ntop(AF_INET, &uaddr->ipv4.sin_addr, addrstr, INET6_ADDRSTRLEN);
}
else
#endif
#ifdef CONFIG_NET_IPv6
if (uaddr->addr.sa_family == AF_INET6)
{
inet_ntop(AF_INET6, &uaddr->ipv6.sin6_addr, addrstr, INET6_ADDRSTRLEN);
}
else
#endif
{
strlcpy(addrstr, "Unknown address", sizeof(addrstr));
}
nerr("%s: %d, server address: %s\n", prompt, ret, addrstr);
}
/****************************************************************************
* Name: dns_query_callback
*
@ -609,7 +648,8 @@ static int dns_query_callback(FAR void *arg, FAR struct sockaddr *addr,
DNS_RECTYPE_AAAA, &qinfo);
if (ret < 0)
{
nerr("ERROR: IPv6 dns_send_query failed: %d\n", ret);
dns_query_error("ERROR: IPv6 dns_send_query failed",
ret, (FAR union dns_addr_u *)addr);
query->result = ret;
}
else
@ -624,7 +664,8 @@ static int dns_query_callback(FAR void *arg, FAR struct sockaddr *addr,
}
else
{
nerr("ERROR: IPv6 dns_recv_response failed: %d\n", ret);
dns_query_error("ERROR: IPv6 dns_recv_response failed",
ret, (FAR union dns_addr_u *)addr);
query->result = ret;
}
}
@ -647,7 +688,8 @@ static int dns_query_callback(FAR void *arg, FAR struct sockaddr *addr,
DNS_RECTYPE_A, &qinfo);
if (ret < 0)
{
nerr("ERROR: IPv4 dns_send_query failed: %d\n", ret);
dns_query_error("ERROR: IPv4 dns_send_query failed",
ret, (FAR union dns_addr_u *)addr);
query->result = ret;
}
else
@ -662,7 +704,8 @@ static int dns_query_callback(FAR void *arg, FAR struct sockaddr *addr,
}
else
{
nerr("ERROR: IPv4 dns_recv_response failed: %d\n", ret);
dns_query_error("ERROR: IPv4 dns_recv_response failed",
ret, (FAR union dns_addr_u *)addr);
query->result = ret;
}
}