35 lines
		
	
	
		
			768 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			768 B
		
	
	
	
		
			C
		
	
	
	
| #pragma once
 | |
| 
 | |
| #include <netdb.h>
 | |
| #include <sys/cdefs.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
 | |
| 
 | |
| __BEGIN_DECLS
 | |
| 
 | |
| 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;
 | |
| };
 | |
| 
 | |
| struct res_static* __res_get_static(void);
 | |
| 
 | |
| __END_DECLS
 |