mirror of
https://github.com/apache/nuttx.git
synced 2026-05-31 05:55:46 +08:00
libc/netdb: Fix nxstyle issue
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
+9
-6
@@ -4,7 +4,8 @@
|
|||||||
* Copyright (C) 2015, 2018 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2015, 2018 Gregory Nutt. All rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* Reference: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/netdb.h.html
|
* Reference:
|
||||||
|
* http://pubs.opengroup.org/onlinepubs/009695399/basedefs/netdb.h.html
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@@ -180,8 +181,9 @@
|
|||||||
struct hostent
|
struct hostent
|
||||||
{
|
{
|
||||||
FAR char *h_name; /* Official name of the host. */
|
FAR char *h_name; /* Official name of the host. */
|
||||||
FAR char **h_aliases; /* A pointer to an array of pointers to alternative
|
FAR char **h_aliases; /* A pointer to an array of pointers to the
|
||||||
* host names, terminated by a null pointer. */
|
* alternative host names, terminated by a
|
||||||
|
* null pointer. */
|
||||||
int h_addrtype; /* Address type. */
|
int h_addrtype; /* Address type. */
|
||||||
int h_length; /* The length, in bytes, of the address. */
|
int h_length; /* The length, in bytes, of the address. */
|
||||||
FAR char **h_addr_list; /* A pointer to an array of pointers to network
|
FAR char **h_addr_list; /* A pointer to an array of pointers to network
|
||||||
@@ -193,10 +195,11 @@ struct hostent
|
|||||||
|
|
||||||
struct netent
|
struct netent
|
||||||
{
|
{
|
||||||
FAR char *n_name; /* Official, fully-qualified (including the domain)
|
FAR char *n_name; /* Official, fully-qualified(including the domain)
|
||||||
* name of the host. */
|
* name of the host. */
|
||||||
FAR char **n_aliases; /* A pointer to an array of pointers to alternative
|
FAR char **n_aliases; /* A pointer to an array of pointers to the
|
||||||
* network names, terminated by a null pointer. */
|
* alternative network names, terminated by a
|
||||||
|
* null pointer. */
|
||||||
int n_addrtype; /* The address type of the network. */
|
int n_addrtype; /* The address type of the network. */
|
||||||
uint32_t n_net; /* The network number, in host byte order. */
|
uint32_t n_net; /* The network number, in host byte order. */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
* libs/libc/netdb/lib_dns.h
|
* libs/libc/netdb/lib_dns.h
|
||||||
* DNS resolver code header file.
|
* DNS resolver code header file.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2009, 2011-2012, 2014 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2007-2009, 2011-2012, 2014 Gregory Nutt.
|
||||||
|
* All rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* Inspired by/based on uIP logic by Adam Dunkels:
|
* Inspired by/based on uIP logic by Adam Dunkels:
|
||||||
@@ -56,7 +57,8 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Pre-processor Definitions
|
* Pre-processor Definitions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
/* DNS client configuration **************************************************/
|
|
||||||
|
/* DNS client configuration *************************************************/
|
||||||
|
|
||||||
#ifndef CONFIG_NETDB_DNSCLIENT_ENTRIES
|
#ifndef CONFIG_NETDB_DNSCLIENT_ENTRIES
|
||||||
# define CONFIG_NETDB_DNSCLIENT_ENTRIES 4
|
# define CONFIG_NETDB_DNSCLIENT_ENTRIES 4
|
||||||
@@ -85,6 +87,7 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Types
|
* Public Types
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/* This describes either an IPv4 or IPv6 address. It is essentially a named
|
/* This describes either an IPv4 or IPv6 address. It is essentially a named
|
||||||
* alternative to sockaddr_storage.
|
* alternative to sockaddr_storage.
|
||||||
*/
|
*/
|
||||||
@@ -248,7 +251,8 @@ int dns_find_answer(FAR const char *hostname, FAR union dns_addr_u *addr,
|
|||||||
* Name: dns_notify_nameserver
|
* Name: dns_notify_nameserver
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void dns_notify_nameserver(FAR const struct sockaddr *addr, socklen_t addrlen);
|
void dns_notify_nameserver(FAR const struct sockaddr *addr,
|
||||||
|
socklen_t addrlen);
|
||||||
|
|
||||||
#undef EXTERN
|
#undef EXTERN
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* libs/libc/netdb/lib_dnsbind.c
|
* libs/libc/netdb/lib_dnsbind.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007, 2009, 2012, 2014-2016 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2007, 2009, 2012, 2014-2016 Gregory Nutt.
|
||||||
|
* All rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* libs/libc/netdb/lib_dnscache.c
|
* libs/libc/netdb/lib_dnscache.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007, 2009, 2012, 2014-2016 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2007, 2009, 2012, 2014-2016 Gregory Nutt.
|
||||||
|
* All rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@@ -79,7 +80,7 @@ struct dns_cache_s
|
|||||||
#endif
|
#endif
|
||||||
char name[CONFIG_NETDB_DNSCLIENT_NAMESIZE];
|
char name[CONFIG_NETDB_DNSCLIENT_NAMESIZE];
|
||||||
uint8_t naddr; /* How many addresses per name */
|
uint8_t naddr; /* How many addresses per name */
|
||||||
union dns_addr_u addr[CONFIG_NETDB_MAX_IPADDR]; /* Resolved address */
|
union dns_addr_u addr[CONFIG_NETDB_MAX_IPADDR];
|
||||||
};
|
};
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -255,13 +256,14 @@ int dns_find_answer(FAR const char *hostname, FAR union dns_addr_u *addr,
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
/* The entry has not expired, check for a name match. Notice that
|
/* The entry has not expired, check for a name match. Because
|
||||||
* because the names are truncated to CONFIG_NETDB_DNSCLIENT_NAMESIZE,
|
* the names are truncated to CONFIG_NETDB_DNSCLIENT_NAMESIZE,
|
||||||
* this has the possibility of aliasing two names and returning
|
* this has the possibility of aliasing two names and returning
|
||||||
* the wrong entry from the cache.
|
* the wrong entry from the cache.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (strncmp(hostname, entry->name, CONFIG_NETDB_DNSCLIENT_NAMESIZE) == 0)
|
if (strncmp(hostname, entry->name,
|
||||||
|
CONFIG_NETDB_DNSCLIENT_NAMESIZE) == 0)
|
||||||
{
|
{
|
||||||
/* We have a match. Return the resolved host address */
|
/* We have a match. Return the resolved host address */
|
||||||
|
|
||||||
|
|||||||
@@ -230,6 +230,7 @@ int dns_foreach_nameserver(dns_callback_t callback, FAR void *arg)
|
|||||||
#ifdef CONFIG_NET_IPv6
|
#ifdef CONFIG_NET_IPv6
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (ret != OK)
|
if (ret != OK)
|
||||||
{
|
{
|
||||||
fclose(stream);
|
fclose(stream);
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* libs/libc/netdb/lib_dnsinit.c
|
* libs/libc/netdb/lib_dnsinit.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007, 2009, 2012, 2014-2017 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2007, 2009, 2012, 2014-2017 Gregory Nutt.
|
||||||
|
* All rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@@ -98,43 +99,43 @@ bool dns_initialize(void)
|
|||||||
if (!g_dns_address)
|
if (!g_dns_address)
|
||||||
{
|
{
|
||||||
#if defined(CONFIG_NETDB_DNSSERVER_IPv4)
|
#if defined(CONFIG_NETDB_DNSSERVER_IPv4)
|
||||||
struct sockaddr_in addr4;
|
struct sockaddr_in addr4;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* No, configure the default IPv4 DNS server address */
|
/* No, configure the default IPv4 DNS server address */
|
||||||
|
|
||||||
addr4.sin_family = AF_INET;
|
addr4.sin_family = AF_INET;
|
||||||
addr4.sin_port = HTONS(DNS_DEFAULT_PORT);
|
addr4.sin_port = HTONS(DNS_DEFAULT_PORT);
|
||||||
addr4.sin_addr.s_addr = HTONL(CONFIG_NETDB_DNSSERVER_IPv4ADDR);
|
addr4.sin_addr.s_addr = HTONL(CONFIG_NETDB_DNSSERVER_IPv4ADDR);
|
||||||
|
|
||||||
ret = dns_add_nameserver((FAR struct sockaddr *)&addr4,
|
ret = dns_add_nameserver((FAR struct sockaddr *)&addr4,
|
||||||
sizeof(struct sockaddr_in));
|
sizeof(struct sockaddr_in));
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(CONFIG_NETDB_DNSSERVER_IPv6)
|
#elif defined(CONFIG_NETDB_DNSSERVER_IPv6)
|
||||||
struct sockaddr_in6 addr6;
|
struct sockaddr_in6 addr6;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* No, configure the default IPv6 DNS server address */
|
/* No, configure the default IPv6 DNS server address */
|
||||||
|
|
||||||
addr6.sin6_family = AF_INET6;
|
addr6.sin6_family = AF_INET6;
|
||||||
addr6.sin6_port = HTONS(DNS_DEFAULT_PORT);
|
addr6.sin6_port = HTONS(DNS_DEFAULT_PORT);
|
||||||
memcpy(addr6.sin6_addr.s6_addr, g_ipv6_hostaddr, 16);
|
memcpy(addr6.sin6_addr.s6_addr, g_ipv6_hostaddr, 16);
|
||||||
|
|
||||||
ret = dns_add_nameserver((FAR struct sockaddr *)&addr6,
|
ret = dns_add_nameserver((FAR struct sockaddr *)&addr6,
|
||||||
sizeof(struct sockaddr_in6));
|
sizeof(struct sockaddr_in6));
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/* Then we are not ready to perform DNS queries */
|
/* Then we are not ready to perform DNS queries */
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif /* !CONFIG_NETDB_RESOLVCONF */
|
#endif /* !CONFIG_NETDB_RESOLVCONF */
|
||||||
@@ -157,12 +158,12 @@ void dns_semtake(void)
|
|||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
ret = _SEM_WAIT(&g_dns_sem);
|
ret = _SEM_WAIT(&g_dns_sem);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
errcode = _SEM_ERRNO(ret);
|
errcode = _SEM_ERRNO(ret);
|
||||||
DEBUGASSERT(errcode == EINTR || errcode == ECANCELED);
|
DEBUGASSERT(errcode == EINTR || errcode == ECANCELED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (ret < 0 && errcode == EINTR);
|
while (ret < 0 && errcode == EINTR);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,10 +118,10 @@ int dns_unregister_notify(dns_callback_t callback, FAR void *arg)
|
|||||||
|
|
||||||
if (notify->callback == callback && notify->arg == arg)
|
if (notify->callback == callback && notify->arg == arg)
|
||||||
{
|
{
|
||||||
dq_rem(¬ify->entry, &g_dns_notify);
|
dq_rem(¬ify->entry, &g_dns_notify);
|
||||||
dns_semgive();
|
dns_semgive();
|
||||||
lib_free(notify);
|
lib_free(notify);
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,7 +133,8 @@ int dns_unregister_notify(dns_callback_t callback, FAR void *arg)
|
|||||||
* Name: dns_notify_nameserver
|
* Name: dns_notify_nameserver
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void dns_notify_nameserver(FAR const struct sockaddr *addr, socklen_t addrlen)
|
void dns_notify_nameserver(FAR const struct sockaddr *addr,
|
||||||
|
socklen_t addrlen)
|
||||||
{
|
{
|
||||||
FAR dq_entry_t *entry;
|
FAR dq_entry_t *entry;
|
||||||
|
|
||||||
|
|||||||
@@ -105,12 +105,12 @@ struct dns_query_info_s
|
|||||||
struct in6_addr srv_ipv6; /* DNS server address */
|
struct in6_addr srv_ipv6; /* DNS server address */
|
||||||
#endif
|
#endif
|
||||||
} u;
|
} u;
|
||||||
in_port_t srv_port; /* DNS server port */
|
in_port_t srv_port; /* DNS server port */
|
||||||
uint16_t id; /* Query ID */
|
uint16_t id; /* Query ID */
|
||||||
uint16_t rectype; /* Queried record type */
|
uint16_t rectype; /* Queried record type */
|
||||||
uint16_t qnamelen; /* Queried hostname length */
|
uint16_t qnamelen; /* Queried hostname length */
|
||||||
char qname[CONFIG_NETDB_DNSCLIENT_NAMESIZE+2]; /* Queried hostname in encoded
|
char qname[CONFIG_NETDB_DNSCLIENT_NAMESIZE + 2]; /* Queried hostname in
|
||||||
* format + NUL */
|
* encoded format + NUL */
|
||||||
};
|
};
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -127,7 +127,7 @@ struct dns_query_info_s
|
|||||||
*
|
*
|
||||||
* query - A pointer to the starting byte of the name entry in the DNS
|
* query - A pointer to the starting byte of the name entry in the DNS
|
||||||
* response.
|
* response.
|
||||||
* queryend - A pointer to the byte after the last byte of the DNS response.
|
* queryend - A pointer to the byte after the last byte of the response.
|
||||||
*
|
*
|
||||||
* Returned Value:
|
* Returned Value:
|
||||||
* Pointer to the first byte after the parsed name, or the value of
|
* Pointer to the first byte after the parsed name, or the value of
|
||||||
@@ -143,7 +143,7 @@ static FAR uint8_t *dns_parse_name(FAR uint8_t *query, FAR uint8_t *queryend)
|
|||||||
{
|
{
|
||||||
n = *query++;
|
n = *query++;
|
||||||
|
|
||||||
/* Check for a leading or trailing pointer.*/
|
/* Check for a leading or trailing pointer */
|
||||||
|
|
||||||
if ((n & 0xc0) != 0)
|
if ((n & 0xc0) != 0)
|
||||||
{
|
{
|
||||||
@@ -245,7 +245,7 @@ static int dns_send_query(int sd, FAR const char *name,
|
|||||||
qname = qinfo->qname;
|
qname = qinfo->qname;
|
||||||
len = 0;
|
len = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
/* Copy the name string to both query and saved info. */
|
/* Copy the name string to both query and saved info. */
|
||||||
|
|
||||||
src++;
|
src++;
|
||||||
@@ -394,6 +394,7 @@ static int dns_recv_response(int sd, FAR union dns_addr_u *addr, int *naddr,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_NET_IPv6
|
#ifdef CONFIG_NET_IPv6
|
||||||
/* Check for an IPv6 address */
|
/* Check for an IPv6 address */
|
||||||
|
|
||||||
@@ -427,7 +428,7 @@ static int dns_recv_response(int sd, FAR union dns_addr_u *addr, int *naddr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
hdr = (FAR struct dns_header_s *)buffer;
|
hdr = (FAR struct dns_header_s *)buffer;
|
||||||
endofbuffer = (FAR uint8_t*)buffer + ret;
|
endofbuffer = (FAR uint8_t *)buffer + ret;
|
||||||
|
|
||||||
ninfo("ID %d\n", ntohs(hdr->id));
|
ninfo("ID %d\n", ntohs(hdr->id));
|
||||||
ninfo("Query %d\n", hdr->flags1 & DNS_FLAG1_RESPONSE);
|
ninfo("Query %d\n", hdr->flags1 & DNS_FLAG1_RESPONSE);
|
||||||
@@ -479,29 +480,6 @@ static int dns_recv_response(int sd, FAR union dns_addr_u *addr, int *naddr,
|
|||||||
return -EILSEQ;
|
return -EILSEQ;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_DEBUG_NET) && defined(CONFIG_DEBUG_INFO)
|
|
||||||
{
|
|
||||||
int d = 64;
|
|
||||||
FAR uint8_t *ptr = nameptr + sizeof(struct dns_question_s);
|
|
||||||
|
|
||||||
lib_dumpbuffer("namestart: ", namestart, nameptr - namestart);
|
|
||||||
|
|
||||||
for (; ; )
|
|
||||||
{
|
|
||||||
ninfo("%02X %02X %02X %02X %02X %02X %02X %02X \n",
|
|
||||||
ptr[0], ptr[1], ptr[2], ptr[3],
|
|
||||||
ptr[4], ptr[5], ptr[6], ptr[7]);
|
|
||||||
|
|
||||||
ptr += 8;
|
|
||||||
d -= 8;
|
|
||||||
if (d < 0)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Since dns_parse_name() skips any pointer bytes,
|
/* Since dns_parse_name() skips any pointer bytes,
|
||||||
* we cannot compare for equality here.
|
* we cannot compare for equality here.
|
||||||
*/
|
*/
|
||||||
@@ -571,8 +549,8 @@ static int dns_recv_response(int sd, FAR union dns_addr_u *addr, int *naddr,
|
|||||||
nameptr += 10 + 4;
|
nameptr += 10 + 4;
|
||||||
|
|
||||||
ninfo("IPv4 address: %d.%d.%d.%d\n",
|
ninfo("IPv4 address: %d.%d.%d.%d\n",
|
||||||
(ans->u.ipv4.s_addr ) & 0xff,
|
(ans->u.ipv4.s_addr) & 0xff,
|
||||||
(ans->u.ipv4.s_addr >> 8 ) & 0xff,
|
(ans->u.ipv4.s_addr >> 8) & 0xff,
|
||||||
(ans->u.ipv4.s_addr >> 16) & 0xff,
|
(ans->u.ipv4.s_addr >> 16) & 0xff,
|
||||||
(ans->u.ipv4.s_addr >> 24) & 0xff);
|
(ans->u.ipv4.s_addr >> 24) & 0xff);
|
||||||
|
|
||||||
@@ -580,7 +558,7 @@ static int dns_recv_response(int sd, FAR union dns_addr_u *addr, int *naddr,
|
|||||||
{
|
{
|
||||||
FAR struct sockaddr_in *inaddr;
|
FAR struct sockaddr_in *inaddr;
|
||||||
|
|
||||||
inaddr = (FAR struct sockaddr_in *)&addr[naddr_read].addr;
|
inaddr = &addr[naddr_read].ipv4;
|
||||||
inaddr->sin_family = AF_INET;
|
inaddr->sin_family = AF_INET;
|
||||||
inaddr->sin_port = 0;
|
inaddr->sin_port = 0;
|
||||||
inaddr->sin_addr.s_addr = ans->u.ipv4.s_addr;
|
inaddr->sin_addr.s_addr = ans->u.ipv4.s_addr;
|
||||||
@@ -611,13 +589,13 @@ static int dns_recv_response(int sd, FAR union dns_addr_u *addr, int *naddr,
|
|||||||
ntohs(ans->u.ipv6.s6_addr[7]), ntohs(ans->u.ipv6.s6_addr[6]),
|
ntohs(ans->u.ipv6.s6_addr[7]), ntohs(ans->u.ipv6.s6_addr[6]),
|
||||||
ntohs(ans->u.ipv6.s6_addr[5]), ntohs(ans->u.ipv6.s6_addr[4]),
|
ntohs(ans->u.ipv6.s6_addr[5]), ntohs(ans->u.ipv6.s6_addr[4]),
|
||||||
ntohs(ans->u.ipv6.s6_addr[3]), ntohs(ans->u.ipv6.s6_addr[2]),
|
ntohs(ans->u.ipv6.s6_addr[3]), ntohs(ans->u.ipv6.s6_addr[2]),
|
||||||
ntohs(ans->u.ipv6.s6_addr[1]), ntohs(ans->u.ipv6.s6_addr[0]));
|
ntohs(ans->u.ipv6.s6_addr[1]), ntohs(*ans->u.ipv6.s6_addr));
|
||||||
|
|
||||||
if (naddr_read < *naddr)
|
if (naddr_read < *naddr)
|
||||||
{
|
{
|
||||||
FAR struct sockaddr_in6 *inaddr;
|
FAR struct sockaddr_in6 *inaddr;
|
||||||
|
|
||||||
inaddr = (FAR struct sockaddr_in6 *)&addr[naddr_read].addr;
|
inaddr = &addr[naddr_read].ipv6;
|
||||||
inaddr->sin6_family = AF_INET6;
|
inaddr->sin6_family = AF_INET6;
|
||||||
inaddr->sin6_port = 0;
|
inaddr->sin6_port = 0;
|
||||||
memcpy(inaddr->sin6_addr.s6_addr, ans->u.ipv6.s6_addr, 16);
|
memcpy(inaddr->sin6_addr.s6_addr, ans->u.ipv6.s6_addr, 16);
|
||||||
@@ -683,7 +661,7 @@ static int dns_query_callback(FAR void *arg, FAR struct sockaddr *addr,
|
|||||||
|
|
||||||
/* Loop while receive timeout errors occur and there are remaining
|
/* Loop while receive timeout errors occur and there are remaining
|
||||||
* retries.
|
* retries.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (retries = 0; retries < CONFIG_NETDB_DNSCLIENT_RETRIES; retries++)
|
for (retries = 0; retries < CONFIG_NETDB_DNSCLIENT_RETRIES; retries++)
|
||||||
{
|
{
|
||||||
@@ -852,11 +830,11 @@ static int dns_query_callback(FAR void *arg, FAR struct sockaddr *addr,
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
/* Unsupported address family. Return zero to continue the
|
/* Unsupported address family. Return zero to continue the
|
||||||
* tranversal with the next nameserver address in resolv.conf.
|
* tranversal with the next nameserver address in resolv.conf.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -77,7 +77,8 @@
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
FAR struct hostent *gethostbyaddr(FAR const void *addr, socklen_t len, int type)
|
FAR struct hostent *gethostbyaddr(FAR const void *addr,
|
||||||
|
socklen_t len, int type)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ int lib_hostfile_lookup(FAR const void *addr, socklen_t len, int type,
|
|||||||
goto errorout_with_stream;
|
goto errorout_with_stream;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (nread > 0 && len == host->h_length && type == host->h_addrtype)
|
else if (len == host->h_length && type == host->h_addrtype)
|
||||||
{
|
{
|
||||||
/* We successfully read the entry and the type and size of the
|
/* We successfully read the entry and the type and size of the
|
||||||
* address is good. Now compare the addresses:
|
* address is good. Now compare the addresses:
|
||||||
|
|||||||
@@ -94,7 +94,8 @@ struct hostent_info_s
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static int lib_numeric_address(FAR const char *name, FAR struct hostent *host,
|
static int lib_numeric_address(FAR const char *name,
|
||||||
|
FAR struct hostent *host,
|
||||||
FAR char *buf, size_t buflen)
|
FAR char *buf, size_t buflen)
|
||||||
{
|
{
|
||||||
FAR struct hostent_info_s *info;
|
FAR struct hostent_info_s *info;
|
||||||
@@ -108,9 +109,9 @@ static int lib_numeric_address(FAR const char *name, FAR struct hostent *host,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (buflen <= sizeof(struct hostent_info_s))
|
if (buflen <= sizeof(struct hostent_info_s))
|
||||||
{
|
{
|
||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
info = (FAR struct hostent_info_s *)buf;
|
info = (FAR struct hostent_info_s *)buf;
|
||||||
ptr = info->hi_data;
|
ptr = info->hi_data;
|
||||||
@@ -341,9 +342,9 @@ static int lib_find_answer(FAR const char *name, FAR struct hostent *host,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (buflen <= sizeof(struct hostent_info_s))
|
if (buflen <= sizeof(struct hostent_info_s))
|
||||||
{
|
{
|
||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize buffers */
|
/* Initialize buffers */
|
||||||
|
|
||||||
@@ -503,9 +504,9 @@ static int lib_dns_lookup(FAR const char *name, FAR struct hostent *host,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (buflen <= sizeof(struct hostent_info_s))
|
if (buflen <= sizeof(struct hostent_info_s))
|
||||||
{
|
{
|
||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize buffers */
|
/* Initialize buffers */
|
||||||
|
|
||||||
@@ -609,8 +610,10 @@ static int lib_dns_lookup(FAR const char *name, FAR struct hostent *host,
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifdef CONFIG_NETDB_HOSTFILE
|
#ifdef CONFIG_NETDB_HOSTFILE
|
||||||
static int lib_hostfile_lookup(FAR const char *name, FAR struct hostent *host,
|
static int lib_hostfile_lookup(FAR const char *name,
|
||||||
FAR char *buf, size_t buflen, int *h_errnop)
|
FAR struct hostent *host,
|
||||||
|
FAR char *buf, size_t buflen,
|
||||||
|
FAR int *h_errnop)
|
||||||
{
|
{
|
||||||
FAR FILE *stream;
|
FAR FILE *stream;
|
||||||
int herrnocode;
|
int herrnocode;
|
||||||
@@ -734,8 +737,8 @@ errorout_with_herrnocode:
|
|||||||
* and its struct in_addr equivalent into the h_addr_list[0] field of the
|
* and its struct in_addr equivalent into the h_addr_list[0] field of the
|
||||||
* returned hostent structure.
|
* returned hostent structure.
|
||||||
*
|
*
|
||||||
* gethostname_r() is *not* POSIX but is similar to a Glibc extension and is
|
* gethostname_r() is *not* POSIX but is similar to a Glibc extension and
|
||||||
* used internally by NuttX to implement the POSIX gethostname().
|
* is used internally by NuttX to implement the POSIX gethostname().
|
||||||
*
|
*
|
||||||
* Input Parameters:
|
* Input Parameters:
|
||||||
* name - The name of the host to find.
|
* name - The name of the host to find.
|
||||||
@@ -784,7 +787,6 @@ int gethostbyname_r(FAR const char *name, FAR struct hostent *host,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Try to find the name in the HOSTALIASES environment variable */
|
/* Try to find the name in the HOSTALIASES environment variable */
|
||||||
/* REVISIT: Not implemented */
|
|
||||||
|
|
||||||
#ifdef CONFIG_NETDB_DNSCLIENT
|
#ifdef CONFIG_NETDB_DNSCLIENT
|
||||||
#if CONFIG_NETDB_DNSCLIENT_ENTRIES > 0
|
#if CONFIG_NETDB_DNSCLIENT_ENTRIES > 0
|
||||||
|
|||||||
@@ -100,8 +100,8 @@ int getnameinfo(FAR const struct sockaddr *addr, socklen_t addrlen,
|
|||||||
struct hostent hostent;
|
struct hostent hostent;
|
||||||
int h_errno;
|
int h_errno;
|
||||||
|
|
||||||
ret = gethostbyaddr_r(saddr, saddr_len, addr->sa_family, &hostent, host,
|
ret = gethostbyaddr_r(saddr, saddr_len, addr->sa_family, &hostent,
|
||||||
hostlen, &h_errno);
|
host, hostlen, &h_errno);
|
||||||
|
|
||||||
if (ret == OK)
|
if (ret == OK)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -51,7 +51,8 @@
|
|||||||
* Name: getservbyname
|
* Name: getservbyname
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
FAR struct servent *getservbyname(FAR const char *name, FAR const char *proto)
|
FAR struct servent *getservbyname(FAR const char *name,
|
||||||
|
FAR const char *proto)
|
||||||
{
|
{
|
||||||
static struct servent ent;
|
static struct servent ent;
|
||||||
struct servent *res;
|
struct servent *res;
|
||||||
|
|||||||
@@ -57,7 +57,6 @@ char g_hostbuffer[CONFIG_NETDB_BUFSIZE];
|
|||||||
* macro or an identifier declared with external linkage.
|
* macro or an identifier declared with external linkage.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* REVISIT: This should at least be per-task? */
|
|
||||||
int h_errno;
|
int h_errno;
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
|||||||
@@ -281,9 +281,9 @@ ssize_t lib_parse_hostfile(FAR FILE *stream, FAR struct hostent *host,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (buflen <= sizeof(struct hostent_info_s))
|
if (buflen <= sizeof(struct hostent_info_s))
|
||||||
{
|
{
|
||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
info = (FAR struct hostent_info_s *)buf;
|
info = (FAR struct hostent_info_s *)buf;
|
||||||
ptr = info->hi_data;
|
ptr = info->hi_data;
|
||||||
@@ -306,7 +306,7 @@ ssize_t lib_parse_hostfile(FAR FILE *stream, FAR struct hostent *host,
|
|||||||
|
|
||||||
if (ch == '#')
|
if (ch == '#')
|
||||||
{
|
{
|
||||||
/* Skip to the end of line. */
|
/* Skip to the end of line. */
|
||||||
|
|
||||||
ch = lib_skipline(stream, &nread);
|
ch = lib_skipline(stream, &nread);
|
||||||
if (ch == EOF)
|
if (ch == EOF)
|
||||||
@@ -456,13 +456,13 @@ ssize_t lib_parse_hostfile(FAR FILE *stream, FAR struct hostent *host,
|
|||||||
return nwritten;
|
return nwritten;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Save the pointer to the beginning of the next alias */
|
/* Save the pointer to the beginning of the next alias */
|
||||||
|
|
||||||
info->hi_aliases[i] = start;
|
info->hi_aliases[i] = start;
|
||||||
if (host->h_aliases == NULL)
|
if (host->h_aliases == NULL)
|
||||||
{
|
{
|
||||||
host->h_aliases = info->hi_aliases;
|
host->h_aliases = info->hi_aliases;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!lib_isspace(ch))
|
if (!lib_isspace(ch))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user