resolver

     



RESOLVER(3)         Linux Programmer's Manual         RESOLVER(3)


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, struct rrec *newrr,
              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 associ­
       ated with the local host is used.  It  can  be  overridden
       with  the environment variable LOCALDOMAIN.  res_init() is
       normally executed 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



BSD                        May 21, 1993                         1





RESOLVER(3)         Linux Programmer's Manual         RESOLVER(3)


       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
       compression uses an array of pointers dnptrs to previously
       compressed  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 lastdnptr.  if dnptr is NULL, domain names are not com­
       pressed.  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 con­
       tained 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()



BSD                        May 21, 1993                         2





RESOLVER(3)         Linux Programmer's Manual         RESOLVER(3)


              continues until it fins an authoritative answer  or
              returns an error.  [Not currently implemented].

       RES_USEVC
              Use  TCP  connections  for  queries rather than UDP
              datagrams.

       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.  Recur­
              sion 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)



BSD                        May 21, 1993                         3