diff --git a/connectivity/lwipstack/lwip/src/core/lwip_dns.c b/connectivity/lwipstack/lwip/src/core/lwip_dns.c index 243007c2bd..3d5a6dd3ef 100644 --- a/connectivity/lwipstack/lwip/src/core/lwip_dns.c +++ b/connectivity/lwipstack/lwip/src/core/lwip_dns.c @@ -184,6 +184,14 @@ static u16_t dns_txid; #define LWIP_DNS_ISMDNS_ARG(x) #endif +/** dns_server_interface structue + used locally for multihoming systems. */ +struct dns_server_interface { + char interface_name [INTERFACE_NAME_MAX_SIZE]; + ip_addr_t dns_servers[DNS_MAX_SERVERS]; + struct dns_server_interface *next; +}; + /** DNS query message structure. No packing needed: only used locally on the stack. */ struct dns_query { @@ -431,8 +439,11 @@ dns_add_interface_server(u8_t numdns, const char *interface_name, const ip_addr_ } } // add new dns server to the list tail - new_interface_server = mem_calloc(1, sizeof(struct dns_server_interface)); + new_interface_server = mem_malloc(sizeof(struct dns_server_interface)); snprintf(new_interface_server->interface_name, INTERFACE_NAME_MAX_SIZE, "%s",interface_name); + for (u32_t i=0; idns_servers[i]); + } new_interface_server->dns_servers[numdns] = (*dnsserver); new_interface_server->next = NULL; diff --git a/connectivity/lwipstack/lwip/src/include/lwip/dns.h b/connectivity/lwipstack/lwip/src/include/lwip/dns.h index 3602cf9052..bd3e16a18e 100644 --- a/connectivity/lwipstack/lwip/src/include/lwip/dns.h +++ b/connectivity/lwipstack/lwip/src/include/lwip/dns.h @@ -50,12 +50,6 @@ extern "C" { #endif -struct dns_server_interface { - char interface_name [INTERFACE_NAME_MAX_SIZE]; - ip_addr_t dns_servers[DNS_MAX_SERVERS]; - struct dns_server_interface *next; -}; - /** DNS timer period */ #define DNS_TMR_INTERVAL 1000