NAME

     res_init,     res_query,     res_search,    res_querydomain,
     res_mkquery, res_send, dn_comp, dn_expand  -  resolver  rou-
     tines


SYNOPSIS

     #include <netinet/in.h>
     #include <arpa/nameser.h>
     #include <resolv.h>
     extern struct state _res;

     int res_init(void);

     int res_query(const char *dname, int class, int type
          unsigned char *answer, int anslen);

     int res_search(const char *dname, int class, int type
          unsigned char *answer, int anslen);

     int res_querydomain(const char *name, const char *domain,
          int class, int type, unsigned char *answer
          int anslen);

     int res_mkquery(int op, const char *dname, int class
          int type, char *data, int datalen
          char *buf, int buflen);

     int res_send(const char *msg, int msglen, char *answer
          int anslen);

     int dn_comp(unsigned char *exp_dn, unsigned char *comp_dn,
          int length, unsigned char **dnptrs, unsigned char *exp_dn
          unsigned char **lastdnptr);

     int dn_expand(unsigned char *msg, unsigned char *eomorig,
          unsigned char *comp_dn, unsigned char *exp_dn,
          int length);


DESCRIPTION

     These  functions make queries to and interpret the responses
     from Internet domain name servers.

     The res_init() function reads the configuration  files  (see
     resolv+(8)) to get the default domain name, search order and
     name server address(es).  If no server is given,  the  local
     host  is tried.  If no domain is given, that associated with
     the local host is used.  It can be overridden with the envi-
     ronment  variable  LOCALDOMAIN.  res_init() is normally exe-
     cuted by the first call to one of the other functions.

     The res_query() function queries the  name  server  for  the
     fully-qualified  domain  name  name  of  specified  type and
     class.  The reply is left in the  buffer  answer  of  length
     anslen supplied by the caller.

     The  res_search()  function  makes a query and waits for the
     response like res_query(), but in  addition  implements  the
     default  and  search  rules  controlled  by RES_DEFNAMES and
     RES_DNSRCH (see description of _res options below).

     The  res_querydomain()  function   makes   a   query   using
     res_query() on the concatenation of name and domain.

     The  following  functions  are  lower-level routines used by
     res_query().

     The res_mkquery() function constructs a query message in buf
     of  length buflen for the domain name dname.  The query type
     op is usually QUERY, but can be any of the types defined  in
     <arpa/nameser.h>.  newrr is currently unused.

     The res_send() function sends a pre-formatted query given in
     msg of length msglen and returns the answer in answer  which
     is of length anslen.  It will call res_init(), if it has not
     already been called.

     The dn_comp() function compresses the domain name exp_dn and
     stores  it in the buffer comp_dn of length length.  The com-
     pression uses an array of pointers dnptrs to previously com-
     pressed  names  in  the  current message.  The first pointer
     points to the beginning of the message  and  the  list  ends
     with  NULL.   The  limit of the array is specified by lastd-
     nptr.  if dnptr is NULL, domain names  are  not  compressed.
     If lastdnptr is NULL, the list of labels is not updated.

     The  dn_expand() function expands the compressed domain name
     comp_dn to a full domain name, which is placed in the buffer
     exp_dn  of size length.  The compressed name is contained in
     a query or reply message, and msg points to the beginning of
     the message.

     The  resolver  routines  use  global configuration and state
     information  contained  in  the  structure  _res,  which  is
     defined  in  <resolv.h>.   The  only  field that is normally
     manipulated by the user is  _res.options.   This  field  can
     contain the bitwise ``or'' of the following options:


     RES_INIT
          True if res_init() has been called.

     RES_DEBUG
          Print debugging messages.

     RES_AAONLY
          Accept  authoritative answers only.  res_send() contin-
          ues until it fins an authoritative answer or returns an
          error.  [Not currently implemented].

     RES_USEVC
          Use  TCP  connections for queries rather than UDP data-
          grams.

     RES_PRIMARY
          Query primary domain name server only.

     RES_IGNTC
          Ignore truncation errors.  Don't retry with TCP.   [Not
          currently implemented].

     RES_RECURSE
          Set the recursion desired bit in queries.  Recursion is
          carried  out  by  the  domain  name  server,   not   by
          res_send().  [Enabled by default].

     RES_DEFNAMES
          If  set,  res_search()  will  append the default domain
          name to single component names, ie. those that  do  not
          contain a dot.  [Enabled by default].

     RES_STAYOPEN
          Used  with  RES_USEVC  to  keep the TCP connection open
          between queries.

     RES_DNSRCH
          If set, res_search() will search for host names in  the
          current  domain  and in parent domains.  This option is
          used by gethostbyname(3).  [Enabled by default].


RETURN VALUE

     The res_init() function returns 0 on success, or  -1  if  an
     error occurs.

     The     res_query(),     res_search(),    res_querydomain(),
     res_mkquery() and res_send() functions return the length  of
     the response, or -1 if an error occurs.

     The dn_comp() and dn_expand() functions return the length of
     the compressed name, or -1 if an error occurs.


FILES

     /etc/resolv.conf          resolver configuration file
     /etc/host.conf            resolver configuration file


CONFORMING TO

     BSD 4.3


SEE ALSO

     gethostbyname(3), hostname(7), named(8), resolv+(8)



















































Man(1) output converted with man2html