Annotation of 43BSDReno/lib/libc/net/resolver.3, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1985 The Regents of the University of California.
                      2: .\" All rights reserved.
                      3: .\"
                      4: .\" Redistribution and use in source and binary forms are permitted provided
                      5: .\" that: (1) source distributions retain this entire copyright notice and
                      6: .\" comment, and (2) distributions including binaries display the following
                      7: .\" acknowledgement:  ``This product includes software developed by the
                      8: .\" University of California, Berkeley and its contributors'' in the
                      9: .\" documentation or other materials provided with the distribution and in
                     10: .\" all advertising materials mentioning features or use of this software.
                     11: .\" Neither the name of the University nor the names of its contributors may
                     12: .\" be used to endorse or promote products derived from this software without
                     13: .\" specific prior written permission.
                     14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
                     15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
                     16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     17: .\"
                     18: .\"    @(#)resolver.3  6.5 (Berkeley) 6/23/90
                     19: .\"
                     20: .TH RESOLVER 3 "June 23, 1990"
                     21: .UC 4
                     22: .SH NAME
                     23: res_query, res_search, res_mkquery, res_send, res_init, dn_comp, dn_expand \- resolver routines
                     24: .SH SYNOPSIS
                     25: .B #include <sys/types.h>
                     26: .br
                     27: .B #include <netinet/in.h>
                     28: .br
                     29: .B #include <arpa/nameser.h>
                     30: .br
                     31: .B #include <resolv.h>
                     32: .PP
                     33: .B "res_query(dname, class, type, answer, anslen)"
                     34: .br
                     35: .B char *dname;
                     36: .br
                     37: .B int class, type;
                     38: .br
                     39: .B u_char *answer;
                     40: .br
                     41: .B int anslen;
                     42: .PP
                     43: .B "res_search(dname, class, type, answer, anslen)"
                     44: .br
                     45: .B char *dname;
                     46: .br
                     47: .B int class, type;
                     48: .br
                     49: .B u_char *answer;
                     50: .br
                     51: .B int anslen;
                     52: .PP
                     53: .B "res_mkquery(op, dname, class, type, data, datalen, newrr, buf, buflen)"
                     54: .br
                     55: .B int op;
                     56: .br
                     57: .B char *dname;
                     58: .br
                     59: .B int class, type;
                     60: .br
                     61: .B char *data;
                     62: .br
                     63: .B int datalen;
                     64: .br
                     65: .B struct rrec *newrr;
                     66: .br
                     67: .B char *buf;
                     68: .br
                     69: .B int buflen;
                     70: .PP
                     71: .B res_send(msg, msglen, answer, anslen)
                     72: .br
                     73: .B char *msg;
                     74: .br
                     75: .B int msglen;
                     76: .br
                     77: .B char *answer;
                     78: .br
                     79: .B int anslen;
                     80: .PP
                     81: .B res_init()
                     82: .PP
                     83: .B dn_comp(exp_dn, comp_dn, length, dnptrs, lastdnptr)
                     84: .br
                     85: .B char *exp_dn, *comp_dn;
                     86: .br
                     87: .B int length;
                     88: .br
                     89: .B char **dnptrs, **lastdnptr;
                     90: .PP
                     91: .B dn_expand(msg, eomorig, comp_dn, exp_dn, length)
                     92: .br
                     93: .B char *msg, *eomorig, *comp_dn, exp_dn;
                     94: .br
                     95: .B int  length;
                     96: .SH DESCRIPTION
                     97: These routines are used for making, sending and interpreting
                     98: query and reply messages with Internet domain name servers.
                     99: .PP
                    100: Global configuration and state information that is used by the
                    101: resolver routines is kept in the structure
                    102: .IR _res .
                    103: Most of the values have reasonable defaults and can be ignored.
                    104: Options
                    105: stored in
                    106: .I _res.options
                    107: are defined in
                    108: .I resolv.h
                    109: and are as follows.
                    110: Options are stored as a simple bit mask containing the bitwise ``or''
                    111: of the options enabled.
                    112: .IP RES_INIT
                    113: True if the initial name server address and default domain name are
                    114: initialized (i.e.,
                    115: .I res_init
                    116: has been called).
                    117: .IP RES_DEBUG
                    118: Print debugging messages.
                    119: .IP RES_AAONLY
                    120: Accept authoritative answers only.
                    121: With this option,
                    122: .I res_send
                    123: should continue until it finds an authoritative answer or finds an error.
                    124: Currently this is not implemented.
                    125: .IP RES_USEVC
                    126: Use TCP connections for queries instead of UDP datagrams.
                    127: .IP RES_STAYOPEN
                    128: Used with RES_USEVC to keep the TCP connection open between
                    129: queries.
                    130: This is useful only in programs that regularly do many queries.
                    131: UDP should be the normal mode used.
                    132: .IP RES_IGNTC
                    133: Unused currently (ignore truncation errors, i.e., don't retry with TCP).
                    134: .IP RES_RECURSE
                    135: Set the recursion-desired bit in queries.
                    136: This is the default.
                    137: (\c
                    138: .I res_send
                    139: does not do iterative queries and expects the name server
                    140: to handle recursion.)
                    141: .IP RES_DEFNAMES
                    142: If set,
                    143: .I res_search
                    144: will append the default domain name to single-component names
                    145: (those that do not contain a dot).
                    146: This option is enabled by default.
                    147: .IP RES_DNSRCH
                    148: If this option is set,
                    149: .I res_search
                    150: will search for host names in the current domain and in parent domains; see
                    151: .IR hostname (7).
                    152: This is used by the standard host lookup routine
                    153: .IR gethostbyname (3).
                    154: This option is enabled by default.
                    155: .PP
                    156: The
                    157: .I res_init
                    158: routine
                    159: reads the configuration file (if any; see
                    160: .IR resolver (5))
                    161: to get the default domain name,
                    162: search list and
                    163: the Internet address of the local name server(s).
                    164: If no server is configured, the host running
                    165: the resolver is tried.
                    166: The current domain name is defined by the hostname
                    167: if not specified in the configuration file;
                    168: it can be overridden by the environment variable LOCALDOMAIN.
                    169: Initialization normally occurs on the first call
                    170: to one of the following routines.
                    171: .PP
                    172: The
                    173: .I res_query
                    174: function provides an interface to the server query mechanism.
                    175: It constructs a query, sends it to the local server,
                    176: awaits a response, and makes preliminary checks on the reply.
                    177: The query requests information of the specified
                    178: .I type
                    179: and
                    180: .I class
                    181: for the specified fully-qualified domain name
                    182: .I dname .
                    183: The reply message is left in the
                    184: .I answer
                    185: buffer with length
                    186: .I anslen
                    187: supplied by the caller.
                    188: .PP
                    189: The
                    190: .I res_search
                    191: routine makes a query and awaits a response like
                    192: .IR res_query ,
                    193: but in addition, it implements the default and search rules
                    194: controlled by the RES_DEFNAMES and RES_DNSRCH options.
                    195: It returns the first successful reply.
                    196: .PP
                    197: The remaining routines are lower-level routines used by
                    198: .IR res_query .
                    199: The
                    200: .I res_mkquery
                    201: function
                    202: constructs a standard query message and places it in
                    203: .IR buf .
                    204: It returns the size of the query, or \-1 if the query is
                    205: larger than
                    206: .IR buflen .
                    207: The query type
                    208: .I op
                    209: is usually QUERY, but can be any of the query types defined in
                    210: .IR <arpa/nameser.h> .
                    211: The domain name for the query is given by
                    212: .IR dname .
                    213: .I Newrr
                    214: is currently unused but is intended for making update messages.
                    215: .PP
                    216: The
                    217: .I res_send
                    218: routine
                    219: sends a pre-formatted query and returns an answer.
                    220: It will call
                    221: .I res_init
                    222: if RES_INIT is not set, send the query to the local name server, and
                    223: handle timeouts and retries.
                    224: The length of the reply message is returned, or
                    225: \-1 if there were errors.
                    226: .PP
                    227: The
                    228: .I dn_comp
                    229: function
                    230: compresses the domain name
                    231: .I exp_dn
                    232: and stores it in
                    233: .IR comp_dn .
                    234: The size of the compressed name is returned or \-1 if there were errors.
                    235: The size of the array pointed to by
                    236: .I comp_dn
                    237: is given by
                    238: .IR length .
                    239: The compression uses
                    240: an array of pointers
                    241: .I dnptrs
                    242: to previously-compressed names in the current message.
                    243: The first pointer points to
                    244: to the beginning of the message and the list ends with NULL.
                    245: The limit to the array is specified by
                    246: .IR lastdnptr .
                    247: A side effect of
                    248: .I dn_comp
                    249: is to update the list of pointers for
                    250: labels inserted into the message
                    251: as the name is compressed.
                    252: If
                    253: .I dnptr
                    254: is NULL, names are not compressed.
                    255: If
                    256: .I lastdnptr
                    257: is NULL, the list of labels is not updated.
                    258: .PP
                    259: The
                    260: .I dn_expand
                    261: entry
                    262: expands the compressed domain name
                    263: .I comp_dn
                    264: to a full domain name
                    265: The compressed name is contained in a query or reply message;
                    266: .I msg
                    267: is a pointer to the beginning of the message.
                    268: The uncompressed name is placed in the buffer indicated by
                    269: .I exp_dn
                    270: which is of size
                    271: .IR length .
                    272: The size of compressed name is returned or \-1 if there was an error.
                    273: .SH FILES
                    274: /etc/resolv.conf       see resolver(5)
                    275: .SH "SEE ALSO"
                    276: gethostbyname(3), named(8), resolver(5), hostname(7),
                    277: .br
                    278: RFC1032, RFC1033, RFC1034, RFC1035, RFC974, 
                    279: .br
                    280: SMM:11 Name Server Operations Guide for BIND

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.