Home | History | Annotate | Download | only in private
      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