23 #ifdef HAVE_NETINET_IN_H
24 # include <netinet/in.h>
29 #ifdef HAVE_ARPA_INET_H
30 # include <arpa/inet.h>
40 struct hostent** host )
42 unsigned int qdcount, ancount;
43 int status,
i, rr_type, rr_class, rr_len;
46 const unsigned char *aptr;
47 char* hostname, *rr_name, *rr_data, **nameservers;
48 struct hostent *hostent;
76 nameservers =
ares_malloc( ( ancount + 1 ) *
sizeof(
char * ) );
85 for (
i = 0;
i < (
int ) ancount;
i++ )
102 if (aptr + rr_len > abuf + alen)
109 if ( rr_class ==
C_IN && rr_type ==
T_NS )
120 nameservers[nameservers_num] =
ares_malloc(strlen(rr_data)+1);
122 if (nameservers[nameservers_num]==NULL)
129 strcpy(nameservers[nameservers_num],rr_data);
138 if ( aptr > abuf + alen )
152 nameservers[nameservers_num] = NULL;
156 hostent->h_addr_list =
ares_malloc( 1 *
sizeof(
char * ) );
157 if ( hostent->h_addr_list )
160 hostent->h_name = hostname;
161 hostent->h_aliases = nameservers;
162 hostent->h_addrtype = AF_INET;
163 hostent->h_length =
sizeof(
struct in_addr );
164 hostent->h_addr_list[0] = NULL;
172 for (
i = 0;
i < nameservers_num;
i++ )