Commit | Line | Data |
---|---|---|
21fcee4d PA |
1 | /* |
2 | * Copyright (c) 1983, 1987, 1989 | |
3 | * The Regents of the University of California. All rights reserved. | |
984263bc MD |
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. | |
bc7a8293 | 13 | * 3. Neither the name of the University nor the names of its contributors |
984263bc MD |
14 | * may be used to endorse or promote products derived from this software |
15 | * without specific prior written permission. | |
16 | * | |
17 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |
18 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
21 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
22 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
23 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
24 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
25 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
26 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
27 | * SUCH DAMAGE. | |
28 | */ | |
29 | ||
30 | /* | |
21fcee4d PA |
31 | * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") |
32 | * Portions Copyright (c) 1996-1999 by Internet Software Consortium. | |
984263bc MD |
33 | * |
34 | * Permission to use, copy, modify, and distribute this software for any | |
35 | * purpose with or without fee is hereby granted, provided that the above | |
36 | * copyright notice and this permission notice appear in all copies. | |
37 | * | |
21fcee4d PA |
38 | * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES |
39 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
40 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR | |
41 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
42 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
43 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT | |
44 | * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
984263bc MD |
45 | */ |
46 | ||
47 | /* | |
48 | * @(#)resolv.h 8.1 (Berkeley) 6/2/93 | |
21fcee4d PA |
49 | * $Id: resolv.h,v 1.19.18.4 2008/04/03 23:15:15 marka Exp $ |
50 | * $FreeBSD: src/include/resolv.h,v 1.33 2008/12/14 19:39:53 ume Exp $ | |
984263bc MD |
51 | */ |
52 | ||
53 | #ifndef _RESOLV_H_ | |
54 | #define _RESOLV_H_ | |
55 | ||
56 | #include <sys/param.h> | |
57 | #include <sys/types.h> | |
58 | #include <sys/cdefs.h> | |
59 | #include <sys/socket.h> | |
60 | #include <stdio.h> | |
67ba2bc8 | 61 | #include <netinet/in.h> |
21fcee4d | 62 | #include <arpa/nameser.h> |
984263bc MD |
63 | |
64 | /* | |
65 | * Revision information. This is the release date in YYYYMMDD format. | |
66 | * It can change every day so the right thing to do with it is use it | |
67 | * in preprocessor commands such as "#if (__RES > 19931104)". Do not | |
68 | * compare for equality; rather, use it to determine whether your resolver | |
69 | * is new enough to contain a certain feature. | |
70 | */ | |
71 | ||
21fcee4d | 72 | #define __RES 20030124 |
984263bc MD |
73 | |
74 | /* | |
21fcee4d PA |
75 | * This used to be defined in res_query.c, now it's in herror.c. |
76 | * [XXX no it's not. It's in irs/irs_data.c] | |
77 | * It was | |
78 | * never extern'd by any *.h file before it was placed here. For thread | |
79 | * aware programs, the last h_errno value set is stored in res->h_errno. | |
80 | * | |
81 | * XXX: There doesn't seem to be a good reason for exposing RES_SET_H_ERRNO | |
82 | * (and __h_errno_set) to the public via <resolv.h>. | |
83 | * XXX: __h_errno_set is really part of IRS, not part of the resolver. | |
84 | * If somebody wants to build and use a resolver that doesn't use IRS, | |
85 | * what do they do? Perhaps something like | |
86 | * #ifdef WANT_IRS | |
87 | * # define RES_SET_H_ERRNO(r,x) __h_errno_set(r,x) | |
88 | * #else | |
89 | * # define RES_SET_H_ERRNO(r,x) (h_errno = (r)->res_h_errno = (x)) | |
90 | * #endif | |
91 | */ | |
92 | ||
93 | #define RES_SET_H_ERRNO(r,x) __h_errno_set(r,x) | |
94 | struct __res_state; /*%< forward */ | |
95 | __BEGIN_DECLS | |
96 | void __h_errno_set(struct __res_state *, int); | |
97 | __END_DECLS | |
98 | ||
99 | /*% | |
984263bc MD |
100 | * Resolver configuration file. |
101 | * Normally not present, but may contain the address of the | |
21fcee4d | 102 | * initial name server(s) to query and the domain search list. |
984263bc MD |
103 | */ |
104 | ||
105 | #ifndef _PATH_RESCONF | |
106 | #define _PATH_RESCONF "/etc/resolv.conf" | |
107 | #endif | |
108 | ||
21fcee4d PA |
109 | typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error } |
110 | res_sendhookact; | |
111 | ||
112 | typedef res_sendhookact (*res_send_qhook)(struct sockaddr * const *, | |
113 | const u_char **, int *, | |
114 | u_char *, int, int *); | |
115 | ||
116 | typedef res_sendhookact (*res_send_rhook)(const struct sockaddr *, | |
117 | const u_char *, int, u_char *, | |
118 | int, int *); | |
119 | ||
120 | struct res_sym { | |
121 | int number; /* Identifying number, like T_MX */ | |
122 | const char *name; /* Its symbolic name, like "MX" */ | |
123 | const char *humanname; /* Its fun name, like "mail exchanger" */ | |
124 | }; | |
125 | ||
984263bc MD |
126 | /* |
127 | * Global defines and variables for resolver stub. | |
128 | */ | |
129 | #define MAXNS 3 /* max # name servers we'll track */ | |
130 | #define MAXDFLSRCH 3 /* # default domain levels to try */ | |
131 | #define MAXDNSRCH 6 /* max # domains in search path */ | |
132 | #define LOCALDOMAINPARTS 2 /* min levels in name that is "local" */ | |
984263bc MD |
133 | #define RES_TIMEOUT 5 /* min. seconds between retries */ |
134 | #define MAXRESOLVSORT 10 /* number of net to sort on */ | |
135 | #define RES_MAXNDOTS 15 /* should reflect bit field size */ | |
21fcee4d PA |
136 | #define RES_MAXRETRANS 30 /* only for resolv.conf/RES_OPTIONS */ |
137 | #define RES_MAXRETRY 5 /* only for resolv.conf/RES_OPTIONS */ | |
138 | #define RES_DFLRETRY 2 /* Default #/tries. */ | |
139 | #define RES_MAXTIME 65535 /* Infinity, in milliseconds. */ | |
140 | struct __res_state_ext; | |
984263bc MD |
141 | |
142 | struct __res_state { | |
21fcee4d | 143 | int retrans; /* retransmission time interval */ |
984263bc MD |
144 | int retry; /* number of times to retransmit */ |
145 | u_long options; /* option flags - see below. */ | |
146 | int nscount; /* number of name servers */ | |
147 | struct sockaddr_in | |
148 | nsaddr_list[MAXNS]; /* address of name server */ | |
149 | #define nsaddr nsaddr_list[0] /* for backward compatibility */ | |
150 | u_short id; /* current message id */ | |
151 | char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */ | |
152 | char defdname[256]; /* default domain (deprecated) */ | |
153 | u_long pfcode; /* RES_PRF_ flags - see below. */ | |
154 | unsigned ndots:4; /* threshold for initial abs. query */ | |
155 | unsigned nsort:4; /* number of elements in sort_list[] */ | |
156 | char unused[3]; | |
157 | struct { | |
158 | struct in_addr addr; | |
159 | u_int32_t mask; | |
160 | } sort_list[MAXRESOLVSORT]; | |
21fcee4d PA |
161 | res_send_qhook qhook; /* query hook */ |
162 | res_send_rhook rhook; /* response hook */ | |
163 | int res_h_errno; /* last one set for this context */ | |
164 | int _vcsock; /* PRIVATE: for res_send VC i/o */ | |
165 | u_int _flags; /* PRIVATE: see below */ | |
166 | u_int _pad; /* make _u 64 bit aligned */ | |
167 | union { | |
168 | /* On an 32-bit arch this means 512b total. */ | |
169 | char pad[72 - 4*sizeof (int) - 2*sizeof (void *)]; | |
170 | struct { | |
171 | u_int16_t nscount; | |
172 | u_int16_t nstimes[MAXNS]; /* ms. */ | |
173 | int nssocks[MAXNS]; | |
174 | struct __res_state_ext *ext; /* extention for IPv6 */ | |
175 | } _ext; | |
176 | } _u; | |
177 | }; | |
178 | ||
179 | typedef struct __res_state *res_state; | |
180 | ||
181 | union res_sockaddr_union { | |
182 | struct sockaddr_in sin; | |
183 | #ifdef IN6ADDR_ANY_INIT | |
184 | struct sockaddr_in6 sin6; | |
185 | #endif | |
186 | #ifdef ISC_ALIGN64 | |
187 | int64_t __align64; /* 64bit alignment */ | |
188 | #else | |
189 | int32_t __align32; /* 32bit alignment */ | |
190 | #endif | |
191 | char __space[128]; /* max size */ | |
984263bc MD |
192 | }; |
193 | ||
984263bc | 194 | /* |
21fcee4d | 195 | * Resolver flags (used to be discrete per-module statics ints). |
984263bc | 196 | */ |
21fcee4d PA |
197 | #define RES_F_VC 0x00000001 /* socket is TCP */ |
198 | #define RES_F_CONN 0x00000002 /* socket is connected */ | |
199 | #define RES_F_EDNS0ERR 0x00000004 /* EDNS0 caused errors */ | |
200 | #define RES_F__UNUSED 0x00000008 /* (unused) */ | |
201 | #define RES_F_LASTMASK 0x000000F0 /* ordinal server of last res_nsend */ | |
202 | #define RES_F_LASTSHIFT 4 /* bit position of LASTMASK "flag" */ | |
203 | #define RES_GETLAST(res) (((res)._flags & RES_F_LASTMASK) >> RES_F_LASTSHIFT) | |
204 | ||
205 | /* res_findzonecut2() options */ | |
206 | #define RES_EXHAUSTIVE 0x00000001 /* always do all queries */ | |
207 | #define RES_IPV4ONLY 0x00000002 /* IPv4 only */ | |
208 | #define RES_IPV6ONLY 0x00000004 /* IPv6 only */ | |
984263bc MD |
209 | |
210 | /* | |
211 | * Resolver options (keep these in synch with res_debug.c, please) | |
212 | */ | |
213 | #define RES_INIT 0x00000001 /* address initialized */ | |
214 | #define RES_DEBUG 0x00000002 /* print debug messages */ | |
215 | #define RES_AAONLY 0x00000004 /* authoritative answers only (!IMPL)*/ | |
216 | #define RES_USEVC 0x00000008 /* use virtual circuit */ | |
217 | #define RES_PRIMARY 0x00000010 /* query primary server only (!IMPL) */ | |
218 | #define RES_IGNTC 0x00000020 /* ignore truncation errors */ | |
219 | #define RES_RECURSE 0x00000040 /* recursion desired */ | |
220 | #define RES_DEFNAMES 0x00000080 /* use default domain name */ | |
221 | #define RES_STAYOPEN 0x00000100 /* Keep TCP socket open */ | |
222 | #define RES_DNSRCH 0x00000200 /* search up local domain tree */ | |
223 | #define RES_INSECURE1 0x00000400 /* type 1 security disabled */ | |
224 | #define RES_INSECURE2 0x00000800 /* type 2 security disabled */ | |
225 | #define RES_NOALIASES 0x00001000 /* shuts off HOSTALIASES feature */ | |
226 | #define RES_USE_INET6 0x00002000 /* use/map IPv6 in gethostbyname() */ | |
21fcee4d PA |
227 | #define RES_ROTATE 0x00004000 /* rotate ns list after each query */ |
228 | #define RES_NOCHECKNAME 0x00008000 /* do not check names for sanity. */ | |
229 | #define RES_KEEPTSIG 0x00010000 /* do not strip TSIG records */ | |
230 | #define RES_BLAST 0x00020000 /* blast all recursive servers */ | |
231 | #define RES_NSID 0x00040000 /* request name server ID */ | |
232 | #define RES_NOTLDQUERY 0x00100000 /* don't unqualified name as a tld */ | |
233 | #define RES_USE_DNSSEC 0x00200000 /* use DNSSEC using OK bit in OPT */ | |
234 | /* #define RES_DEBUG2 0x00400000 */ /* nslookup internal */ | |
984263bc | 235 | /* KAME extensions: use higher bit to avoid conflict with ISC use */ |
21fcee4d PA |
236 | #define RES_USE_DNAME 0x10000000 /* use DNAME */ |
237 | #define RES_USE_EDNS0 0x40000000 /* use EDNS0 if configured */ | |
238 | #define RES_NO_NIBBLE2 0x80000000 /* disable alternate nibble lookup */ | |
984263bc | 239 | |
21fcee4d PA |
240 | #define RES_DEFAULT (RES_RECURSE | RES_DEFNAMES | \ |
241 | RES_DNSRCH | RES_NO_NIBBLE2) | |
984263bc MD |
242 | |
243 | /* | |
244 | * Resolver "pfcode" values. Used by dig. | |
245 | */ | |
246 | #define RES_PRF_STATS 0x00000001 | |
247 | #define RES_PRF_UPDATE 0x00000002 | |
248 | #define RES_PRF_CLASS 0x00000004 | |
249 | #define RES_PRF_CMD 0x00000008 | |
250 | #define RES_PRF_QUES 0x00000010 | |
251 | #define RES_PRF_ANS 0x00000020 | |
252 | #define RES_PRF_AUTH 0x00000040 | |
253 | #define RES_PRF_ADD 0x00000080 | |
254 | #define RES_PRF_HEAD1 0x00000100 | |
255 | #define RES_PRF_HEAD2 0x00000200 | |
256 | #define RES_PRF_TTLID 0x00000400 | |
257 | #define RES_PRF_HEADX 0x00000800 | |
258 | #define RES_PRF_QUERY 0x00001000 | |
259 | #define RES_PRF_REPLY 0x00002000 | |
21fcee4d PA |
260 | #define RES_PRF_INIT 0x00004000 |
261 | #define RES_PRF_TRUNC 0x00008000 | |
262 | /* 0x00010000 */ | |
984263bc | 263 | |
21fcee4d PA |
264 | /* Things involving an internal (static) resolver context. */ |
265 | __BEGIN_DECLS | |
266 | extern struct __res_state *__res_state(void); | |
267 | __END_DECLS | |
268 | #define _res (*__res_state()) | |
984263bc | 269 | |
21fcee4d PA |
270 | #ifndef __BIND_NOSTATIC |
271 | #define fp_nquery __fp_nquery | |
272 | #define fp_query __fp_query | |
273 | #define hostalias __hostalias | |
274 | #define p_query __p_query | |
275 | #define res_close __res_close | |
276 | #define res_init __res_init | |
277 | #define res_isourserver __res_isourserver | |
278 | #define res_mkquery __res_mkquery | |
279 | #define res_opt __res_opt | |
280 | #define res_query __res_query | |
281 | #define res_querydomain __res_querydomain | |
282 | #define res_search __res_search | |
283 | #define res_send __res_send | |
284 | #define res_sendsigned __res_sendsigned | |
984263bc | 285 | |
21fcee4d PA |
286 | __BEGIN_DECLS |
287 | void fp_nquery(const u_char *, int, FILE *); | |
288 | void fp_query(const u_char *, FILE *); | |
289 | const char *hostalias(const char *); | |
290 | void p_query(const u_char *); | |
291 | void res_close(void); | |
292 | int res_init(void); | |
293 | int res_isourserver(const struct sockaddr_in *); | |
294 | int res_mkquery(int, const char *, int, int, const u_char *, | |
295 | int, const u_char *, u_char *, int); | |
296 | int res_opt(int, u_char *, int, int); | |
297 | int res_query(const char *, int, int, u_char *, int); | |
298 | int res_querydomain(const char *, const char *, int, int, | |
299 | u_char *, int); | |
300 | int res_search(const char *, int, int, u_char *, int); | |
301 | int res_send(const u_char *, int, u_char *, int); | |
302 | int res_sendsigned(const u_char *, int, ns_tsig_key *, | |
303 | u_char *, int); | |
304 | __END_DECLS | |
305 | #endif | |
984263bc | 306 | |
21fcee4d PA |
307 | #if !defined(SHARED_LIBBIND) || defined(LIB) |
308 | /* | |
309 | * If libbind is a shared object (well, DLL anyway) | |
310 | * these externs break the linker when resolv.h is | |
311 | * included by a lib client (like named) | |
312 | * Make them go away if a client is including this | |
313 | * | |
314 | */ | |
315 | extern const struct res_sym __p_key_syms[]; | |
316 | extern const struct res_sym __p_cert_syms[]; | |
984263bc MD |
317 | extern const struct res_sym __p_class_syms[]; |
318 | extern const struct res_sym __p_type_syms[]; | |
21fcee4d PA |
319 | extern const struct res_sym __p_rcode_syms[]; |
320 | #endif /* SHARED_LIBBIND */ | |
984263bc | 321 | |
21fcee4d PA |
322 | #define b64_ntop __b64_ntop |
323 | #define b64_pton __b64_pton | |
324 | #define dn_comp __dn_comp | |
325 | #define dn_count_labels __dn_count_labels | |
326 | #define dn_expand __dn_expand | |
327 | #define dn_skipname __dn_skipname | |
328 | #define fp_resstat __fp_resstat | |
329 | #define loc_aton __loc_aton | |
330 | #define loc_ntoa __loc_ntoa | |
331 | #define p_cdname __p_cdname | |
332 | #define p_cdnname __p_cdnname | |
333 | #define p_class __p_class | |
334 | #define p_fqname __p_fqname | |
335 | #define p_fqnname __p_fqnname | |
336 | #define p_option __p_option | |
337 | #define p_secstodate __p_secstodate | |
338 | #define p_section __p_section | |
339 | #define p_time __p_time | |
340 | #define p_type __p_type | |
341 | #define p_rcode __p_rcode | |
342 | #define p_sockun __p_sockun | |
343 | #define putlong __putlong | |
344 | #define putshort __putshort | |
345 | #define res_dnok __res_dnok | |
346 | #if 0 | |
347 | #define res_findzonecut __res_findzonecut | |
348 | #endif | |
349 | #define res_findzonecut2 __res_findzonecut2 | |
350 | #define res_hnok __res_hnok | |
351 | #define res_hostalias __res_hostalias | |
352 | #define res_mailok __res_mailok | |
353 | #define res_nameinquery __res_nameinquery | |
354 | #define res_nclose __res_nclose | |
355 | #define res_ninit __res_ninit | |
356 | #define res_nmkquery __res_nmkquery | |
357 | #define res_pquery __res_pquery | |
358 | #define res_nquery __res_nquery | |
359 | #define res_nquerydomain __res_nquerydomain | |
360 | #define res_nsearch __res_nsearch | |
361 | #define res_nsend __res_nsend | |
362 | #if 0 | |
363 | #define res_nsendsigned __res_nsendsigned | |
364 | #endif | |
365 | #define res_nisourserver __res_nisourserver | |
366 | #define res_ownok __res_ownok | |
367 | #define res_queriesmatch __res_queriesmatch | |
368 | #define res_randomid __res_randomid | |
369 | #define sym_ntop __sym_ntop | |
370 | #define sym_ntos __sym_ntos | |
371 | #define sym_ston __sym_ston | |
372 | #define res_nopt __res_nopt | |
373 | #define res_nopt_rdata __res_nopt_rdata | |
374 | #define res_ndestroy __res_ndestroy | |
375 | #define res_nametoclass __res_nametoclass | |
376 | #define res_nametotype __res_nametotype | |
377 | #define res_setservers __res_setservers | |
378 | #define res_getservers __res_getservers | |
379 | #if 0 | |
380 | #define res_buildprotolist __res_buildprotolist | |
381 | #define res_destroyprotolist __res_destroyprotolist | |
382 | #define res_destroyservicelist __res_destroyservicelist | |
383 | #define res_get_nibblesuffix __res_get_nibblesuffix | |
384 | #define res_get_nibblesuffix2 __res_get_nibblesuffix2 | |
385 | #endif | |
386 | #define res_ourserver_p __res_ourserver_p | |
387 | #if 0 | |
388 | #define res_protocolname __res_protocolname | |
389 | #define res_protocolnumber __res_protocolnumber | |
390 | #endif | |
391 | #define res_send_setqhook __res_send_setqhook | |
392 | #define res_send_setrhook __res_send_setrhook | |
393 | #if 0 | |
394 | #define res_servicename __res_servicename | |
395 | #define res_servicenumber __res_servicenumber | |
396 | #endif | |
984263bc | 397 | __BEGIN_DECLS |
5baeefc7 JS |
398 | int res_hnok(const char *); |
399 | int res_ownok(const char *); | |
400 | int res_mailok(const char *); | |
401 | int res_dnok(const char *); | |
402 | int sym_ston(const struct res_sym *, const char *, int *); | |
403 | const char *sym_ntos(const struct res_sym *, int, int *); | |
404 | const char *sym_ntop(const struct res_sym *, int, int *); | |
405 | int b64_ntop(u_char const *, size_t, char *, size_t); | |
406 | int b64_pton(char const *, u_char *, size_t); | |
407 | int loc_aton(const char *, u_char *); | |
408 | const char *loc_ntoa(const u_char *, char *); | |
409 | int dn_skipname(const u_char *, const u_char *); | |
5baeefc7 JS |
410 | void putlong(u_int32_t, u_char *); |
411 | void putshort(u_int16_t, u_char *); | |
21fcee4d PA |
412 | u_int16_t _getshort(const u_char *); |
413 | u_int32_t _getlong(const u_char *); | |
5baeefc7 JS |
414 | const char *p_class(int); |
415 | const char *p_time(u_int32_t); | |
416 | const char *p_type(int); | |
21fcee4d PA |
417 | const char *p_rcode(int); |
418 | const char *p_sockun(union res_sockaddr_union, char *, size_t); | |
5baeefc7 JS |
419 | const u_char *p_cdnname(const u_char *, const u_char *, int, FILE *); |
420 | const u_char *p_cdname(const u_char *, const u_char *, FILE *); | |
21fcee4d | 421 | const u_char *p_fqnname(const u_char *, const u_char *, int, char *, int); |
5baeefc7 JS |
422 | const u_char *p_fqname(const u_char *, const u_char *, FILE *); |
423 | const char *p_option(u_long); | |
424 | char *p_secstodate(u_long); | |
425 | int dn_count_labels(const char *); | |
21fcee4d | 426 | int dn_comp(const char *, u_char *, int, u_char **, u_char **); |
5baeefc7 JS |
427 | int dn_expand(const u_char *, const u_char *, const u_char *, |
428 | char *, int); | |
5baeefc7 | 429 | u_int res_randomid(void); |
21fcee4d PA |
430 | int res_nameinquery(const char *, int, int, const u_char *, |
431 | const u_char *); | |
5baeefc7 JS |
432 | int res_queriesmatch(const u_char *, const u_char *, |
433 | const u_char *, const u_char *); | |
5baeefc7 | 434 | const char *p_section(int, int); |
21fcee4d PA |
435 | /* Things involving a resolver context. */ |
436 | int res_ninit(res_state); | |
437 | int res_nisourserver(const res_state, const struct sockaddr_in *); | |
438 | void fp_resstat(const res_state, FILE *); | |
439 | void res_pquery(const res_state, const u_char *, int, FILE *); | |
440 | const char *res_hostalias(const res_state, const char *, char *, size_t); | |
441 | int res_nquery(res_state, const char *, int, int, u_char *, int); | |
442 | int res_nsearch(res_state, const char *, int, int, u_char *, int); | |
443 | int res_nquerydomain(res_state, const char *, const char *, | |
444 | int, int, u_char *, int); | |
445 | int res_nmkquery(res_state, int, const char *, int, int, | |
446 | const u_char *, int, const u_char *, | |
447 | u_char *, int); | |
448 | int res_nsend(res_state, const u_char *, int, u_char *, int); | |
449 | #if 0 | |
450 | int res_nsendsigned(res_state, const u_char *, int, | |
451 | ns_tsig_key *, u_char *, int); | |
452 | int res_findzonecut(res_state, const char *, ns_class, int, | |
453 | char *, size_t, struct in_addr *, int); | |
454 | #endif | |
455 | int res_findzonecut2(res_state, const char *, ns_class, int, | |
456 | char *, size_t, | |
457 | union res_sockaddr_union *, int); | |
458 | void res_nclose(res_state); | |
459 | int res_nopt(res_state, int, u_char *, int, int); | |
460 | int res_nopt_rdata(res_state, int, u_char *, int, u_char *, | |
461 | u_short, u_short, u_char *); | |
462 | void res_send_setqhook(res_send_qhook); | |
463 | void res_send_setrhook(res_send_rhook); | |
464 | int __res_vinit(res_state, int); | |
465 | #if 0 | |
466 | void res_destroyservicelist(void); | |
467 | const char *res_servicename(u_int16_t, const char *); | |
468 | const char *res_protocolname(int); | |
469 | void res_destroyprotolist(void); | |
470 | void res_buildprotolist(void); | |
471 | const char *res_get_nibblesuffix(res_state); | |
472 | const char *res_get_nibblesuffix2(res_state); | |
984263bc | 473 | #endif |
21fcee4d PA |
474 | void res_ndestroy(res_state); |
475 | u_int16_t res_nametoclass(const char *, int *); | |
476 | u_int16_t res_nametotype(const char *, int *); | |
477 | void res_setservers(res_state, const union res_sockaddr_union *, | |
478 | int); | |
479 | int res_getservers(res_state, union res_sockaddr_union *, int); | |
984263bc MD |
480 | __END_DECLS |
481 | ||
482 | #endif /* !_RESOLV_H_ */ |