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