|
|
1.1 root 1: .\" Copyright (c) 1985 Regents of the University of California.
2: .\" All rights reserved. The Berkeley software License Agreement
3: .\" specifies the terms and conditions for redistribution.
4: .\"
5: .\" @(#)resolver.3 6.1 (Berkeley) 11/21/87
6: .\"
7: .TH RESOLVER 3 "November 21, 1987"
8: .UC 4
9: .SH NAME
10: res_mkquery, res_send, res_init, dn_comp, dn_expand \- resolver routines
11: .SH SYNOPSIS
12: .B #include <sys/types.h>
13: .br
14: .B #include <netinet/in.h>
15: .br
16: .B #include <arpa/nameser.h>
17: .br
18: .B #include <resolv.h>
19: .PP
20: .B "res_mkquery(op, dname, class, type, data, datalen, newrr, buf, buflen)"
21: .br
22: .B int op;
23: .br
24: .B char *dname;
25: .br
26: .B int class, type;
27: .br
28: .B char *data;
29: .br
30: .B int datalen;
31: .br
32: .B struct rrec *newrr;
33: .br
34: .B char *buf;
35: .br
36: .B int buflen;
37: .PP
38: .B res_send(msg, msglen, answer, anslen)
39: .br
40: .B char *msg;
41: .br
42: .B int msglen;
43: .br
44: .B char *answer;
45: .br
46: .B int anslen;
47: .PP
48: .B res_init()
49: .PP
50: .B dn_comp(exp_dn, comp_dn, length, dnptrs, lastdnptr)
51: .br
52: .B char *exp_dn, *comp_dn;
53: .br
54: .B int length;
55: .br
56: .B char **dnptrs, **lastdnptr;
57: .PP
58: .B dn_expand(msg, eomorig, comp_dn, exp_dn, length)
59: .br
60: .B char *msg, *eomorig, *comp_dn, exp_dn;
61: .br
62: .B int length;
63: .SH DESCRIPTION
64: These routines are used for making, sending and interpreting packets
65: for use with Internet domain name servers.
66: Global information that is used by the
67: resolver routines is kept in the variable
68: .IR _res .
69: Most of the values have reasonable defaults and can be ignored.
70: Options
71: stored in
72: .I _res.options
73: are defined in
74: .I resolv.h
75: and are as follows.
76: Options are stored a simple bit mask containing the bitwise ``or''
77: of the options enabled.
78: .IP RES_INIT
79: True if the initial name server address and default domain name are
80: initialized (i.e.,
81: .I res_init
82: has been called).
83: .IP RES_DEBUG
84: Print debugging messages.
85: .IP RES_AAONLY
86: Accept authoritative answers only.
87: With this option,
88: .I res_send
89: should continue until it finds an authoritative answer or finds an error.
90: Currently this is not implemented.
91: .IP RES_USEVC
92: Use TCP connections for queries instead of UDP datagrams.
93: .IP RES_STAYOPEN
94: Used with RES_USEVC to keep the TCP connection open between
95: queries.
96: This is useful only in programs that regularly do many queries.
97: UDP should be the normal mode used.
98: .IP RES_IGNTC
99: Unused currently (ignore truncation errors, i.e., don't retry with TCP).
100: .IP RES_RECURSE
101: Set the recursion-desired bit in queries.
102: This is the default.
103: (
104: .I res_send
105: does not do iterative queries and expects the name server
106: to handle recursion.)
107: .IP RES_DEFNAMES
108: If set,
109: .I res_mkquery
110: will append the default domain name to single-component names
111: (those that do not contain a dot).
112: This is the default.
113: .IP RES_DNSRCH
114: If this option is set,
115: the standard host lookup routine
116: .IR gethostbyname (3)
117: will search for host names in the current domain and in parent domains; see
118: .IR hostname (7).
119: .PP
120: .I Res_init
121: .PP
122: reads the initialization file to get the default
123: domain name and the Internet address of the initial hosts
124: running the name server.
125: If this line does not exist, the host running
126: the resolver is tried.
127: .I Res_mkquery
128: makes a standard query message and places it in
129: .IR buf .
130: .I Res_mkquery
131: will return the size of the query or \-1 if the query is
132: larger than
133: .IR buflen .
134: .I Op
135: is usually QUERY but can be any of the query types defined in
136: .IR nameser.h .
137: .I Dname
138: is the domain name.
139: If
140: .I dname
141: consists of a single label and the RES_DEFNAMES flag is enabled
142: (the default), the current domain name will be appended to
143: .IR dname .
144: The current domain name is defined by the hostname
145: or is specified in a system file; it can be overridden
146: by the environment variable LOCALDOMAIN.
147: .I Newrr
148: is currently unused but is intended for making update messages.
149: .PP
150: .I Res_send
151: sends a query to name servers and returns an answer.
152: It will call
153: .I res_init
154: if RES_INIT is not set, send the query to the local name server, and
155: handle timeouts and retries.
156: The length of the message is returned, or
157: \-1 if there were errors.
158: .PP
159: .I Dn_expand
160: expands the compressed domain name
161: .I comp_dn
162: to a full domain name. Expanded names are converted to upper case.
163: .I Msg
164: is a pointer to the beginning of the message,
165: .I exp_dn
166: is a pointer to a buffer of size
167: .I length
168: for the result.
169: The size of compressed name is returned or -1 if there was an error.
170: .PP
171: .I Dn_comp
172: compresses the domain name
173: .I exp_dn
174: and stores it in
175: .IR comp_dn .
176: The size of the compressed name is returned or -1 if there were errors.
177: .I length is the size of the array pointed to by
178: .IR comp_dn .
179: .I Dnptrs
180: is a list of pointers to previously compressed names in the current message.
181: The first pointer points to
182: to the beginning of the message and the list ends with NULL.
183: .I lastdnptr
184: is a pointer to the end of the array pointed to
185: .IR dnptrs .
186: A side effect is to update the list of pointers for
187: labels inserted into the message by
188: .I dn_comp
189: as the name is compressed.
190: If
191: .I dnptr
192: is NULL, names are not compressed.
193: If
194: .I lastdnptr
195: is NULL, the list of labels is not updated.
196: .SH FILES
197: /etc/resolv.conf see resolver(5)
198: .SH "SEE ALSO"
199: gethostbyname(3), named(8), resolver(5), hostname(7),
200: .br
201: RFC882, RFC883, RFC973, RFC974,
202: .br
203: SMM:11 Name Server Operations Guide for BIND
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.