Uninitialized vector entry?
[minix3.git] / man / man3 / resolver.3
blobb9ddef1a93f3e1632160f4627d3da56323c20eaa
1 .\" Copyright (c) 1985 The Regents of the University of California.
2 .\" All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms are permitted provided
5 .\" that: (1) source distributions retain this entire copyright notice and
6 .\" comment, and (2) distributions including binaries display the following
7 .\" acknowledgement:  ``This product includes software developed by the
8 .\" University of California, Berkeley and its contributors'' in the
9 .\" documentation or other materials provided with the distribution and in
10 .\" all advertising materials mentioning features or use of this software.
11 .\" Neither the name of the University nor the names of its contributors may
12 .\" be used to endorse or promote products derived from this software without
13 .\" specific prior written permission.
14 .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
15 .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
16 .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17 .\"
18 .\"     @(#)resolver.3  6.5 (Berkeley) 6/23/90
19 .\"
20 .TH RESOLVER 3 "June 23, 1990"
21 .UC 4
22 .SH NAME
23 resolver, res_query, res_search, res_mkquery, res_send, res_init, dn_comp, dn_expand \- resolver routines
24 .SH SYNOPSIS
25 .B #include <sys/types.h>
26 .br
27 .B #include <net/gen/in.h>
28 .br
29 .B #include <net/gen/nameser.h>
30 .br
31 .B #include <net/gen/resolv.h>
32 .PP
33 .B "res_query(dname, class, type, answer, anslen)"
34 .br
35 .B char *dname;
36 .br
37 .B int class, type;
38 .br
39 .B u_char *answer;
40 .br
41 .B int anslen;
42 .PP
43 .B "res_search(dname, class, type, answer, anslen)"
44 .br
45 .B char *dname;
46 .br
47 .B int class, type;
48 .br
49 .B u_char *answer;
50 .br
51 .B int anslen;
52 .PP
53 .B "res_mkquery(op, dname, class, type, data, datalen, newrr, buf, buflen)"
54 .br
55 .B int op;
56 .br
57 .B char *dname;
58 .br
59 .B int class, type;
60 .br
61 .B char *data;
62 .br
63 .B int datalen;
64 .br
65 .B struct rrec *newrr;
66 .br
67 .B char *buf;
68 .br
69 .B int buflen;
70 .PP
71 .B res_send(msg, msglen, answer, anslen)
72 .br
73 .B char *msg;
74 .br
75 .B int msglen;
76 .br
77 .B char *answer;
78 .br
79 .B int anslen;
80 .PP
81 .B res_init()
82 .PP
83 .B dn_comp(exp_dn, comp_dn, length, dnptrs, lastdnptr)
84 .br
85 .B char *exp_dn, *comp_dn;
86 .br
87 .B int length;
88 .br
89 .B char **dnptrs, **lastdnptr;
90 .PP
91 .B dn_expand(msg, eomorig, comp_dn, exp_dn, length)
92 .br
93 .B char *msg, *eomorig, *comp_dn, exp_dn;
94 .br
95 .B int  length;
96 .SH DESCRIPTION
97 These routines are used for making, sending and interpreting
98 query and reply messages with Internet domain name servers.
99 .PP
100 Global configuration and state information that is used by the
101 resolver routines is kept in the structure
102 .IR _res .
103 Most of the values have reasonable defaults and can be ignored.
104 Options
105 stored in
106 .I _res.options
107 are defined in
108 .I resolv.h
109 and are as follows.
110 Options are stored as a simple bit mask containing the bitwise ``or''
111 of the options enabled.
112 .IP RES_INIT
113 True if the initial name server address and default domain name are
114 initialized (i.e.,
115 .I res_init
116 has been called).
117 .IP RES_DEBUG
118 Print debugging messages.
119 .IP RES_AAONLY
120 Accept authoritative answers only.
121 With this option,
122 .I res_send
123 should continue until it finds an authoritative answer or finds an error.
124 Currently this is not implemented.
125 .IP RES_USEVC
126 Use TCP connections for queries instead of UDP datagrams.
127 .IP RES_STAYOPEN
128 Used with RES_USEVC to keep the TCP connection open between
129 queries.
130 This is useful only in programs that regularly do many queries.
131 UDP should be the normal mode used.
132 .IP RES_IGNTC
133 Unused currently (ignore truncation errors, i.e., don't retry with TCP).
134 .IP RES_RECURSE
135 Set the recursion-desired bit in queries.
136 This is the default.
138 .I res_send
139 does not do iterative queries and expects the name server
140 to handle recursion.)
141 .IP RES_DEFNAMES
142 If set,
143 .I res_search
144 will append the default domain name to single-component names
145 (those that do not contain a dot).
146 This option is enabled by default.
147 .IP RES_DNSRCH
148 If this option is set,
149 .I res_search
150 will search for host names in the current domain and in parent domains; see
151 .IR hostname (7).
152 This is used by the standard host lookup routine
153 .IR gethostbyname (3).
154 This option is enabled by default.
157 .I res_init
158 routine
159 reads the configuration file (if any; see
160 .IR resolver (5))
161 to get the default domain name,
162 search list and
163 the Internet address of the local name server(s).
164 If no server is configured, the host running
165 the resolver is tried.
166 The current domain name is defined by the hostname
167 if not specified in the configuration file;
168 it can be overridden by the environment variable LOCALDOMAIN.
169 Initialization normally occurs on the first call
170 to one of the following routines.
173 .I res_query
174 function provides an interface to the server query mechanism.
175 It constructs a query, sends it to the local server,
176 awaits a response, and makes preliminary checks on the reply.
177 The query requests information of the specified
178 .I type
180 .I class
181 for the specified fully-qualified domain name
182 .I dname .
183 The reply message is left in the
184 .I answer
185 buffer with length
186 .I anslen
187 supplied by the caller.
190 .I res_search
191 routine makes a query and awaits a response like
192 .IR res_query ,
193 but in addition, it implements the default and search rules
194 controlled by the RES_DEFNAMES and RES_DNSRCH options.
195 It returns the first successful reply.
197 The remaining routines are lower-level routines used by
198 .IR res_query .
200 .I res_mkquery
201 function
202 constructs a standard query message and places it in
203 .IR buf .
204 It returns the size of the query, or \-1 if the query is
205 larger than
206 .IR buflen .
207 The query type
208 .I op
209 is usually QUERY, but can be any of the query types defined in
210 .IR <arpa/nameser.h> .
211 The domain name for the query is given by
212 .IR dname .
213 .I Newrr
214 is currently unused but is intended for making update messages.
217 .I res_send
218 routine
219 sends a pre-formatted query and returns an answer.
220 It will call
221 .I res_init
222 if RES_INIT is not set, send the query to the local name server, and
223 handle timeouts and retries.
224 The length of the reply message is returned, or
225 \-1 if there were errors.
228 .I dn_comp
229 function
230 compresses the domain name
231 .I exp_dn
232 and stores it in
233 .IR comp_dn .
234 The size of the compressed name is returned or \-1 if there were errors.
235 The size of the array pointed to by
236 .I comp_dn
237 is given by
238 .IR length .
239 The compression uses
240 an array of pointers
241 .I dnptrs
242 to previously-compressed names in the current message.
243 The first pointer points to
244 to the beginning of the message and the list ends with NULL.
245 The limit to the array is specified by
246 .IR lastdnptr .
247 A side effect of
248 .I dn_comp
249 is to update the list of pointers for
250 labels inserted into the message
251 as the name is compressed.
253 .I dnptr
254 is NULL, names are not compressed.
256 .I lastdnptr
257 is NULL, the list of labels is not updated.
260 .I dn_expand
261 entry
262 expands the compressed domain name
263 .I comp_dn
264 to a full domain name
265 The compressed name is contained in a query or reply message;
266 .I msg
267 is a pointer to the beginning of the message.
268 The uncompressed name is placed in the buffer indicated by
269 .I exp_dn
270 which is of size
271 .IR length .
272 The size of compressed name is returned or \-1 if there was an error.
273 .SH FILES
274 /etc/resolv.conf        see resolver(5)
275 .SH "SEE ALSO"
276 gethostbyname(3), named(8), resolver(5), hostname(7),
278 RFC1032, RFC1033, RFC1034, RFC1035, RFC974, 
280 SMM:11 Name Server Operations Guide for BIND