Skip to content

Commit 2e790b5

Browse files
author
Arto Kinnunen
committed
Review corrections
-Check address version NSAPI_UNSPEC -Disable traces -More specific interface ID parsing -Harmonize return values
1 parent 00ebd65 commit 2e790b5

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

connectivity/nanostack/source/Nanostack.cpp

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@
3737
#include "ns_trace.h"
3838
#define TRACE_GROUP "nsif"
3939

40-
#define NSIF_DEEP_TRACE
40+
//#define NSIF_DEEP_TRACE
4141
#ifdef NSIF_DEEP_TRACE
4242
#define TRACE_DEEP tr_debug
4343
#else
44-
#define TRACE_DEP(...)
44+
#define TRACE_DEEP(...)
4545
#endif
4646

4747
#define NS_INTERFACE_SOCKETS_MAX 16 //same as NanoStack SOCKET_MAX
@@ -160,6 +160,7 @@ static int8_t find_interface_by_address(const uint8_t target_addr[16])
160160

161161
static int8_t nanostack_interface_id_parse(const char* interface_name)
162162
{
163+
int namelen;
163164
int8_t interface_id = -1;
164165

165166
TRACE_DEEP("nanostack_interface_id_parse() %s", interface_name ? interface_name : "null");
@@ -169,20 +170,20 @@ static int8_t nanostack_interface_id_parse(const char* interface_name)
169170
}
170171

171172
// parse interface ID from the interface_name
172-
if (strlen(interface_name) < 4) {
173+
namelen = strlen(interface_name);
174+
if (namelen < 4 || namelen > 5) {
173175
return -1;
174176
}
175177

176-
interface_id = atoi(&interface_name[3]);
177-
if (interface_id < 0) {
178-
return -1;
178+
if ((strncmp("MES", interface_name, 3) == 0) && isdigit(interface_name[3])) {
179+
interface_id = atoi(&interface_name[3]);
179180
}
180181

181182
TRACE_DEEP("parsed interfaceID = %d", interface_id);
182183
return interface_id;
183184
}
184185

185-
static int8_t nanostack_dns_query_result_check(const char *domain_name, SocketAddress *address, const char *interface_name)
186+
static int nanostack_dns_query_result_check(const char *domain_name, SocketAddress *address, const char *interface_name)
186187
{
187188
uint8_t dns_query_addr[16] = {0};
188189
int8_t interface_id, ns_query_result;
@@ -597,9 +598,14 @@ nsapi_error_t Nanostack::gethostbyname(const char *name, SocketAddress *address,
597598
return NSAPI_ERROR_OK;
598599
}
599600

601+
// Nanostack is IPv6 stack
602+
if (version == NSAPI_UNSPEC) {
603+
version = NSAPI_IPv6;
604+
}
605+
600606
// try nanostack DNS cache, if not found then fallback to dns query
601607
if (nanostack_dns_query_result_check(name, address, interface_name) == 0) {
602-
return 0;
608+
return NSAPI_ERROR_OK;
603609
}
604610

605611
return nsapi_dns_query(this, name, address, interface_name, version);
@@ -622,6 +628,11 @@ nsapi_value_or_error_t Nanostack::gethostbyname_async(const char *name, hostbyna
622628
return NSAPI_ERROR_OK;
623629
}
624630

631+
// Nanostack is IPv6 stack
632+
if (version == NSAPI_UNSPEC) {
633+
version = NSAPI_IPv6;
634+
}
635+
625636
// try nanostack DNS cache, if not found then fallback to dns query
626637
if (nanostack_dns_query_result_check(name, &address, interface_name) == 0) {
627638
// hit found, return result immediately

0 commit comments

Comments
 (0)