11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef _RESOLV_STATIC_H 21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define _RESOLV_STATIC_H 31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <netdb.h> 51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* this structure contains all the variables that were declared 71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 'static' in the original NetBSD resolver code. 81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * this caused vast amounts of crashes and memory corruptions 101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * when the resolver was being used by multiple threads. 111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * (note: the OpenBSD/FreeBSD resolver has similar 'issues') 131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define MAXALIASES 35 161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define MAXADDRS 35 171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct res_static { 191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project char* h_addr_ptrs[MAXADDRS + 1]; 201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project char* host_aliases[MAXALIASES]; 211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project char hostbuf[8*1024]; 221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project u_int32_t host_addr[16 / sizeof(u_int32_t)]; /* IPv4 or IPv6 */ 231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project FILE* hostf; 241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int stayopen; 251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const char* servent_ptr; 261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct servent servent; 271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct hostent host; 281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} *res_static; 291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern res_static __res_get_static(void); 311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* _RESOLV_STATIC_H */ 33