*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> res_search (3)              



NAME    [Toc]    [Back]

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

SYNOPSIS    [Toc]    [Back]

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

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

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

     res_mkquery(int  op,  char *dname, int class, int type, char
             int datalen, struct  rrec  *newrr,  char  *buf,  int

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


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

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

DESCRIPTION    [Toc]    [Back]

     These  routines are used for making, sending, and interpreting 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
                    res_send()  should continue until it finds an
                    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

     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_USE_INET6  Enables support for  IPv6-only  applications.
This causes
                    IPv4  addresses  to  be  returned  as an IPv4
mapped address.
                    For example,  will  be  returned  as
                    The option is not meaningful on OpenBSD.

     The res_init() routine reads the configuration file (if any;
     resolv.conf(5)) to get the default domain name, search list,
and the Internet
 address of the local name server(s).  If no server is
     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.  This
     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
     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 resolv.conf(5).
     Initialization normally occurs on the first call to  one  of
the following

     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 qualified
  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
     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 <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  handle  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  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 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 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

FILES    [Toc]    [Back]

     /etc/resolv.conf configuration file see resolv.conf(5).

SEE ALSO    [Toc]    [Back]

     gethostbyname(3), resolv.conf(5), hostname(7), named(8)

     RFC 1032, RFC 1033, RFC 1034, RFC 1035, RFC 1535, RFC 974

     Name Server Operations Guide for BIND.

HISTORY    [Toc]    [Back]

     The res_query function appeared in 4.3BSD.

OpenBSD      3.6                           June      4,      1993
[ Back ]
 Similar pages
Name OS Title
resolv.conf OpenBSD resolver configuration file
resolv.conf HP-UX resolver configuration file
resolver OpenBSD resolver configuration file
res_send_setqhook IRIX interface to resolver hooks
resolver HP-UX resolver configuration file
res_isourserver IRIX resolver query utilities
resolv.conf Tru64 Resolver configuration file
resolver Tru64 resolver configuration file
resolv.conf FreeBSD resolver configuration file
host.conf Linux resolver configuration file
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service