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
13struct __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
59typedef struct __res_state *res_state;
60
61#endif /* __res_state_defined */
62

source code of glibc/resolv/bits/types/res_state.h