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 Page</span></a></li> 11 <li><a href="modules.html"><span>Modules</span></a></li> 12 <li><a href="classes.html"><span>Data 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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#g69a7a4951ff21b302267532c21ee78fc">HTONS</a>(n)</td></tr> 58 59<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#g118e9d76568ab81ad97f138d4ea1ddd2">ntohs</a> 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> </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"> </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">( </td> 77 <td class="md" nowrap valign="top">n </td> 78 <td class="mdname1" valign="top" nowrap> </td> 79 <td class="md" valign="top"> ) </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 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">( </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 </td> 137 <td class="mdname1" valign="top" nowrap> </td> 138 <td class="md" valign="top"> ) </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 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">( </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 </td> 181 <td class="mdname1" valign="top" nowrap> </td> 182 <td class="md" valign="top"> ) </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 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>(&ipaddr, 192,168,1,2); 204 c = <a class="code" href="a00147.html#g8096b0c4b543dc408f4dd031ddae7240">uip_connect</a>(&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> </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> </td><td>The first octet of the IP address. </td></tr> 210 <tr><td valign="top"></td><td valign="top"><em>addr1</em> </td><td>The second octet of the IP address. </td></tr> 211 <tr><td valign="top"></td><td valign="top"><em>addr2</em> </td><td>The third octet of the IP address. </td></tr> 212 <tr><td valign="top"></td><td valign="top"><em>addr3</em> </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">( </td> 229 <td class="md" nowrap valign="top">addr </td> 230 <td class="mdname1" valign="top" nowrap> </td> 231 <td class="md" valign="top"> ) </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 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>(&ipaddr, 1,2,3,4); 253 octet = <a class="code" href="a00148.html#g22fa0681cd463191d7a01fe85d86996f">uip_ipaddr1</a>(&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">( </td> 269 <td class="md" nowrap valign="top">addr </td> 270 <td class="mdname1" valign="top" nowrap> </td> 271 <td class="md" valign="top"> ) </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 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>(&ipaddr, 1,2,3,4); 293 octet = <a class="code" href="a00148.html#gffcd2fbe181e2aaefbf970551c302af5">uip_ipaddr2</a>(&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">( </td> 309 <td class="md" nowrap valign="top">addr </td> 310 <td class="mdname1" valign="top" nowrap> </td> 311 <td class="md" valign="top"> ) </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 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>(&ipaddr, 1,2,3,4); 333 octet = <a class="code" href="a00148.html#ge23534479ead15af8ff08ace26a47fb5">uip_ipaddr3</a>(&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">( </td> 349 <td class="md" nowrap valign="top">addr </td> 350 <td class="mdname1" valign="top" nowrap> </td> 351 <td class="md" valign="top"> ) </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 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>(&ipaddr, 1,2,3,4); 373 octet = <a class="code" href="a00148.html#g165b603ec150e26efec7be199c9c2901">uip_ipaddr4</a>(&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">( </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 </td> 393 <td class="mdname1" valign="top" nowrap> </td> 394 <td class="md" valign="top"> ) </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 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>(&ipaddr1, 192,16,1,2); 415 <span class="keywordflow">if</span>(<a class="code" href="a00148.html#g210e629f7252e4bc8458cbdf260b3318">uip_ipaddr_cmp</a>(&ipaddr2, &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> </td><td>The first IP address. </td></tr> 422 <tr><td valign="top"></td><td valign="top"><em>addr2</em> </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">( </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 </td> 444 <td class="mdname1" valign="top" nowrap> </td> 445 <td class="md" valign="top"> ) </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 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>(&ipaddr1, 192,16,1,2); 466 <a class="code" href="a00148.html#g769512993b7b27271909d6daa4748b60">uip_ipaddr_copy</a>(&ipaddr2, &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> </td><td>The destination for the copy. </td></tr> 471 <tr><td valign="top"></td><td valign="top"><em>src</em> </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">( </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 </td> 497 <td class="mdname1" valign="top" nowrap> </td> 498 <td class="md" valign="top"> ) </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 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>(&ipaddr1, 192,16,1,2); 519 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&netmask, 255,255,255,0); 520 <a class="code" href="a00148.html#g969d7fff37a979737da045e0d538a9bd">uip_ipaddr_mask</a>(&ipaddr2, &ipaddr1, &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> </td><td>Where the result is to be placed. </td></tr> 526 <tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>The IP address. </td></tr> 527 <tr><td valign="top"></td><td valign="top"><em>mask</em> </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">( </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 </td> 550 <td class="mdname1" valign="top" nowrap> </td> 551 <td class="md" valign="top"> ) </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 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>(&mask, 255,255,255,0); 572 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&ipaddr1, 192,16,1,2); 573 <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&ipaddr2, 192,16,1,3); 574 <span class="keywordflow">if</span>(<a class="code" href="a00148.html#g6b16e0bac41821c1fbe0c267071642f0">uip_ipaddr_maskcmp</a>(&ipaddr1, &ipaddr2, &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> </td><td>The first IP address. </td></tr> 581 <tr><td valign="top"></td><td valign="top"><em>addr2</em> </td><td>The second IP address. </td></tr> 582 <tr><td valign="top"></td><td valign="top"><em>mask</em> </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">( </td> 601 <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td> 602 <td class="mdname1" valign="top" nowrap> <em>val</em> </td> 603 <td class="md" valign="top"> ) </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 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 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