HPUX herror[3n]






 resolver(3N)                                                   resolver(3N)





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

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

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

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

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

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

      void res_init();

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





 Hewlett-Packard Company            - 1 -      HP-UX Release 9.0: August 1992






 resolver(3N)                                                    resolver(3N)





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

      extern int h_errno;

      void herror(char *s);

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

      Global configuration and state information 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_PRIMARY         Query the primary server only.  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           The name server will set the truncation bit
                               if all of the data does not fit into the
                               response datagram packet.  If RES_IGNTC is
                               set, res_send() will not retry the query with
                               TCP (i.e., ignore truncation errors).



 Hewlett-Packard Company            - 2 -     HP-UX Release 9.0: August 1992






 resolver(3N)                                                   resolver(3N)





           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() appends 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() searches
                               for host names in the current domain and in
                               parent domains; see hostname(5).  This is
                               used by the standard host lookup routine
                               gethostbyname() (see gethostbyname(3N)).
                               This option is enabled by default.

    Primary Routines
      res_init()          Reads the configuration file, /etc/resolv.conf, 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 hostname if not specified in the
                          configuration file; it can be overridden by the
                          environment variable LOCALDOMAIN.  Initialization
                          normally occurs on the first call to one of the
                          following routines.  If there are errors in the
                          configuration file, they are silently ignored.

      res_query()         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-qualified domain
                          name dname.  The reply message is left in the
                          answer buffer with length anslen supplied by the
                          caller.

      res_search()        Makes a query and awaits a response much 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.

    Other Routines
      Routines described here are lower-level routines used by res_query().

      res_mkquery()       Constructs a standard query message and places it
                          in buf.  It returns the size of the query, or -1



 Hewlett-Packard Company            - 3 -     HP-UX Release 9.0: August 1992






 resolver(3N)                                                   resolver(3N)





                          if the query is larger than buflen.  The query
                          type op is usually QUERY, but can be any of the
                          query types defined in <arpa/nameser.h>.  The
                          domain name for the query is given by dname.
                          class can be any of the query classes defined in
                          <arpa/nameser.h>.  type can be any of the query
                          types defined in <arpa/nameser.h>.  data is the
                          data for an inverse query (IQUERY).  newrr is
                          currently unused but is intended for making update
                          messages.

      res_send()          Sends a pre-formatted query and returns an answer.
                          It calls res_init() if RES_INIT is not set, sends
                          the query to the local name server, and handles
                          timeouts and retries.  res_send() returns the
                          length of the reply message, or -1 if there were
                          errors.

      dn_comp()           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.  length is
                          the size of the array pointed to by comp_dn.  The
                          compression 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.

      dn_expand()         Expands the compressed domain name comp_dn to a
                          full domain name.  The compressed name is
                          contained 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.

 RETURN VALUE
      Error return status from res_search() is indicated by a return value
      of -1.  The external integer h_errno can then be checked to see
      whether this is a temporary failure or an invalid or unknown host.
      The routine herror() can be used to print an error message describing
      the failure.  The argument string s is printed first, followed by a
      colon, a blank, the message, and a new-line.




 Hewlett-Packard Company            - 4 -     HP-UX Release 9.0: August 1992






 resolver(3N)                                                   resolver(3N)





 ERRORS
      h_errno can have the following values:

           HOST_NOT_FOUND      No such host is known.

           TRY_AGAIN           This is usually a temporary error and means
                               that the local server did not receive a
                               response from an authoritative server.  A
                               retry at some later time may succeed.

           NO_RECOVERY         Some unexpected server failure was
                               encountered.  This is a non-recoverable
                               error.

           NO_DATA             The name is known to the name server, but
                               there is no data of the requested type
                               associated with this name; this is not a
                               temporary error.  Another type of request to
                               the name server using this domain name will
                               result in an answer.

 AUTHOR
      These resolver routines were developed by the University of
      California, Berkeley.

 FILES
      /etc/resolv.conf              resolver configuration file

 SEE ALSO
      named(1m), gethostent(3N), resolver(4), hostname(5), RFC1034, RFC1035.
























 Hewlett-Packard Company            - 5 -     HP-UX Release 9.0: August 1992