| #ifndef _RESOLV_STATIC_H | 
 | #define _RESOLV_STATIC_H | 
 |  | 
 | #include <netdb.h> | 
 |  | 
 | /* this structure contains all the variables that were declared | 
 |  * 'static' in the original NetBSD resolver code. | 
 |  * | 
 |  * this caused vast amounts of crashes and memory corruptions | 
 |  * when the resolver was being used by multiple threads. | 
 |  * | 
 |  * (note: the OpenBSD/FreeBSD resolver has similar 'issues') | 
 |  */ | 
 |  | 
 | #define	MAXALIASES	35 | 
 | #define	MAXADDRS	35 | 
 |  | 
 | typedef struct res_static { | 
 |     char*           h_addr_ptrs[MAXADDRS + 1]; | 
 |     char*           host_aliases[MAXALIASES]; | 
 |     char            hostbuf[8*1024]; | 
 |     u_int32_t       host_addr[16 / sizeof(u_int32_t)];  /* IPv4 or IPv6 */ | 
 |     FILE*           hostf; | 
 |     int             stayopen; | 
 |     const char*     servent_ptr; | 
 |     struct servent  servent; | 
 |     struct hostent  host; | 
 | } *res_static; | 
 |  | 
 | extern res_static __res_get_static(void); | 
 |  | 
 | #endif /* _RESOLV_STATIC_H */ |