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