Annotation of 43BSDReno/lib/libc/net/resolver.3, revision 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.