33 lines
886 B
C
33 lines
886 B
C
|
#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 */
|