mirror of https://github.com/ARMmbed/mbed-os.git
Review corrections
-Check address version NSAPI_UNSPEC -Disable traces -More specific interface ID parsing -Harmonize return valuespull/13735/head
parent
0af9d04e4a
commit
321434eae4
|
@ -37,11 +37,11 @@
|
||||||
#include "ns_trace.h"
|
#include "ns_trace.h"
|
||||||
#define TRACE_GROUP "nsif"
|
#define TRACE_GROUP "nsif"
|
||||||
|
|
||||||
#define NSIF_DEEP_TRACE
|
//#define NSIF_DEEP_TRACE
|
||||||
#ifdef NSIF_DEEP_TRACE
|
#ifdef NSIF_DEEP_TRACE
|
||||||
#define TRACE_DEEP tr_debug
|
#define TRACE_DEEP tr_debug
|
||||||
#else
|
#else
|
||||||
#define TRACE_DEP(...)
|
#define TRACE_DEEP(...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define NS_INTERFACE_SOCKETS_MAX 16 //same as NanoStack SOCKET_MAX
|
#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])
|
||||||
|
|
||||||
static int8_t nanostack_interface_id_parse(const char* interface_name)
|
static int8_t nanostack_interface_id_parse(const char* interface_name)
|
||||||
{
|
{
|
||||||
|
int namelen;
|
||||||
int8_t interface_id = -1;
|
int8_t interface_id = -1;
|
||||||
|
|
||||||
TRACE_DEEP("nanostack_interface_id_parse() %s", interface_name ? interface_name : "null");
|
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse interface ID from the interface_name
|
// parse interface ID from the interface_name
|
||||||
if (strlen(interface_name) < 4) {
|
namelen = strlen(interface_name);
|
||||||
|
if (namelen < 4 || namelen > 5) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface_id = atoi(&interface_name[3]);
|
if ((strncmp("MES", interface_name, 3) == 0) && isdigit(interface_name[3])) {
|
||||||
if (interface_id < 0) {
|
interface_id = atoi(&interface_name[3]);
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE_DEEP("parsed interfaceID = %d", interface_id);
|
TRACE_DEEP("parsed interfaceID = %d", interface_id);
|
||||||
return interface_id;
|
return interface_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int8_t nanostack_dns_query_result_check(const char *domain_name, SocketAddress *address, const char *interface_name)
|
static int nanostack_dns_query_result_check(const char *domain_name, SocketAddress *address, const char *interface_name)
|
||||||
{
|
{
|
||||||
uint8_t dns_query_addr[16] = {0};
|
uint8_t dns_query_addr[16] = {0};
|
||||||
int8_t interface_id, ns_query_result;
|
int8_t interface_id, ns_query_result;
|
||||||
|
@ -599,9 +600,14 @@ nsapi_error_t Nanostack::gethostbyname(const char *name, SocketAddress *address,
|
||||||
return NSAPI_ERROR_OK;
|
return NSAPI_ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Nanostack is IPv6 stack
|
||||||
|
if (version == NSAPI_UNSPEC) {
|
||||||
|
version = NSAPI_IPv6;
|
||||||
|
}
|
||||||
|
|
||||||
// try nanostack DNS cache, if not found then fallback to dns query
|
// try nanostack DNS cache, if not found then fallback to dns query
|
||||||
if (nanostack_dns_query_result_check(name, address, interface_name) == 0) {
|
if (nanostack_dns_query_result_check(name, address, interface_name) == 0) {
|
||||||
return 0;
|
return NSAPI_ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
return nsapi_dns_query(this, name, address, interface_name, version);
|
return nsapi_dns_query(this, name, address, interface_name, version);
|
||||||
|
@ -624,6 +630,11 @@ nsapi_value_or_error_t Nanostack::gethostbyname_async(const char *name, hostbyna
|
||||||
return NSAPI_ERROR_OK;
|
return NSAPI_ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Nanostack is IPv6 stack
|
||||||
|
if (version == NSAPI_UNSPEC) {
|
||||||
|
version = NSAPI_IPv6;
|
||||||
|
}
|
||||||
|
|
||||||
// try nanostack DNS cache, if not found then fallback to dns query
|
// try nanostack DNS cache, if not found then fallback to dns query
|
||||||
if (nanostack_dns_query_result_check(name, &address, interface_name) == 0) {
|
if (nanostack_dns_query_result_check(name, &address, interface_name) == 0) {
|
||||||
// hit found, return result immediately
|
// hit found, return result immediately
|
||||||
|
|
Loading…
Reference in New Issue