]>
Commit | Line | Data |
---|---|---|
8a97ab44 A |
1 | /* |
2 | * Copyright (c) 1983, 1987, 1989 | |
3 | * The Regents of the University of California. All rights reserved. | |
4 | * | |
5 | * Redistribution and use in source and binary forms, with or without | |
6 | * modification, are permitted provided that the following conditions | |
7 | * are met: | |
8 | * 1. Redistributions of source code must retain the above copyright | |
9 | * notice, this list of conditions and the following disclaimer. | |
10 | * 2. Redistributions in binary form must reproduce the above copyright | |
11 | * notice, this list of conditions and the following disclaimer in the | |
12 | * documentation and/or other materials provided with the distribution. | |
13 | * 3. All advertising materials mentioning features or use of this software | |
14 | * must display the following acknowledgement: | |
15 | * This product includes software developed by the University of | |
16 | * California, Berkeley and its contributors. | |
17 | * 4. Neither the name of the University nor the names of its contributors | |
18 | * may be used to endorse or promote products derived from this software | |
19 | * without specific prior written permission. | |
20 | * | |
21 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |
22 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
23 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
24 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
25 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
26 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
27 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
28 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
29 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
30 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
31 | * SUCH DAMAGE. | |
32 | */ | |
33 | ||
34 | /* | |
35 | * Portions Copyright (c) 1996-1999 by Internet Software Consortium. | |
36 | * | |
37 | * Permission to use, copy, modify, and distribute this software for any | |
38 | * purpose with or without fee is hereby granted, provided that the above | |
39 | * copyright notice and this permission notice appear in all copies. | |
40 | * | |
41 | * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS | |
42 | * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES | |
43 | * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE | |
44 | * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |
45 | * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR | |
46 | * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS | |
47 | * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS | |
48 | * SOFTWARE. | |
49 | */ | |
50 | ||
51 | /* | |
52 | * @(#)resolv.h 8.1 (Berkeley) 6/2/93 | |
53 | * $Id: resolv.h,v 1.1 2006/03/01 19:01:39 majka Exp $ | |
54 | */ | |
55 | ||
56 | /* | |
57 | * Important note regarding the BIND-9 API on Mac OS | |
58 | * ------------------------------------------------- | |
59 | * | |
60 | * Mac OS supports a DNS query routing API (see <dns.h>) which is used by | |
61 | * most system services to access DNS. The BIND-9 APIs described here are | |
62 | * a lower-level that does not do query routing or search amongst multiple | |
63 | * resolver clients. The results of DNS queries from this API may differ | |
64 | * significantly from the results of queries sent to the <dns.h> API. We | |
65 | * strongly encourage developers to use higher-level APIs where possible. | |
66 | */ | |
67 | ||
68 | #ifndef _RESOLV_9_H_ | |
69 | #define _RESOLV_9_H_ | |
70 | ||
8a97ab44 A |
71 | #include <sys/param.h> |
72 | #if (!defined(BSD)) || (BSD < 199306) | |
73 | # include <sys/bitypes.h> | |
74 | #else | |
75 | # include <sys/types.h> | |
76 | #endif | |
77 | #include <sys/cdefs.h> | |
78 | #include <sys/socket.h> | |
79 | #include <netinet/in.h> | |
80 | #include <stdio.h> | |
9571391b | 81 | #include <nameser.h> |
8a97ab44 A |
82 | |
83 | /* | |
84 | * Revision information. This is the release date in YYYYMMDD format. | |
85 | * It can change every day so the right thing to do with it is use it | |
86 | * in preprocessor commands such as "#if (__RES > 19931104)". Do not | |
87 | * compare for equality; rather, use it to determine whether your resolver | |
88 | * is new enough to contain a certain feature. | |
89 | */ | |
90 | ||
91 | #define __RES 19991006 | |
92 | ||
93 | #define __h_errno_set _res_9_h_errno_set | |
94 | #define RES_SET_H_ERRNO(r,x) __h_errno_set(r,x) | |
95 | ||
96 | #define __res_state __res_9_state | |
97 | struct __res_state; /* forward */ | |
98 | ||
99 | __BEGIN_DECLS | |
100 | void __h_errno_set(struct __res_state *res, int err); | |
101 | __END_DECLS | |
102 | ||
103 | /* | |
104 | * Resolver configuration file. | |
105 | * Normally not present, but may contain the address of the | |
106 | * inital name server(s) to query and the domain search list. | |
107 | * | |
108 | * Apple Note: The default DNS resolver client configuration | |
109 | * is now stored in a system configuration database, not in | |
110 | */ | |
111 | ||
112 | #ifndef _PATH_RESCONF | |
113 | #define _PATH_RESCONF "/etc/resolv.conf" | |
114 | #endif | |
115 | ||
116 | #define res_goahead res_9_goahead | |
117 | #define res_nextns res_9_nextns | |
118 | #define res_modified res_9_modified | |
119 | #define res_done res_9_done | |
120 | #define res_error res_9_error | |
121 | #define res_sendhookact res_9_sendhookact | |
122 | ||
123 | typedef enum | |
124 | { | |
125 | res_goahead, | |
126 | res_nextns, | |
127 | res_modified, | |
128 | res_done, | |
129 | res_error | |
130 | } res_sendhookact; | |
131 | ||
132 | typedef res_sendhookact (*res_send_qhook)__P((struct sockaddr * const *ns, | |
133 | const u_char **query, | |
134 | int *querylen, | |
135 | u_char *ans, | |
136 | int anssiz, | |
137 | int *resplen)); | |
138 | ||
139 | typedef res_sendhookact (*res_send_rhook)__P((const struct sockaddr *ns, | |
140 | const u_char *query, | |
141 | int querylen, | |
142 | u_char *ans, | |
143 | int anssiz, | |
144 | int *resplen)); | |
145 | ||
146 | #define res_sym res_9_sym | |
147 | ||
148 | struct res_sym | |
149 | { | |
150 | int number; /* Identifying number, like T_MX */ | |
151 | const char * name; /* Its symbolic name, like "MX" */ | |
152 | const char * humanname; /* Its fun name, like "mail exchanger" */ | |
153 | }; | |
154 | ||
155 | /* | |
156 | * Global defines and variables for resolver stub. | |
157 | */ | |
158 | #define MAXNS 3 /* max # name servers we'll track */ | |
159 | #define MAXDFLSRCH 3 /* # default domain levels to try */ | |
160 | #define MAXDNSRCH 6 /* max # domains in search path */ | |
161 | #define LOCALDOMAINPARTS 2 /* min levels in name that is "local" */ | |
162 | ||
163 | #define RES_TIMEOUT 5 /* min. seconds between retries */ | |
164 | #define MAXRESOLVSORT 10 /* number of net to sort on */ | |
165 | #define RES_MAXNDOTS 15 /* should reflect bit field size */ | |
166 | #define RES_MAXRETRANS 30 /* only for resolv.conf/RES_OPTIONS */ | |
167 | #define RES_MAXRETRY 5 /* only for resolv.conf/RES_OPTIONS */ | |
168 | #define RES_DFLRETRY 2 /* Default #/tries. */ | |
169 | #define RES_MAXTIME 65535 /* Infinity, in milliseconds. */ | |
170 | ||
171 | #define __res_state_ext __res_9_state_ext | |
172 | struct __res_state_ext; | |
173 | ||
174 | #define __res_state __res_9_state | |
175 | struct __res_state { | |
176 | int retrans; /* retransmition time interval */ | |
177 | int retry; /* number of times to transmit (attempts, not retries) */ | |
178 | #ifdef sun | |
179 | u_int options; /* option flags - see below. */ | |
180 | #else | |
181 | u_long options; /* option flags - see below. */ | |
182 | #endif | |
183 | int nscount; /* number of name servers */ | |
184 | struct sockaddr_in | |
185 | nsaddr_list[MAXNS]; /* address of name server */ | |
186 | #define nsaddr nsaddr_list[0] /* for backward compatibility */ | |
187 | u_short id; /* current message id */ | |
188 | char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */ | |
189 | char defdname[256]; /* default domain (deprecated) */ | |
190 | #ifdef sun | |
191 | u_int pfcode; /* RES_PRF_ flags - see below. */ | |
192 | #else | |
193 | u_long pfcode; /* RES_PRF_ flags - see below. */ | |
194 | #endif | |
195 | unsigned ndots:4; /* threshold for initial abs. query */ | |
196 | unsigned nsort:4; /* number of elements in sort_list[] */ | |
197 | char unused[3]; | |
198 | struct { | |
199 | struct in_addr addr; | |
200 | u_int32_t mask; | |
201 | } sort_list[MAXRESOLVSORT]; | |
202 | res_send_qhook qhook; /* query hook */ | |
203 | res_send_rhook rhook; /* response hook */ | |
204 | int res_h_errno; /* last one set for this context */ | |
205 | int _vcsock; /* PRIVATE: for res_send VC i/o */ | |
206 | u_int _flags; /* PRIVATE: see below */ | |
207 | u_int _pad; /* make _u 64 bit aligned */ | |
208 | union { | |
209 | /* On an 32-bit arch this means 512b total. */ | |
210 | char pad[72 - 4*sizeof (int) - 2*sizeof (void *)]; | |
211 | struct { | |
212 | u_int16_t nscount; | |
213 | u_int16_t nstimes[MAXNS]; /* ms. */ | |
214 | int nssocks[MAXNS]; | |
215 | struct __res_state_ext *ext; /* extention for IPv6 */ | |
216 | } _ext; | |
217 | } _u; | |
218 | }; | |
219 | ||
220 | #define res_state res_9_state | |
221 | ||
222 | typedef struct __res_state *res_state; | |
223 | ||
224 | #define res_sockaddr_union res_9_sockaddr_union | |
225 | ||
226 | union res_sockaddr_union { | |
227 | struct sockaddr_in sin; | |
228 | #ifdef IN6ADDR_ANY_INIT | |
229 | struct sockaddr_in6 sin6; | |
230 | #endif | |
231 | #ifdef ISC_ALIGN64 | |
232 | int64_t __align64; /* 64bit alignment */ | |
233 | #else | |
234 | int32_t __align32; /* 32bit alignment */ | |
235 | #endif | |
236 | char __space[128]; /* max size */ | |
237 | }; | |
238 | ||
239 | /* | |
240 | * Resolver flags (used to be discrete per-module statics ints). | |
241 | */ | |
242 | #define RES_F_VC 0x00000001 /* socket is TCP */ | |
243 | #define RES_F_CONN 0x00000002 /* socket is connected */ | |
244 | #define RES_F_EDNS0ERR 0x00000004 /* EDNS0 caused errors */ | |
245 | ||
246 | /* res_findzonecut2() options */ | |
247 | #define RES_EXHAUSTIVE 0x00000001 /* always do all queries */ | |
248 | #define RES_IPV4ONLY 0x00000002 /* IPv4 only */ | |
249 | #define RES_IPV6ONLY 0x00000004 /* IPv6 only */ | |
250 | ||
251 | /* | |
252 | * Resolver options (keep these in synch with res_debug.c, please) | |
253 | */ | |
254 | #define RES_INIT 0x00000001 /* address initialized */ | |
255 | #define RES_DEBUG 0x00000002 /* print debug messages */ | |
256 | #define RES_AAONLY 0x00000004 /* authoritative answers only (!IMPL)*/ | |
257 | #define RES_USEVC 0x00000008 /* use virtual circuit */ | |
258 | #define RES_PRIMARY 0x00000010 /* query primary server only (!IMPL) */ | |
259 | #define RES_IGNTC 0x00000020 /* ignore trucation errors */ | |
260 | #define RES_RECURSE 0x00000040 /* recursion desired */ | |
261 | #define RES_DEFNAMES 0x00000080 /* use default domain name */ | |
262 | #define RES_STAYOPEN 0x00000100 /* Keep TCP socket open */ | |
263 | #define RES_DNSRCH 0x00000200 /* search up local domain tree */ | |
264 | #define RES_INSECURE1 0x00000400 /* type 1 security disabled */ | |
265 | #define RES_INSECURE2 0x00000800 /* type 2 security disabled */ | |
266 | #define RES_NOALIASES 0x00001000 /* shuts off HOSTALIASES feature */ | |
267 | #define RES_USE_INET6 0x00002000 /* use/map IPv6 in gethostbyname() */ | |
268 | #define RES_ROTATE 0x00004000 /* rotate ns list after each query */ | |
269 | #define RES_NOCHECKNAME 0x00008000 /* do not check names for sanity. */ | |
270 | #define RES_KEEPTSIG 0x00010000 /* do not strip TSIG records */ | |
271 | #define RES_BLAST 0x00020000 /* blast all recursive servers */ | |
272 | #define RES_NO_NIBBLE 0x00040000 /* disable IPv6 nibble mode reverse */ | |
273 | #define RES_NO_BITSTRING 0x00080000 /* disable IPv6 bitstring mode reverse */ | |
274 | #define RES_NOTLDQUERY 0x00100000 /* don't unqualified name as a tld */ | |
275 | #define RES_USE_DNSSEC 0x00200000 /* use DNSSEC using OK bit in OPT */ | |
276 | /* KAME extensions: use higher bit to avoid conflict with ISC use */ | |
277 | #define RES_USE_DNAME 0x10000000 /* use DNAME */ | |
278 | #define RES_USE_A6 0x20000000 /* use A6 */ | |
279 | #define RES_USE_EDNS0 0x40000000 /* use EDNS0 if configured */ | |
280 | #define RES_NO_NIBBLE2 0x80000000 /* disable alternate nibble lookup */ | |
281 | ||
282 | #define RES_DEFAULT (RES_RECURSE | RES_DEFNAMES | RES_DNSRCH | RES_INSECURE1) | |
283 | ||
284 | /* | |
285 | * Resolver "pfcode" values. Used by dig. | |
286 | */ | |
287 | #define RES_PRF_STATS 0x00000001 | |
288 | #define RES_PRF_UPDATE 0x00000002 | |
289 | #define RES_PRF_CLASS 0x00000004 | |
290 | #define RES_PRF_CMD 0x00000008 | |
291 | #define RES_PRF_QUES 0x00000010 | |
292 | #define RES_PRF_ANS 0x00000020 | |
293 | #define RES_PRF_AUTH 0x00000040 | |
294 | #define RES_PRF_ADD 0x00000080 | |
295 | #define RES_PRF_HEAD1 0x00000100 | |
296 | #define RES_PRF_HEAD2 0x00000200 | |
297 | #define RES_PRF_TTLID 0x00000400 | |
298 | #define RES_PRF_HEADX 0x00000800 | |
299 | #define RES_PRF_QUERY 0x00001000 | |
300 | #define RES_PRF_REPLY 0x00002000 | |
301 | #define RES_PRF_INIT 0x00004000 | |
302 | #define RES_PRF_TRUNC 0x00008000 | |
303 | /* 0x00010000 */ | |
304 | ||
305 | /* Things involving an internal (static) resolver context. */ | |
306 | #ifndef __BIND_NOSTATIC | |
307 | extern struct __res_state _res; | |
308 | #endif | |
309 | ||
310 | #ifndef __BIND_NOSTATIC | |
311 | #define fp_nquery res_9_fp_nquery | |
312 | #define fp_query res_9_fp_query | |
313 | #define hostalias res_9_hostalias_1 | |
314 | #define p_query res_9_p_query | |
315 | #define res_close res_9_close | |
316 | #define res_init res_9_init | |
317 | #define res_isourserver res_9_isourserver | |
318 | #define res_mkquery res_9_mkquery | |
319 | #define res_query res_9_query | |
320 | #define res_querydomain res_9_querydomain | |
321 | #define res_search res_9_search | |
322 | #define res_send res_9_send | |
323 | #define res_sendsigned res_9_sendsigned | |
324 | ||
325 | __BEGIN_DECLS | |
326 | void fp_nquery __P((const u_char *, int, FILE *)); | |
327 | void fp_query __P((const u_char *, FILE *)); | |
328 | const char *hostalias __P((const char *)); | |
329 | void p_query __P((const u_char *)); | |
330 | void res_close __P((void)); | |
331 | int res_init __P((void)); | |
332 | int res_isourserver __P((const struct sockaddr_in *)); | |
333 | int res_mkquery __P((int, const char *, int, int, const u_char *, | |
334 | int, const u_char *, u_char *, int)); | |
335 | int res_query __P((const char *, int, int, u_char *, int)); | |
336 | int res_querydomain __P((const char *, const char *, int, int, | |
337 | u_char *, int)); | |
338 | int res_search __P((const char *, int, int, u_char *, int)); | |
339 | int res_send __P((const u_char *, int, u_char *, int)); | |
340 | int res_sendsigned __P((const u_char *, int, ns_tsig_key *, | |
341 | u_char *, int)); | |
342 | __END_DECLS | |
343 | #endif | |
344 | ||
345 | #if !defined(SHARED_LIBBIND) || defined(LIB) | |
346 | /* | |
347 | * If libbind is a shared object (well, DLL anyway) | |
348 | * these externs break the linker when resolv.h is | |
349 | * included by a lib client (like named) | |
350 | * Make them go away if a client is including this | |
351 | * | |
352 | */ | |
353 | #define res_sym res_9_sym | |
354 | #define __p_key_syms __res_9_p_key_syms | |
355 | #define __p_cert_syms __res_9_p_cert_syms | |
356 | #define __p_class_syms __res_9_p_class_syms | |
357 | #define __p_type_syms __res_9_p_type_syms | |
358 | #define __p_rcode_syms __res_9_p_rcode_syms | |
359 | ||
360 | extern const struct res_sym __p_key_syms[]; | |
361 | extern const struct res_sym __p_cert_syms[]; | |
362 | extern const struct res_sym __p_class_syms[]; | |
363 | extern const struct res_sym __p_type_syms[]; | |
364 | extern const struct res_sym __p_rcode_syms[]; | |
365 | #endif /* SHARED_LIBBIND */ | |
366 | ||
367 | #define b64_ntop res_9_b64_ntop | |
368 | #define b64_pton res_9_b64_pton | |
369 | #define dn_comp res_9_dn_comp | |
370 | #define dn_count_labels res_9_dn_count_labels | |
371 | #define dn_expand res_9_dn_expand | |
372 | #define dn_skipname res_9_dn_skipname | |
373 | #define fp_resstat res_9_fp_resstat | |
374 | #define loc_aton res_9_loc_aton | |
375 | #define loc_ntoa res_9_loc_ntoa | |
376 | #define p_cdname res_9_p_cdname | |
377 | #define p_cdnname res_9_p_cdnname | |
378 | #define p_class res_9_p_class | |
379 | #define p_fqname res_9_p_fqname | |
380 | #define p_fqnname res_9_p_fqnname | |
381 | #define p_option res_9_p_option | |
382 | #define p_secstodate res_9_p_secstodate | |
383 | #define p_section res_9_p_section | |
384 | #define p_time res_9_p_time | |
385 | #define p_type res_9_p_type | |
386 | #define p_rcode res_9_p_rcode | |
387 | #define putlong res_9_putlong | |
388 | #define putshort res_9_putshort | |
389 | #define res_dnok res_9_dnok | |
390 | #define res_findzonecut res_9_findzonecut | |
391 | #define res_findzonecut2 res_9_findzonecut2 | |
392 | #define res_hnok res_9_hnok | |
393 | #define res_hostalias res_9_hostalias_2 | |
394 | #define res_mailok res_9_mailok | |
395 | #define res_nameinquery res_9_nameinquery | |
396 | #define res_nclose res_9_nclose | |
397 | #define res_ninit res_9_ninit | |
398 | #define res_nmkquery res_9_nmkquery | |
399 | #define res_pquery res_9_pquery | |
400 | #define res_nquery res_9_nquery | |
401 | #define res_nquerydomain res_9_nquerydomain | |
402 | #define res_nsearch res_9_nsearch | |
403 | #define res_nsend res_9_nsend | |
404 | #define res_nsendsigned res_9_nsendsigned | |
405 | #define res_nisourserver res_9_nisourserver | |
406 | #define res_ownok res_9_ownok | |
407 | #define res_queriesmatch res_9_queriesmatch | |
408 | #define res_randomid res_9_randomid | |
409 | #define sym_ntop res_9_sym_ntop | |
410 | #define sym_ntos res_9_sym_ntos | |
411 | #define sym_ston res_9_sym_ston | |
412 | #define res_nopt res_9_nopt | |
413 | #define res_ndestroy res_9_ndestroy | |
414 | #define res_nametoclass res_9_nametoclass | |
415 | #define res_nametotype res_9_nametotype | |
416 | #define res_setservers res_9_setservers | |
417 | #define res_getservers res_9_getservers | |
418 | #define _getshort res_9_getshort | |
419 | #define _getlong res_9_getlong | |
420 | #define __res_vinit res_9_vinit | |
421 | ||
422 | __BEGIN_DECLS | |
423 | int res_hnok __P((const char *)); | |
424 | int res_ownok __P((const char *)); | |
425 | int res_mailok __P((const char *)); | |
426 | int res_dnok __P((const char *)); | |
427 | int sym_ston __P((const struct res_sym *, const char *, int *)); | |
428 | const char * sym_ntos __P((const struct res_sym *, int, int *)); | |
429 | const char *sym_ntop __P((const struct res_sym *, int, int *)); | |
430 | int b64_ntop __P((u_char const *, size_t, char *, size_t)); | |
431 | int b64_pton __P((char const *, u_char *, size_t)); | |
432 | int loc_aton __P((const char *ascii, u_char *binary)); | |
433 | const char * loc_ntoa __P((const u_char *binary, char *ascii)); | |
434 | int dn_skipname __P((const u_char *, const u_char *)); | |
435 | void putlong __P((u_int32_t, u_char *)); | |
436 | void putshort __P((u_int16_t, u_char *)); | |
437 | #ifndef __ultrix__ | |
438 | u_int16_t _getshort __P((const u_char *src)); | |
439 | u_int32_t _getlong __P((const u_char *src)); | |
440 | #endif | |
441 | const char * p_class __P((int)); | |
442 | const char * p_time __P((u_int32_t)); | |
443 | const char * p_type __P((int)); | |
444 | const char * p_rcode __P((int)); | |
445 | const u_char * p_cdnname __P((const u_char *, const u_char *, int, FILE *)); | |
446 | const u_char * p_cdname __P((const u_char *, const u_char *, FILE *)); | |
447 | const u_char * p_fqnname __P((const u_char *cp, const u_char *msg, int, char *, int)); | |
448 | const u_char * p_fqname __P((const u_char *, const u_char *, FILE *)); | |
449 | const char * p_option __P((u_long option)); | |
450 | char * p_secstodate __P((u_long)); | |
451 | int dn_count_labels __P((const char *)); | |
452 | int dn_comp __P((const char *, u_char *, int, u_char **, u_char **)); | |
453 | int dn_expand __P((const u_char *, const u_char *, const u_char *, char *, int)); | |
454 | u_int res_randomid __P((void)); | |
455 | int res_nameinquery __P((const char *, int, int, const u_char *, const u_char *)); | |
456 | int res_queriesmatch __P((const u_char *, const u_char *, const u_char *, const u_char *)); | |
457 | const char * p_section __P((int section, int opcode)); | |
458 | ||
459 | /* Things involving a resolver context. */ | |
460 | int res_ninit __P((res_state)); | |
461 | int res_nisourserver __P((const res_state, const struct sockaddr_in *)); | |
462 | void fp_resstat __P((const res_state, FILE *)); | |
463 | void res_pquery __P((const res_state, const u_char *, int, FILE *)); | |
464 | const char *res_hostalias __P((const res_state, const char *, char *, size_t)); | |
465 | int res_nquery __P((res_state, const char *, int, int, u_char *, int)); | |
466 | int res_nsearch __P((res_state, const char *, int, int, u_char *, int)); | |
467 | int res_nquerydomain __P((res_state, const char *, const char *, int, int, u_char *, int)); | |
468 | int res_nmkquery __P((res_state, int, const char *, int, int, const u_char *, int, const u_char *, u_char *, int)); | |
469 | int res_nsend __P((res_state, const u_char *, int, u_char *, int)); | |
470 | int res_nsendsigned __P((res_state, const u_char *, int, ns_tsig_key *, u_char *, int)); | |
471 | int res_findzonecut __P((res_state, const char *, ns_class, int, char *, size_t, struct in_addr *, int)); | |
472 | int res_findzonecut2 __P((res_state, const char *, ns_class, int, char *, size_t, union res_sockaddr_union *, int)); | |
473 | void res_nclose __P((res_state)); | |
474 | int res_nopt __P((res_state, int, u_char *, int, int)); | |
475 | void res_send_setqhook __P((res_send_qhook hook)); | |
476 | void res_send_setrhook __P((res_send_rhook hook)); | |
477 | int __res_vinit __P((res_state, int)); | |
478 | void res_destroyservicelist __P((void)); | |
479 | const char * res_servicename __P((u_int16_t port, const char *proto)); | |
480 | const char * res_protocolname __P((int num)); | |
481 | void res_destroyprotolist __P((void)); | |
482 | void res_buildprotolist __P((void)); | |
483 | const char * res_get_nibblesuffix __P((res_state)); | |
484 | const char * res_get_nibblesuffix2 __P((res_state)); | |
485 | const char * res_get_bitstringsuffix __P((res_state)); | |
486 | void res_ndestroy __P((res_state)); | |
487 | u_int16_t res_nametoclass __P((const char *buf, int *success)); | |
488 | u_int16_t res_nametotype __P((const char *buf, int *success)); | |
489 | void res_setservers __P((res_state, const union res_sockaddr_union *, int)); | |
490 | int res_getservers __P((res_state, union res_sockaddr_union *, int)); | |
491 | __END_DECLS | |
492 | ||
8a97ab44 | 493 | #endif /* !_RESOLV_9_H_ */ |