40#if LWIP_DNS && LWIP_SOCKET
53struct gethostbyname_r_helper {
60#if LWIP_DNS_API_DECLARE_H_ERRNO
71#ifndef LWIP_DNS_API_HOSTENT_STORAGE
72#define LWIP_DNS_API_HOSTENT_STORAGE 0
76#if LWIP_DNS_API_HOSTENT_STORAGE
77#define HOSTENT_STORAGE
79#define HOSTENT_STORAGE static
92lwip_gethostbyname(
const char *
name)
98 HOSTENT_STORAGE
struct hostent s_hostent;
99 HOSTENT_STORAGE
char *s_aliases;
100 HOSTENT_STORAGE
ip_addr_t s_hostent_addr;
101 HOSTENT_STORAGE
ip_addr_t *s_phostent_addr[2];
113 s_hostent_addr =
addr;
114 s_phostent_addr[0] = &s_hostent_addr;
115 s_phostent_addr[1] =
NULL;
118 s_hostent.h_name = s_hostname;
120 s_hostent.h_aliases = &s_aliases;
121 s_hostent.h_addrtype =
AF_INET;
123 s_hostent.h_addr_list = (
char **)&s_phostent_addr;
133 if (s_hostent.h_addr_list !=
NULL) {
135 for (
idx = 0; s_hostent.h_addr_list[
idx];
idx++) {
141#if LWIP_DNS_API_HOSTENT_STORAGE
143 return sys_thread_hostent(&s_hostent);
170 struct gethostbyname_r_helper *
h;
175 if (h_errnop ==
NULL) {
177 h_errnop = &lh_errno;
201 hostname = ((
char *)
h) +
sizeof(
struct gethostbyname_r_helper);
204 err = netconn_gethostbyname(
name, &
h->addr);
216 h->addr_list[0] = &
h->addr;
217 h->addr_list[1] =
NULL;
220 ret->h_aliases = &
h->aliases;
223 ret->h_addr_list = (
char **)&
h->addr_list;
240lwip_freeaddrinfo(
struct addrinfo *ai)
273lwip_getaddrinfo(
const char *nodename,
const char *
servname,
294 ai_family =
hints->ai_family;
313 if (port_nr == 0 && (
servname[0] !=
'0')) {
317 if ((port_nr < 0) || (port_nr > 0xffff)) {
322 if (nodename !=
NULL) {
329#if LWIP_IPV4 && LWIP_IPV6
336#if LWIP_IPV4 && LWIP_IPV6
340 type = NETCONN_DNS_IPV4;
342 type = NETCONN_DNS_IPV6;
345 err = netconn_gethostbyname_addrtype(nodename, &
addr,
type);
360 if (nodename !=
NULL) {
370 LWIP_ASSERT(
"total_size <= NETDB_ELEM_SIZE: please report this!",
371 total_size <= NETDB_ELEM_SIZE);
376 memset(ai, 0, total_size);
394 inet_addr_from_ip4addr(&sa4->
sin_addr, ip_2_ip4(&
addr));
408 if (nodename !=
NULL) {
ACPI_SIZE strlen(const char *String)
static struct sockaddr_in sa
#define LWIP_DEBUGF(debug, message)
#define LWIP_ASSERT(message, assertion)
GLuint GLuint GLsizei GLenum type
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum const GLvoid * addr
GLfloat GLfloat GLfloat GLfloat h
#define LWIP_MEM_ALIGN_BUFFER(size)
#define LWIP_MEM_ALIGN(addr)
#define DNS_MAX_NAME_LENGTH
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
#define IP_IS_V6_VAL(ipaddr)
#define ip_addr_set_any_val(is_ipv6, ipaddr)
#define ipaddr_aton(cp, addr)
#define IP_IS_V4_VAL(ipaddr)
#define ip_addr_set_loopback_val(is_ipv6, ipaddr)
#define ipaddr_ntoa(ipaddr)
#define MEMCPY(DST, SRC, BYTES)
void * memp_malloc(memp_t type)
void memp_free(memp_t type, void *mem)
static unsigned __int64 next
namespace GUID const ADDRINFOEXW * hints
static const ADDRINFOW PADDRINFOW *static const WCHAR * servname
struct sockaddr * ai_addr
struct addrinfo * ai_next
ADDRESS_FAMILY sin6_family
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList