glibc (2.38)

(root)/
include/
resolv.h
       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   * 4. Neither the name of the University nor the names of its contributors
      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  /*
      31   * Portions Copyright (c) 1996-1999 by Internet Software Consortium.
      32   *
      33   * Permission to use, copy, modify, and distribute this software for any
      34   * purpose with or without fee is hereby granted, provided that the above
      35   * copyright notice and this permission notice appear in all copies.
      36   *
      37   * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
      38   * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
      39   * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
      40   * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
      41   * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
      42   * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
      43   * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
      44   * SOFTWARE.
      45   */
      46  
      47  /*
      48   *	@(#)resolv.h	8.1 (Berkeley) 6/2/93
      49   *	$BINDId: resolv.h,v 8.31 2000/03/30 20:16:50 vixie Exp $
      50   */
      51  
      52  #ifndef _RESOLV_H_
      53  #define _RESOLV_H_
      54  
      55  #include <sys/cdefs.h>
      56  #include <sys/param.h>
      57  #include <sys/types.h>
      58  #include <stdio.h>
      59  #include <netinet/in.h>
      60  #include <arpa/nameser.h>
      61  #include <bits/types/res_state.h>
      62  
      63  /*
      64   * Global defines and variables for resolver stub.
      65   */
      66  #define LOCALDOMAINPARTS	2	/* min levels in name that is "local" */
      67  
      68  #define RES_TIMEOUT		5	/* min. seconds between retries */
      69  #define RES_MAXNDOTS		15	/* should reflect bit field size */
      70  #define RES_MAXRETRANS		30	/* only for resolv.conf/RES_OPTIONS */
      71  #define RES_MAXRETRY		5	/* only for resolv.conf/RES_OPTIONS */
      72  #define RES_DFLRETRY		2	/* Default #/tries. */
      73  #define RES_MAXTIME		65535	/* Infinity, in milliseconds. */
      74  
      75  #define nsaddr	nsaddr_list[0]		/* for backward compatibility */
      76  
      77  /*
      78   * Revision information.  This is the release date in YYYYMMDD format.
      79   * It can change every day so the right thing to do with it is use it
      80   * in preprocessor commands such as "#if (__RES > 19931104)".  Do not
      81   * compare for equality; rather, use it to determine whether your resolver
      82   * is new enough to contain a certain feature.
      83   */
      84  
      85  #define	__RES	19991006
      86  
      87  /*
      88   * Resolver configuration file.
      89   * Normally not present, but may contain the address of the
      90   * initial name server(s) to query and the domain search list.
      91   */
      92  
      93  #ifndef _PATH_RESCONF
      94  #define _PATH_RESCONF        "/etc/resolv.conf"
      95  #endif
      96  
      97  struct res_sym {
      98  	int	number;		/* Identifying number, like T_MX */
      99  	char *	name;		/* Its symbolic name, like "MX" */
     100  	char *	humanname;	/* Its fun name, like "mail exchanger" */
     101  };
     102  
     103  /*
     104   * Resolver options (keep these in synch with res_debug.c, please)
     105   */
     106  #define RES_INIT	0x00000001	/* address initialized */
     107  #define RES_DEBUG	0x00000002	/* print debug messages */
     108  #define RES_AAONLY \
     109    __glibc_macro_warning ("RES_AAONLY is deprecated") 0x00000004
     110  #define RES_USEVC	0x00000008	/* use virtual circuit */
     111  #define RES_PRIMARY \
     112    __glibc_macro_warning ("RES_PRIMARY is deprecated") 0x00000010
     113  #define RES_IGNTC	0x00000020	/* ignore trucation errors */
     114  #define RES_RECURSE	0x00000040	/* recursion desired */
     115  #define RES_DEFNAMES	0x00000080	/* use default domain name */
     116  #define RES_STAYOPEN	0x00000100	/* Keep TCP socket open */
     117  #define RES_DNSRCH	0x00000200	/* search up local domain tree */
     118  #define	RES_NOALIASES	0x00001000	/* shuts off HOSTALIASES feature */
     119  #define RES_ROTATE	0x00004000	/* rotate ns list after each query */
     120  #define	RES_NOCHECKNAME \
     121    __glibc_macro_warning ("RES_NOCHECKNAME is deprecated") 0x00008000
     122  #define	RES_KEEPTSIG \
     123    __glibc_macro_warning ("RES_KEEPTSIG is deprecated") 0x00010000
     124  #define	RES_BLAST \
     125    __glibc_macro_warning ("RES_BLAST is deprecated") 0x00020000
     126  #define RES_USE_EDNS0	0x00100000	/* Use EDNS0.  */
     127  #define RES_SNGLKUP	0x00200000	/* one outstanding request at a time */
     128  #define RES_SNGLKUPREOP	0x00400000	/* -"-, but open new socket for each
     129  					   request */
     130  #define RES_USE_DNSSEC	0x00800000	/* use DNSSEC using OK bit in OPT */
     131  #define RES_NOTLDQUERY	0x01000000	/* Do not look up unqualified name
     132  					   as a TLD.  */
     133  #define RES_NORELOAD    0x02000000 /* No automatic configuration reload.  */
     134  #define RES_TRUSTAD     0x04000000 /* Request AD bit, keep it in responses.  */
     135  #define RES_NOAAAA      0x08000000 /* Suppress AAAA queries.  */
     136  
     137  #define RES_DEFAULT	(RES_RECURSE|RES_DEFNAMES|RES_DNSRCH)
     138  
     139  /*
     140   * Resolver "pfcode" values.  Used by dig.
     141   */
     142  #define RES_PRF_STATS	0x00000001
     143  #define RES_PRF_UPDATE	0x00000002
     144  #define RES_PRF_CLASS   0x00000004
     145  #define RES_PRF_CMD	0x00000008
     146  #define RES_PRF_QUES	0x00000010
     147  #define RES_PRF_ANS	0x00000020
     148  #define RES_PRF_AUTH	0x00000040
     149  #define RES_PRF_ADD	0x00000080
     150  #define RES_PRF_HEAD1	0x00000100
     151  #define RES_PRF_HEAD2	0x00000200
     152  #define RES_PRF_TTLID	0x00000400
     153  #define RES_PRF_HEADX	0x00000800
     154  #define RES_PRF_QUERY	0x00001000
     155  #define RES_PRF_REPLY	0x00002000
     156  #define RES_PRF_INIT	0x00004000
     157  /*			0x00008000	*/
     158  
     159  /* Things involving an internal (static) resolver context. */
     160  __BEGIN_DECLS
     161  extern struct __res_state *__res_state(void) __attribute__ ((__const__));
     162  __END_DECLS
     163  #define _res (*__res_state())
     164  
     165  #define fp_nquery		__fp_nquery
     166  #define fp_query		__fp_query
     167  #define hostalias		__hostalias
     168  #define p_query			__p_query
     169  #define res_close		__res_close
     170  #define res_init		__res_init
     171  #define res_isourserver		__res_isourserver
     172  
     173  #ifdef _LIBC
     174  # define __RESOLV_DEPRECATED
     175  # define __RESOLV_DEPRECATED_MSG(msg)
     176  #else
     177  # define __RESOLV_DEPRECATED __attribute_deprecated__
     178  # define __RESOLV_DEPRECATED_MSG(msg) __attribute_deprecated_msg__ (msg)
     179  #endif
     180  
     181  __BEGIN_DECLS
     182  void		fp_nquery (const unsigned char *, int, FILE *) __THROW
     183    __RESOLV_DEPRECATED;
     184  void		fp_query (const unsigned char *, FILE *) __THROW
     185    __RESOLV_DEPRECATED;
     186  const char *	hostalias (const char *) __THROW
     187    __RESOLV_DEPRECATED_MSG ("use getaddrinfo instead");
     188  void		p_query (const unsigned char *) __THROW
     189    __RESOLV_DEPRECATED;
     190  void		res_close (void) __THROW;
     191  int		res_init (void) __THROW;
     192  int		res_isourserver (const struct sockaddr_in *) __THROW
     193    __RESOLV_DEPRECATED;
     194  int		res_mkquery (int, const char *, int, int,
     195  			     const unsigned char *, int, const unsigned char *,
     196  			     unsigned char *, int) __THROW;
     197  int		res_query (const char *, int, int, unsigned char *, int)
     198       __THROW;
     199  int		res_querydomain (const char *, const char *, int, int,
     200  				 unsigned char *, int) __THROW;
     201  int		res_search (const char *, int, int, unsigned char *, int)
     202       __THROW;
     203  int		res_send (const unsigned char *, int, unsigned char *, int)
     204       __THROW;
     205  __END_DECLS
     206  
     207  #define b64_ntop		__b64_ntop
     208  #define b64_pton		__b64_pton
     209  #define dn_count_labels		__dn_count_labels
     210  #define fp_resstat		__fp_resstat
     211  #define loc_aton		__loc_aton
     212  #define loc_ntoa		__loc_ntoa
     213  #define p_cdname		__p_cdname
     214  #define p_cdnname		__p_cdnname
     215  #define p_class			__p_class
     216  #define p_fqname		__p_fqname
     217  #define p_fqnname		__p_fqnname
     218  #define p_option		__p_option
     219  #define p_time			__p_time
     220  #define p_type			__p_type
     221  #define p_rcode			__p_rcode
     222  #define putlong			__putlong
     223  #define putshort		__putshort
     224  #define res_hostalias		__res_hostalias
     225  #define res_nameinquery		__res_nameinquery
     226  #define res_nclose		__res_nclose
     227  #define res_ninit		__res_ninit
     228  #define res_queriesmatch	__res_queriesmatch
     229  #define res_randomid		__res_randomid
     230  #define sym_ntop		__sym_ntop
     231  #define sym_ntos		__sym_ntos
     232  #define sym_ston		__sym_ston
     233  __BEGIN_DECLS
     234  int		res_hnok (const char *) __THROW;
     235  int		res_ownok (const char *) __THROW;
     236  int		res_mailok (const char *) __THROW;
     237  int		res_dnok (const char *) __THROW;
     238  int		sym_ston (const struct res_sym *, const char *, int *) __THROW
     239    __RESOLV_DEPRECATED;
     240  const char *	sym_ntos (const struct res_sym *, int, int *) __THROW
     241    __RESOLV_DEPRECATED;
     242  const char *	sym_ntop (const struct res_sym *, int, int *) __THROW
     243    __RESOLV_DEPRECATED;
     244  int		b64_ntop (const unsigned char *, size_t, char *, size_t)
     245    __THROW;
     246  int		b64_pton (char const *, unsigned char *, size_t) __THROW;
     247  int		loc_aton (const char *__ascii, unsigned char *__binary) __THROW
     248    __RESOLV_DEPRECATED;
     249  const char *	loc_ntoa (const unsigned char *__binary, char *__ascii) __THROW
     250    __RESOLV_DEPRECATED;
     251  int		dn_skipname (const unsigned char *, const unsigned char *)
     252    __THROW;
     253  void		putlong (uint32_t, unsigned char *) __THROW
     254    __RESOLV_DEPRECATED_MSG ("use NS_PUT16 instead");
     255  void		putshort (uint16_t, unsigned char *) __THROW
     256    __RESOLV_DEPRECATED_MSG ("use NS_PUT32 instead");
     257  const char *	p_class (int) __THROW __RESOLV_DEPRECATED;
     258  const char *	p_time (uint32_t) __THROW __RESOLV_DEPRECATED;
     259  const char *	p_type (int) __THROW __RESOLV_DEPRECATED;
     260  const char *	p_rcode (int) __THROW __RESOLV_DEPRECATED;
     261  const unsigned char * p_cdnname (const unsigned char *, const unsigned char *,
     262  				 int, FILE *) __THROW __RESOLV_DEPRECATED;
     263  const unsigned char * p_cdname (const unsigned char *, const unsigned char *,
     264  				FILE *) __THROW __RESOLV_DEPRECATED;
     265  const unsigned char * p_fqnname (const unsigned char *__cp,
     266  				 const unsigned char *__msg,
     267  				 int, char *, int) __THROW __RESOLV_DEPRECATED;
     268  const unsigned char * p_fqname (const unsigned char *, const unsigned char *,
     269  				FILE *) __THROW __RESOLV_DEPRECATED;
     270  const char *	p_option (unsigned long __option) __THROW __RESOLV_DEPRECATED;
     271  int		dn_count_labels (const char *) __THROW __RESOLV_DEPRECATED;
     272  int		dn_comp (const char *, unsigned char *, int, unsigned char **,
     273  			 unsigned char **) __THROW;
     274  int		dn_expand (const unsigned char *, const unsigned char *,
     275  			   const unsigned char *, char *, int) __THROW;
     276  unsigned int	res_randomid (void) __THROW
     277    __RESOLV_DEPRECATED_MSG ("use getentropy instead");
     278  int		res_nameinquery (const char *, int, int,
     279  				 const unsigned char *,
     280  				 const unsigned char *) __THROW
     281    __RESOLV_DEPRECATED;
     282  int		res_queriesmatch (const unsigned char *,
     283  				  const unsigned char *,
     284  				  const unsigned char *,
     285  				  const unsigned char *) __THROW
     286    __RESOLV_DEPRECATED;
     287  /* Things involving a resolver context. */
     288  int		res_ninit (res_state) __THROW;
     289  void		fp_resstat (const res_state, FILE *) __THROW
     290    __RESOLV_DEPRECATED;
     291  const char *	res_hostalias (const res_state, const char *, char *, size_t)
     292       __THROW __RESOLV_DEPRECATED_MSG ("use getaddrinfo instead");
     293  int		res_nquery (res_state, const char *, int, int,
     294  			    unsigned char *, int) __THROW;
     295  int		res_nsearch (res_state, const char *, int, int,
     296  			     unsigned char *, int) __THROW;
     297  int		res_nquerydomain (res_state, const char *, const char *, int,
     298  				  int, unsigned char *, int) __THROW;
     299  int		res_nmkquery (res_state, int, const char *, int, int,
     300  			      const unsigned char *, int,
     301  			      const unsigned char *, unsigned char *, int)
     302       __THROW;
     303  int		res_nsend (res_state, const unsigned char *, int,
     304  			   unsigned char *, int) __THROW;
     305  void		res_nclose (res_state) __THROW;
     306  
     307  __END_DECLS
     308  
     309  #endif /* !_RESOLV_H_ */