1 | #ifndef __res_state_defined |
2 | #define __res_state_defined 1 |
3 | |
4 | #include <sys/types.h> |
5 | #include <netinet/in.h> |
6 | |
7 | /* res_state: the global state used by the resolver stub. */ |
8 | #define MAXNS 3 /* max # name servers we'll track */ |
9 | #define MAXDFLSRCH 3 /* # default domain levels to try */ |
10 | #define MAXDNSRCH 6 /* max # domains in search path */ |
11 | #define MAXRESOLVSORT 10 /* number of net to sort on */ |
12 | |
13 | struct __res_state { |
14 | int retrans; /* retransmition time interval */ |
15 | int retry; /* number of times to retransmit */ |
16 | unsigned long options; /* option flags - see below. */ |
17 | int nscount; /* number of name servers */ |
18 | struct sockaddr_in |
19 | nsaddr_list[MAXNS]; /* address of name server */ |
20 | unsigned short id; /* current message id */ |
21 | /* 2 byte hole here. */ |
22 | char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */ |
23 | char defdname[256]; /* default domain (deprecated) */ |
24 | unsigned long pfcode; /* RES_PRF_ flags - see below. */ |
25 | unsigned ndots:4; /* threshold for initial abs. query */ |
26 | unsigned nsort:4; /* number of elements in sort_list[] */ |
27 | unsigned ipv6_unavail:1; /* connecting to IPv6 server failed */ |
28 | unsigned unused:23; |
29 | struct { |
30 | struct in_addr addr; |
31 | uint32_t mask; |
32 | } sort_list[MAXRESOLVSORT]; |
33 | /* 4 byte hole here on 64-bit architectures. */ |
34 | void * __glibc_unused_qhook; |
35 | void * __glibc_unused_rhook; |
36 | int res_h_errno; /* last one set for this context */ |
37 | int _vcsock; /* PRIVATE: for res_send VC i/o */ |
38 | unsigned int _flags; /* PRIVATE: see below */ |
39 | /* 4 byte hole here on 64-bit architectures. */ |
40 | union { |
41 | char pad[52]; /* On an i386 this means 512b total. */ |
42 | struct { |
43 | uint16_t nscount; |
44 | uint16_t nsmap[MAXNS]; |
45 | int nssocks[MAXNS]; |
46 | uint16_t nscount6; |
47 | uint16_t nsinit; |
48 | struct sockaddr_in6 *nsaddrs[MAXNS]; |
49 | #ifdef _LIBC |
50 | unsigned long long int __glibc_extension_index |
51 | __attribute__((packed)); |
52 | #else |
53 | unsigned int __glibc_reserved[2]; |
54 | #endif |
55 | } _ext; |
56 | } _u; |
57 | }; |
58 | |
59 | typedef struct __res_state *res_state; |
60 | |
61 | #endif /* __res_state_defined */ |
62 | |