version 2, including all changes.
.
| Rev |
Author |
# |
Line |
| 1 |
perry |
1 |
RESOLVER |
| |
|
2 |
!!!RESOLVER |
| |
|
3 |
NAME |
| |
|
4 |
SYNOPSIS |
| |
|
5 |
DESCRIPTION |
| |
|
6 |
RETURN VALUE |
| |
|
7 |
FILES |
| |
|
8 |
CONFORMING TO |
| |
|
9 |
SEE ALSO |
| |
|
10 |
---- |
| |
|
11 |
!!NAME |
| |
|
12 |
|
| |
|
13 |
|
| |
|
14 |
res_init, res_query, res_search, res_querydomain, res_mkquery, res_send, dn_comp, dn_expand - resolver routines |
| |
|
15 |
!!SYNOPSIS |
| |
|
16 |
|
| |
|
17 |
|
| |
|
18 |
__#include |
| |
|
19 |
__''dname''__, int__ ''class''__, int__ ''type''__, |
| |
|
20 |
unsigned char *__''answer''__, int__ ''anslen''__); |
| |
|
21 |
int res_search(const char *__''dname''__, int__ ''class''__, int__ ''type''__, |
| |
|
22 |
unsigned char *__''answer''__, int__ ''anslen''__); |
| |
|
23 |
int res_querydomain(const char *__''name''__, const char *__''domain''__, |
| |
|
24 |
int__ ''class''__, int__ ''type''__, unsigned char *__''answer''__, |
| |
|
25 |
int__ ''anslen''__); |
| |
|
26 |
int res_mkquery(int__ ''op''__, const char *__''dname''__, int__ ''class''__, |
| |
|
27 |
int__ ''type''__, char *__''data''__, int__ ''datalen''__, struct rrec *__''newrr''__, |
| |
|
28 |
char *__''buf''__, int__ ''buflen''__); |
| |
|
29 |
int res_send(const char *__''msg''__, int__ ''msglen''__, char *__''answer''__, |
| |
|
30 |
int__ ''anslen''__); |
| |
|
31 |
int dn_comp(unsigned char *__''exp_dn''__, unsigned char *__''comp_dn''__, |
| |
|
32 |
int__ ''length''__, unsigned char **__''dnptrs''__, unsigned char *__''exp_dn''__, |
| |
|
33 |
unsigned char **__''lastdnptr''__); |
| |
|
34 |
int dn_expand(unsigned char *__''msg''__, unsigned char *__''eomorig''__, |
| |
|
35 |
unsigned char *__''comp_dn''__, unsigned char *__''exp_dn''__, |
| |
|
36 |
int__ ''length''__); |
| |
|
37 |
__ |
| |
|
38 |
!!DESCRIPTION |
| |
|
39 |
|
| |
|
40 |
|
| |
|
41 |
These functions make queries to and interpret the responses |
| |
|
42 |
from Internet domain name servers. |
| |
|
43 |
|
| |
|
44 |
|
| |
|
45 |
The __res_init()__ function reads the configuration files |
| |
|
46 |
(see resolv+(8)) to get the default domain name, search |
| |
|
47 |
order and name server address(es). If no server is given, |
| |
|
48 |
the local host is tried. If no domain is given, that |
| |
|
49 |
associated with the local host is used. It can be overridden |
| |
|
50 |
with the environment variable LOCALDOMAIN. __res_init()__ |
| |
|
51 |
is normally executed by the first call to one of the other |
| |
|
52 |
functions. |
| |
|
53 |
|
| |
|
54 |
|
| |
|
55 |
The __res_query()__ function queries the name server for |
| |
|
56 |
the fully-qualified domain name ''name'' of specified |
| |
|
57 |
''type'' and ''class''. The reply is left in the |
| |
|
58 |
buffer ''answer'' of length ''anslen'' supplied by the |
| |
|
59 |
caller. |
| |
|
60 |
|
| |
|
61 |
|
| |
|
62 |
The __res_search()__ function makes a query and waits for |
| |
|
63 |
the response like __res_query()__, but in addition |
| |
|
64 |
implements the default and search rules controlled by |
| |
|
65 |
RES_DEFNAMES and RES_DNSRCH (see description of ''_res'' |
| |
|
66 |
options below). |
| |
|
67 |
|
| |
|
68 |
|
| |
|
69 |
The __res_querydomain()__ function makes a query using |
| |
|
70 |
__res_query()__ on the concatenation of ''name'' and |
| |
|
71 |
''domain''. |
| |
|
72 |
|
| |
|
73 |
|
| |
|
74 |
The following functions are lower-level routines used by |
| |
|
75 |
__res_query()__. |
| |
|
76 |
|
| |
|
77 |
|
| |
|
78 |
The __res_mkquery()__ function constructs a query message |
| |
|
79 |
in ''buf'' of length ''buflen'' for the domain name |
| |
|
80 |
''dname''. The query type ''op'' is usually QUERY, but |
| |
|
81 |
can be any of the types defined in |
| |
|
82 |
''''. ''newrr'' is currently |
| |
|
83 |
unused. |
| |
|
84 |
|
| |
|
85 |
|
| |
|
86 |
The __res_send()__ function sends a pre-formatted query |
| |
|
87 |
given in ''msg'' of length ''msglen'' and returns the |
| |
|
88 |
answer in ''answer'' which is of length ''anslen''. It |
| |
|
89 |
will call __res_init()__, if it has not already been |
| |
|
90 |
called. |
| |
|
91 |
|
| |
|
92 |
|
| |
|
93 |
The __dn_comp()__ function compresses the domain name |
| |
|
94 |
''exp_dn'' and stores it in the buffer ''comp_dn'' of |
| |
|
95 |
length ''length''. The compression uses an array of |
| |
|
96 |
pointers ''dnptrs'' to previously compressed names in the |
| |
|
97 |
current message. The first pointer points to the beginning |
| |
|
98 |
of the message and the list ends with NULL. The limit of the |
| |
|
99 |
array is specified by ''lastdnptr''. if ''dnptr'' is |
| |
|
100 |
NULL, domain names are not compressed. If ''lastdnptr'' |
| |
|
101 |
is NULL, the list of labels is not updated. |
| |
|
102 |
|
| |
|
103 |
|
| |
|
104 |
The dn_expand() function expands the compressed domain name |
| |
|
105 |
''comp_dn'' to a full domain name, which is placed in the |
| |
|
106 |
buffer ''exp_dn'' of size ''length''. The compressed |
| |
|
107 |
name is contained in a query or reply message, and |
| |
|
108 |
''msg'' points to the beginning of the |
| |
|
109 |
message. |
| |
|
110 |
|
| |
|
111 |
|
| |
|
112 |
The resolver routines use global configuration and state |
| |
|
113 |
information contained in the structure ''_res'', which is |
| |
|
114 |
defined in ''''. The only field that is |
| |
|
115 |
normally manipulated by the user is ''_res.options''. |
| |
|
116 |
This field can contain the bitwise ``or'' of the following |
| |
|
117 |
options: |
| |
|
118 |
|
| |
|
119 |
|
| |
|
120 |
__RES_INIT__ |
| |
|
121 |
|
| |
|
122 |
|
| |
|
123 |
True if __res_init()__ has been called. |
| |
|
124 |
|
| |
|
125 |
|
| |
|
126 |
__RES_DEBUG__ |
| |
|
127 |
|
| |
|
128 |
|
| |
|
129 |
Print debugging messages. |
| |
|
130 |
|
| |
|
131 |
|
| |
|
132 |
__RES_AAONLY__ |
| |
|
133 |
|
| |
|
134 |
|
| |
|
135 |
Accept authoritative answers only. __res_send()__ |
| |
|
136 |
continues until it fins an authoritative answer or returns |
| |
|
137 |
an error. [[Not currently implemented]. |
| |
|
138 |
|
| |
|
139 |
|
| |
|
140 |
__RES_USEVC__ |
| |
|
141 |
|
| |
|
142 |
|
| |
|
143 |
Use TCP connections for queries rather than UDP |
| |
|
144 |
datagrams. |
| |
|
145 |
|
| |
|
146 |
|
| |
|
147 |
__RES_PRIMARY__ |
| |
|
148 |
|
| |
|
149 |
|
| |
|
150 |
Query primary domain name server only. |
| |
|
151 |
|
| |
|
152 |
|
| |
|
153 |
__RES_IGNTC__ |
| |
|
154 |
|
| |
|
155 |
|
| |
|
156 |
Ignore truncation errors. Don't retry with TCP. [[Not |
| |
|
157 |
currently implemented]. |
| |
|
158 |
|
| |
|
159 |
|
| |
|
160 |
__RES_RECURSE__ |
| |
|
161 |
|
| |
|
162 |
|
| |
|
163 |
Set the recursion desired bit in queries. Recursion is |
| |
|
164 |
carried out by the domain name server, not by |
| |
|
165 |
__res_send()__. [[Enabled by default]. |
| |
|
166 |
|
| |
|
167 |
|
| |
|
168 |
__RES_DEFNAMES__ |
| |
|
169 |
|
| |
|
170 |
|
| |
|
171 |
If set, __res_search()__ will append the default domain |
| |
|
172 |
name to single component names, ie. those that do not |
| |
|
173 |
contain a dot. [[Enabled by default]. |
| |
|
174 |
|
| |
|
175 |
|
| |
|
176 |
__RES_STAYOPEN__ |
| |
|
177 |
|
| |
|
178 |
|
| |
|
179 |
Used with RES_USEVC to keep the TCP connection open between |
| |
|
180 |
queries. |
| |
|
181 |
|
| |
|
182 |
|
| |
|
183 |
__RES_DNSRCH__ |
| |
|
184 |
|
| |
|
185 |
|
| |
|
186 |
If set, __res_search()__ will search for host names in |
| |
|
187 |
the current domain and in parent domains. This option is |
| |
|
188 |
used by gethostbyname(3). [[Enabled by |
| |
|
189 |
default]. |
| |
|
190 |
!!RETURN VALUE |
| |
|
191 |
|
| |
|
192 |
|
| |
|
193 |
The __res_init()__ function returns 0 on success, or -1 |
| |
|
194 |
if an error occurs. |
| |
|
195 |
|
| |
|
196 |
|
| |
|
197 |
The __res_query()__, __res_search()__, |
| |
|
198 |
__res_querydomain()__, __res_mkquery()__ and |
| |
|
199 |
__res_send()__ functions return the length of the |
| |
|
200 |
response, or -1 if an error occurs. |
| |
|
201 |
|
| |
|
202 |
|
| |
|
203 |
The __dn_comp()__ and __dn_expand()__ functions return |
| |
|
204 |
the length of the compressed name, or -1 if an error |
| |
|
205 |
occurs. |
| |
|
206 |
!!FILES |
| |
|
207 |
|
| |
|
208 |
|
| |
|
209 |
/etc/resolv.conf resolver configuration file |
| |
|
210 |
/etc/host.conf resolver configuration file |
| |
|
211 |
!!CONFORMING TO |
| |
|
212 |
|
| |
|
213 |
|
| |
|
214 |
BSD 4.3 |
| |
|
215 |
!!SEE ALSO |
| |
|
216 |
|
| |
|
217 |
|
| |
|
218 |
gethostbyname(3), hostname(7), |
| 2 |
perry |
219 |
named(8), resolv+(8) |
| 1 |
perry |
220 |
---- |