a00160.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
  3. <title>uIP 1.0: DNS resolver</title>
  4. <link href="doxygen.css" rel="stylesheet" type="text/css">
  5. <link href="tabs.css" rel="stylesheet" type="text/css">
  6. </head><body>
  7. <!-- Generated by Doxygen 1.4.6 -->
  8. <div class="tabs">
  9. <ul>
  10. <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
  11. <li><a href="modules.html"><span>Modules</span></a></li>
  12. <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
  13. <li><a href="files.html"><span>Files</span></a></li>
  14. <li><a href="examples.html"><span>Examples</span></a></li>
  15. </ul></div>
  16. <h1>DNS resolver<br>
  17. <small>
  18. [<a class="el" href="a00143.html">Applications</a>]</small>
  19. </h1><hr><a name="_details"></a><h2>Detailed Description</h2>
  20. The uIP DNS resolver functions are used to lookup a hostname and map it to a numerical IP address.
  21. <p>
  22. It maintains a list of resolved hostnames that can be queried with the <a class="el" href="a00160.html#g66d19181ad5fe8b8f7c84d1f1d46a2ec">resolv_lookup()</a> function. New hostnames can be resolved using the <a class="el" href="a00160.html#ge4dcbbe6c641d2e3b8537b479df5fc99">resolv_query()</a> function.<p>
  23. When a hostname has been resolved (or found to be non-existant), the resolver code calls a callback function called <a class="el" href="a00160.html#g6d9751d534453425c7a5a215d1d4414c">resolv_found()</a> that must be implemented by the module that uses the resolver.
  24. <p>
  25. <table border="0" cellpadding="0" cellspacing="0">
  26. <tr><td></td></tr>
  27. <tr><td colspan="2"><br><h2>Files</h2></td></tr>
  28. <tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html">resolv.h</a></td></tr>
  29. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">DNS resolver code header file. <br></td></tr>
  30. <p>
  31. <tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00102.html">resolv.c</a></td></tr>
  32. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">DNS host name to IP address resolver. <br></td></tr>
  33. <p>
  34. <tr><td colspan="2"><br><h2>Defines</h2></td></tr>
  35. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3d768e989e308144190ae1a5ddfa9726"></a><!-- doxytag: member="resolv::UIP_UDP_APPCALL" ref="g3d768e989e308144190ae1a5ddfa9726" args="" -->
  36. #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#g3d768e989e308144190ae1a5ddfa9726">UIP_UDP_APPCALL</a>&nbsp;&nbsp;&nbsp;resolv_appcall</td></tr>
  37. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g070d2ce7b6bb7e5c05602aa8c308d0c4"></a><!-- doxytag: member="resolv::NULL" ref="g070d2ce7b6bb7e5c05602aa8c308d0c4" args="" -->
  38. #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>&nbsp;&nbsp;&nbsp;(void *)0</td></tr>
  39. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gecf13b8dc783db2202ca5c34fe117fc3"></a><!-- doxytag: member="resolv::MAX_RETRIES" ref="gecf13b8dc783db2202ca5c34fe117fc3" args="" -->
  40. #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#gecf13b8dc783db2202ca5c34fe117fc3">MAX_RETRIES</a>&nbsp;&nbsp;&nbsp;8</td></tr>
  41. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g221d37ccde7e3fd0dd2c2eb0a6b15493"></a><!-- doxytag: member="resolv::RESOLV_ENTRIES" ref="g221d37ccde7e3fd0dd2c2eb0a6b15493" args="" -->
  42. #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#g221d37ccde7e3fd0dd2c2eb0a6b15493">RESOLV_ENTRIES</a>&nbsp;&nbsp;&nbsp;4</td></tr>
  43. <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
  44. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7c5359305008e9183b18d6ab75f568bf"></a><!-- doxytag: member="resolv::resolv_appcall" ref="g7c5359305008e9183b18d6ab75f568bf" args="(void)" -->
  45. void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#g7c5359305008e9183b18d6ab75f568bf">resolv_appcall</a> (void)</td></tr>
  46. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#g6d9751d534453425c7a5a215d1d4414c">resolv_found</a> (char *name, <a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> *ipaddr)</td></tr>
  47. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Callback function which is called when a hostname is found. <a href="#g6d9751d534453425c7a5a215d1d4414c"></a><br></td></tr>
  48. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#gdf916e0c752f5cda70d0bddb2be422ba">resolv_conf</a> (<a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> *dnsserver)</td></tr>
  49. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configure which DNS server to use for queries. <a href="#gdf916e0c752f5cda70d0bddb2be422ba"></a><br></td></tr>
  50. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#g3191066cf8f76bd00b6843b77c37068f">resolv_getserver</a> (void)</td></tr>
  51. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Obtain the currently configured DNS server. <a href="#g3191066cf8f76bd00b6843b77c37068f"></a><br></td></tr>
  52. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb50f78bbf36d912d69f6c1685d0b40e3"></a><!-- doxytag: member="resolv::resolv_init" ref="gb50f78bbf36d912d69f6c1685d0b40e3" args="(void)" -->
  53. void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#gb50f78bbf36d912d69f6c1685d0b40e3">resolv_init</a> (void)</td></tr>
  54. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initalize the resolver. <br></td></tr>
  55. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#g66d19181ad5fe8b8f7c84d1f1d46a2ec">resolv_lookup</a> (char *name)</td></tr>
  56. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a hostname in the array of known hostnames. <a href="#g66d19181ad5fe8b8f7c84d1f1d46a2ec"></a><br></td></tr>
  57. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#ge4dcbbe6c641d2e3b8537b479df5fc99">resolv_query</a> (char *name)</td></tr>
  58. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Queues a name so that a question for the name will be sent out. <a href="#ge4dcbbe6c641d2e3b8537b479df5fc99"></a><br></td></tr>
  59. </table>
  60. <hr><h2>Function Documentation</h2>
  61. <a class="anchor" name="gdf916e0c752f5cda70d0bddb2be422ba"></a><!-- doxytag: member="resolv.h::resolv_conf" ref="gdf916e0c752f5cda70d0bddb2be422ba" args="(u16_t *dnsserver)" --><p>
  62. <table class="mdTable" cellpadding="2" cellspacing="0">
  63. <tr>
  64. <td class="mdRow">
  65. <table cellpadding="0" cellspacing="0" border="0">
  66. <tr>
  67. <td class="md" nowrap valign="top">void resolv_conf </td>
  68. <td class="md" valign="top">(&nbsp;</td>
  69. <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> *&nbsp;</td>
  70. <td class="mdname1" valign="top" nowrap> <em>dnsserver</em> </td>
  71. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  72. <td class="md" nowrap></td>
  73. </tr>
  74. </table>
  75. </td>
  76. </tr>
  77. </table>
  78. <table cellspacing="5" cellpadding="0" border="0">
  79. <tr>
  80. <td>
  81. &nbsp;
  82. </td>
  83. <td>
  84. <p>
  85. Configure which DNS server to use for queries.
  86. <p>
  87. <dl compact><dt><b>Parameters:</b></dt><dd>
  88. <table border="0" cellspacing="2" cellpadding="0">
  89. <tr><td valign="top"></td><td valign="top"><em>dnsserver</em>&nbsp;</td><td>A pointer to a 4-byte representation of the IP address of the DNS server to be configured. </td></tr>
  90. </table>
  91. </dl>
  92. <dl compact><dt><b>Examples: </b></dt><dd>
  93. <a class="el" href="a00046.html#a151">resolv.c</a>, and <a class="el" href="a00047.html#a158">resolv.h</a>.</dl>
  94. <p>
  95. Definition at line <a class="el" href="a00172.html#l00438">438</a> of file <a class="el" href="a00172.html">resolv.c</a>.
  96. <p>
  97. References <a class="el" href="a00202.html#l01070">HTONS</a>, <a class="el" href="a00172.html#l00069">NULL</a>, <a class="el" href="a00201.html#l00473">uip_udp_new()</a>, and <a class="el" href="a00202.html#l00775">uip_udp_remove</a>. </td>
  98. </tr>
  99. </table>
  100. <a class="anchor" name="g6d9751d534453425c7a5a215d1d4414c"></a><!-- doxytag: member="resolv.h::resolv_found" ref="g6d9751d534453425c7a5a215d1d4414c" args="(char *name, u16_t *ipaddr)" --><p>
  101. <table class="mdTable" cellpadding="2" cellspacing="0">
  102. <tr>
  103. <td class="mdRow">
  104. <table cellpadding="0" cellspacing="0" border="0">
  105. <tr>
  106. <td class="md" nowrap valign="top">void resolv_found </td>
  107. <td class="md" valign="top">(&nbsp;</td>
  108. <td class="md" nowrap valign="top">char *&nbsp;</td>
  109. <td class="mdname" nowrap> <em>name</em>, </td>
  110. </tr>
  111. <tr>
  112. <td class="md" nowrap align="right"></td>
  113. <td class="md"></td>
  114. <td class="md" nowrap><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> *&nbsp;</td>
  115. <td class="mdname" nowrap> <em>ipaddr</em></td>
  116. </tr>
  117. <tr>
  118. <td class="md"></td>
  119. <td class="md">)&nbsp;</td>
  120. <td class="md" colspan="2"></td>
  121. </tr>
  122. </table>
  123. </td>
  124. </tr>
  125. </table>
  126. <table cellspacing="5" cellpadding="0" border="0">
  127. <tr>
  128. <td>
  129. &nbsp;
  130. </td>
  131. <td>
  132. <p>
  133. Callback function which is called when a hostname is found.
  134. <p>
  135. This function must be implemented by the module that uses the DNS resolver. It is called when a hostname is found, or when a hostname was not found.<p>
  136. <dl compact><dt><b>Parameters:</b></dt><dd>
  137. <table border="0" cellspacing="2" cellpadding="0">
  138. <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>A pointer to the name that was looked up.</td></tr>
  139. <tr><td valign="top"></td><td valign="top"><em>ipaddr</em>&nbsp;</td><td>A pointer to a 4-byte array containing the IP address of the hostname, or NULL if the hostname could not be found. </td></tr>
  140. </table>
  141. </dl>
  142. <dl compact><dt><b>Examples: </b></dt><dd>
  143. <a class="el" href="a00046.html#a135">resolv.c</a>, and <a class="el" href="a00047.html#a156">resolv.h</a>.</dl> </td>
  144. </tr>
  145. </table>
  146. <a class="anchor" name="g3191066cf8f76bd00b6843b77c37068f"></a><!-- doxytag: member="resolv.h::resolv_getserver" ref="g3191066cf8f76bd00b6843b77c37068f" args="(void)" --><p>
  147. <table class="mdTable" cellpadding="2" cellspacing="0">
  148. <tr>
  149. <td class="mdRow">
  150. <table cellpadding="0" cellspacing="0" border="0">
  151. <tr>
  152. <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> * resolv_getserver </td>
  153. <td class="md" valign="top">(&nbsp;</td>
  154. <td class="md" nowrap valign="top">void&nbsp;</td>
  155. <td class="mdname1" valign="top" nowrap> </td>
  156. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  157. <td class="md" nowrap></td>
  158. </tr>
  159. </table>
  160. </td>
  161. </tr>
  162. </table>
  163. <table cellspacing="5" cellpadding="0" border="0">
  164. <tr>
  165. <td>
  166. &nbsp;
  167. </td>
  168. <td>
  169. <p>
  170. Obtain the currently configured DNS server.
  171. <p>
  172. <dl compact><dt><b>Returns:</b></dt><dd>A pointer to a 4-byte representation of the IP address of the currently configured DNS server or NULL if no DNS server has been configured. </dd></dl>
  173. <dl compact><dt><b>Examples: </b></dt><dd>
  174. <a class="el" href="a00046.html#a149">resolv.c</a>, and <a class="el" href="a00047.html#a159">resolv.h</a>.</dl>
  175. <p>
  176. Definition at line <a class="el" href="a00172.html#l00422">422</a> of file <a class="el" href="a00172.html">resolv.c</a>.
  177. <p>
  178. References <a class="el" href="a00172.html#l00069">NULL</a>, and <a class="el" href="a00202.html#l01211">uip_udp_conn::ripaddr</a>. </td>
  179. </tr>
  180. </table>
  181. <a class="anchor" name="g66d19181ad5fe8b8f7c84d1f1d46a2ec"></a><!-- doxytag: member="resolv.h::resolv_lookup" ref="g66d19181ad5fe8b8f7c84d1f1d46a2ec" args="(char *name)" --><p>
  182. <table class="mdTable" cellpadding="2" cellspacing="0">
  183. <tr>
  184. <td class="mdRow">
  185. <table cellpadding="0" cellspacing="0" border="0">
  186. <tr>
  187. <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> * resolv_lookup </td>
  188. <td class="md" valign="top">(&nbsp;</td>
  189. <td class="md" nowrap valign="top">char *&nbsp;</td>
  190. <td class="mdname1" valign="top" nowrap> <em>name</em> </td>
  191. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  192. <td class="md" nowrap></td>
  193. </tr>
  194. </table>
  195. </td>
  196. </tr>
  197. </table>
  198. <table cellspacing="5" cellpadding="0" border="0">
  199. <tr>
  200. <td>
  201. &nbsp;
  202. </td>
  203. <td>
  204. <p>
  205. Look up a hostname in the array of known hostnames.
  206. <p>
  207. <dl compact><dt><b>Note:</b></dt><dd>This function only looks in the internal array of known hostnames, it does not send out a query for the hostname if none was found. The function <a class="el" href="a00160.html#ge4dcbbe6c641d2e3b8537b479df5fc99">resolv_query()</a> can be used to send a query for a hostname.</dd></dl>
  208. <dl compact><dt><b>Returns:</b></dt><dd>A pointer to a 4-byte representation of the hostname's IP address, or NULL if the hostname was not found in the array of hostnames. </dd></dl>
  209. <dl compact><dt><b>Examples: </b></dt><dd>
  210. <a class="el" href="a00046.html#a148">resolv.c</a>, <a class="el" href="a00047.html#a161">resolv.h</a>, and <a class="el" href="a00040.html#a271">webclient.c</a>.</dl>
  211. <p>
  212. Definition at line <a class="el" href="a00172.html#l00396">396</a> of file <a class="el" href="a00172.html">resolv.c</a>.
  213. <p>
  214. References <a class="el" href="a00172.html#l00123">RESOLV_ENTRIES</a>, and <a class="el" href="a00172.html#l00111">STATE_DONE</a>.
  215. <p>
  216. Referenced by <a class="el" href="a00180.html#l00378">webclient_appcall()</a>, and <a class="el" href="a00180.html#l00140">webclient_get()</a>. </td>
  217. </tr>
  218. </table>
  219. <a class="anchor" name="ge4dcbbe6c641d2e3b8537b479df5fc99"></a><!-- doxytag: member="resolv.h::resolv_query" ref="ge4dcbbe6c641d2e3b8537b479df5fc99" args="(char *name)" --><p>
  220. <table class="mdTable" cellpadding="2" cellspacing="0">
  221. <tr>
  222. <td class="mdRow">
  223. <table cellpadding="0" cellspacing="0" border="0">
  224. <tr>
  225. <td class="md" nowrap valign="top">void resolv_query </td>
  226. <td class="md" valign="top">(&nbsp;</td>
  227. <td class="md" nowrap valign="top">char *&nbsp;</td>
  228. <td class="mdname1" valign="top" nowrap> <em>name</em> </td>
  229. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  230. <td class="md" nowrap></td>
  231. </tr>
  232. </table>
  233. </td>
  234. </tr>
  235. </table>
  236. <table cellspacing="5" cellpadding="0" border="0">
  237. <tr>
  238. <td>
  239. &nbsp;
  240. </td>
  241. <td>
  242. <p>
  243. Queues a name so that a question for the name will be sent out.
  244. <p>
  245. <dl compact><dt><b>Parameters:</b></dt><dd>
  246. <table border="0" cellspacing="2" cellpadding="0">
  247. <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The hostname that is to be queried. </td></tr>
  248. </table>
  249. </dl>
  250. <dl compact><dt><b>Examples: </b></dt><dd>
  251. <a class="el" href="a00046.html#a146">resolv.c</a>, <a class="el" href="a00047.html#a162">resolv.h</a>, and <a class="el" href="a00040.html#a306">webclient.c</a>.</dl>
  252. <p>
  253. Definition at line <a class="el" href="a00172.html#l00350">350</a> of file <a class="el" href="a00172.html">resolv.c</a>.
  254. <p>
  255. References <a class="el" href="a00172.html#l00123">RESOLV_ENTRIES</a>, and <a class="el" href="a00172.html#l00108">STATE_UNUSED</a>.
  256. <p>
  257. Referenced by <a class="el" href="a00180.html#l00378">webclient_appcall()</a>. </td>
  258. </tr>
  259. </table>
  260. <hr size="1"><address style="align: right;"><small>Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by&nbsp;
  261. <a href="http://www.doxygen.org/index.html">
  262. <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
  263. </body>
  264. </html>