mirror of https://github.com/ARMmbed/mbed-os.git
Added Ipv4/Ipv6 stack stack support to lwip DNS queries
If both IPv4 and IPv6 are available, and DNS query fails for first system, second system is tried.pull/4911/head
parent
b1d41f9afd
commit
457f940a7c
|
@ -763,15 +763,29 @@ static nsapi_error_t mbed_lwip_gethostbyname(nsapi_stack_t *stack, const char *h
|
||||||
if (version == NSAPI_UNSPEC) {
|
if (version == NSAPI_UNSPEC) {
|
||||||
const ip_addr_t *ip_addr;
|
const ip_addr_t *ip_addr;
|
||||||
ip_addr = mbed_lwip_get_ip_addr(true, &lwip_netif);
|
ip_addr = mbed_lwip_get_ip_addr(true, &lwip_netif);
|
||||||
|
// Prefer IPv6
|
||||||
if (IP_IS_V6(ip_addr)) {
|
if (IP_IS_V6(ip_addr)) {
|
||||||
addr_type = NETCONN_DNS_IPV6;
|
// If IPv4 is available use it as backup
|
||||||
|
if (mbed_lwip_get_ipv4_addr(&lwip_netif)) {
|
||||||
|
addr_type = NETCONN_DNS_IPV6_IPV4;
|
||||||
|
} else {
|
||||||
|
addr_type = NETCONN_DNS_IPV6;
|
||||||
|
}
|
||||||
|
// Prefer IPv4
|
||||||
} else {
|
} else {
|
||||||
addr_type = NETCONN_DNS_IPV4;
|
// If IPv6 is available use it as backup
|
||||||
|
if (mbed_lwip_get_ipv6_addr(&lwip_netif)) {
|
||||||
|
addr_type = NETCONN_DNS_IPV4_IPV6;
|
||||||
|
} else {
|
||||||
|
addr_type = NETCONN_DNS_IPV4;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (version == NSAPI_IPv4) {
|
} else if (version == NSAPI_IPv4) {
|
||||||
addr_type = NETCONN_DNS_IPV4;
|
addr_type = NETCONN_DNS_IPV4;
|
||||||
} else if (version == NSAPI_IPv6) {
|
} else if (version == NSAPI_IPv6) {
|
||||||
addr_type = NETCONN_DNS_IPV6;
|
addr_type = NETCONN_DNS_IPV6;
|
||||||
|
} else {
|
||||||
|
return NSAPI_ERROR_DNS_FAILURE;
|
||||||
}
|
}
|
||||||
err_t err = netconn_gethostbyname_addrtype(host, &lwip_addr, addr_type);
|
err_t err = netconn_gethostbyname_addrtype(host, &lwip_addr, addr_type);
|
||||||
#elif LWIP_IPV4
|
#elif LWIP_IPV4
|
||||||
|
|
Loading…
Reference in New Issue