Go to the documentation of this file.
20 #ifdef HAVE_NETINET_IN_H
21 # include <netinet/in.h>
26 #ifdef HAVE_ARPA_INET_H
27 # include <arpa/inet.h>
45 struct hostent **host,
51 char **aliases = NULL;
52 char *question_hostname = NULL;
53 struct hostent *hostent = NULL;
54 struct in_addr *addrs = NULL;
55 int naliases = 0, naddrs = 0, alias = 0,
i;
56 int cname_ttl = INT_MAX;
59 memset(&ai, 0,
sizeof(ai));
83 if (
next->ai_family == AF_INET)
95 next_cname = next_cname->
next;
98 aliases =
ares_malloc((naliases + 1) *
sizeof(
char *));
109 if(next_cname->
alias)
111 if(next_cname->
ttl < cname_ttl)
112 cname_ttl = next_cname->
ttl;
113 next_cname = next_cname->
next;
117 aliases[alias] = NULL;
119 hostent->h_addr_list =
ares_malloc((naddrs + 1) *
sizeof(
char *));
120 if (!hostent->h_addr_list)
125 for (
i = 0;
i < naddrs + 1; ++
i)
127 hostent->h_addr_list[
i] = NULL;
137 hostent->h_name = question_hostname;
140 hostent->h_aliases = aliases;
141 hostent->h_addrtype = AF_INET;
142 hostent->h_length =
sizeof(
struct in_addr);
146 addrs =
ares_malloc(naddrs *
sizeof(
struct in_addr));
156 if (
next->ai_family == AF_INET)
158 hostent->h_addr_list[
i] = (
char *)&addrs[
i];
159 memcpy(hostent->h_addr_list[
i],
161 sizeof(
struct in_addr));
162 if (naddrttls &&
i < *naddrttls)
164 if (
next->ai_ttl > cname_ttl)
165 addrttls[
i].
ttl = cname_ttl;
171 sizeof(
struct in_addr));
195 *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)
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
int ares_parse_a_reply(const unsigned char *abuf, int alen, struct hostent **host, struct ares_addrttl *addrttls, int *naddrttls)
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:43