Go to the documentation of this file.
21 #ifdef HAVE_NETINET_IN_H
22 # include <netinet/in.h>
27 #ifdef HAVE_ARPA_INET_H
28 # include <arpa/inet.h>
53 char **aliases = NULL;
54 char *question_hostname = NULL;
55 struct hostent *hostent = NULL;
57 int naliases = 0, naddrs = 0, alias = 0,
i;
58 int cname_ttl = INT_MAX;
61 memset(&ai, 0,
sizeof(ai));
97 next_cname = next_cname->
next;
100 aliases =
ares_malloc((naliases + 1) *
sizeof(
char *));
111 if(next_cname->
alias)
113 if(next_cname->
ttl < cname_ttl)
114 cname_ttl = next_cname->
ttl;
115 next_cname = next_cname->
next;
119 aliases[alias] = NULL;
121 hostent->h_addr_list =
ares_malloc((naddrs + 1) *
sizeof(
char *));
122 if (!hostent->h_addr_list)
127 for (
i = 0;
i < naddrs + 1; ++
i)
129 hostent->h_addr_list[
i] = NULL;
139 hostent->h_name = question_hostname;
142 hostent->h_aliases = aliases;
160 hostent->h_addr_list[
i] = (
char*)&addrs[
i];
161 memcpy(hostent->h_addr_list[
i],
164 if (naddrttls &&
i < *naddrttls)
166 if(
next->ai_ttl > cname_ttl)
167 addrttls[
i].
ttl = cname_ttl;
198 *naddrttls = (naddrs > *naddrttls)?*naddrttls:naddrs;
void ares__freeaddrinfo_nodes(struct ares_addrinfo_node *head)
void ares__freeaddrinfo_cnames(struct ares_addrinfo_cname *head)
return memset(p, 0, total)
char * ares_strdup(const char *s1)
int ares_parse_aaaa_reply(const unsigned char *abuf, int alen, struct hostent **host, struct ares_addr6ttl *addrttls, int *naddrttls)
CARES_EXTERN void ares_free_hostent(struct hostent *host)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
void *(* ares_malloc)(size_t size)=default_malloc
#define CARES_INADDR_CAST(type, var)
struct ares_addrinfo_cname * next
struct ares_addrinfo_node * nodes
struct ares_addrinfo_cname * cnames
int ares__parse_into_addrinfo2(const unsigned char *abuf, int alen, char **question_hostname, struct ares_addrinfo *ai)
AllocList * next[kMaxLevel]
void(* ares_free)(void *ptr)=default_free
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:43