xref: /nrf52832-nimble/rt-thread/components/net/uip/doc/html/a00160.html (revision 104654410c56c573564690304ae786df310c91fc)
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>
20The uIP DNS resolver functions are used to lookup a hostname and map it to a numerical IP address.
21<p>
22It 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>
23When 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
30<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">DNS resolver code header file. <br></td></tr>
31
32<p>
33<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>
34
35<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">DNS host name to IP address resolver. <br></td></tr>
36
37<p>
38<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
39<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3d768e989e308144190ae1a5ddfa9726"></a><!-- doxytag: member="resolv::UIP_UDP_APPCALL" ref="g3d768e989e308144190ae1a5ddfa9726" args="" -->
40#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>
41
42<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g070d2ce7b6bb7e5c05602aa8c308d0c4"></a><!-- doxytag: member="resolv::NULL" ref="g070d2ce7b6bb7e5c05602aa8c308d0c4" args="" -->
43#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>&nbsp;&nbsp;&nbsp;(void *)0</td></tr>
44
45<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gecf13b8dc783db2202ca5c34fe117fc3"></a><!-- doxytag: member="resolv::MAX_RETRIES" ref="gecf13b8dc783db2202ca5c34fe117fc3" args="" -->
46#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#gecf13b8dc783db2202ca5c34fe117fc3">MAX_RETRIES</a>&nbsp;&nbsp;&nbsp;8</td></tr>
47
48<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g221d37ccde7e3fd0dd2c2eb0a6b15493"></a><!-- doxytag: member="resolv::RESOLV_ENTRIES" ref="g221d37ccde7e3fd0dd2c2eb0a6b15493" args="" -->
49#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#g221d37ccde7e3fd0dd2c2eb0a6b15493">RESOLV_ENTRIES</a>&nbsp;&nbsp;&nbsp;4</td></tr>
50
51<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
52<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7c5359305008e9183b18d6ab75f568bf"></a><!-- doxytag: member="resolv::resolv_appcall" ref="g7c5359305008e9183b18d6ab75f568bf" args="(void)" -->
53void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#g7c5359305008e9183b18d6ab75f568bf">resolv_appcall</a> (void)</td></tr>
54
55<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>
56
57<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>
58<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>
59
60<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configure which DNS server to use for queries.  <a href="#gdf916e0c752f5cda70d0bddb2be422ba"></a><br></td></tr>
61<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>
62
63<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Obtain the currently configured DNS server.  <a href="#g3191066cf8f76bd00b6843b77c37068f"></a><br></td></tr>
64<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb50f78bbf36d912d69f6c1685d0b40e3"></a><!-- doxytag: member="resolv::resolv_init" ref="gb50f78bbf36d912d69f6c1685d0b40e3" args="(void)" -->
65void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#gb50f78bbf36d912d69f6c1685d0b40e3">resolv_init</a> (void)</td></tr>
66
67<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initalize the resolver. <br></td></tr>
68<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>
69
70<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>
71<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>
72
73<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>
74</table>
75<hr><h2>Function Documentation</h2>
76<a class="anchor" name="gdf916e0c752f5cda70d0bddb2be422ba"></a><!-- doxytag: member="resolv.h::resolv_conf" ref="gdf916e0c752f5cda70d0bddb2be422ba" args="(u16_t *dnsserver)" --><p>
77<table class="mdTable" cellpadding="2" cellspacing="0">
78  <tr>
79    <td class="mdRow">
80      <table cellpadding="0" cellspacing="0" border="0">
81        <tr>
82          <td class="md" nowrap valign="top">void resolv_conf           </td>
83          <td class="md" valign="top">(&nbsp;</td>
84          <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> *&nbsp;</td>
85          <td class="mdname1" valign="top" nowrap> <em>dnsserver</em>          </td>
86          <td class="md" valign="top">&nbsp;)&nbsp;</td>
87          <td class="md" nowrap></td>
88        </tr>
89      </table>
90    </td>
91  </tr>
92</table>
93<table cellspacing="5" cellpadding="0" border="0">
94  <tr>
95    <td>
96      &nbsp;
97    </td>
98    <td>
99
100<p>
101Configure which DNS server to use for queries.
102<p>
103<dl compact><dt><b>Parameters:</b></dt><dd>
104  <table border="0" cellspacing="2" cellpadding="0">
105    <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>
106  </table>
107</dl>
108<dl compact><dt><b>Examples: </b></dt><dd>
109<a class="el" href="a00046.html#a151">resolv.c</a>, and <a class="el" href="a00047.html#a158">resolv.h</a>.</dl>
110<p>
111Definition at line <a class="el" href="a00172.html#l00438">438</a> of file <a class="el" href="a00172.html">resolv.c</a>.
112<p>
113References <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>
114  </tr>
115</table>
116<a class="anchor" name="g6d9751d534453425c7a5a215d1d4414c"></a><!-- doxytag: member="resolv.h::resolv_found" ref="g6d9751d534453425c7a5a215d1d4414c" args="(char *name, u16_t *ipaddr)" --><p>
117<table class="mdTable" cellpadding="2" cellspacing="0">
118  <tr>
119    <td class="mdRow">
120      <table cellpadding="0" cellspacing="0" border="0">
121        <tr>
122          <td class="md" nowrap valign="top">void resolv_found           </td>
123          <td class="md" valign="top">(&nbsp;</td>
124          <td class="md" nowrap valign="top">char *&nbsp;</td>
125          <td class="mdname" nowrap> <em>name</em>, </td>
126        </tr>
127        <tr>
128          <td class="md" nowrap align="right"></td>
129          <td class="md"></td>
130          <td class="md" nowrap><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> *&nbsp;</td>
131          <td class="mdname" nowrap> <em>ipaddr</em></td>
132        </tr>
133        <tr>
134          <td class="md"></td>
135          <td class="md">)&nbsp;</td>
136          <td class="md" colspan="2"></td>
137        </tr>
138      </table>
139    </td>
140  </tr>
141</table>
142<table cellspacing="5" cellpadding="0" border="0">
143  <tr>
144    <td>
145      &nbsp;
146    </td>
147    <td>
148
149<p>
150Callback function which is called when a hostname is found.
151<p>
152This 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>
153<dl compact><dt><b>Parameters:</b></dt><dd>
154  <table border="0" cellspacing="2" cellpadding="0">
155    <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>
156    <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>
157  </table>
158</dl>
159<dl compact><dt><b>Examples: </b></dt><dd>
160<a class="el" href="a00046.html#a135">resolv.c</a>, and <a class="el" href="a00047.html#a156">resolv.h</a>.</dl>    </td>
161  </tr>
162</table>
163<a class="anchor" name="g3191066cf8f76bd00b6843b77c37068f"></a><!-- doxytag: member="resolv.h::resolv_getserver" ref="g3191066cf8f76bd00b6843b77c37068f" args="(void)" --><p>
164<table class="mdTable" cellpadding="2" cellspacing="0">
165  <tr>
166    <td class="mdRow">
167      <table cellpadding="0" cellspacing="0" border="0">
168        <tr>
169          <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> * resolv_getserver           </td>
170          <td class="md" valign="top">(&nbsp;</td>
171          <td class="md" nowrap valign="top">void&nbsp;</td>
172          <td class="mdname1" valign="top" nowrap>          </td>
173          <td class="md" valign="top">&nbsp;)&nbsp;</td>
174          <td class="md" nowrap></td>
175        </tr>
176      </table>
177    </td>
178  </tr>
179</table>
180<table cellspacing="5" cellpadding="0" border="0">
181  <tr>
182    <td>
183      &nbsp;
184    </td>
185    <td>
186
187<p>
188Obtain the currently configured DNS server.
189<p>
190<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>
191<dl compact><dt><b>Examples: </b></dt><dd>
192<a class="el" href="a00046.html#a149">resolv.c</a>, and <a class="el" href="a00047.html#a159">resolv.h</a>.</dl>
193<p>
194Definition at line <a class="el" href="a00172.html#l00422">422</a> of file <a class="el" href="a00172.html">resolv.c</a>.
195<p>
196References <a class="el" href="a00172.html#l00069">NULL</a>, and <a class="el" href="a00202.html#l01211">uip_udp_conn::ripaddr</a>.    </td>
197  </tr>
198</table>
199<a class="anchor" name="g66d19181ad5fe8b8f7c84d1f1d46a2ec"></a><!-- doxytag: member="resolv.h::resolv_lookup" ref="g66d19181ad5fe8b8f7c84d1f1d46a2ec" args="(char *name)" --><p>
200<table class="mdTable" cellpadding="2" cellspacing="0">
201  <tr>
202    <td class="mdRow">
203      <table cellpadding="0" cellspacing="0" border="0">
204        <tr>
205          <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> * resolv_lookup           </td>
206          <td class="md" valign="top">(&nbsp;</td>
207          <td class="md" nowrap valign="top">char *&nbsp;</td>
208          <td class="mdname1" valign="top" nowrap> <em>name</em>          </td>
209          <td class="md" valign="top">&nbsp;)&nbsp;</td>
210          <td class="md" nowrap></td>
211        </tr>
212      </table>
213    </td>
214  </tr>
215</table>
216<table cellspacing="5" cellpadding="0" border="0">
217  <tr>
218    <td>
219      &nbsp;
220    </td>
221    <td>
222
223<p>
224Look up a hostname in the array of known hostnames.
225<p>
226<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>
227<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>
228<dl compact><dt><b>Examples: </b></dt><dd>
229<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>
230<p>
231Definition at line <a class="el" href="a00172.html#l00396">396</a> of file <a class="el" href="a00172.html">resolv.c</a>.
232<p>
233References <a class="el" href="a00172.html#l00123">RESOLV_ENTRIES</a>, and <a class="el" href="a00172.html#l00111">STATE_DONE</a>.
234<p>
235Referenced by <a class="el" href="a00180.html#l00378">webclient_appcall()</a>, and <a class="el" href="a00180.html#l00140">webclient_get()</a>.    </td>
236  </tr>
237</table>
238<a class="anchor" name="ge4dcbbe6c641d2e3b8537b479df5fc99"></a><!-- doxytag: member="resolv.h::resolv_query" ref="ge4dcbbe6c641d2e3b8537b479df5fc99" args="(char *name)" --><p>
239<table class="mdTable" cellpadding="2" cellspacing="0">
240  <tr>
241    <td class="mdRow">
242      <table cellpadding="0" cellspacing="0" border="0">
243        <tr>
244          <td class="md" nowrap valign="top">void resolv_query           </td>
245          <td class="md" valign="top">(&nbsp;</td>
246          <td class="md" nowrap valign="top">char *&nbsp;</td>
247          <td class="mdname1" valign="top" nowrap> <em>name</em>          </td>
248          <td class="md" valign="top">&nbsp;)&nbsp;</td>
249          <td class="md" nowrap></td>
250        </tr>
251      </table>
252    </td>
253  </tr>
254</table>
255<table cellspacing="5" cellpadding="0" border="0">
256  <tr>
257    <td>
258      &nbsp;
259    </td>
260    <td>
261
262<p>
263Queues a name so that a question for the name will be sent out.
264<p>
265<dl compact><dt><b>Parameters:</b></dt><dd>
266  <table border="0" cellspacing="2" cellpadding="0">
267    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The hostname that is to be queried. </td></tr>
268  </table>
269</dl>
270<dl compact><dt><b>Examples: </b></dt><dd>
271<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>
272<p>
273Definition at line <a class="el" href="a00172.html#l00350">350</a> of file <a class="el" href="a00172.html">resolv.c</a>.
274<p>
275References <a class="el" href="a00172.html#l00123">RESOLV_ENTRIES</a>, and <a class="el" href="a00172.html#l00108">STATE_UNUSED</a>.
276<p>
277Referenced by <a class="el" href="a00180.html#l00378">webclient_appcall()</a>.    </td>
278  </tr>
279</table>
280<hr size="1"><address style="align: right;"><small>Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by&nbsp;
281<a href="http://www.doxygen.org/index.html">
282<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
283</body>
284</html>
285