xref: /aosp_15_r20/bionic/libc/dns/include/resolv_static.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker #pragma once
2*8d67ca89SAndroid Build Coastguard Worker 
3*8d67ca89SAndroid Build Coastguard Worker #include <netdb.h>
4*8d67ca89SAndroid Build Coastguard Worker #include <sys/cdefs.h>
5*8d67ca89SAndroid Build Coastguard Worker 
6*8d67ca89SAndroid Build Coastguard Worker /* this structure contains all the variables that were declared
7*8d67ca89SAndroid Build Coastguard Worker  * 'static' in the original NetBSD resolver code.
8*8d67ca89SAndroid Build Coastguard Worker  *
9*8d67ca89SAndroid Build Coastguard Worker  * this caused vast amounts of crashes and memory corruptions
10*8d67ca89SAndroid Build Coastguard Worker  * when the resolver was being used by multiple threads.
11*8d67ca89SAndroid Build Coastguard Worker  *
12*8d67ca89SAndroid Build Coastguard Worker  * (note: the OpenBSD/FreeBSD resolver has similar 'issues')
13*8d67ca89SAndroid Build Coastguard Worker  */
14*8d67ca89SAndroid Build Coastguard Worker 
15*8d67ca89SAndroid Build Coastguard Worker #define	MAXALIASES	35
16*8d67ca89SAndroid Build Coastguard Worker #define	MAXADDRS	35
17*8d67ca89SAndroid Build Coastguard Worker 
18*8d67ca89SAndroid Build Coastguard Worker __BEGIN_DECLS
19*8d67ca89SAndroid Build Coastguard Worker 
20*8d67ca89SAndroid Build Coastguard Worker struct res_static {
21*8d67ca89SAndroid Build Coastguard Worker   char* h_addr_ptrs[MAXADDRS + 1];
22*8d67ca89SAndroid Build Coastguard Worker   char* host_aliases[MAXALIASES];
23*8d67ca89SAndroid Build Coastguard Worker   char hostbuf[8 * 1024];
24*8d67ca89SAndroid Build Coastguard Worker   u_int32_t host_addr[16 / sizeof(u_int32_t)]; /* IPv4 or IPv6 */
25*8d67ca89SAndroid Build Coastguard Worker   FILE* hostf;
26*8d67ca89SAndroid Build Coastguard Worker   int stayopen;
27*8d67ca89SAndroid Build Coastguard Worker   const char* servent_ptr;
28*8d67ca89SAndroid Build Coastguard Worker   struct servent servent;
29*8d67ca89SAndroid Build Coastguard Worker   struct hostent host;
30*8d67ca89SAndroid Build Coastguard Worker };
31*8d67ca89SAndroid Build Coastguard Worker 
32*8d67ca89SAndroid Build Coastguard Worker struct res_static* __res_get_static(void);
33*8d67ca89SAndroid Build Coastguard Worker 
34*8d67ca89SAndroid Build Coastguard Worker __END_DECLS
35