RESOLVER.3
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:7k
源码类别:

操作系统开发

开发平台:

WINDOWS

  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. resolver, 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 <net/gen/in.h>
  28. .br
  29. .B #include <net/gen/nameser.h>
  30. .br
  31. .B #include <net/gen/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