Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ resolve(SLIB) — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

gethostbyname(SLIB)

hostname(ADMN)

named(ADMN)

resolver(SFF)


 resolver(SLIB)                 6 January 1993                 resolver(SLIB)


 Name

    resolver, res_mkquery, res_send, res_init, dn_comp, dn_expand - resolver
    routines

 Syntax


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

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

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

    res_init()

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

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


 Description

    These routines are used for making, sending and interpreting packets for
    use with 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 stored in
    _res.options are defined in resolv.h and are as follows.  Options are
    stored a simple bit mask containing the bitwise ``or'' of the options
    enabled.

    RESINIT
       True if the initial name server address and default domain name are
       initialized (for example, resinit has been called).

    RESDEBUG
       Print debugging messages.  Works only if the resolver code has been
       built with the -DDEBUG option.

    RESAAONLY
       Accept authoritative answers only.  With this option, ressend should
       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 datagrams.

    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, for example, 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.)

    RESDEFNAMES
       If set, resmkquery will append the default domain name to single-
       component names (those that do not contain a dot).  This is the
       default.

    RESDNSRCH
       If this option is set, the standard host lookup routine
       gethostbyname(SLIB) will search for host names in the current domain
       and in parent domains; see hostname(ADMP).

    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 nameser.h.  dname is the domain name.  If dname consists
    of a single label and the RESDEFNAMES flag is enabled (the default), the
    current domain name will be appended to dname.  The current domain name
    is defined by the hostname or is specified in a system file; it 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 compdn to a full domain
    name.  Expanded names are converted to upper case.  msg is a pointer to
    the beginning of the message, expdn is a pointer to a buffer of size
    length for the result.  The size of compressed name is returned or -1 if
    there was an error.

    dncomp compresses the domain name expdn and stores it in compdn.  The
    size of the compressed name is returned or -1 if there were errors.
    length is the size of the array pointed to by compdn.  dnptrs is a list
    of pointers to previously compressed names in the current message.  The
    first pointer points to the beginning of the message and the list ends
    with NULL.  lastdnptr is a pointer to the end of the array pointed to by
    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, names are not compressed.  If lastdnptr is NULL, the list of
    labels is not updated.

 Files

    /etc/resolv.conf

 See also

    gethostbyname(SLIB), hostname(ADMN), named(ADMN) and resolver(SFF).

    RFC974, RFC1034, RFC1035.


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026