resolver(3N) UNIX System V(Internet Utilities) resolver(3N)
NAME
resolver, resmkquery, ressend, resinit, dncomp, dnexpand - resolver
routines
SYNOPSIS
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>
int resmkquery(int op, char *dname, int class, int type,
char *data, int datalen, struct rrec *newrr, char *buf,
int buflen);
int ressend(char *msg, int msglen, char *answer, int anslen);
void resinit(void);
int dncomp(char *expdn, char *compdn, int length, char **dnptrs,
char **lastdnptr);
int dnexpand(char *msg, char *eomorig, char *compdn,
char *expdn, int length);
DESCRIPTION
These routines are used for making, sending and interpreting packets to
Internet domain name servers. Global information that is used by the
resolver routines is kept in the variable res. Most of the values have
reasonable defaults and can be ignored. Options are a simple bit mask
and are OR'ed in to enable. Options stored in res.options are defined
in resolv.h and are as follows.
RESINIT True if the initial name server address and default
domain name are initialized (that is, resinit has
been called).
RESDEBUG Print debugging messages.
RESAAONLY Accept authoritative answers only. ressend will
continue until it finds an authoritative answer or
finds an error. Currently this is not implemented.
RESUSEVC Use TCP connections for queries instead of UDP.
RESSTAYOPEN Used with RESUSEVC 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.
RESIGNTC Unused currently (ignore truncation errors, that is,
do not retry with TCP).
RESRECURSE Set the recursion desired bit in queries. This is
the default. ressend does not do iterative queries
and expects the name server to handle recursion.
10/89 Page 1
resolver(3N) UNIX System V(Internet Utilities) resolver(3N)
RESDEFNAMES Append the default domain name to single label
queries. This is the default.
resinit reads the initialization file to get the default domain name and
the Internet address of the initial hosts running the name server. If
this line does not exist, the host running the resolver is tried.
resmkquery makes a standard query message and places it in buf.
resmkquery will return the size of the query or -1 if the query is
larger than buflen. op is usually QUERY but can be any of the query
types defined in arpa/nameser.h. dname is the domain name. If dname
consists of a single label and the RESDEFNAMES flag is enabled (the
default), dname will be appended with the current domain name. The
current domain name is defined in a system file and can be overridden by
the environment variable LOCALDOMAIN. newrr is currently unused but is
intended for making update messages.
ressend sends a query to name servers and returns an answer. It will
call resinit if RESINIT is not set, send the query to the local name
server, and handle timeouts and retries. The length of the message is
returned or -1 if there were errors.
dnexpand expands the compressed domain name comp_dn to a full domain
name. Expanded names are converted to upper case. msg is a pointer to
the beginning of the message, eomorig is a pointer to the first memory
location after the message, exp_dn is a pointer to a buffer of size
length for the result. The size of the compressed name is returned or -1
if there was an error.
dncomp 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. dnptrs is a list
of pointers 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. lastdnptr is a pointer to the end of the array pointed to
dnptrs. A side effect is to update the list of pointers for labels
inserted into the message by dncomp as the name is compressed. If dnptr
is NULL, do not try to compress names. If lastdnptr is NULL, do not
update the list.
FILES
/usr/include/arpa/nameserv.h
/usr/include/netinet/in.h
/usr/include/resolv.h
/usr/include/sys/types.h
/etc/resolv.conf
/usr/lib/libresolv.a
SEE ALSO
named(1M), resolv.conf(4)
Page 2 10/89
resolver(3N) UNIX System V(Internet Utilities) resolver(3N)
NOTES
/usr/lib/libresolv.a is necessary for compiling programs.
Programs must be loaded with the option -lresolv.
10/89 Page 3