1*941451a5Stodd /* $OpenBSD: resolv.h,v 1.5 2001/01/04 21:37:11 todd Exp $ */ 2f2f113e9Sitojun 3f2f113e9Sitojun /* 4f2f113e9Sitojun * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. 5f2f113e9Sitojun * All rights reserved. 6f2f113e9Sitojun * 7f2f113e9Sitojun * Redistribution and use in source and binary forms, with or without 8f2f113e9Sitojun * modification, are permitted provided that the following conditions 9f2f113e9Sitojun * are met: 10f2f113e9Sitojun * 1. Redistributions of source code must retain the above copyright 11f2f113e9Sitojun * notice, this list of conditions and the following disclaimer. 12f2f113e9Sitojun * 2. Redistributions in binary form must reproduce the above copyright 13f2f113e9Sitojun * notice, this list of conditions and the following disclaimer in the 14f2f113e9Sitojun * documentation and/or other materials provided with the distribution. 15f2f113e9Sitojun * 3. Neither the name of the project nor the names of its contributors 16f2f113e9Sitojun * may be used to endorse or promote products derived from this software 17f2f113e9Sitojun * without specific prior written permission. 18f2f113e9Sitojun * 19f2f113e9Sitojun * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND 20f2f113e9Sitojun * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21f2f113e9Sitojun * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22f2f113e9Sitojun * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE 23f2f113e9Sitojun * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24f2f113e9Sitojun * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25f2f113e9Sitojun * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26f2f113e9Sitojun * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27f2f113e9Sitojun * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28f2f113e9Sitojun * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29f2f113e9Sitojun * SUCH DAMAGE. 30f2f113e9Sitojun */ 311231c441Sdownsj 32df930be7Sderaadt /* 331ddd5cc1Sdm * ++Copyright++ 1983, 1987, 1989, 1993 341ddd5cc1Sdm * - 351ddd5cc1Sdm * Copyright (c) 1983, 1987, 1989, 1993 361ddd5cc1Sdm * The Regents of the University of California. All rights reserved. 37df930be7Sderaadt * 38df930be7Sderaadt * Redistribution and use in source and binary forms, with or without 39df930be7Sderaadt * modification, are permitted provided that the following conditions 40df930be7Sderaadt * are met: 41df930be7Sderaadt * 1. Redistributions of source code must retain the above copyright 42df930be7Sderaadt * notice, this list of conditions and the following disclaimer. 43df930be7Sderaadt * 2. Redistributions in binary form must reproduce the above copyright 44df930be7Sderaadt * notice, this list of conditions and the following disclaimer in the 45df930be7Sderaadt * documentation and/or other materials provided with the distribution. 46df930be7Sderaadt * 3. All advertising materials mentioning features or use of this software 47df930be7Sderaadt * must display the following acknowledgement: 48df930be7Sderaadt * This product includes software developed by the University of 49df930be7Sderaadt * California, Berkeley and its contributors. 50df930be7Sderaadt * 4. Neither the name of the University nor the names of its contributors 51df930be7Sderaadt * may be used to endorse or promote products derived from this software 52df930be7Sderaadt * without specific prior written permission. 53df930be7Sderaadt * 54df930be7Sderaadt * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 55df930be7Sderaadt * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 56df930be7Sderaadt * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 57df930be7Sderaadt * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 58df930be7Sderaadt * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 59df930be7Sderaadt * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 60df930be7Sderaadt * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 61df930be7Sderaadt * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 62df930be7Sderaadt * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 63df930be7Sderaadt * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 64df930be7Sderaadt * SUCH DAMAGE. 651ddd5cc1Sdm * - 661ddd5cc1Sdm * Portions Copyright (c) 1993 by Digital Equipment Corporation. 67df930be7Sderaadt * 681ddd5cc1Sdm * Permission to use, copy, modify, and distribute this software for any 691ddd5cc1Sdm * purpose with or without fee is hereby granted, provided that the above 701ddd5cc1Sdm * copyright notice and this permission notice appear in all copies, and that 711ddd5cc1Sdm * the name of Digital Equipment Corporation not be used in advertising or 721ddd5cc1Sdm * publicity pertaining to distribution of the document or software without 731ddd5cc1Sdm * specific, written prior permission. 741ddd5cc1Sdm * 751ddd5cc1Sdm * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL 761ddd5cc1Sdm * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES 771ddd5cc1Sdm * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT 781ddd5cc1Sdm * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 791ddd5cc1Sdm * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 801ddd5cc1Sdm * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS 811ddd5cc1Sdm * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 821ddd5cc1Sdm * SOFTWARE. 831ddd5cc1Sdm * - 841ddd5cc1Sdm * --Copyright-- 851ddd5cc1Sdm */ 861ddd5cc1Sdm 871ddd5cc1Sdm /* 881ddd5cc1Sdm * @(#)resolv.h 8.1 (Berkeley) 6/2/93 891231c441Sdownsj * $From: resolv.h,v 8.17 1996/11/26 10:11:20 vixie Exp $ 90df930be7Sderaadt */ 91df930be7Sderaadt 92df930be7Sderaadt #ifndef _RESOLV_H_ 93df930be7Sderaadt #define _RESOLV_H_ 94df930be7Sderaadt 951ddd5cc1Sdm #include <sys/param.h> 961ddd5cc1Sdm #if (!defined(BSD)) || (BSD < 199306) 971ddd5cc1Sdm # include <sys/bitypes.h> 981ddd5cc1Sdm #else 991ddd5cc1Sdm # include <sys/types.h> 1001ddd5cc1Sdm #endif 1011ddd5cc1Sdm #include <sys/cdefs.h> 102f2f113e9Sitojun #include <sys/socket.h> 1031ddd5cc1Sdm #include <stdio.h> 1041ddd5cc1Sdm 105df930be7Sderaadt /* 1061231c441Sdownsj * Revision information. This is the release date in YYYYMMDD format. 1071231c441Sdownsj * It can change every day so the right thing to do with it is use it 1081231c441Sdownsj * in preprocessor commands such as "#if (__RES > 19931104)". Do not 109df930be7Sderaadt * compare for equality; rather, use it to determine whether your resolver 110df930be7Sderaadt * is new enough to contain a certain feature. 111df930be7Sderaadt */ 112df930be7Sderaadt 1131231c441Sdownsj #define __RES 19960801 114df930be7Sderaadt 115df930be7Sderaadt /* 116df930be7Sderaadt * Resolver configuration file. 117df930be7Sderaadt * Normally not present, but may contain the address of the 118*941451a5Stodd * initial name server(s) to query and the domain search list. 119df930be7Sderaadt */ 120df930be7Sderaadt 121df930be7Sderaadt #ifndef _PATH_RESCONF 122df930be7Sderaadt #define _PATH_RESCONF "/etc/resolv.conf" 123df930be7Sderaadt #endif 124df930be7Sderaadt 125df930be7Sderaadt /* 126df930be7Sderaadt * Global defines and variables for resolver stub. 127df930be7Sderaadt */ 128df930be7Sderaadt #define MAXNS 3 /* max # name servers we'll track */ 129df930be7Sderaadt #define MAXDFLSRCH 3 /* # default domain levels to try */ 130df930be7Sderaadt #define MAXDNSRCH 6 /* max # domains in search path */ 131df930be7Sderaadt #define LOCALDOMAINPARTS 2 /* min levels in name that is "local" */ 132df930be7Sderaadt #define MAXDNSLUS 4 /* max # of host lookup types */ 133df930be7Sderaadt 134df930be7Sderaadt #define RES_TIMEOUT 5 /* min. seconds between retries */ 135df930be7Sderaadt #define MAXRESOLVSORT 10 /* number of net to sort on */ 136df930be7Sderaadt #define RES_MAXNDOTS 15 /* should reflect bit field size */ 137df930be7Sderaadt 138df930be7Sderaadt struct __res_state { 139df930be7Sderaadt int retrans; /* retransmition time interval */ 140df930be7Sderaadt int retry; /* number of times to retransmit */ 1411ddd5cc1Sdm u_long options; /* option flags - see below. */ 142df930be7Sderaadt int nscount; /* number of name servers */ 1431ddd5cc1Sdm struct sockaddr_in 1441ddd5cc1Sdm nsaddr_list[MAXNS]; /* address of name server */ 145df930be7Sderaadt #define nsaddr nsaddr_list[0] /* for backward compatibility */ 1461231c441Sdownsj u_short id; /* current message id */ 147df930be7Sderaadt char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */ 1481231c441Sdownsj char defdname[256]; /* default domain (deprecated) */ 1491ddd5cc1Sdm u_long pfcode; /* RES_PRF_ flags - see below. */ 1501ddd5cc1Sdm unsigned ndots:4; /* threshold for initial abs. query */ 1511ddd5cc1Sdm unsigned nsort:4; /* number of elements in sort_list[] */ 152df930be7Sderaadt char unused[3]; 153df930be7Sderaadt struct { 154df930be7Sderaadt struct in_addr addr; 155df930be7Sderaadt u_int32_t mask; 156df930be7Sderaadt } sort_list[MAXRESOLVSORT]; 157df930be7Sderaadt char lookups[MAXDNSLUS]; 1581231c441Sdownsj char pad[68]; /* on an i386 this means 512b total */ 159df930be7Sderaadt }; 160df930be7Sderaadt 161f2f113e9Sitojun #if 1 /* INET6 */ 162f2f113e9Sitojun /* 163f2f113e9Sitojun * replacement of __res_state, separated to keep binary compatibility. 164f2f113e9Sitojun */ 165f2f113e9Sitojun struct __res_state_ext { 166f2f113e9Sitojun struct sockaddr_storage nsaddr_list[MAXNS]; 167f2f113e9Sitojun struct { 168f2f113e9Sitojun int af; /* address family for addr, mask */ 169f2f113e9Sitojun union { 170f2f113e9Sitojun struct in_addr ina; 171f2f113e9Sitojun struct in6_addr in6a; 172f2f113e9Sitojun } addr, mask; 173f2f113e9Sitojun } sort_list[MAXRESOLVSORT]; 174f2f113e9Sitojun }; 175f2f113e9Sitojun #endif 176f2f113e9Sitojun 177f2f113e9Sitojun 178df930be7Sderaadt /* 1791ddd5cc1Sdm * Resolver options (keep these in synch with res_debug.c, please) 180df930be7Sderaadt */ 1811ddd5cc1Sdm #define RES_INIT 0x00000001 /* address initialized */ 1821ddd5cc1Sdm #define RES_DEBUG 0x00000002 /* print debug messages */ 1831ddd5cc1Sdm #define RES_AAONLY 0x00000004 /* authoritative answers only (!IMPL)*/ 1841ddd5cc1Sdm #define RES_USEVC 0x00000008 /* use virtual circuit */ 1851ddd5cc1Sdm #define RES_PRIMARY 0x00000010 /* query primary server only (!IMPL) */ 1861ddd5cc1Sdm #define RES_IGNTC 0x00000020 /* ignore trucation errors */ 1871ddd5cc1Sdm #define RES_RECURSE 0x00000040 /* recursion desired */ 1881ddd5cc1Sdm #define RES_DEFNAMES 0x00000080 /* use default domain name */ 1891ddd5cc1Sdm #define RES_STAYOPEN 0x00000100 /* Keep TCP socket open */ 1901ddd5cc1Sdm #define RES_DNSRCH 0x00000200 /* search up local domain tree */ 1911ddd5cc1Sdm #define RES_INSECURE1 0x00000400 /* type 1 security disabled */ 1921ddd5cc1Sdm #define RES_INSECURE2 0x00000800 /* type 2 security disabled */ 1931ddd5cc1Sdm #define RES_NOALIASES 0x00001000 /* shuts off HOSTALIASES feature */ 1941231c441Sdownsj #define RES_USE_INET6 0x00002000 /* use/map IPv6 in gethostbyname() */ 195df930be7Sderaadt 196df930be7Sderaadt #define RES_DEFAULT (RES_RECURSE | RES_DEFNAMES | RES_DNSRCH) 197df930be7Sderaadt 198df930be7Sderaadt /* 199df930be7Sderaadt * Resolver "pfcode" values. Used by dig. 200df930be7Sderaadt */ 2011ddd5cc1Sdm #define RES_PRF_STATS 0x00000001 2021ddd5cc1Sdm /* 0x00000002 */ 2031ddd5cc1Sdm #define RES_PRF_CLASS 0x00000004 2041ddd5cc1Sdm #define RES_PRF_CMD 0x00000008 2051ddd5cc1Sdm #define RES_PRF_QUES 0x00000010 2061ddd5cc1Sdm #define RES_PRF_ANS 0x00000020 2071ddd5cc1Sdm #define RES_PRF_AUTH 0x00000040 2081ddd5cc1Sdm #define RES_PRF_ADD 0x00000080 2091ddd5cc1Sdm #define RES_PRF_HEAD1 0x00000100 2101ddd5cc1Sdm #define RES_PRF_HEAD2 0x00000200 2111ddd5cc1Sdm #define RES_PRF_TTLID 0x00000400 2121ddd5cc1Sdm #define RES_PRF_HEADX 0x00000800 2131ddd5cc1Sdm #define RES_PRF_QUERY 0x00001000 2141ddd5cc1Sdm #define RES_PRF_REPLY 0x00002000 2151ddd5cc1Sdm #define RES_PRF_INIT 0x00004000 2161ddd5cc1Sdm /* 0x00008000 */ 2171ddd5cc1Sdm 2181ddd5cc1Sdm /* hooks are still experimental as of 4.9.2 */ 2191ddd5cc1Sdm typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error } 2201ddd5cc1Sdm res_sendhookact; 2211ddd5cc1Sdm 2221ddd5cc1Sdm typedef res_sendhookact (*res_send_qhook)__P((struct sockaddr_in * const *ns, 2231ddd5cc1Sdm const u_char **query, 2241ddd5cc1Sdm int *querylen, 2251ddd5cc1Sdm u_char *ans, 2261ddd5cc1Sdm int anssiz, 2271ddd5cc1Sdm int *resplen)); 2281ddd5cc1Sdm 2291ddd5cc1Sdm typedef res_sendhookact (*res_send_rhook)__P((const struct sockaddr_in *ns, 2301ddd5cc1Sdm const u_char *query, 2311ddd5cc1Sdm int querylen, 2321ddd5cc1Sdm u_char *ans, 2331ddd5cc1Sdm int anssiz, 2341ddd5cc1Sdm int *resplen)); 235df930be7Sderaadt 2361231c441Sdownsj struct res_sym { 2371231c441Sdownsj int number; /* Identifying number, like T_MX */ 2381231c441Sdownsj char * name; /* Its symbolic name, like "MX" */ 2391231c441Sdownsj char * humanname; /* Its fun name, like "mail exchanger" */ 2401231c441Sdownsj }; 2411231c441Sdownsj 242df930be7Sderaadt extern struct __res_state _res; 243f2f113e9Sitojun #if 1 /* INET6 */ 244f2f113e9Sitojun extern struct __res_state_ext _res_ext; 245f2f113e9Sitojun #endif 2461231c441Sdownsj extern const struct res_sym __p_class_syms[]; 2471231c441Sdownsj extern const struct res_sym __p_type_syms[]; 248df930be7Sderaadt 249df930be7Sderaadt /* Private routines shared between libc/net, named, nslookup and others. */ 2501231c441Sdownsj #define res_hnok __res_hnok 2511231c441Sdownsj #define res_ownok __res_ownok 2521231c441Sdownsj #define res_mailok __res_mailok 2531231c441Sdownsj #define res_dnok __res_dnok 2541231c441Sdownsj #define sym_ston __sym_ston 2551231c441Sdownsj #define sym_ntos __sym_ntos 2561231c441Sdownsj #define sym_ntop __sym_ntop 2571231c441Sdownsj #define b64_ntop __b64_ntop 2581231c441Sdownsj #define b64_pton __b64_pton 2591231c441Sdownsj #define loc_ntoa __loc_ntoa 2601231c441Sdownsj #define loc_aton __loc_aton 261df930be7Sderaadt #define dn_skipname __dn_skipname 2621231c441Sdownsj #define fp_resstat __fp_resstat 263df930be7Sderaadt #define fp_query __fp_query 2641ddd5cc1Sdm #define fp_nquery __fp_nquery 265df930be7Sderaadt #define hostalias __hostalias 266df930be7Sderaadt #define putlong __putlong 267df930be7Sderaadt #define putshort __putshort 268df930be7Sderaadt #define p_class __p_class 269df930be7Sderaadt #define p_time __p_time 270df930be7Sderaadt #define p_type __p_type 2711231c441Sdownsj #define p_query __p_query 2721ddd5cc1Sdm #define p_cdnname __p_cdnname 2731ddd5cc1Sdm #define p_cdname __p_cdname 2741231c441Sdownsj #define p_fqnname __p_fqnname 2751ddd5cc1Sdm #define p_fqname __p_fqname 2761ddd5cc1Sdm #define p_rr __p_rr 2771ddd5cc1Sdm #define p_option __p_option 2781231c441Sdownsj #define p_secstodate __p_secstodate 2791231c441Sdownsj #define dn_count_labels __dn_count_labels 2801231c441Sdownsj #define dn_comp __dn_comp 2811ddd5cc1Sdm #define res_randomid __res_randomid 2821231c441Sdownsj #define res_send __res_send 2831ddd5cc1Sdm #define res_isourserver __res_isourserver 2841ddd5cc1Sdm #define res_nameinquery __res_nameinquery 2851ddd5cc1Sdm #define res_queriesmatch __res_queriesmatch 2861231c441Sdownsj #define res_close __res_close 2871231c441Sdownsj 2881231c441Sdownsj #ifdef BIND_RES_POSIX3 2891231c441Sdownsj #define dn_expand __dn_expand 2901231c441Sdownsj #define res_init __res_init 2911231c441Sdownsj #define res_query __res_query 2921231c441Sdownsj #define res_search __res_search 2931231c441Sdownsj #define res_querydomain __res_querydomain 2941231c441Sdownsj #define res_mkquery __res_mkquery 2951231c441Sdownsj #endif 2961231c441Sdownsj 297df930be7Sderaadt __BEGIN_DECLS 2981231c441Sdownsj int res_hnok __P((const char *)); 2991231c441Sdownsj int res_ownok __P((const char *)); 3001231c441Sdownsj int res_mailok __P((const char *)); 3011231c441Sdownsj int res_dnok __P((const char *)); 3021231c441Sdownsj int sym_ston __P((const struct res_sym *, char *, int *)); 3031231c441Sdownsj const char * sym_ntos __P((const struct res_sym *, int, int *)); 3041231c441Sdownsj const char * sym_ntop __P((const struct res_sym *, int, int *)); 3051231c441Sdownsj int b64_ntop __P((u_char const *, size_t, char *, size_t)); 3061231c441Sdownsj int b64_pton __P((char const *, u_char *, size_t)); 3071231c441Sdownsj int loc_aton __P((const char *, u_char *)); 3081231c441Sdownsj const char * loc_ntoa __P((const u_char *, char *)); 3091231c441Sdownsj int dn_skipname __P((const u_char *, const u_char *)); 3101231c441Sdownsj void fp_resstat __P((struct __res_state *, FILE *)); 3111231c441Sdownsj void fp_query __P((const u_char *, FILE *)); 3121231c441Sdownsj void fp_nquery __P((const u_char *, int, FILE *)); 3131231c441Sdownsj const char * hostalias __P((const char *)); 3141231c441Sdownsj void putlong __P((u_int32_t, u_char *)); 3151231c441Sdownsj void putshort __P((u_int16_t, u_char *)); 3161231c441Sdownsj const char * p_class __P((int)); 3171231c441Sdownsj const char * p_time __P((u_int32_t)); 3181231c441Sdownsj const char * p_type __P((int)); 3191231c441Sdownsj void p_query __P((const u_char *)); 3201231c441Sdownsj const u_char * p_cdnname __P((const u_char *, const u_char *, int, FILE *)); 3211231c441Sdownsj const u_char * p_cdname __P((const u_char *, const u_char *, FILE *)); 3221231c441Sdownsj const u_char * p_fqnname __P((const u_char *cp, const u_char *msg, 3231231c441Sdownsj int, char *, int)); 3241231c441Sdownsj const u_char * p_fqname __P((const u_char *, const u_char *, FILE *)); 3251231c441Sdownsj const u_char * p_rr __P((const u_char *, const u_char *, FILE *)); 3261231c441Sdownsj const char * p_option __P((u_long option)); 3271231c441Sdownsj char * p_secstodate __P((u_long)); 3281231c441Sdownsj int dn_count_labels __P((char *)); 3291231c441Sdownsj int dn_comp __P((const char *, u_char *, int, 3301231c441Sdownsj u_char **, u_char **)); 331df930be7Sderaadt int dn_expand __P((const u_char *, const u_char *, const u_char *, 3321ddd5cc1Sdm char *, int)); 333df930be7Sderaadt int res_init __P((void)); 3341231c441Sdownsj u_int res_randomid __P((void)); 3351ddd5cc1Sdm int res_query __P((const char *, int, int, u_char *, int)); 336df930be7Sderaadt int res_search __P((const char *, int, int, u_char *, int)); 3371ddd5cc1Sdm int res_querydomain __P((const char *, const char *, int, int, 3381ddd5cc1Sdm u_char *, int)); 3391ddd5cc1Sdm int res_mkquery __P((int, const char *, int, int, const u_char *, int, 3401ddd5cc1Sdm const u_char *, u_char *, int)); 3411ddd5cc1Sdm int res_send __P((const u_char *, int, u_char *, int)); 3421ddd5cc1Sdm int res_isourserver __P((const struct sockaddr_in *)); 3431ddd5cc1Sdm int res_nameinquery __P((const char *, int, int, 3441ddd5cc1Sdm const u_char *, const u_char *)); 3451ddd5cc1Sdm int res_queriesmatch __P((const u_char *, const u_char *, 3461ddd5cc1Sdm const u_char *, const u_char *)); 3471231c441Sdownsj void res_close __P((void)); 348df930be7Sderaadt __END_DECLS 349df930be7Sderaadt 350df930be7Sderaadt #endif /* !_RESOLV_H_ */ 351