RESOLVER(3)

RESOLVER(3)

res_querydomain Home Page Subroutines Index res_send


NAME
       res_query,  res_search,  res_mkquery,  res_send, res_init,
       dn_comp, dn_expand - resolver routines

SYNOPSIS
       #include <<sys/types.h>>
       #include <<netinet/in.h>>
       #include <<arpa/nameser.h>>
       #include <<resolv.h>>

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

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

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

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

       res_init()

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

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

       herror(const char *s)

       hstrerror(int err)

DESCRIPTION
       These routines are used for making, sending and interpret-
       ing query and reply messages  with  Internet  domain  name
       servers.

       Global configuration and state information that is used by
       the resolver routines is kept in the structure _res.  Most
       of the values have reasonable defaults and can be ignored.
       Options stored in _res.options are defined in resolv.h and
       are  as  follows.  Options are stored as a simple bit mask
       containing the bitwise ``or'' of the options enabled.

       RES_INIT
              True if the initial name server address and default
              domain  name  are  initialized  (i.e., res_init has
              been called).

       RES_DEBUG
              Print debugging messages.

       RES_AAONLY
              Accept  authoritative  answers  only.   With   this
              option,  res_send should continue until it finds an
              authoritative answer or finds an error.   Currently
              this is not implemented.

       RES_USEVC
              Use  TCP  connections  for  queries  instead of UDP
              datagrams.

       RES_STAYOPEN
              Used with RES_USEVC to keep the TCP connection open
              between  queries.   This is useful only in programs
              that regularly do many queries.  UDP should be  the
              normal mode used.

       RES_IGNTC
              Unused  currently  (ignore truncation errors, i.e.,
              don't retry with TCP).

       RES_RECURSE
              Set the recursion-desired bit in queries.  This  is
              the  default.   (res_send  does  not  do  iterative
              queries and  expects  the  name  server  to  handle
              recursion.)

       RES_DEFNAMES
              If  set,  res_search will append the default domain
              name to single-component names (those that  do  not
              contain a dot).  This option is enabled by default.

       RES_DNSRCH
              If this option is set, res_search will  search  for
              host  names  in  the  current  domain and in parent
              domains; see hostname(7).   This  is  used  by  the
              standard   host  lookup  routine  gethostbyname(3).
              This option is enabled by default.

       RES_NOALIASES
              This option turns off the user level aliasing  fea-
              ture  controlled  by  the  HOSTALIASES  environment
              variable.  Network daemons should set this  option.

       The res_init routine reads the configuration file (if any;
       see resolver(5)) to get the default  domain  name,  search
       list and the Internet address of the local name server(s).
       If no server is configured, the host running the  resolver
       is tried.  The current domain name is defined by the host-
       name if not specified in the configuration file; it can be
       overridden  by the environment variable LOCALDOMAIN.  This
       environment variable may contain  several  blank-separated
       tokens  if  you wish to override the search list on a per-
       process basis.  This is similar to the search  command  in
       the  configuration  file.   Another  environment  variable
       (``RES_OPTIONS'') can be set to override certain  internal
       resolver  options  which  are  otherwise  set  by changing
       fields in the _res structure or  are  inherited  from  the
       configuration  file's  options command.  The syntax of the
       ``RES_OPTIONS''  environment  variable  is  explained   in
       resolver(5).   Initialization normally occurs on the first
       call to one of the other resolver routines.

       The res_query function provides an interface to the server
       query  mechanism.   It constructs a query, sends it to the
       local server, awaits a  response,  and  makes  preliminary
       checks  on  the  reply.  The query requests information of
       the specified type and class for the specified fully-qual-
       ified  domain  name  dname .  The reply message is left in
       the answer buffer  with  length  anslen  supplied  by  the
       caller.

       The res_search routine makes a query and awaits a response
       like res_query, but in addition, it implements the default
       and  search  rules  controlled  by  the  RES_DEFNAMES  and
       RES_DNSRCH  options.   It  returns  the  first  successful
       reply.

       The  remaining  routines  are lower-level routines used by
       res_query.  The res_mkquery function constructs a standard
       query  message  and places it in buf.  It returns the size
       of the query, or -1 if the query is  larger  than  buflen.
       The  query type op is usually QUERY, but can be any of the
       query types defined in &lt;arpa/nameser.h>.  The domain  name
       for  the  query  is  given  by  dname.  Newrr is currently
       unused but is intended for making update messages.

       The res_send  routine  sends  a  pre-formatted  query  and
       returns  an  answer.  It will call res_init if RES_INIT is
       not set, send the query to the local name server, and han-
       dle timeouts and retries.  The length of the reply message
       is returned, or -1 if there were errors.

       The dn_comp function compresses the domain name exp_dn and
       stores  it in comp_dn.  The size of the compressed name is
       returned or -1 if there were  errors.   The  size  of  the
       array  pointed to by comp_dn is given by length.  The com-
       pression uses an array of pointers dnptrs  to  previously-
       compressed  names  in  the  current  message.   The  first
       pointer points to to the beginning of the message and  the
       list  ends with NULL.  The limit to the array is specified
       by lastdnptr.  A side effect of dn_comp is to  update  the
       list  of  pointers for labels inserted into the message as
       the name is compressed.  If dnptr is NULL, names  are  not
       compressed.   If  lastdnptr is NULL, the list of labels is
       not updated.

       The dn_expand entry expands  the  compressed  domain  name
       comp_dn  to a full domain name The compressed name is con-
       tained in a query or reply message; msg is  a  pointer  to
       the  beginning  of  the message.  The uncompressed name is
       placed in the buffer indicated by exp_dn which is of  size
       length.   The size of compressed name is returned or -1 if
       there was an error.

       The external variable h_errno is  set  whenever  an  error
       occurs  during  resolver operation.  The following defini-
       tions are given in <<netdb.h>>:

       #define NETDB_INTERNAL -1  /* see errno */
       #define NETDB_SUCCESS  0   /* no problem */
       #define HOST_NOT_FOUND 1   /* Authoritative Answer Host not found */
       #define TRY_AGAIN      2   /* Non-Authoritive not found, or SERVFAIL */
       #define NO_RECOVERY    3   /* Nonrecoverable: FORMERR, REFUSED, NOTIMP */
       #define NO_DATA        4   /* Valid name, no data for requested type */

       The herror function writes a  message  to  the  diagnostic
       output  consisting of the string parameter s, the constant
       string ": ", and a message corresponding to the  value  of
       h_errno.

       The  hstrerror function returns a string which is the mes-
       sage text corresponding to the value of the err parameter.

FILES
       /etc/resolv.conf    see resolver(5)

SEE ALSO
       gethostbyname(3) named(8) resolver(5) hostname(7) 
       RFC1032, RFC1033, RFC1034, RFC1035, RFC974,
       SMM:11 Name Server Operations Guide for BIND

res_querydomain Home Page Subroutines Index res_send