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