Skip to content

Commit 457f940

Browse files
author
Mika Leppänen
committed
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.
1 parent b1d41f9 commit 457f940

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

features/FEATURE_LWIP/lwip-interface/lwip_stack.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -763,15 +763,29 @@ static nsapi_error_t mbed_lwip_gethostbyname(nsapi_stack_t *stack, const char *h
763763
if (version == NSAPI_UNSPEC) {
764764
const ip_addr_t *ip_addr;
765765
ip_addr = mbed_lwip_get_ip_addr(true, &lwip_netif);
766+
// Prefer IPv6
766767
if (IP_IS_V6(ip_addr)) {
767-
addr_type = NETCONN_DNS_IPV6;
768+
// If IPv4 is available use it as backup
769+
if (mbed_lwip_get_ipv4_addr(&lwip_netif)) {
770+
addr_type = NETCONN_DNS_IPV6_IPV4;
771+
} else {
772+
addr_type = NETCONN_DNS_IPV6;
773+
}
774+
// Prefer IPv4
768775
} else {
769-
addr_type = NETCONN_DNS_IPV4;
776+
// If IPv6 is available use it as backup
777+
if (mbed_lwip_get_ipv6_addr(&lwip_netif)) {
778+
addr_type = NETCONN_DNS_IPV4_IPV6;
779+
} else {
780+
addr_type = NETCONN_DNS_IPV4;
781+
}
770782
}
771783
} else if (version == NSAPI_IPv4) {
772784
addr_type = NETCONN_DNS_IPV4;
773785
} else if (version == NSAPI_IPv6) {
774786
addr_type = NETCONN_DNS_IPV6;
787+
} else {
788+
return NSAPI_ERROR_DNS_FAILURE;
775789
}
776790
err_t err = netconn_gethostbyname_addrtype(host, &lwip_addr, addr_type);
777791
#elif LWIP_IPV4

0 commit comments

Comments
 (0)