Skip to content

Commit e5c291d

Browse files
author
Mika Leppänen
committed
Added version to nsapi get host by name
1 parent 1f98cc3 commit e5c291d

File tree

3 files changed

+41
-12
lines changed

3 files changed

+41
-12
lines changed

features/net/FEATURE_IPV4/lwip-interface/lwip_stack.c

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -525,23 +525,38 @@ static int lwip_err_remap(err_t err) {
525525
}
526526

527527
/* LWIP network stack implementation */
528-
static int lwip_gethostbyname(nsapi_stack_t *stack, const char *host, nsapi_addr_t *addr)
528+
static int lwip_gethostbyname(nsapi_stack_t *stack, const char *host, nsapi_addr_t *addr, nsapi_version_t version)
529529
{
530530
ip_addr_t lwip_addr;
531531

532532
#if LWIP_IPV4 && LWIP_IPV6
533533
u8_t addr_type;
534-
const ip_addr_t *ip_addr;
535-
ip_addr = lwip_get_ip_addr(true, &lwip_netif);
536-
if (IP_IS_V6(ip_addr)) {
537-
addr_type = NETCONN_DNS_IPV6;
538-
} else {
534+
if (version == NSAPI_UNSPEC) {
535+
const ip_addr_t *ip_addr;
536+
ip_addr = lwip_get_ip_addr(true, &lwip_netif);
537+
if (IP_IS_V6(ip_addr)) {
538+
addr_type = NETCONN_DNS_IPV6;
539+
} else {
540+
addr_type = NETCONN_DNS_IPV4;
541+
}
542+
} else if (version == NSAPI_IPv4) {
539543
addr_type = NETCONN_DNS_IPV4;
544+
} else if (version == NSAPI_IPv6) {
545+
addr_type = NETCONN_DNS_IPV6;
540546
}
541547
err_t err = netconn_gethostbyname_addrtype(host, &lwip_addr, addr_type);
542-
#else
548+
#elif LWIP_IPV4
549+
if (version != NSAPI_IPv4 && version != NSAPI_UNSPEC) {
550+
return NSAPI_ERROR_DNS_FAILURE;
551+
}
552+
err_t err = netconn_gethostbyname(host, &lwip_addr);
553+
#elif LWIP_IPV6
554+
if (version != NSAPI_IPv6 && version != NSAPI_UNSPEC) {
555+
return NSAPI_ERROR_DNS_FAILURE;
556+
}
543557
err_t err = netconn_gethostbyname(host, &lwip_addr);
544558
#endif
559+
545560
if (err != ERR_OK) {
546561
return NSAPI_ERROR_DNS_FAILURE;
547562
}

features/net/network-socket/NetworkStack.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,19 @@ class NetworkStackWrapper : public NetworkStack
107107
}
108108

109109
nsapi_addr_t addr = {NSAPI_IPv4, 0};
110-
int err = _stack_api()->gethostbyname(_stack(), name, &addr);
110+
int err = _stack_api()->gethostbyname(_stack(), name, &addr, NSAPI_UNSPEC);
111+
address->set_addr(addr);
112+
return err;
113+
}
114+
115+
virtual int gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version)
116+
{
117+
if (!_stack_api()->gethostbyname) {
118+
return NetworkStack::gethostbyname(name, address, version);
119+
}
120+
121+
nsapi_addr_t addr = {NSAPI_IPv4, 0};
122+
int err = _stack_api()->gethostbyname(_stack(), name, &addr, version);
111123
address->set_addr(addr);
112124
return err;
113125
}

features/net/network-socket/nsapi_types.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,16 @@ typedef enum nsapi_error {
8585
* @enum nsapi_version_t
8686
*/
8787
typedef enum nsapi_version {
88-
NSAPI_IPv4, /*!< Address is IPv4 */
89-
NSAPI_IPv6, /*!< Address is IPv6 */
88+
NSAPI_IPv4, /*!< Address is IPv4 */
89+
NSAPI_IPv6, /*!< Address is IPv6 */
90+
NSAPI_UNSPEC /*!< Address is unspecified */
9091
} nsapi_version_t;
9192

9293
/** IP address structure for passing IP addresses by value
9394
*/
9495
typedef struct nsapi_addr {
9596
/** IP version
96-
* NSAPI_IPv4 or NSAPI_IPv6
97+
* NSAPI_IPv4 or NSAPI_IPv6 (NSAPI_UNSPEC not currently supported)
9798
*/
9899
nsapi_version_t version;
99100

@@ -197,9 +198,10 @@ typedef struct nsapi_stack_api
197198
* @param stack Stack handle
198199
* @param addr Destination for the host IP address
199200
* @param host Hostname to resolve
201+
* @param version Address family
200202
* @return 0 on success, negative error code on failure
201203
*/
202-
int (*gethostbyname)(nsapi_stack_t *stack, const char *host, nsapi_addr_t *addr);
204+
int (*gethostbyname)(nsapi_stack_t *stack, const char *host, nsapi_addr_t *addr, nsapi_version_t version);
203205

204206
/** Add a domain name server to list of servers to query
205207
*

0 commit comments

Comments
 (0)