xref: /nrf52832-nimble/rt-thread/components/net/uip/doc/html/a00148.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: uIP conversion functions</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>uIP conversion functions<br>
17<small>
18[<a class="el" href="a00150.html">The uIP TCP/IP stack</a>]</small>
19</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
20These functions can be used for converting between different data formats used by uIP.
21<p>
22
23<p>
24<table border="0" cellpadding="0" cellspacing="0">
25<tr><td></td></tr>
26<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
27<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(addr, addr0, addr1, addr2, addr3)</td></tr>
28
29<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct an IP address from four bytes.  <a href="#g87f0b54ade0d159fba495089128a4932"></a><br></td></tr>
30<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#g53fbda0e8c31d4882294c8dc3cb5f487">uip_ip6addr</a>(addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7)</td></tr>
31
32<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct an IPv6 address from eight 16-bit words.  <a href="#g53fbda0e8c31d4882294c8dc3cb5f487"></a><br></td></tr>
33<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#g769512993b7b27271909d6daa4748b60">uip_ipaddr_copy</a>(dest, src)</td></tr>
34
35<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy an IP address to another IP address.  <a href="#g769512993b7b27271909d6daa4748b60"></a><br></td></tr>
36<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#g210e629f7252e4bc8458cbdf260b3318">uip_ipaddr_cmp</a>(addr1, addr2)</td></tr>
37
38<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare two IP addresses.  <a href="#g210e629f7252e4bc8458cbdf260b3318"></a><br></td></tr>
39<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#g6b16e0bac41821c1fbe0c267071642f0">uip_ipaddr_maskcmp</a>(addr1, addr2, mask)</td></tr>
40
41<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare two IP addresses with netmasks.  <a href="#g6b16e0bac41821c1fbe0c267071642f0"></a><br></td></tr>
42<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#g969d7fff37a979737da045e0d538a9bd">uip_ipaddr_mask</a>(dest, src, mask)</td></tr>
43
44<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mask out the network part of an IP address.  <a href="#g969d7fff37a979737da045e0d538a9bd"></a><br></td></tr>
45<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#g22fa0681cd463191d7a01fe85d86996f">uip_ipaddr1</a>(addr)</td></tr>
46
47<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pick the first octet of an IP address.  <a href="#g22fa0681cd463191d7a01fe85d86996f"></a><br></td></tr>
48<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#gffcd2fbe181e2aaefbf970551c302af5">uip_ipaddr2</a>(addr)</td></tr>
49
50<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pick the second octet of an IP address.  <a href="#gffcd2fbe181e2aaefbf970551c302af5"></a><br></td></tr>
51<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#ge23534479ead15af8ff08ace26a47fb5">uip_ipaddr3</a>(addr)</td></tr>
52
53<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pick the third octet of an IP address.  <a href="#ge23534479ead15af8ff08ace26a47fb5"></a><br></td></tr>
54<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#g165b603ec150e26efec7be199c9c2901">uip_ipaddr4</a>(addr)</td></tr>
55
56<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pick the fourth octet of an IP address.  <a href="#g165b603ec150e26efec7be199c9c2901"></a><br></td></tr>
57<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#g69a7a4951ff21b302267532c21ee78fc">HTONS</a>(n)</td></tr>
58
59<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert 16-bit quantity from host byte order to network byte order.  <a href="#g69a7a4951ff21b302267532c21ee78fc"></a><br></td></tr>
60<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g118e9d76568ab81ad97f138d4ea1ddd2"></a><!-- doxytag: member="uipconvfunc::ntohs" ref="g118e9d76568ab81ad97f138d4ea1ddd2" args="" -->
61#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#g118e9d76568ab81ad97f138d4ea1ddd2">ntohs</a>&nbsp;&nbsp;&nbsp;htons</td></tr>
62
63<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
64<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="a00148.html#ga22b04cac8cf283ca12f028578bebc06">htons</a> (<a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> val)</td></tr>
65
66<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert 16-bit quantity from host byte order to network byte order.  <a href="#ga22b04cac8cf283ca12f028578bebc06"></a><br></td></tr>
67</table>
68<hr><h2>Define Documentation</h2>
69<a class="anchor" name="g69a7a4951ff21b302267532c21ee78fc"></a><!-- doxytag: member="uip.h::HTONS" ref="g69a7a4951ff21b302267532c21ee78fc" args="(n)" --><p>
70<table class="mdTable" cellpadding="2" cellspacing="0">
71  <tr>
72    <td class="mdRow">
73      <table cellpadding="0" cellspacing="0" border="0">
74        <tr>
75          <td class="md" nowrap valign="top">#define HTONS          </td>
76          <td class="md" valign="top">(&nbsp;</td>
77          <td class="md" nowrap valign="top">n&nbsp;</td>
78          <td class="mdname1" valign="top" nowrap>          </td>
79          <td class="md" valign="top">&nbsp;)&nbsp;</td>
80          <td class="md" nowrap></td>
81        </tr>
82      </table>
83    </td>
84  </tr>
85</table>
86<table cellspacing="5" cellpadding="0" border="0">
87  <tr>
88    <td>
89      &nbsp;
90    </td>
91    <td>
92
93<p>
94Convert 16-bit quantity from host byte order to network byte order.
95<p>
96This macro is primarily used for converting constants from host byte order to network byte order. For converting variables to network byte order, use the <a class="el" href="a00148.html#ga22b04cac8cf283ca12f028578bebc06">htons()</a> function instead. <dl compact><dt><b>Examples: </b></dt><dd>
97<a class="el" href="a00048.html#a6">dhcpc.c</a>, <a class="el" href="a00036.html#a103">hello-world.c</a>, <a class="el" href="a00046.html#a139">resolv.c</a>, <a class="el" href="a00038.html#a191">smtp.c</a>, and <a class="el" href="a00044.html#a219">telnetd.c</a>.</dl>
98<p>
99Definition at line <a class="el" href="a00202.html#l01070">1070</a> of file <a class="el" href="a00202.html">uip.h</a>.
100<p>
101Referenced by <a class="el" href="a00170.html#l00041">hello_world_init()</a>, <a class="el" href="a00201.html#l01882">htons()</a>, <a class="el" href="a00184.html#l00333">httpd_init()</a>, <a class="el" href="a00172.html#l00331">resolv_appcall()</a>, <a class="el" href="a00172.html#l00438">resolv_conf()</a>, <a class="el" href="a00174.html#l00233">smtp_send()</a>, <a class="el" href="a00204.html#l00278">uip_arp_arpin()</a>, and <a class="el" href="a00201.html#l00682">uip_process()</a>.    </td>
102  </tr>
103</table>
104<a class="anchor" name="g53fbda0e8c31d4882294c8dc3cb5f487"></a><!-- doxytag: member="uip.h::uip_ip6addr" ref="g53fbda0e8c31d4882294c8dc3cb5f487" args="(addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7)" --><p>
105<table class="mdTable" cellpadding="2" cellspacing="0">
106  <tr>
107    <td class="mdRow">
108      <table cellpadding="0" cellspacing="0" border="0">
109        <tr>
110          <td class="md" nowrap valign="top">#define uip_ip6addr          </td>
111          <td class="md" valign="top">(&nbsp;</td>
112          <td class="md" nowrap valign="top">addr,         <tr>
113          <td class="md" nowrap align="right"></td>
114          <td class="md"></td>
115          <td class="md" nowrap>addr0,         <tr>
116          <td class="md" nowrap align="right"></td>
117          <td class="md"></td>
118          <td class="md" nowrap>addr1,         <tr>
119          <td class="md" nowrap align="right"></td>
120          <td class="md"></td>
121          <td class="md" nowrap>addr2,         <tr>
122          <td class="md" nowrap align="right"></td>
123          <td class="md"></td>
124          <td class="md" nowrap>addr3,         <tr>
125          <td class="md" nowrap align="right"></td>
126          <td class="md"></td>
127          <td class="md" nowrap>addr4,         <tr>
128          <td class="md" nowrap align="right"></td>
129          <td class="md"></td>
130          <td class="md" nowrap>addr5,         <tr>
131          <td class="md" nowrap align="right"></td>
132          <td class="md"></td>
133          <td class="md" nowrap>addr6,         <tr>
134          <td class="md" nowrap align="right"></td>
135          <td class="md"></td>
136          <td class="md" nowrap>addr7&nbsp;</td>
137          <td class="mdname1" valign="top" nowrap>          </td>
138          <td class="md" valign="top">&nbsp;)&nbsp;</td>
139          <td class="md" nowrap></td>
140        </tr>
141      </table>
142    </td>
143  </tr>
144</table>
145<table cellspacing="5" cellpadding="0" border="0">
146  <tr>
147    <td>
148      &nbsp;
149    </td>
150    <td>
151
152<p>
153Construct an IPv6 address from eight 16-bit words.
154<p>
155This function constructs an IPv6 address.
156<p>
157Definition at line <a class="el" href="a00202.html#l00852">852</a> of file <a class="el" href="a00202.html">uip.h</a>.    </td>
158  </tr>
159</table>
160<a class="anchor" name="g87f0b54ade0d159fba495089128a4932"></a><!-- doxytag: member="uip.h::uip_ipaddr" ref="g87f0b54ade0d159fba495089128a4932" args="(addr, addr0, addr1, addr2, addr3)" --><p>
161<table class="mdTable" cellpadding="2" cellspacing="0">
162  <tr>
163    <td class="mdRow">
164      <table cellpadding="0" cellspacing="0" border="0">
165        <tr>
166          <td class="md" nowrap valign="top">#define uip_ipaddr          </td>
167          <td class="md" valign="top">(&nbsp;</td>
168          <td class="md" nowrap valign="top">addr,         <tr>
169          <td class="md" nowrap align="right"></td>
170          <td class="md"></td>
171          <td class="md" nowrap>addr0,         <tr>
172          <td class="md" nowrap align="right"></td>
173          <td class="md"></td>
174          <td class="md" nowrap>addr1,         <tr>
175          <td class="md" nowrap align="right"></td>
176          <td class="md"></td>
177          <td class="md" nowrap>addr2,         <tr>
178          <td class="md" nowrap align="right"></td>
179          <td class="md"></td>
180          <td class="md" nowrap>addr3&nbsp;</td>
181          <td class="mdname1" valign="top" nowrap>          </td>
182          <td class="md" valign="top">&nbsp;)&nbsp;</td>
183          <td class="md" nowrap></td>
184        </tr>
185      </table>
186    </td>
187  </tr>
188</table>
189<table cellspacing="5" cellpadding="0" border="0">
190  <tr>
191    <td>
192      &nbsp;
193    </td>
194    <td>
195
196<p>
197Construct an IP address from four bytes.
198<p>
199This function constructs an IP address of the type that uIP handles internally from four bytes. The function is handy for specifying IP addresses to use with e.g. the <a class="el" href="a00147.html#g8096b0c4b543dc408f4dd031ddae7240">uip_connect()</a> function.<p>
200Example: <div class="fragment"><pre class="fragment"> <a class="code" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> ipaddr;
201 <span class="keyword">struct </span><a class="code" href="a00088.html">uip_conn</a> *c;
202
203 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&amp;ipaddr, 192,168,1,2);
204 c = <a class="code" href="a00147.html#g8096b0c4b543dc408f4dd031ddae7240">uip_connect</a>(&amp;ipaddr, <a class="code" href="a00148.html#g69a7a4951ff21b302267532c21ee78fc">HTONS</a>(80));
205</pre></div><p>
206<dl compact><dt><b>Parameters:</b></dt><dd>
207  <table border="0" cellspacing="2" cellpadding="0">
208    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>A pointer to a uip_ipaddr_t variable that will be filled in with the IP address.</td></tr>
209    <tr><td valign="top"></td><td valign="top"><em>addr0</em>&nbsp;</td><td>The first octet of the IP address. </td></tr>
210    <tr><td valign="top"></td><td valign="top"><em>addr1</em>&nbsp;</td><td>The second octet of the IP address. </td></tr>
211    <tr><td valign="top"></td><td valign="top"><em>addr2</em>&nbsp;</td><td>The third octet of the IP address. </td></tr>
212    <tr><td valign="top"></td><td valign="top"><em>addr3</em>&nbsp;</td><td>The forth octet of the IP address. </td></tr>
213  </table>
214</dl>
215<dl compact><dt><b>Examples: </b></dt><dd>
216<a class="el" href="a00048.html#a36">dhcpc.c</a>, <a class="el" href="a00042.html#a65">example-mainloop-with-arp.c</a>, and <a class="el" href="a00043.html#a89">example-mainloop-without-arp.c</a>.</dl>
217<p>
218Definition at line <a class="el" href="a00202.html#l00840">840</a> of file <a class="el" href="a00202.html">uip.h</a>.    </td>
219  </tr>
220</table>
221<a class="anchor" name="g22fa0681cd463191d7a01fe85d86996f"></a><!-- doxytag: member="uip.h::uip_ipaddr1" ref="g22fa0681cd463191d7a01fe85d86996f" args="(addr)" --><p>
222<table class="mdTable" cellpadding="2" cellspacing="0">
223  <tr>
224    <td class="mdRow">
225      <table cellpadding="0" cellspacing="0" border="0">
226        <tr>
227          <td class="md" nowrap valign="top">#define uip_ipaddr1          </td>
228          <td class="md" valign="top">(&nbsp;</td>
229          <td class="md" nowrap valign="top">addr&nbsp;</td>
230          <td class="mdname1" valign="top" nowrap>          </td>
231          <td class="md" valign="top">&nbsp;)&nbsp;</td>
232          <td class="md" nowrap></td>
233        </tr>
234      </table>
235    </td>
236  </tr>
237</table>
238<table cellspacing="5" cellpadding="0" border="0">
239  <tr>
240    <td>
241      &nbsp;
242    </td>
243    <td>
244
245<p>
246Pick the first octet of an IP address.
247<p>
248Picks out the first octet of an IP address.<p>
249Example: <div class="fragment"><pre class="fragment"> <a class="code" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> ipaddr;
250 <a class="code" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> octet;
251
252 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&amp;ipaddr, 1,2,3,4);
253 octet = <a class="code" href="a00148.html#g22fa0681cd463191d7a01fe85d86996f">uip_ipaddr1</a>(&amp;ipaddr);
254</pre></div><p>
255In the example above, the variable "octet" will contain the value 1. <dl compact><dt><b>Examples: </b></dt><dd>
256<a class="el" href="a00048.html#a28">dhcpc.c</a>.</dl>
257<p>
258Definition at line <a class="el" href="a00202.html#l00995">995</a> of file <a class="el" href="a00202.html">uip.h</a>.    </td>
259  </tr>
260</table>
261<a class="anchor" name="gffcd2fbe181e2aaefbf970551c302af5"></a><!-- doxytag: member="uip.h::uip_ipaddr2" ref="gffcd2fbe181e2aaefbf970551c302af5" args="(addr)" --><p>
262<table class="mdTable" cellpadding="2" cellspacing="0">
263  <tr>
264    <td class="mdRow">
265      <table cellpadding="0" cellspacing="0" border="0">
266        <tr>
267          <td class="md" nowrap valign="top">#define uip_ipaddr2          </td>
268          <td class="md" valign="top">(&nbsp;</td>
269          <td class="md" nowrap valign="top">addr&nbsp;</td>
270          <td class="mdname1" valign="top" nowrap>          </td>
271          <td class="md" valign="top">&nbsp;)&nbsp;</td>
272          <td class="md" nowrap></td>
273        </tr>
274      </table>
275    </td>
276  </tr>
277</table>
278<table cellspacing="5" cellpadding="0" border="0">
279  <tr>
280    <td>
281      &nbsp;
282    </td>
283    <td>
284
285<p>
286Pick the second octet of an IP address.
287<p>
288Picks out the second octet of an IP address.<p>
289Example: <div class="fragment"><pre class="fragment"> <a class="code" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> ipaddr;
290 <a class="code" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> octet;
291
292 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&amp;ipaddr, 1,2,3,4);
293 octet = <a class="code" href="a00148.html#gffcd2fbe181e2aaefbf970551c302af5">uip_ipaddr2</a>(&amp;ipaddr);
294</pre></div><p>
295In the example above, the variable "octet" will contain the value 2. <dl compact><dt><b>Examples: </b></dt><dd>
296<a class="el" href="a00048.html#a29">dhcpc.c</a>.</dl>
297<p>
298Definition at line <a class="el" href="a00202.html#l01015">1015</a> of file <a class="el" href="a00202.html">uip.h</a>.    </td>
299  </tr>
300</table>
301<a class="anchor" name="ge23534479ead15af8ff08ace26a47fb5"></a><!-- doxytag: member="uip.h::uip_ipaddr3" ref="ge23534479ead15af8ff08ace26a47fb5" args="(addr)" --><p>
302<table class="mdTable" cellpadding="2" cellspacing="0">
303  <tr>
304    <td class="mdRow">
305      <table cellpadding="0" cellspacing="0" border="0">
306        <tr>
307          <td class="md" nowrap valign="top">#define uip_ipaddr3          </td>
308          <td class="md" valign="top">(&nbsp;</td>
309          <td class="md" nowrap valign="top">addr&nbsp;</td>
310          <td class="mdname1" valign="top" nowrap>          </td>
311          <td class="md" valign="top">&nbsp;)&nbsp;</td>
312          <td class="md" nowrap></td>
313        </tr>
314      </table>
315    </td>
316  </tr>
317</table>
318<table cellspacing="5" cellpadding="0" border="0">
319  <tr>
320    <td>
321      &nbsp;
322    </td>
323    <td>
324
325<p>
326Pick the third octet of an IP address.
327<p>
328Picks out the third octet of an IP address.<p>
329Example: <div class="fragment"><pre class="fragment"> <a class="code" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> ipaddr;
330 <a class="code" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> octet;
331
332 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&amp;ipaddr, 1,2,3,4);
333 octet = <a class="code" href="a00148.html#ge23534479ead15af8ff08ace26a47fb5">uip_ipaddr3</a>(&amp;ipaddr);
334</pre></div><p>
335In the example above, the variable "octet" will contain the value 3. <dl compact><dt><b>Examples: </b></dt><dd>
336<a class="el" href="a00048.html#a30">dhcpc.c</a>.</dl>
337<p>
338Definition at line <a class="el" href="a00202.html#l01035">1035</a> of file <a class="el" href="a00202.html">uip.h</a>.    </td>
339  </tr>
340</table>
341<a class="anchor" name="g165b603ec150e26efec7be199c9c2901"></a><!-- doxytag: member="uip.h::uip_ipaddr4" ref="g165b603ec150e26efec7be199c9c2901" args="(addr)" --><p>
342<table class="mdTable" cellpadding="2" cellspacing="0">
343  <tr>
344    <td class="mdRow">
345      <table cellpadding="0" cellspacing="0" border="0">
346        <tr>
347          <td class="md" nowrap valign="top">#define uip_ipaddr4          </td>
348          <td class="md" valign="top">(&nbsp;</td>
349          <td class="md" nowrap valign="top">addr&nbsp;</td>
350          <td class="mdname1" valign="top" nowrap>          </td>
351          <td class="md" valign="top">&nbsp;)&nbsp;</td>
352          <td class="md" nowrap></td>
353        </tr>
354      </table>
355    </td>
356  </tr>
357</table>
358<table cellspacing="5" cellpadding="0" border="0">
359  <tr>
360    <td>
361      &nbsp;
362    </td>
363    <td>
364
365<p>
366Pick the fourth octet of an IP address.
367<p>
368Picks out the fourth octet of an IP address.<p>
369Example: <div class="fragment"><pre class="fragment"> <a class="code" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> ipaddr;
370 <a class="code" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> octet;
371
372 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&amp;ipaddr, 1,2,3,4);
373 octet = <a class="code" href="a00148.html#g165b603ec150e26efec7be199c9c2901">uip_ipaddr4</a>(&amp;ipaddr);
374</pre></div><p>
375In the example above, the variable "octet" will contain the value 4. <dl compact><dt><b>Examples: </b></dt><dd>
376<a class="el" href="a00048.html#a31">dhcpc.c</a>.</dl>
377<p>
378Definition at line <a class="el" href="a00202.html#l01055">1055</a> of file <a class="el" href="a00202.html">uip.h</a>.    </td>
379  </tr>
380</table>
381<a class="anchor" name="g210e629f7252e4bc8458cbdf260b3318"></a><!-- doxytag: member="uip.h::uip_ipaddr_cmp" ref="g210e629f7252e4bc8458cbdf260b3318" args="(addr1, addr2)" --><p>
382<table class="mdTable" cellpadding="2" cellspacing="0">
383  <tr>
384    <td class="mdRow">
385      <table cellpadding="0" cellspacing="0" border="0">
386        <tr>
387          <td class="md" nowrap valign="top">#define uip_ipaddr_cmp          </td>
388          <td class="md" valign="top">(&nbsp;</td>
389          <td class="md" nowrap valign="top">addr1,         <tr>
390          <td class="md" nowrap align="right"></td>
391          <td class="md"></td>
392          <td class="md" nowrap>addr2&nbsp;</td>
393          <td class="mdname1" valign="top" nowrap>          </td>
394          <td class="md" valign="top">&nbsp;)&nbsp;</td>
395          <td class="md" nowrap></td>
396        </tr>
397      </table>
398    </td>
399  </tr>
400</table>
401<table cellspacing="5" cellpadding="0" border="0">
402  <tr>
403    <td>
404      &nbsp;
405    </td>
406    <td>
407
408<p>
409Compare two IP addresses.
410<p>
411Compares two IP addresses.<p>
412Example: <div class="fragment"><pre class="fragment"> <a class="code" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> ipaddr1, ipaddr2;
413
414 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&amp;ipaddr1, 192,16,1,2);
415 <span class="keywordflow">if</span>(<a class="code" href="a00148.html#g210e629f7252e4bc8458cbdf260b3318">uip_ipaddr_cmp</a>(&amp;ipaddr2, &amp;ipaddr1)) {
416    printf(<span class="stringliteral">"They are the same"</span>);
417 }
418</pre></div><p>
419<dl compact><dt><b>Parameters:</b></dt><dd>
420  <table border="0" cellspacing="2" cellpadding="0">
421    <tr><td valign="top"></td><td valign="top"><em>addr1</em>&nbsp;</td><td>The first IP address. </td></tr>
422    <tr><td valign="top"></td><td valign="top"><em>addr2</em>&nbsp;</td><td>The second IP address. </td></tr>
423  </table>
424</dl>
425
426<p>
427Definition at line <a class="el" href="a00202.html#l00911">911</a> of file <a class="el" href="a00202.html">uip.h</a>.
428<p>
429Referenced by <a class="el" href="a00204.html#l00278">uip_arp_arpin()</a>, <a class="el" href="a00204.html#l00354">uip_arp_out()</a>, and <a class="el" href="a00201.html#l00682">uip_process()</a>.    </td>
430  </tr>
431</table>
432<a class="anchor" name="g769512993b7b27271909d6daa4748b60"></a><!-- doxytag: member="uip.h::uip_ipaddr_copy" ref="g769512993b7b27271909d6daa4748b60" args="(dest, src)" --><p>
433<table class="mdTable" cellpadding="2" cellspacing="0">
434  <tr>
435    <td class="mdRow">
436      <table cellpadding="0" cellspacing="0" border="0">
437        <tr>
438          <td class="md" nowrap valign="top">#define uip_ipaddr_copy          </td>
439          <td class="md" valign="top">(&nbsp;</td>
440          <td class="md" nowrap valign="top">dest,         <tr>
441          <td class="md" nowrap align="right"></td>
442          <td class="md"></td>
443          <td class="md" nowrap>src&nbsp;</td>
444          <td class="mdname1" valign="top" nowrap>          </td>
445          <td class="md" valign="top">&nbsp;)&nbsp;</td>
446          <td class="md" nowrap></td>
447        </tr>
448      </table>
449    </td>
450  </tr>
451</table>
452<table cellspacing="5" cellpadding="0" border="0">
453  <tr>
454    <td>
455      &nbsp;
456    </td>
457    <td>
458
459<p>
460Copy an IP address to another IP address.
461<p>
462Copies an IP address from one place to another.<p>
463Example: <div class="fragment"><pre class="fragment"> <a class="code" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> ipaddr1, ipaddr2;
464
465 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&amp;ipaddr1, 192,16,1,2);
466 <a class="code" href="a00148.html#g769512993b7b27271909d6daa4748b60">uip_ipaddr_copy</a>(&amp;ipaddr2, &amp;ipaddr1);
467</pre></div><p>
468<dl compact><dt><b>Parameters:</b></dt><dd>
469  <table border="0" cellspacing="2" cellpadding="0">
470    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>The destination for the copy. </td></tr>
471    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>The source from where to copy. </td></tr>
472  </table>
473</dl>
474<dl compact><dt><b>Examples: </b></dt><dd>
475<a class="el" href="a00038.html#a187">smtp.c</a>.</dl>
476<p>
477Definition at line <a class="el" href="a00202.html#l00882">882</a> of file <a class="el" href="a00202.html">uip.h</a>.
478<p>
479Referenced by <a class="el" href="a00174.html#l00216">smtp_configure()</a>, <a class="el" href="a00204.html#l00354">uip_arp_out()</a>, and <a class="el" href="a00201.html#l00682">uip_process()</a>.    </td>
480  </tr>
481</table>
482<a class="anchor" name="g969d7fff37a979737da045e0d538a9bd"></a><!-- doxytag: member="uip.h::uip_ipaddr_mask" ref="g969d7fff37a979737da045e0d538a9bd" args="(dest, src, mask)" --><p>
483<table class="mdTable" cellpadding="2" cellspacing="0">
484  <tr>
485    <td class="mdRow">
486      <table cellpadding="0" cellspacing="0" border="0">
487        <tr>
488          <td class="md" nowrap valign="top">#define uip_ipaddr_mask          </td>
489          <td class="md" valign="top">(&nbsp;</td>
490          <td class="md" nowrap valign="top">dest,         <tr>
491          <td class="md" nowrap align="right"></td>
492          <td class="md"></td>
493          <td class="md" nowrap>src,         <tr>
494          <td class="md" nowrap align="right"></td>
495          <td class="md"></td>
496          <td class="md" nowrap>mask&nbsp;</td>
497          <td class="mdname1" valign="top" nowrap>          </td>
498          <td class="md" valign="top">&nbsp;)&nbsp;</td>
499          <td class="md" nowrap></td>
500        </tr>
501      </table>
502    </td>
503  </tr>
504</table>
505<table cellspacing="5" cellpadding="0" border="0">
506  <tr>
507    <td>
508      &nbsp;
509    </td>
510    <td>
511
512<p>
513Mask out the network part of an IP address.
514<p>
515Masks out the network part of an IP address, given the address and the netmask.<p>
516Example: <div class="fragment"><pre class="fragment"> <a class="code" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> ipaddr1, ipaddr2, netmask;
517
518 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&amp;ipaddr1, 192,16,1,2);
519 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&amp;netmask, 255,255,255,0);
520 <a class="code" href="a00148.html#g969d7fff37a979737da045e0d538a9bd">uip_ipaddr_mask</a>(&amp;ipaddr2, &amp;ipaddr1, &amp;netmask);
521</pre></div><p>
522In the example above, the variable "ipaddr2" will contain the IP address 192.168.1.0.<p>
523<dl compact><dt><b>Parameters:</b></dt><dd>
524  <table border="0" cellspacing="2" cellpadding="0">
525    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Where the result is to be placed. </td></tr>
526    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>The IP address. </td></tr>
527    <tr><td valign="top"></td><td valign="top"><em>mask</em>&nbsp;</td><td>The netmask. </td></tr>
528  </table>
529</dl>
530
531<p>
532Definition at line <a class="el" href="a00202.html#l00972">972</a> of file <a class="el" href="a00202.html">uip.h</a>.    </td>
533  </tr>
534</table>
535<a class="anchor" name="g6b16e0bac41821c1fbe0c267071642f0"></a><!-- doxytag: member="uip.h::uip_ipaddr_maskcmp" ref="g6b16e0bac41821c1fbe0c267071642f0" args="(addr1, addr2, mask)" --><p>
536<table class="mdTable" cellpadding="2" cellspacing="0">
537  <tr>
538    <td class="mdRow">
539      <table cellpadding="0" cellspacing="0" border="0">
540        <tr>
541          <td class="md" nowrap valign="top">#define uip_ipaddr_maskcmp          </td>
542          <td class="md" valign="top">(&nbsp;</td>
543          <td class="md" nowrap valign="top">addr1,         <tr>
544          <td class="md" nowrap align="right"></td>
545          <td class="md"></td>
546          <td class="md" nowrap>addr2,         <tr>
547          <td class="md" nowrap align="right"></td>
548          <td class="md"></td>
549          <td class="md" nowrap>mask&nbsp;</td>
550          <td class="mdname1" valign="top" nowrap>          </td>
551          <td class="md" valign="top">&nbsp;)&nbsp;</td>
552          <td class="md" nowrap></td>
553        </tr>
554      </table>
555    </td>
556  </tr>
557</table>
558<table cellspacing="5" cellpadding="0" border="0">
559  <tr>
560    <td>
561      &nbsp;
562    </td>
563    <td>
564
565<p>
566Compare two IP addresses with netmasks.
567<p>
568Compares two IP addresses with netmasks. The masks are used to mask out the bits that are to be compared.<p>
569Example: <div class="fragment"><pre class="fragment"> <a class="code" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> ipaddr1, ipaddr2, mask;
570
571 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&amp;mask, 255,255,255,0);
572 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&amp;ipaddr1, 192,16,1,2);
573 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&amp;ipaddr2, 192,16,1,3);
574 <span class="keywordflow">if</span>(<a class="code" href="a00148.html#g6b16e0bac41821c1fbe0c267071642f0">uip_ipaddr_maskcmp</a>(&amp;ipaddr1, &amp;ipaddr2, &amp;mask)) {
575    printf(<span class="stringliteral">"They are the same"</span>);
576 }
577</pre></div><p>
578<dl compact><dt><b>Parameters:</b></dt><dd>
579  <table border="0" cellspacing="2" cellpadding="0">
580    <tr><td valign="top"></td><td valign="top"><em>addr1</em>&nbsp;</td><td>The first IP address. </td></tr>
581    <tr><td valign="top"></td><td valign="top"><em>addr2</em>&nbsp;</td><td>The second IP address. </td></tr>
582    <tr><td valign="top"></td><td valign="top"><em>mask</em>&nbsp;</td><td>The netmask. </td></tr>
583  </table>
584</dl>
585
586<p>
587Definition at line <a class="el" href="a00202.html#l00941">941</a> of file <a class="el" href="a00202.html">uip.h</a>.
588<p>
589Referenced by <a class="el" href="a00204.html#l00354">uip_arp_out()</a>.    </td>
590  </tr>
591</table>
592<hr><h2>Function Documentation</h2>
593<a class="anchor" name="ga22b04cac8cf283ca12f028578bebc06"></a><!-- doxytag: member="uip.h::htons" ref="ga22b04cac8cf283ca12f028578bebc06" args="(u16_t val)" --><p>
594<table class="mdTable" cellpadding="2" cellspacing="0">
595  <tr>
596    <td class="mdRow">
597      <table cellpadding="0" cellspacing="0" border="0">
598        <tr>
599          <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> htons           </td>
600          <td class="md" valign="top">(&nbsp;</td>
601          <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a>&nbsp;</td>
602          <td class="mdname1" valign="top" nowrap> <em>val</em>          </td>
603          <td class="md" valign="top">&nbsp;)&nbsp;</td>
604          <td class="md" nowrap></td>
605        </tr>
606      </table>
607    </td>
608  </tr>
609</table>
610<table cellspacing="5" cellpadding="0" border="0">
611  <tr>
612    <td>
613      &nbsp;
614    </td>
615    <td>
616
617<p>
618Convert 16-bit quantity from host byte order to network byte order.
619<p>
620This function is primarily used for converting variables from host byte order to network byte order. For converting constants to network byte order, use the <a class="el" href="a00148.html#g69a7a4951ff21b302267532c21ee78fc">HTONS()</a> macro instead. <dl compact><dt><b>Examples: </b></dt><dd>
621<a class="el" href="a00042.html#a70">example-mainloop-with-arp.c</a>, <a class="el" href="a00046.html#a137">resolv.c</a>, and <a class="el" href="a00040.html#a274">webclient.c</a>.</dl>
622<p>
623Definition at line <a class="el" href="a00201.html#l01882">1882</a> of file <a class="el" href="a00201.html">uip.c</a>.
624<p>
625References <a class="el" href="a00202.html#l01070">HTONS</a>.
626<p>
627Referenced by <a class="el" href="a00201.html#l00311">uip_chksum()</a>, <a class="el" href="a00201.html#l00407">uip_connect()</a>, <a class="el" href="a00201.html#l00318">uip_ipchksum()</a>, <a class="el" href="a00201.html#l00473">uip_udp_new()</a>, and <a class="el" href="a00180.html#l00140">webclient_get()</a>.    </td>
628  </tr>
629</table>
630<hr size="1"><address style="align: right;"><small>Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by&nbsp;
631<a href="http://www.doxygen.org/index.html">
632<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
633</body>
634</html>
635