1*10465441SEvalZero<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2*10465441SEvalZero<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> 3*10465441SEvalZero<title>uIP 1.0: The uIP TCP/IP stack</title> 4*10465441SEvalZero<link href="doxygen.css" rel="stylesheet" type="text/css"> 5*10465441SEvalZero<link href="tabs.css" rel="stylesheet" type="text/css"> 6*10465441SEvalZero</head><body> 7*10465441SEvalZero<!-- Generated by Doxygen 1.4.6 --> 8*10465441SEvalZero<div class="tabs"> 9*10465441SEvalZero <ul> 10*10465441SEvalZero <li><a href="main.html"><span>Main Page</span></a></li> 11*10465441SEvalZero <li><a href="modules.html"><span>Modules</span></a></li> 12*10465441SEvalZero <li><a href="classes.html"><span>Data Structures</span></a></li> 13*10465441SEvalZero <li><a href="files.html"><span>Files</span></a></li> 14*10465441SEvalZero <li><a href="examples.html"><span>Examples</span></a></li> 15*10465441SEvalZero </ul></div> 16*10465441SEvalZero<h1>The uIP TCP/IP stack</h1><hr><a name="_details"></a><h2>Detailed Description</h2> 17*10465441SEvalZerouIP is an implementation of the TCP/IP protocol stack intended for small 8-bit and 16-bit microcontrollers. 18*10465441SEvalZero<p> 19*10465441SEvalZerouIP provides the necessary protocols for Internet communication, with a very small code footprint and RAM requirements - the uIP code size is on the order of a few kilobytes and RAM usage is on the order of a few hundred bytes. 20*10465441SEvalZero<p> 21*10465441SEvalZero<table border="0" cellpadding="0" cellspacing="0"> 22*10465441SEvalZero<tr><td></td></tr> 23*10465441SEvalZero<tr><td colspan="2"><br><h2>Files</h2></td></tr> 24*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="a00136.html">uip.h</a></td></tr> 25*10465441SEvalZero 26*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Header file for the uIP TCP/IP stack. <br></td></tr> 27*10465441SEvalZero 28*10465441SEvalZero<p> 29*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html">uip.c</a></td></tr> 30*10465441SEvalZero 31*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The uIP TCP/IP stack code. <br></td></tr> 32*10465441SEvalZero 33*10465441SEvalZero<p> 34*10465441SEvalZero<tr><td colspan="2"><br><h2>Modules</h2></td></tr> 35*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html">uIP configuration functions</a></td></tr> 36*10465441SEvalZero 37*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The uIP configuration functions are used for setting run-time parameters in uIP such as IP addresses. <br></td></tr> 38*10465441SEvalZero 39*10465441SEvalZero<p> 40*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00145.html">uIP initialization functions</a></td></tr> 41*10465441SEvalZero 42*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The uIP initialization functions are used for booting uIP. <br></td></tr> 43*10465441SEvalZero 44*10465441SEvalZero<p> 45*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html">uIP device driver functions</a></td></tr> 46*10465441SEvalZero 47*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">These functions are used by a network device driver for interacting with uIP. <br></td></tr> 48*10465441SEvalZero 49*10465441SEvalZero<p> 50*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00147.html">uIP application functions</a></td></tr> 51*10465441SEvalZero 52*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Functions used by an application running of top of uIP. <br></td></tr> 53*10465441SEvalZero 54*10465441SEvalZero<p> 55*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html">uIP conversion functions</a></td></tr> 56*10465441SEvalZero 57*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">These functions can be used for converting between different data formats used by uIP. <br></td></tr> 58*10465441SEvalZero 59*10465441SEvalZero<p> 60*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html">Variables used in uIP device drivers</a></td></tr> 61*10465441SEvalZero 62*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">uIP has a few global variables that are used in device drivers for uIP. <br></td></tr> 63*10465441SEvalZero 64*10465441SEvalZero<p> 65*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00152.html">uIP Address Resolution Protocol</a></td></tr> 66*10465441SEvalZero 67*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The Address Resolution Protocol ARP is used for mapping between IP addresses and link level addresses such as the Ethernet MAC addresses. <br></td></tr> 68*10465441SEvalZero 69*10465441SEvalZero<p> 70*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00154.html">uIP TCP throughput booster hack</a></td></tr> 71*10465441SEvalZero 72*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The basic uIP TCP implementation only allows each TCP connection to have a single TCP segment in flight at any given time. <br></td></tr> 73*10465441SEvalZero 74*10465441SEvalZero<p> 75*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00151.html">Architecture specific uIP functions</a></td></tr> 76*10465441SEvalZero 77*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The functions in the architecture specific module implement the IP check sum and 32-bit additions. <br></td></tr> 78*10465441SEvalZero 79*10465441SEvalZero<p> 80*10465441SEvalZero<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr> 81*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="a00088.html">uip_conn</a></td></tr> 82*10465441SEvalZero 83*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Representation of a uIP TCP connection. <a href="a00088.html#_details">More...</a><br></td></tr> 84*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html">uip_udp_conn</a></td></tr> 85*10465441SEvalZero 86*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Representation of a uIP UDP connection. <a href="a00095.html#_details">More...</a><br></td></tr> 87*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="a00093.html">uip_stats</a></td></tr> 88*10465441SEvalZero 89*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The structure holding the TCP/IP statistics that are gathered if UIP_STATISTICS is set to 1. <a href="a00093.html#_details">More...</a><br></td></tr> 90*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="a00094.html">uip_tcpip_hdr</a></td></tr> 91*10465441SEvalZero 92*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html">uip_icmpip_hdr</a></td></tr> 93*10465441SEvalZero 94*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="a00096.html">uip_udpip_hdr</a></td></tr> 95*10465441SEvalZero 96*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="a00089.html">uip_eth_addr</a></td></tr> 97*10465441SEvalZero 98*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Representation of a 48-bit Ethernet address. <a href="a00089.html#_details">More...</a><br></td></tr> 99*10465441SEvalZero<tr><td colspan="2"><br><h2>Defines</h2></td></tr> 100*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g6bfa488f87f68a6f7f4a3efb9e45eaf8"></a><!-- doxytag: member="uip::UIP_ACKDATA" ref="g6bfa488f87f68a6f7f4a3efb9e45eaf8" args="" --> 101*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g6bfa488f87f68a6f7f4a3efb9e45eaf8">UIP_ACKDATA</a> 1</td></tr> 102*10465441SEvalZero 103*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g39ce739bd352d7e348e37395ce903e43"></a><!-- doxytag: member="uip::UIP_NEWDATA" ref="g39ce739bd352d7e348e37395ce903e43" args="" --> 104*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g39ce739bd352d7e348e37395ce903e43">UIP_NEWDATA</a> 2</td></tr> 105*10465441SEvalZero 106*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf848ce44c810492e7a35c2d23a429f45"></a><!-- doxytag: member="uip::UIP_REXMIT" ref="gf848ce44c810492e7a35c2d23a429f45" args="" --> 107*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gf848ce44c810492e7a35c2d23a429f45">UIP_REXMIT</a> 4</td></tr> 108*10465441SEvalZero 109*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf0ed78fd2be24d849cdd5af75e3b2674"></a><!-- doxytag: member="uip::UIP_POLL" ref="gf0ed78fd2be24d849cdd5af75e3b2674" args="" --> 110*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gf0ed78fd2be24d849cdd5af75e3b2674">UIP_POLL</a> 8</td></tr> 111*10465441SEvalZero 112*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g57e6dc1d58a36d0ed53a3dd29ccc5798"></a><!-- doxytag: member="uip::UIP_CLOSE" ref="g57e6dc1d58a36d0ed53a3dd29ccc5798" args="" --> 113*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g57e6dc1d58a36d0ed53a3dd29ccc5798">UIP_CLOSE</a> 16</td></tr> 114*10465441SEvalZero 115*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga4c4310e54f18541b09e1e251fe7b22d"></a><!-- doxytag: member="uip::UIP_ABORT" ref="ga4c4310e54f18541b09e1e251fe7b22d" args="" --> 116*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#ga4c4310e54f18541b09e1e251fe7b22d">UIP_ABORT</a> 32</td></tr> 117*10465441SEvalZero 118*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf84316f469ce0726985c0702db49a989"></a><!-- doxytag: member="uip::UIP_CONNECTED" ref="gf84316f469ce0726985c0702db49a989" args="" --> 119*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gf84316f469ce0726985c0702db49a989">UIP_CONNECTED</a> 64</td></tr> 120*10465441SEvalZero 121*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2d3ba4b14d6d2f6576f9b547800b7945"></a><!-- doxytag: member="uip::UIP_TIMEDOUT" ref="g2d3ba4b14d6d2f6576f9b547800b7945" args="" --> 122*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g2d3ba4b14d6d2f6576f9b547800b7945">UIP_TIMEDOUT</a> 128</td></tr> 123*10465441SEvalZero 124*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gabc40c09f49d15acb1b1a7f02bb3a807"></a><!-- doxytag: member="uip::UIP_DATA" ref="gabc40c09f49d15acb1b1a7f02bb3a807" args="" --> 125*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gabc40c09f49d15acb1b1a7f02bb3a807">UIP_DATA</a> 1</td></tr> 126*10465441SEvalZero 127*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g041aea91aa6ef84dcc6cac3c51db9b2f"></a><!-- doxytag: member="uip::UIP_TIMER" ref="g041aea91aa6ef84dcc6cac3c51db9b2f" args="" --> 128*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g041aea91aa6ef84dcc6cac3c51db9b2f">UIP_TIMER</a> 2</td></tr> 129*10465441SEvalZero 130*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd605357e29affb0d3104294c90f09905"></a><!-- doxytag: member="uip::UIP_POLL_REQUEST" ref="gd605357e29affb0d3104294c90f09905" args="" --> 131*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gd605357e29affb0d3104294c90f09905">UIP_POLL_REQUEST</a> 3</td></tr> 132*10465441SEvalZero 133*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5c97ae587595b5444be80f5ecc1d3382"></a><!-- doxytag: member="uip::UIP_UDP_SEND_CONN" ref="g5c97ae587595b5444be80f5ecc1d3382" args="" --> 134*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g5c97ae587595b5444be80f5ecc1d3382">UIP_UDP_SEND_CONN</a> 4</td></tr> 135*10465441SEvalZero 136*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf0ccbc3bb2a3ba1ebc255c7b3fcedd24"></a><!-- doxytag: member="uip::UIP_UDP_TIMER" ref="gf0ccbc3bb2a3ba1ebc255c7b3fcedd24" args="" --> 137*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gf0ccbc3bb2a3ba1ebc255c7b3fcedd24">UIP_UDP_TIMER</a> 5</td></tr> 138*10465441SEvalZero 139*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g28eda870cff3d8e3cf2949e6f57a502b"></a><!-- doxytag: member="uip::UIP_CLOSED" ref="g28eda870cff3d8e3cf2949e6f57a502b" args="" --> 140*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g28eda870cff3d8e3cf2949e6f57a502b">UIP_CLOSED</a> 0</td></tr> 141*10465441SEvalZero 142*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga5e3c856b86725125d19fccc34cd9eb5"></a><!-- doxytag: member="uip::UIP_SYN_RCVD" ref="ga5e3c856b86725125d19fccc34cd9eb5" args="" --> 143*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#ga5e3c856b86725125d19fccc34cd9eb5">UIP_SYN_RCVD</a> 1</td></tr> 144*10465441SEvalZero 145*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8af482dec973db57d8b3bd3f69461488"></a><!-- doxytag: member="uip::UIP_SYN_SENT" ref="g8af482dec973db57d8b3bd3f69461488" args="" --> 146*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g8af482dec973db57d8b3bd3f69461488">UIP_SYN_SENT</a> 2</td></tr> 147*10465441SEvalZero 148*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gae59b70658f28ee6e998eaaab05e423f"></a><!-- doxytag: member="uip::UIP_ESTABLISHED" ref="gae59b70658f28ee6e998eaaab05e423f" args="" --> 149*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gae59b70658f28ee6e998eaaab05e423f">UIP_ESTABLISHED</a> 3</td></tr> 150*10465441SEvalZero 151*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga533c394b1fa0030205534befa31c525"></a><!-- doxytag: member="uip::UIP_FIN_WAIT_1" ref="ga533c394b1fa0030205534befa31c525" args="" --> 152*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#ga533c394b1fa0030205534befa31c525">UIP_FIN_WAIT_1</a> 4</td></tr> 153*10465441SEvalZero 154*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g160128ab5d2ea3cc497b91ee4eb4ef99"></a><!-- doxytag: member="uip::UIP_FIN_WAIT_2" ref="g160128ab5d2ea3cc497b91ee4eb4ef99" args="" --> 155*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g160128ab5d2ea3cc497b91ee4eb4ef99">UIP_FIN_WAIT_2</a> 5</td></tr> 156*10465441SEvalZero 157*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g64d9affc680a445d708234e70450477b"></a><!-- doxytag: member="uip::UIP_CLOSING" ref="g64d9affc680a445d708234e70450477b" args="" --> 158*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g64d9affc680a445d708234e70450477b">UIP_CLOSING</a> 6</td></tr> 159*10465441SEvalZero 160*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gfff0ed43201bf1e2020de1a0d6cac070"></a><!-- doxytag: member="uip::UIP_TIME_WAIT" ref="gfff0ed43201bf1e2020de1a0d6cac070" args="" --> 161*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gfff0ed43201bf1e2020de1a0d6cac070">UIP_TIME_WAIT</a> 7</td></tr> 162*10465441SEvalZero 163*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd135fb0cfdfb2c212f0f51865a3640e4"></a><!-- doxytag: member="uip::UIP_LAST_ACK" ref="gd135fb0cfdfb2c212f0f51865a3640e4" args="" --> 164*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gd135fb0cfdfb2c212f0f51865a3640e4">UIP_LAST_ACK</a> 8</td></tr> 165*10465441SEvalZero 166*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g13dfcb4a5f920e108253ade527a66cc2"></a><!-- doxytag: member="uip::UIP_TS_MASK" ref="g13dfcb4a5f920e108253ade527a66cc2" args="" --> 167*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g13dfcb4a5f920e108253ade527a66cc2">UIP_TS_MASK</a> 15</td></tr> 168*10465441SEvalZero 169*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gde29ec025e6754afd8cc24c954a8dec8"></a><!-- doxytag: member="uip::UIP_STOPPED" ref="gde29ec025e6754afd8cc24c954a8dec8" args="" --> 170*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gde29ec025e6754afd8cc24c954a8dec8">UIP_STOPPED</a> 16</td></tr> 171*10465441SEvalZero 172*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#ge0825474feee11b4e038bfe71757875f">UIP_APPDATA_SIZE</a></td></tr> 173*10465441SEvalZero 174*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The buffer size available for user data in the <a class="el" href="a00150.html#gb81e78f890dbbee50c533a9734b74fd9">uip_buf</a> buffer. <a href="#ge0825474feee11b4e038bfe71757875f"></a><br></td></tr> 175*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g359951eecd80541c2101f628a9da9146"></a><!-- doxytag: member="uip::UIP_PROTO_ICMP" ref="g359951eecd80541c2101f628a9da9146" args="" --> 176*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g359951eecd80541c2101f628a9da9146">UIP_PROTO_ICMP</a> 1</td></tr> 177*10465441SEvalZero 178*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g517c770991459cc62dc009c0d3875c6a"></a><!-- doxytag: member="uip::UIP_PROTO_TCP" ref="g517c770991459cc62dc009c0d3875c6a" args="" --> 179*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g517c770991459cc62dc009c0d3875c6a">UIP_PROTO_TCP</a> 6</td></tr> 180*10465441SEvalZero 181*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf72d7b9a737707dcfb2c41fec2b6792e"></a><!-- doxytag: member="uip::UIP_PROTO_UDP" ref="gf72d7b9a737707dcfb2c41fec2b6792e" args="" --> 182*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gf72d7b9a737707dcfb2c41fec2b6792e">UIP_PROTO_UDP</a> 17</td></tr> 183*10465441SEvalZero 184*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gad0321f4c570f9983c6de81ece3ddc20"></a><!-- doxytag: member="uip::UIP_PROTO_ICMP6" ref="gad0321f4c570f9983c6de81ece3ddc20" args="" --> 185*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gad0321f4c570f9983c6de81ece3ddc20">UIP_PROTO_ICMP6</a> 58</td></tr> 186*10465441SEvalZero 187*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g6bc12c6c7b56f73ce5d57abfdcdc6eb5"></a><!-- doxytag: member="uip::UIP_IPH_LEN" ref="g6bc12c6c7b56f73ce5d57abfdcdc6eb5" args="" --> 188*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g6bc12c6c7b56f73ce5d57abfdcdc6eb5">UIP_IPH_LEN</a> 20</td></tr> 189*10465441SEvalZero 190*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb948296aea6b6b3aa1f156799c4d479c"></a><!-- doxytag: member="uip::UIP_UDPH_LEN" ref="gb948296aea6b6b3aa1f156799c4d479c" args="" --> 191*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gb948296aea6b6b3aa1f156799c4d479c">UIP_UDPH_LEN</a> 8</td></tr> 192*10465441SEvalZero 193*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g17d111686f98e4c09db73a770ac3f1a4"></a><!-- doxytag: member="uip::UIP_TCPH_LEN" ref="g17d111686f98e4c09db73a770ac3f1a4" args="" --> 194*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g17d111686f98e4c09db73a770ac3f1a4">UIP_TCPH_LEN</a> 20</td></tr> 195*10465441SEvalZero 196*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g6f2b90c597ec23f39ec716ccec11233c"></a><!-- doxytag: member="uip::UIP_IPUDPH_LEN" ref="g6f2b90c597ec23f39ec716ccec11233c" args="" --> 197*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g6f2b90c597ec23f39ec716ccec11233c">UIP_IPUDPH_LEN</a> (UIP_UDPH_LEN + UIP_IPH_LEN)</td></tr> 198*10465441SEvalZero 199*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g15f2617f7dc1713f9d10282125c6027b"></a><!-- doxytag: member="uip::UIP_IPTCPH_LEN" ref="g15f2617f7dc1713f9d10282125c6027b" args="" --> 200*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g15f2617f7dc1713f9d10282125c6027b">UIP_IPTCPH_LEN</a> (UIP_TCPH_LEN + UIP_IPH_LEN)</td></tr> 201*10465441SEvalZero 202*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gee37386b2ab828787c05227eb109def7"></a><!-- doxytag: member="uip::UIP_TCPIP_HLEN" ref="gee37386b2ab828787c05227eb109def7" args="" --> 203*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gee37386b2ab828787c05227eb109def7">UIP_TCPIP_HLEN</a> UIP_IPTCPH_LEN</td></tr> 204*10465441SEvalZero 205*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g88e60aa2cf23e1c65d630701db08c743"></a><!-- doxytag: member="uip::TCP_FIN" ref="g88e60aa2cf23e1c65d630701db08c743" args="" --> 206*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g88e60aa2cf23e1c65d630701db08c743">TCP_FIN</a> 0x01</td></tr> 207*10465441SEvalZero 208*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g6020613f5062417d9811cfa837215c83"></a><!-- doxytag: member="uip::TCP_SYN" ref="g6020613f5062417d9811cfa837215c83" args="" --> 209*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g6020613f5062417d9811cfa837215c83">TCP_SYN</a> 0x02</td></tr> 210*10465441SEvalZero 211*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5ca559def464ef20d8b1f7d32f2f160d"></a><!-- doxytag: member="uip::TCP_RST" ref="g5ca559def464ef20d8b1f7d32f2f160d" args="" --> 212*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g5ca559def464ef20d8b1f7d32f2f160d">TCP_RST</a> 0x04</td></tr> 213*10465441SEvalZero 214*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1320fd0006a2f70138bc2d0018dda829"></a><!-- doxytag: member="uip::TCP_PSH" ref="g1320fd0006a2f70138bc2d0018dda829" args="" --> 215*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g1320fd0006a2f70138bc2d0018dda829">TCP_PSH</a> 0x08</td></tr> 216*10465441SEvalZero 217*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g44b3b1ab31a403ba28ec135adfcbefef"></a><!-- doxytag: member="uip::TCP_ACK" ref="g44b3b1ab31a403ba28ec135adfcbefef" args="" --> 218*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g44b3b1ab31a403ba28ec135adfcbefef">TCP_ACK</a> 0x10</td></tr> 219*10465441SEvalZero 220*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc84f499cba8a02fc0e306c10b2acabf0"></a><!-- doxytag: member="uip::TCP_URG" ref="gc84f499cba8a02fc0e306c10b2acabf0" args="" --> 221*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gc84f499cba8a02fc0e306c10b2acabf0">TCP_URG</a> 0x20</td></tr> 222*10465441SEvalZero 223*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1425d4a0c2760adb653a04c0fb137a8d"></a><!-- doxytag: member="uip::TCP_CTL" ref="g1425d4a0c2760adb653a04c0fb137a8d" args="" --> 224*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g1425d4a0c2760adb653a04c0fb137a8d">TCP_CTL</a> 0x3f</td></tr> 225*10465441SEvalZero 226*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1215163245304bad20d6c5608ad75ab7"></a><!-- doxytag: member="uip::TCP_OPT_END" ref="g1215163245304bad20d6c5608ad75ab7" args="" --> 227*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g1215163245304bad20d6c5608ad75ab7">TCP_OPT_END</a> 0</td></tr> 228*10465441SEvalZero 229*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9f1822e1d231235edacad691f3cb7bbb"></a><!-- doxytag: member="uip::TCP_OPT_NOOP" ref="g9f1822e1d231235edacad691f3cb7bbb" args="" --> 230*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g9f1822e1d231235edacad691f3cb7bbb">TCP_OPT_NOOP</a> 1</td></tr> 231*10465441SEvalZero 232*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g691688604655ea8943d15f14c60027d8"></a><!-- doxytag: member="uip::TCP_OPT_MSS" ref="g691688604655ea8943d15f14c60027d8" args="" --> 233*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g691688604655ea8943d15f14c60027d8">TCP_OPT_MSS</a> 2</td></tr> 234*10465441SEvalZero 235*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g12f3bf821224b8e7b48a57ed3cea15cf"></a><!-- doxytag: member="uip::TCP_OPT_MSS_LEN" ref="g12f3bf821224b8e7b48a57ed3cea15cf" args="" --> 236*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g12f3bf821224b8e7b48a57ed3cea15cf">TCP_OPT_MSS_LEN</a> 4</td></tr> 237*10465441SEvalZero 238*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5c5b1834e497f53ad0ef947bbe9777fa"></a><!-- doxytag: member="uip::ICMP_ECHO_REPLY" ref="g5c5b1834e497f53ad0ef947bbe9777fa" args="" --> 239*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g5c5b1834e497f53ad0ef947bbe9777fa">ICMP_ECHO_REPLY</a> 0</td></tr> 240*10465441SEvalZero 241*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd58231410d58e34b455328b888a9e73c"></a><!-- doxytag: member="uip::ICMP_ECHO" ref="gd58231410d58e34b455328b888a9e73c" args="" --> 242*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gd58231410d58e34b455328b888a9e73c">ICMP_ECHO</a> 8</td></tr> 243*10465441SEvalZero 244*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g207d17b633cd095120a74bc1f2257b17"></a><!-- doxytag: member="uip::ICMP6_ECHO_REPLY" ref="g207d17b633cd095120a74bc1f2257b17" args="" --> 245*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g207d17b633cd095120a74bc1f2257b17">ICMP6_ECHO_REPLY</a> 129</td></tr> 246*10465441SEvalZero 247*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4cc3e223b63f27b546d62e9a258dba5a"></a><!-- doxytag: member="uip::ICMP6_ECHO" ref="g4cc3e223b63f27b546d62e9a258dba5a" args="" --> 248*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g4cc3e223b63f27b546d62e9a258dba5a">ICMP6_ECHO</a> 128</td></tr> 249*10465441SEvalZero 250*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1cea57e3ea526f210b1068e6dcf7b4f4"></a><!-- doxytag: member="uip::ICMP6_NEIGHBOR_SOLICITATION" ref="g1cea57e3ea526f210b1068e6dcf7b4f4" args="" --> 251*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g1cea57e3ea526f210b1068e6dcf7b4f4">ICMP6_NEIGHBOR_SOLICITATION</a> 135</td></tr> 252*10465441SEvalZero 253*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g62c03e0a308cc23929a80fe8d8f9dc1e"></a><!-- doxytag: member="uip::ICMP6_NEIGHBOR_ADVERTISEMENT" ref="g62c03e0a308cc23929a80fe8d8f9dc1e" args="" --> 254*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g62c03e0a308cc23929a80fe8d8f9dc1e">ICMP6_NEIGHBOR_ADVERTISEMENT</a> 136</td></tr> 255*10465441SEvalZero 256*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1d3211dbbdfb22d6a47b60dddcf945e8"></a><!-- doxytag: member="uip::ICMP6_FLAG_S" ref="g1d3211dbbdfb22d6a47b60dddcf945e8" args="" --> 257*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g1d3211dbbdfb22d6a47b60dddcf945e8">ICMP6_FLAG_S</a> (1 << 6)</td></tr> 258*10465441SEvalZero 259*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g42288d5c3cf4b10becefec657f441e54"></a><!-- doxytag: member="uip::ICMP6_OPTION_SOURCE_LINK_ADDRESS" ref="g42288d5c3cf4b10becefec657f441e54" args="" --> 260*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g42288d5c3cf4b10becefec657f441e54">ICMP6_OPTION_SOURCE_LINK_ADDRESS</a> 1</td></tr> 261*10465441SEvalZero 262*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8387881de3a8bfd3c0d57b9d04ac9b7e"></a><!-- doxytag: member="uip::ICMP6_OPTION_TARGET_LINK_ADDRESS" ref="g8387881de3a8bfd3c0d57b9d04ac9b7e" args="" --> 263*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g8387881de3a8bfd3c0d57b9d04ac9b7e">ICMP6_OPTION_TARGET_LINK_ADDRESS</a> 2</td></tr> 264*10465441SEvalZero 265*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g24f52ac52d6e714cb04a5aa01be3bdd0"></a><!-- doxytag: member="uip::BUF" ref="g24f52ac52d6e714cb04a5aa01be3bdd0" args="" --> 266*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g24f52ac52d6e714cb04a5aa01be3bdd0">BUF</a> ((struct <a class="el" href="a00094.html">uip_tcpip_hdr</a> *)&<a class="el" href="a00150.html#gb81e78f890dbbee50c533a9734b74fd9">uip_buf</a>[UIP_LLH_LEN])</td></tr> 267*10465441SEvalZero 268*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g96544dedc1cdc71ad2ad54bf1d5e5433"></a><!-- doxytag: member="uip::FBUF" ref="g96544dedc1cdc71ad2ad54bf1d5e5433" args="" --> 269*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g96544dedc1cdc71ad2ad54bf1d5e5433">FBUF</a> ((struct <a class="el" href="a00094.html">uip_tcpip_hdr</a> *)&uip_reassbuf[0])</td></tr> 270*10465441SEvalZero 271*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4309376690872fa4beb4f025f5cc199b"></a><!-- doxytag: member="uip::ICMPBUF" ref="g4309376690872fa4beb4f025f5cc199b" args="" --> 272*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g4309376690872fa4beb4f025f5cc199b">ICMPBUF</a> ((struct <a class="el" href="a00091.html">uip_icmpip_hdr</a> *)&<a class="el" href="a00150.html#gb81e78f890dbbee50c533a9734b74fd9">uip_buf</a>[UIP_LLH_LEN])</td></tr> 273*10465441SEvalZero 274*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb9435261753469accec0c9bf8a5a2686"></a><!-- doxytag: member="uip::UDPBUF" ref="gb9435261753469accec0c9bf8a5a2686" args="" --> 275*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gb9435261753469accec0c9bf8a5a2686">UDPBUF</a> ((struct <a class="el" href="a00096.html">uip_udpip_hdr</a> *)&<a class="el" href="a00150.html#gb81e78f890dbbee50c533a9734b74fd9">uip_buf</a>[UIP_LLH_LEN])</td></tr> 276*10465441SEvalZero 277*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9c0814ed491fa452ec97910c0728d410"></a><!-- doxytag: member="uip::UIP_STAT" ref="g9c0814ed491fa452ec97910c0728d410" args="(s)" --> 278*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g9c0814ed491fa452ec97910c0728d410">UIP_STAT</a>(s)</td></tr> 279*10465441SEvalZero 280*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g013c3a06a8b58589a77f4a3442f89c2a"></a><!-- doxytag: member="uip::UIP_LOG" ref="g013c3a06a8b58589a77f4a3442f89c2a" args="(m)" --> 281*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g013c3a06a8b58589a77f4a3442f89c2a">UIP_LOG</a>(m)</td></tr> 282*10465441SEvalZero 283*10465441SEvalZero<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr> 284*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g20ceef9d0868d391c2f33041b02cb1f1"></a><!-- doxytag: member="uip::uip_ip4addr_t" ref="g20ceef9d0868d391c2f33041b02cb1f1" args="[2]" --> 285*10465441SEvalZerotypedef <a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g20ceef9d0868d391c2f33041b02cb1f1">uip_ip4addr_t</a> [2]</td></tr> 286*10465441SEvalZero 287*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Repressentation of an IP address. <br></td></tr> 288*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9ebb4dac683163840eab9c6c41ad61f7"></a><!-- doxytag: member="uip::uip_ip6addr_t" ref="g9ebb4dac683163840eab9c6c41ad61f7" args="[8]" --> 289*10465441SEvalZerotypedef <a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g9ebb4dac683163840eab9c6c41ad61f7">uip_ip6addr_t</a> [8]</td></tr> 290*10465441SEvalZero 291*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1ef35301f43a5bbb9f89f07b5a36b9a0"></a><!-- doxytag: member="uip::uip_ipaddr_t" ref="g1ef35301f43a5bbb9f89f07b5a36b9a0" args="" --> 292*10465441SEvalZerotypedef <a class="el" href="a00150.html#g20ceef9d0868d391c2f33041b02cb1f1">uip_ip4addr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a></td></tr> 293*10465441SEvalZero 294*10465441SEvalZero<tr><td colspan="2"><br><h2>Functions</h2></td></tr> 295*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g266263ac78a1361a2b1d15741d3b0675"></a><!-- doxytag: member="uip::uip_process" ref="g266263ac78a1361a2b1d15741d3b0675" args="(u8_t flag)" --> 296*10465441SEvalZerovoid </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g266263ac78a1361a2b1d15741d3b0675">uip_process</a> (<a class="el" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> flag)</td></tr> 297*10465441SEvalZero 298*10465441SEvalZero<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="a00150.html#gb6683dd83fe1c8de9a24086d4b69e907">uip_chksum</a> (<a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> *buf, <a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> len)</td></tr> 299*10465441SEvalZero 300*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Internet checksum over a buffer. <a href="#gb6683dd83fe1c8de9a24086d4b69e907"></a><br></td></tr> 301*10465441SEvalZero<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="a00150.html#g2addf34c7d457c1a7899a7e2171ef1e9">uip_ipchksum</a> (void)</td></tr> 302*10465441SEvalZero 303*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the IP header checksum of the packet header in uip_buf. <a href="#g2addf34c7d457c1a7899a7e2171ef1e9"></a><br></td></tr> 304*10465441SEvalZero<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="a00150.html#g85b65e38aa74eba18979156f97a94a87">uip_tcpchksum</a> (void)</td></tr> 305*10465441SEvalZero 306*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the TCP checksum of the packet in uip_buf and uip_appdata. <a href="#g85b65e38aa74eba18979156f97a94a87"></a><br></td></tr> 307*10465441SEvalZero<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="a00150.html#g7023a34ba9e9d03b5fbedbcb32924453">uip_udpchksum</a> (void)</td></tr> 308*10465441SEvalZero 309*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the UDP checksum of the packet in uip_buf and uip_appdata. <a href="#g7023a34ba9e9d03b5fbedbcb32924453"></a><br></td></tr> 310*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g22f140b02c354dfebcc7ad481c3bcd68">uip_setipid</a> (<a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> id)</td></tr> 311*10465441SEvalZero 312*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">uIP initialization function. <a href="#g22f140b02c354dfebcc7ad481c3bcd68"></a><br></td></tr> 313*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g6832e4d2d046536b6472f7ac92340f68">uip_add32</a> (<a class="el" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> *op32, <a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> op16)</td></tr> 314*10465441SEvalZero 315*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Carry out a 32-bit addition. <a href="#g6832e4d2d046536b6472f7ac92340f68"></a><br></td></tr> 316*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gc48ed5f0d27721ef62a3ed02a5ad8d2e">uip_init</a> (void)</td></tr> 317*10465441SEvalZero 318*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">uIP initialization function. <a href="#gc48ed5f0d27721ef62a3ed02a5ad8d2e"></a><br></td></tr> 319*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00088.html">uip_conn</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g9c24fba2cd8f7f62accb0a0d5bbe4dad">uip_connect</a> (<a class="el" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> *ripaddr, <a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> rport)</td></tr> 320*10465441SEvalZero 321*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Connect to a remote host using TCP. <a href="#g9c24fba2cd8f7f62accb0a0d5bbe4dad"></a><br></td></tr> 322*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00095.html">uip_udp_conn</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g79c4110211247df3fb30b8cf1c4c02af">uip_udp_new</a> (<a class="el" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> *ripaddr, <a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> rport)</td></tr> 323*10465441SEvalZero 324*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Set up a new UDP connection. <a href="#g79c4110211247df3fb30b8cf1c4c02af"></a><br></td></tr> 325*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gaa585784b0914cac1d37f07f85457008">uip_unlisten</a> (<a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> port)</td></tr> 326*10465441SEvalZero 327*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Stop listening to the specified port. <a href="#gaa585784b0914cac1d37f07f85457008"></a><br></td></tr> 328*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gdd1ab3704ecd4900eec61a6897d32dc8">uip_listen</a> (<a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> port)</td></tr> 329*10465441SEvalZero 330*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Start listening to the specified port. <a href="#gdd1ab3704ecd4900eec61a6897d32dc8"></a><br></td></tr> 331*10465441SEvalZero<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="a00150.html#ga22b04cac8cf283ca12f028578bebc06">htons</a> (<a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> val)</td></tr> 332*10465441SEvalZero 333*10465441SEvalZero<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> 334*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g04b053a623aac7cd4195157d470661b3">uip_send</a> (const void *data, int len)</td></tr> 335*10465441SEvalZero 336*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Send data on the current connection. <a href="#g04b053a623aac7cd4195157d470661b3"></a><br></td></tr> 337*10465441SEvalZero<tr><td colspan="2"><br><h2>Variables</h2></td></tr> 338*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g561b8eda32e059d4e7397f776268cc63">uip_appdata</a></td></tr> 339*10465441SEvalZero 340*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Pointer to the application data in the packet buffer. <a href="#g561b8eda32e059d4e7397f776268cc63"></a><br></td></tr> 341*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00088.html">uip_conn</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g788ffac72342f6172343d7f8099cbe1a">uip_conn</a></td></tr> 342*10465441SEvalZero 343*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Pointer to the current TCP connection. <a href="#g788ffac72342f6172343d7f8099cbe1a"></a><br></td></tr> 344*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf703683056d2bfa5c81fa157dcb20fe2"></a><!-- doxytag: member="uip::uip_conns" ref="gf703683056d2bfa5c81fa157dcb20fe2" args="[UIP_CONNS]" --> 345*10465441SEvalZero<a class="el" href="a00088.html">uip_conn</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gf703683056d2bfa5c81fa157dcb20fe2">uip_conns</a> [UIP_CONNS]</td></tr> 346*10465441SEvalZero 347*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g210f227119fc972e6222c9cb452e15a9"></a><!-- doxytag: member="uip::uip_udp_conn" ref="g210f227119fc972e6222c9cb452e15a9" args="" --> 348*10465441SEvalZero<a class="el" href="a00095.html">uip_udp_conn</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g210f227119fc972e6222c9cb452e15a9">uip_udp_conn</a></td></tr> 349*10465441SEvalZero 350*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The current UDP connection. <br></td></tr> 351*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="geb533744817cf6695d75293369c2248b"></a><!-- doxytag: member="uip::uip_udp_conns" ref="geb533744817cf6695d75293369c2248b" args="[UIP_UDP_CONNS]" --> 352*10465441SEvalZero<a class="el" href="a00095.html">uip_udp_conn</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#geb533744817cf6695d75293369c2248b">uip_udp_conns</a> [UIP_UDP_CONNS]</td></tr> 353*10465441SEvalZero 354*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00093.html">uip_stats</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g9ee50a40597e67fce96541ab56c3b712">uip_stat</a></td></tr> 355*10465441SEvalZero 356*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The uIP TCP/IP statistics. <a href="#g9ee50a40597e67fce96541ab56c3b712"></a><br></td></tr> 357*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb4ef6b00924990e7a293f66715b6d1d1"></a><!-- doxytag: member="uip::uip_flags" ref="gb4ef6b00924990e7a293f66715b6d1d1" args="" --> 358*10465441SEvalZero<a class="el" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gb4ef6b00924990e7a293f66715b6d1d1">uip_flags</a></td></tr> 359*10465441SEvalZero 360*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7d3673f52f5846b6961d23b150decd54"></a><!-- doxytag: member="uip::uip_hostaddr" ref="g7d3673f52f5846b6961d23b150decd54" args="" --> 361*10465441SEvalZero<a class="el" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g7d3673f52f5846b6961d23b150decd54">uip_hostaddr</a></td></tr> 362*10465441SEvalZero 363*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3237be0d9ec457de0177689ee23c0d5c"></a><!-- doxytag: member="uip::uip_netmask" ref="g3237be0d9ec457de0177689ee23c0d5c" args="" --> 364*10465441SEvalZero<a class="el" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g3237be0d9ec457de0177689ee23c0d5c">uip_netmask</a></td></tr> 365*10465441SEvalZero 366*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g20df5c82f2a15a508c19e505b5d9de2b"></a><!-- doxytag: member="uip::uip_draddr" ref="g20df5c82f2a15a508c19e505b5d9de2b" args="" --> 367*10465441SEvalZero<a class="el" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g20df5c82f2a15a508c19e505b5d9de2b">uip_draddr</a></td></tr> 368*10465441SEvalZero 369*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7d3673f52f5846b6961d23b150decd54"></a><!-- doxytag: member="uip::uip_hostaddr" ref="g7d3673f52f5846b6961d23b150decd54" args="" --> 370*10465441SEvalZero<a class="el" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g7d3673f52f5846b6961d23b150decd54">uip_hostaddr</a></td></tr> 371*10465441SEvalZero 372*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g20df5c82f2a15a508c19e505b5d9de2b"></a><!-- doxytag: member="uip::uip_draddr" ref="g20df5c82f2a15a508c19e505b5d9de2b" args="" --> 373*10465441SEvalZero<a class="el" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g20df5c82f2a15a508c19e505b5d9de2b">uip_draddr</a></td></tr> 374*10465441SEvalZero 375*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3237be0d9ec457de0177689ee23c0d5c"></a><!-- doxytag: member="uip::uip_netmask" ref="g3237be0d9ec457de0177689ee23c0d5c" args="" --> 376*10465441SEvalZero<a class="el" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g3237be0d9ec457de0177689ee23c0d5c">uip_netmask</a></td></tr> 377*10465441SEvalZero 378*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g499bb98a0b4ae9a98553ede81317606d"></a><!-- doxytag: member="uip::uip_ethaddr" ref="g499bb98a0b4ae9a98553ede81317606d" args="" --> 379*10465441SEvalZero<a class="el" href="a00089.html">uip_eth_addr</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g499bb98a0b4ae9a98553ede81317606d">uip_ethaddr</a> = {{0,0,0,0,0,0}}</td></tr> 380*10465441SEvalZero 381*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gb81e78f890dbbee50c533a9734b74fd9">uip_buf</a> [UIP_BUFSIZE+2]</td></tr> 382*10465441SEvalZero 383*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The uIP packet buffer. <a href="#gb81e78f890dbbee50c533a9734b74fd9"></a><br></td></tr> 384*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g561b8eda32e059d4e7397f776268cc63">uip_appdata</a></td></tr> 385*10465441SEvalZero 386*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Pointer to the application data in the packet buffer. <a href="#g561b8eda32e059d4e7397f776268cc63"></a><br></td></tr> 387*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga05a3dde2048480fa3ab2a5961898d18"></a><!-- doxytag: member="uip::uip_sappdata" ref="ga05a3dde2048480fa3ab2a5961898d18" args="" --> 388*10465441SEvalZerovoid * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#ga05a3dde2048480fa3ab2a5961898d18">uip_sappdata</a></td></tr> 389*10465441SEvalZero 390*10465441SEvalZero<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="a00150.html#g12a33f0c09711167bdf3dd7d7cf8c5a1">uip_len</a></td></tr> 391*10465441SEvalZero 392*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The length of the packet in the uip_buf buffer. <a href="#g12a33f0c09711167bdf3dd7d7cf8c5a1"></a><br></td></tr> 393*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5b5615dc240daed20949c0fded2b4679"></a><!-- doxytag: member="uip::uip_slen" ref="g5b5615dc240daed20949c0fded2b4679" args="" --> 394*10465441SEvalZero<a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g5b5615dc240daed20949c0fded2b4679">uip_slen</a></td></tr> 395*10465441SEvalZero 396*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb4ef6b00924990e7a293f66715b6d1d1"></a><!-- doxytag: member="uip::uip_flags" ref="gb4ef6b00924990e7a293f66715b6d1d1" args="" --> 397*10465441SEvalZero<a class="el" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gb4ef6b00924990e7a293f66715b6d1d1">uip_flags</a></td></tr> 398*10465441SEvalZero 399*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00088.html">uip_conn</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g788ffac72342f6172343d7f8099cbe1a">uip_conn</a></td></tr> 400*10465441SEvalZero 401*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Pointer to the current TCP connection. <a href="#g788ffac72342f6172343d7f8099cbe1a"></a><br></td></tr> 402*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf703683056d2bfa5c81fa157dcb20fe2"></a><!-- doxytag: member="uip::uip_conns" ref="gf703683056d2bfa5c81fa157dcb20fe2" args="[UIP_CONNS]" --> 403*10465441SEvalZero<a class="el" href="a00088.html">uip_conn</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#gf703683056d2bfa5c81fa157dcb20fe2">uip_conns</a> [UIP_CONNS]</td></tr> 404*10465441SEvalZero 405*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g236d5c7872f59c8fe7b701c7252b976e"></a><!-- doxytag: member="uip::uip_listenports" ref="g236d5c7872f59c8fe7b701c7252b976e" args="[UIP_LISTENPORTS]" --> 406*10465441SEvalZero<a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g236d5c7872f59c8fe7b701c7252b976e">uip_listenports</a> [UIP_LISTENPORTS]</td></tr> 407*10465441SEvalZero 408*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g210f227119fc972e6222c9cb452e15a9"></a><!-- doxytag: member="uip::uip_udp_conn" ref="g210f227119fc972e6222c9cb452e15a9" args="" --> 409*10465441SEvalZero<a class="el" href="a00095.html">uip_udp_conn</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g210f227119fc972e6222c9cb452e15a9">uip_udp_conn</a></td></tr> 410*10465441SEvalZero 411*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">The current UDP connection. <br></td></tr> 412*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="geb533744817cf6695d75293369c2248b"></a><!-- doxytag: member="uip::uip_udp_conns" ref="geb533744817cf6695d75293369c2248b" args="[UIP_UDP_CONNS]" --> 413*10465441SEvalZero<a class="el" href="a00095.html">uip_udp_conn</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#geb533744817cf6695d75293369c2248b">uip_udp_conns</a> [UIP_UDP_CONNS]</td></tr> 414*10465441SEvalZero 415*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2a0cf5d86c58fab216414ce59bf1fea1"></a><!-- doxytag: member="uip::uip_acc32" ref="g2a0cf5d86c58fab216414ce59bf1fea1" args="[4]" --> 416*10465441SEvalZero<a class="el" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#g2a0cf5d86c58fab216414ce59bf1fea1">uip_acc32</a> [4]</td></tr> 417*10465441SEvalZero 418*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">4-byte array used for the 32-bit sequence number calculations. <br></td></tr> 419*10465441SEvalZero</table> 420*10465441SEvalZero<hr><h2>Define Documentation</h2> 421*10465441SEvalZero<a class="anchor" name="ge0825474feee11b4e038bfe71757875f"></a><!-- doxytag: member="uip.h::UIP_APPDATA_SIZE" ref="ge0825474feee11b4e038bfe71757875f" args="" --><p> 422*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 423*10465441SEvalZero <tr> 424*10465441SEvalZero <td class="mdRow"> 425*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 426*10465441SEvalZero <tr> 427*10465441SEvalZero <td class="md" nowrap valign="top">#define UIP_APPDATA_SIZE </td> 428*10465441SEvalZero </tr> 429*10465441SEvalZero </table> 430*10465441SEvalZero </td> 431*10465441SEvalZero </tr> 432*10465441SEvalZero</table> 433*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 434*10465441SEvalZero <tr> 435*10465441SEvalZero <td> 436*10465441SEvalZero 437*10465441SEvalZero </td> 438*10465441SEvalZero <td> 439*10465441SEvalZero 440*10465441SEvalZero<p> 441*10465441SEvalZeroThe buffer size available for user data in the <a class="el" href="a00150.html#gb81e78f890dbbee50c533a9734b74fd9">uip_buf</a> buffer. 442*10465441SEvalZero<p> 443*10465441SEvalZeroThis macro holds the available size for user data in the <a class="el" href="a00150.html#gb81e78f890dbbee50c533a9734b74fd9">uip_buf</a> buffer. The macro is intended to be used for checking bounds of available user data.<p> 444*10465441SEvalZeroExample: <div class="fragment"><pre class="fragment"> snprintf(<a class="code" href="a00150.html#g561b8eda32e059d4e7397f776268cc63">uip_appdata</a>, <a class="code" href="a00150.html#ge0825474feee11b4e038bfe71757875f">UIP_APPDATA_SIZE</a>, <span class="stringliteral">"%u\n"</span>, i); 445*10465441SEvalZero</pre></div> 446*10465441SEvalZero<p> 447*10465441SEvalZeroDefinition at line <a class="el" href="a00202.html#l01506">1506</a> of file <a class="el" href="a00202.html">uip.h</a>. </td> 448*10465441SEvalZero </tr> 449*10465441SEvalZero</table> 450*10465441SEvalZero<hr><h2>Function Documentation</h2> 451*10465441SEvalZero<a class="anchor" name="ga22b04cac8cf283ca12f028578bebc06"></a><!-- doxytag: member="uip.c::htons" ref="ga22b04cac8cf283ca12f028578bebc06" args="(u16_t val)" --><p> 452*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 453*10465441SEvalZero <tr> 454*10465441SEvalZero <td class="mdRow"> 455*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 456*10465441SEvalZero <tr> 457*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> htons </td> 458*10465441SEvalZero <td class="md" valign="top">( </td> 459*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td> 460*10465441SEvalZero <td class="mdname1" valign="top" nowrap> <em>val</em> </td> 461*10465441SEvalZero <td class="md" valign="top"> ) </td> 462*10465441SEvalZero <td class="md" nowrap></td> 463*10465441SEvalZero </tr> 464*10465441SEvalZero </table> 465*10465441SEvalZero </td> 466*10465441SEvalZero </tr> 467*10465441SEvalZero</table> 468*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 469*10465441SEvalZero <tr> 470*10465441SEvalZero <td> 471*10465441SEvalZero 472*10465441SEvalZero </td> 473*10465441SEvalZero <td> 474*10465441SEvalZero 475*10465441SEvalZero<p> 476*10465441SEvalZeroConvert 16-bit quantity from host byte order to network byte order. 477*10465441SEvalZero<p> 478*10465441SEvalZeroThis 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. 479*10465441SEvalZero<p> 480*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l01882">1882</a> of file <a class="el" href="a00201.html">uip.c</a>. 481*10465441SEvalZero<p> 482*10465441SEvalZeroReferences <a class="el" href="a00202.html#l01070">HTONS</a>. 483*10465441SEvalZero<p> 484*10465441SEvalZeroReferenced 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> 485*10465441SEvalZero </tr> 486*10465441SEvalZero</table> 487*10465441SEvalZero<a class="anchor" name="g6832e4d2d046536b6472f7ac92340f68"></a><!-- doxytag: member="uip.c::uip_add32" ref="g6832e4d2d046536b6472f7ac92340f68" args="(u8_t *op32, u16_t op16)" --><p> 488*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 489*10465441SEvalZero <tr> 490*10465441SEvalZero <td class="mdRow"> 491*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 492*10465441SEvalZero <tr> 493*10465441SEvalZero <td class="md" nowrap valign="top">void uip_add32 </td> 494*10465441SEvalZero <td class="md" valign="top">( </td> 495*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> * </td> 496*10465441SEvalZero <td class="mdname" nowrap> <em>op32</em>, </td> 497*10465441SEvalZero </tr> 498*10465441SEvalZero <tr> 499*10465441SEvalZero <td class="md" nowrap align="right"></td> 500*10465441SEvalZero <td class="md"></td> 501*10465441SEvalZero <td class="md" nowrap><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td> 502*10465441SEvalZero <td class="mdname" nowrap> <em>op16</em></td> 503*10465441SEvalZero </tr> 504*10465441SEvalZero <tr> 505*10465441SEvalZero <td class="md"></td> 506*10465441SEvalZero <td class="md">) </td> 507*10465441SEvalZero <td class="md" colspan="2"></td> 508*10465441SEvalZero </tr> 509*10465441SEvalZero </table> 510*10465441SEvalZero </td> 511*10465441SEvalZero </tr> 512*10465441SEvalZero</table> 513*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 514*10465441SEvalZero <tr> 515*10465441SEvalZero <td> 516*10465441SEvalZero 517*10465441SEvalZero </td> 518*10465441SEvalZero <td> 519*10465441SEvalZero 520*10465441SEvalZero<p> 521*10465441SEvalZeroCarry out a 32-bit addition. 522*10465441SEvalZero<p> 523*10465441SEvalZeroBecause not all architectures for which uIP is intended has native 32-bit arithmetic, uIP uses an external C function for doing the required 32-bit additions in the TCP protocol processing. This function should add the two arguments and place the result in the global variable uip_acc32.<p> 524*10465441SEvalZero<dl compact><dt><b>Note:</b></dt><dd>The 32-bit integer pointed to by the op32 parameter and the result in the uip_acc32 variable are in network byte order (big endian).</dd></dl> 525*10465441SEvalZero<dl compact><dt><b>Parameters:</b></dt><dd> 526*10465441SEvalZero <table border="0" cellspacing="2" cellpadding="0"> 527*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>op32</em> </td><td>A pointer to a 4-byte array representing a 32-bit integer in network byte order (big endian).</td></tr> 528*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>op16</em> </td><td>A 16-bit integer in host byte order. </td></tr> 529*10465441SEvalZero </table> 530*10465441SEvalZero</dl> 531*10465441SEvalZero 532*10465441SEvalZero<p> 533*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00249">249</a> of file <a class="el" href="a00201.html">uip.c</a>. 534*10465441SEvalZero<p> 535*10465441SEvalZeroReferenced by <a class="el" href="a00199.html#l00049">uip_split_output()</a>. </td> 536*10465441SEvalZero </tr> 537*10465441SEvalZero</table> 538*10465441SEvalZero<a class="anchor" name="gb6683dd83fe1c8de9a24086d4b69e907"></a><!-- doxytag: member="uip.h::uip_chksum" ref="gb6683dd83fe1c8de9a24086d4b69e907" args="(u16_t *buf, u16_t len)" --><p> 539*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 540*10465441SEvalZero <tr> 541*10465441SEvalZero <td class="mdRow"> 542*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 543*10465441SEvalZero <tr> 544*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> uip_chksum </td> 545*10465441SEvalZero <td class="md" valign="top">( </td> 546*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> * </td> 547*10465441SEvalZero <td class="mdname" nowrap> <em>buf</em>, </td> 548*10465441SEvalZero </tr> 549*10465441SEvalZero <tr> 550*10465441SEvalZero <td class="md" nowrap align="right"></td> 551*10465441SEvalZero <td class="md"></td> 552*10465441SEvalZero <td class="md" nowrap><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td> 553*10465441SEvalZero <td class="mdname" nowrap> <em>len</em></td> 554*10465441SEvalZero </tr> 555*10465441SEvalZero <tr> 556*10465441SEvalZero <td class="md"></td> 557*10465441SEvalZero <td class="md">) </td> 558*10465441SEvalZero <td class="md" colspan="2"></td> 559*10465441SEvalZero </tr> 560*10465441SEvalZero </table> 561*10465441SEvalZero </td> 562*10465441SEvalZero </tr> 563*10465441SEvalZero</table> 564*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 565*10465441SEvalZero <tr> 566*10465441SEvalZero <td> 567*10465441SEvalZero 568*10465441SEvalZero </td> 569*10465441SEvalZero <td> 570*10465441SEvalZero 571*10465441SEvalZero<p> 572*10465441SEvalZeroCalculate the Internet checksum over a buffer. 573*10465441SEvalZero<p> 574*10465441SEvalZeroThe Internet checksum is the one's complement of the one's complement sum of all 16-bit words in the buffer.<p> 575*10465441SEvalZeroSee RFC1071.<p> 576*10465441SEvalZero<dl compact><dt><b>Parameters:</b></dt><dd> 577*10465441SEvalZero <table border="0" cellspacing="2" cellpadding="0"> 578*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>A pointer to the buffer over which the checksum is to be computed.</td></tr> 579*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>The length of the buffer over which the checksum is to be computed.</td></tr> 580*10465441SEvalZero </table> 581*10465441SEvalZero</dl> 582*10465441SEvalZero<dl compact><dt><b>Returns:</b></dt><dd>The Internet checksum of the buffer. </dd></dl> 583*10465441SEvalZero 584*10465441SEvalZero<p> 585*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00311">311</a> of file <a class="el" href="a00201.html">uip.c</a>. 586*10465441SEvalZero<p> 587*10465441SEvalZeroReferences <a class="el" href="a00201.html#l01882">htons()</a>. </td> 588*10465441SEvalZero </tr> 589*10465441SEvalZero</table> 590*10465441SEvalZero<a class="anchor" name="g9c24fba2cd8f7f62accb0a0d5bbe4dad"></a><!-- doxytag: member="uip.c::uip_connect" ref="g9c24fba2cd8f7f62accb0a0d5bbe4dad" args="(uip_ipaddr_t *ripaddr, u16_t rport)" --><p> 591*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 592*10465441SEvalZero <tr> 593*10465441SEvalZero <td class="mdRow"> 594*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 595*10465441SEvalZero <tr> 596*10465441SEvalZero <td class="md" nowrap valign="top">struct <a class="el" href="a00088.html">uip_conn</a>* uip_connect </td> 597*10465441SEvalZero <td class="md" valign="top">( </td> 598*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> * </td> 599*10465441SEvalZero <td class="mdname" nowrap> <em>ripaddr</em>, </td> 600*10465441SEvalZero </tr> 601*10465441SEvalZero <tr> 602*10465441SEvalZero <td class="md" nowrap align="right"></td> 603*10465441SEvalZero <td class="md"></td> 604*10465441SEvalZero <td class="md" nowrap><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td> 605*10465441SEvalZero <td class="mdname" nowrap> <em>port</em></td> 606*10465441SEvalZero </tr> 607*10465441SEvalZero <tr> 608*10465441SEvalZero <td class="md"></td> 609*10465441SEvalZero <td class="md">) </td> 610*10465441SEvalZero <td class="md" colspan="2"></td> 611*10465441SEvalZero </tr> 612*10465441SEvalZero </table> 613*10465441SEvalZero </td> 614*10465441SEvalZero </tr> 615*10465441SEvalZero</table> 616*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 617*10465441SEvalZero <tr> 618*10465441SEvalZero <td> 619*10465441SEvalZero 620*10465441SEvalZero </td> 621*10465441SEvalZero <td> 622*10465441SEvalZero 623*10465441SEvalZero<p> 624*10465441SEvalZeroConnect to a remote host using TCP. 625*10465441SEvalZero<p> 626*10465441SEvalZeroThis function is used to start a new connection to the specified port on the specied host. It allocates a new connection identifier, sets the connection to the SYN_SENT state and sets the retransmission timer to 0. This will cause a TCP SYN segment to be sent out the next time this connection is periodically processed, which usually is done within 0.5 seconds after the call to <a class="el" href="a00147.html#g8096b0c4b543dc408f4dd031ddae7240">uip_connect()</a>.<p> 627*10465441SEvalZero<dl compact><dt><b>Note:</b></dt><dd>This function is avaliable only if support for active open has been configured by defining UIP_ACTIVE_OPEN to 1 in <a class="el" href="a00140.html">uipopt.h</a>.<p> 628*10465441SEvalZeroSince this function requires the port number to be in network byte order, a conversion using <a class="el" href="a00148.html#g69a7a4951ff21b302267532c21ee78fc">HTONS()</a> or <a class="el" href="a00148.html#ga22b04cac8cf283ca12f028578bebc06">htons()</a> is necessary.</dd></dl> 629*10465441SEvalZero<div class="fragment"><pre class="fragment"> <a class="code" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> ipaddr; 630*10465441SEvalZero 631*10465441SEvalZero <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&ipaddr, 192,168,1,2); 632*10465441SEvalZero <a class="code" href="a00147.html#g8096b0c4b543dc408f4dd031ddae7240">uip_connect</a>(&ipaddr, <a class="code" href="a00148.html#g69a7a4951ff21b302267532c21ee78fc">HTONS</a>(80)); 633*10465441SEvalZero</pre></div><p> 634*10465441SEvalZero<dl compact><dt><b>Parameters:</b></dt><dd> 635*10465441SEvalZero <table border="0" cellspacing="2" cellpadding="0"> 636*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>ripaddr</em> </td><td>The IP address of the remote hot.</td></tr> 637*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>port</em> </td><td>A 16-bit port number in network byte order.</td></tr> 638*10465441SEvalZero </table> 639*10465441SEvalZero</dl> 640*10465441SEvalZero<dl compact><dt><b>Returns:</b></dt><dd>A pointer to the uIP connection identifier for the new connection, or NULL if no connection could be allocated. </dd></dl> 641*10465441SEvalZero 642*10465441SEvalZero<p> 643*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00407">407</a> of file <a class="el" href="a00201.html">uip.c</a>. 644*10465441SEvalZero<p> 645*10465441SEvalZeroReferences <a class="el" href="a00201.html#l01882">htons()</a>, <a class="el" href="a00202.html#l01156">uip_conn::lport</a>, <a class="el" href="a00202.html#l01174">uip_conn::tcpstateflags</a>, <a class="el" href="a00202.html#l01372">UIP_CLOSED</a>, <a class="el" href="a00201.html#l00163">uip_conn</a>, <a class="el" href="a00201.html#l00166">uip_conns</a>, and <a class="el" href="a00206.html#l00245">UIP_CONNS</a>. 646*10465441SEvalZero<p> 647*10465441SEvalZeroReferenced by <a class="el" href="a00174.html#l00233">smtp_send()</a>, and <a class="el" href="a00180.html#l00140">webclient_get()</a>. </td> 648*10465441SEvalZero </tr> 649*10465441SEvalZero</table> 650*10465441SEvalZero<a class="anchor" name="gc48ed5f0d27721ef62a3ed02a5ad8d2e"></a><!-- doxytag: member="uip.c::uip_init" ref="gc48ed5f0d27721ef62a3ed02a5ad8d2e" args="(void)" --><p> 651*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 652*10465441SEvalZero <tr> 653*10465441SEvalZero <td class="mdRow"> 654*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 655*10465441SEvalZero <tr> 656*10465441SEvalZero <td class="md" nowrap valign="top">void uip_init </td> 657*10465441SEvalZero <td class="md" valign="top">( </td> 658*10465441SEvalZero <td class="md" nowrap valign="top">void </td> 659*10465441SEvalZero <td class="mdname1" valign="top" nowrap> </td> 660*10465441SEvalZero <td class="md" valign="top"> ) </td> 661*10465441SEvalZero <td class="md" nowrap></td> 662*10465441SEvalZero </tr> 663*10465441SEvalZero </table> 664*10465441SEvalZero </td> 665*10465441SEvalZero </tr> 666*10465441SEvalZero</table> 667*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 668*10465441SEvalZero <tr> 669*10465441SEvalZero <td> 670*10465441SEvalZero 671*10465441SEvalZero </td> 672*10465441SEvalZero <td> 673*10465441SEvalZero 674*10465441SEvalZero<p> 675*10465441SEvalZerouIP initialization function. 676*10465441SEvalZero<p> 677*10465441SEvalZeroThis function should be called at boot up to initilize the uIP TCP/IP stack. 678*10465441SEvalZero<p> 679*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00379">379</a> of file <a class="el" href="a00201.html">uip.c</a>. 680*10465441SEvalZero<p> 681*10465441SEvalZeroReferences <a class="el" href="a00206.html#l00259">UIP_LISTENPORTS</a>. </td> 682*10465441SEvalZero </tr> 683*10465441SEvalZero</table> 684*10465441SEvalZero<a class="anchor" name="g2addf34c7d457c1a7899a7e2171ef1e9"></a><!-- doxytag: member="uip.h::uip_ipchksum" ref="g2addf34c7d457c1a7899a7e2171ef1e9" args="(void)" --><p> 685*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 686*10465441SEvalZero <tr> 687*10465441SEvalZero <td class="mdRow"> 688*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 689*10465441SEvalZero <tr> 690*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> uip_ipchksum </td> 691*10465441SEvalZero <td class="md" valign="top">( </td> 692*10465441SEvalZero <td class="md" nowrap valign="top">void </td> 693*10465441SEvalZero <td class="mdname1" valign="top" nowrap> </td> 694*10465441SEvalZero <td class="md" valign="top"> ) </td> 695*10465441SEvalZero <td class="md" nowrap></td> 696*10465441SEvalZero </tr> 697*10465441SEvalZero </table> 698*10465441SEvalZero </td> 699*10465441SEvalZero </tr> 700*10465441SEvalZero</table> 701*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 702*10465441SEvalZero <tr> 703*10465441SEvalZero <td> 704*10465441SEvalZero 705*10465441SEvalZero </td> 706*10465441SEvalZero <td> 707*10465441SEvalZero 708*10465441SEvalZero<p> 709*10465441SEvalZeroCalculate the IP header checksum of the packet header in uip_buf. 710*10465441SEvalZero<p> 711*10465441SEvalZeroThe IP header checksum is the Internet checksum of the 20 bytes of the IP header.<p> 712*10465441SEvalZero<dl compact><dt><b>Returns:</b></dt><dd>The IP header checksum of the IP header in the uip_buf buffer. </dd></dl> 713*10465441SEvalZero 714*10465441SEvalZero<p> 715*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00318">318</a> of file <a class="el" href="a00201.html">uip.c</a>. 716*10465441SEvalZero<p> 717*10465441SEvalZeroReferences <a class="el" href="a00201.html#l00001">DEBUG_PRINTF</a>, <a class="el" href="a00201.html#l01882">htons()</a>, <a class="el" href="a00202.html#l01518">UIP_IPH_LEN</a>, and <a class="el" href="a00206.html#l00448">UIP_LLH_LEN</a>. 718*10465441SEvalZero<p> 719*10465441SEvalZeroReferenced by <a class="el" href="a00201.html#l00682">uip_process()</a>, and <a class="el" href="a00199.html#l00049">uip_split_output()</a>. </td> 720*10465441SEvalZero </tr> 721*10465441SEvalZero</table> 722*10465441SEvalZero<a class="anchor" name="gdd1ab3704ecd4900eec61a6897d32dc8"></a><!-- doxytag: member="uip.c::uip_listen" ref="gdd1ab3704ecd4900eec61a6897d32dc8" args="(u16_t port)" --><p> 723*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 724*10465441SEvalZero <tr> 725*10465441SEvalZero <td class="mdRow"> 726*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 727*10465441SEvalZero <tr> 728*10465441SEvalZero <td class="md" nowrap valign="top">void uip_listen </td> 729*10465441SEvalZero <td class="md" valign="top">( </td> 730*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td> 731*10465441SEvalZero <td class="mdname1" valign="top" nowrap> <em>port</em> </td> 732*10465441SEvalZero <td class="md" valign="top"> ) </td> 733*10465441SEvalZero <td class="md" nowrap></td> 734*10465441SEvalZero </tr> 735*10465441SEvalZero </table> 736*10465441SEvalZero </td> 737*10465441SEvalZero </tr> 738*10465441SEvalZero</table> 739*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 740*10465441SEvalZero <tr> 741*10465441SEvalZero <td> 742*10465441SEvalZero 743*10465441SEvalZero </td> 744*10465441SEvalZero <td> 745*10465441SEvalZero 746*10465441SEvalZero<p> 747*10465441SEvalZeroStart listening to the specified port. 748*10465441SEvalZero<p> 749*10465441SEvalZero<dl compact><dt><b>Note:</b></dt><dd>Since this function expects the port number in network byte order, a conversion using <a class="el" href="a00148.html#g69a7a4951ff21b302267532c21ee78fc">HTONS()</a> or <a class="el" href="a00148.html#ga22b04cac8cf283ca12f028578bebc06">htons()</a> is necessary.</dd></dl> 750*10465441SEvalZero<div class="fragment"><pre class="fragment"> <a class="code" href="a00147.html#gdd1ab3704ecd4900eec61a6897d32dc8">uip_listen</a>(<a class="code" href="a00148.html#g69a7a4951ff21b302267532c21ee78fc">HTONS</a>(80)); 751*10465441SEvalZero</pre></div><p> 752*10465441SEvalZero<dl compact><dt><b>Parameters:</b></dt><dd> 753*10465441SEvalZero <table border="0" cellspacing="2" cellpadding="0"> 754*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>port</em> </td><td>A 16-bit port number in network byte order. </td></tr> 755*10465441SEvalZero </table> 756*10465441SEvalZero</dl> 757*10465441SEvalZero 758*10465441SEvalZero<p> 759*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00529">529</a> of file <a class="el" href="a00201.html">uip.c</a>. 760*10465441SEvalZero<p> 761*10465441SEvalZeroReferences <a class="el" href="a00206.html#l00259">UIP_LISTENPORTS</a>. 762*10465441SEvalZero<p> 763*10465441SEvalZeroReferenced by <a class="el" href="a00170.html#l00041">hello_world_init()</a>, and <a class="el" href="a00184.html#l00333">httpd_init()</a>. </td> 764*10465441SEvalZero </tr> 765*10465441SEvalZero</table> 766*10465441SEvalZero<a class="anchor" name="g04b053a623aac7cd4195157d470661b3"></a><!-- doxytag: member="uip.c::uip_send" ref="g04b053a623aac7cd4195157d470661b3" args="(const void *data, int len)" --><p> 767*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 768*10465441SEvalZero <tr> 769*10465441SEvalZero <td class="mdRow"> 770*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 771*10465441SEvalZero <tr> 772*10465441SEvalZero <td class="md" nowrap valign="top">void uip_send </td> 773*10465441SEvalZero <td class="md" valign="top">( </td> 774*10465441SEvalZero <td class="md" nowrap valign="top">const void * </td> 775*10465441SEvalZero <td class="mdname" nowrap> <em>data</em>, </td> 776*10465441SEvalZero </tr> 777*10465441SEvalZero <tr> 778*10465441SEvalZero <td class="md" nowrap align="right"></td> 779*10465441SEvalZero <td class="md"></td> 780*10465441SEvalZero <td class="md" nowrap>int </td> 781*10465441SEvalZero <td class="mdname" nowrap> <em>len</em></td> 782*10465441SEvalZero </tr> 783*10465441SEvalZero <tr> 784*10465441SEvalZero <td class="md"></td> 785*10465441SEvalZero <td class="md">) </td> 786*10465441SEvalZero <td class="md" colspan="2"></td> 787*10465441SEvalZero </tr> 788*10465441SEvalZero </table> 789*10465441SEvalZero </td> 790*10465441SEvalZero </tr> 791*10465441SEvalZero</table> 792*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 793*10465441SEvalZero <tr> 794*10465441SEvalZero <td> 795*10465441SEvalZero 796*10465441SEvalZero </td> 797*10465441SEvalZero <td> 798*10465441SEvalZero 799*10465441SEvalZero<p> 800*10465441SEvalZeroSend data on the current connection. 801*10465441SEvalZero<p> 802*10465441SEvalZeroThis function is used to send out a single segment of TCP data. Only applications that have been invoked by uIP for event processing can send data.<p> 803*10465441SEvalZeroThe amount of data that actually is sent out after a call to this funcion is determined by the maximum amount of data TCP allows. uIP will automatically crop the data so that only the appropriate amount of data is sent. The function <a class="el" href="a00147.html#gb5fecbc62edd128012cea0f47b57ab9f">uip_mss()</a> can be used to query uIP for the amount of data that actually will be sent.<p> 804*10465441SEvalZero<dl compact><dt><b>Note:</b></dt><dd>This function does not guarantee that the sent data will arrive at the destination. If the data is lost in the network, the application will be invoked with the <a class="el" href="a00147.html#ga8933ad15a2e2947dae4a5cff50e6007">uip_rexmit()</a> event being set. The application will then have to resend the data using this function.</dd></dl> 805*10465441SEvalZero<dl compact><dt><b>Parameters:</b></dt><dd> 806*10465441SEvalZero <table border="0" cellspacing="2" cellpadding="0"> 807*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>A pointer to the data which is to be sent.</td></tr> 808*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>The maximum amount of data bytes to be sent. </td></tr> 809*10465441SEvalZero </table> 810*10465441SEvalZero</dl> 811*10465441SEvalZero 812*10465441SEvalZero<p> 813*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l01888">1888</a> of file <a class="el" href="a00201.html">uip.c</a>. 814*10465441SEvalZero<p> 815*10465441SEvalZeroReferences <a class="el" href="a00201.html#l00145">uip_sappdata</a>, and <a class="el" href="a00201.html#l00155">uip_slen</a>. </td> 816*10465441SEvalZero </tr> 817*10465441SEvalZero</table> 818*10465441SEvalZero<a class="anchor" name="g22f140b02c354dfebcc7ad481c3bcd68"></a><!-- doxytag: member="uip.c::uip_setipid" ref="g22f140b02c354dfebcc7ad481c3bcd68" args="(u16_t id)" --><p> 819*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 820*10465441SEvalZero <tr> 821*10465441SEvalZero <td class="mdRow"> 822*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 823*10465441SEvalZero <tr> 824*10465441SEvalZero <td class="md" nowrap valign="top">void uip_setipid </td> 825*10465441SEvalZero <td class="md" valign="top">( </td> 826*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td> 827*10465441SEvalZero <td class="mdname1" valign="top" nowrap> <em>id</em> </td> 828*10465441SEvalZero <td class="md" valign="top"> ) </td> 829*10465441SEvalZero <td class="md" nowrap></td> 830*10465441SEvalZero </tr> 831*10465441SEvalZero </table> 832*10465441SEvalZero </td> 833*10465441SEvalZero </tr> 834*10465441SEvalZero</table> 835*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 836*10465441SEvalZero <tr> 837*10465441SEvalZero <td> 838*10465441SEvalZero 839*10465441SEvalZero </td> 840*10465441SEvalZero <td> 841*10465441SEvalZero 842*10465441SEvalZero<p> 843*10465441SEvalZerouIP initialization function. 844*10465441SEvalZero<p> 845*10465441SEvalZeroThis function may be used at boot time to set the initial ip_id. 846*10465441SEvalZero<p> 847*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00181">181</a> of file <a class="el" href="a00201.html">uip.c</a>. </td> 848*10465441SEvalZero </tr> 849*10465441SEvalZero</table> 850*10465441SEvalZero<a class="anchor" name="g85b65e38aa74eba18979156f97a94a87"></a><!-- doxytag: member="uip.h::uip_tcpchksum" ref="g85b65e38aa74eba18979156f97a94a87" args="(void)" --><p> 851*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 852*10465441SEvalZero <tr> 853*10465441SEvalZero <td class="mdRow"> 854*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 855*10465441SEvalZero <tr> 856*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> uip_tcpchksum </td> 857*10465441SEvalZero <td class="md" valign="top">( </td> 858*10465441SEvalZero <td class="md" nowrap valign="top">void </td> 859*10465441SEvalZero <td class="mdname1" valign="top" nowrap> </td> 860*10465441SEvalZero <td class="md" valign="top"> ) </td> 861*10465441SEvalZero <td class="md" nowrap></td> 862*10465441SEvalZero </tr> 863*10465441SEvalZero </table> 864*10465441SEvalZero </td> 865*10465441SEvalZero </tr> 866*10465441SEvalZero</table> 867*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 868*10465441SEvalZero <tr> 869*10465441SEvalZero <td> 870*10465441SEvalZero 871*10465441SEvalZero </td> 872*10465441SEvalZero <td> 873*10465441SEvalZero 874*10465441SEvalZero<p> 875*10465441SEvalZeroCalculate the TCP checksum of the packet in uip_buf and uip_appdata. 876*10465441SEvalZero<p> 877*10465441SEvalZeroThe TCP checksum is the Internet checksum of data contents of the TCP segment, and a pseudo-header as defined in RFC793.<p> 878*10465441SEvalZero<dl compact><dt><b>Returns:</b></dt><dd>The TCP checksum of the TCP segment in uip_buf and pointed to by uip_appdata. </dd></dl> 879*10465441SEvalZero 880*10465441SEvalZero<p> 881*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00364">364</a> of file <a class="el" href="a00201.html">uip.c</a>. 882*10465441SEvalZero<p> 883*10465441SEvalZeroReferences <a class="el" href="a00202.html#l01510">UIP_PROTO_TCP</a>. 884*10465441SEvalZero<p> 885*10465441SEvalZeroReferenced by <a class="el" href="a00199.html#l00049">uip_split_output()</a>. </td> 886*10465441SEvalZero </tr> 887*10465441SEvalZero</table> 888*10465441SEvalZero<a class="anchor" name="g79c4110211247df3fb30b8cf1c4c02af"></a><!-- doxytag: member="uip.c::uip_udp_new" ref="g79c4110211247df3fb30b8cf1c4c02af" args="(uip_ipaddr_t *ripaddr, u16_t rport)" --><p> 889*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 890*10465441SEvalZero <tr> 891*10465441SEvalZero <td class="mdRow"> 892*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 893*10465441SEvalZero <tr> 894*10465441SEvalZero <td class="md" nowrap valign="top">struct <a class="el" href="a00095.html">uip_udp_conn</a>* uip_udp_new </td> 895*10465441SEvalZero <td class="md" valign="top">( </td> 896*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> * </td> 897*10465441SEvalZero <td class="mdname" nowrap> <em>ripaddr</em>, </td> 898*10465441SEvalZero </tr> 899*10465441SEvalZero <tr> 900*10465441SEvalZero <td class="md" nowrap align="right"></td> 901*10465441SEvalZero <td class="md"></td> 902*10465441SEvalZero <td class="md" nowrap><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td> 903*10465441SEvalZero <td class="mdname" nowrap> <em>rport</em></td> 904*10465441SEvalZero </tr> 905*10465441SEvalZero <tr> 906*10465441SEvalZero <td class="md"></td> 907*10465441SEvalZero <td class="md">) </td> 908*10465441SEvalZero <td class="md" colspan="2"></td> 909*10465441SEvalZero </tr> 910*10465441SEvalZero </table> 911*10465441SEvalZero </td> 912*10465441SEvalZero </tr> 913*10465441SEvalZero</table> 914*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 915*10465441SEvalZero <tr> 916*10465441SEvalZero <td> 917*10465441SEvalZero 918*10465441SEvalZero </td> 919*10465441SEvalZero <td> 920*10465441SEvalZero 921*10465441SEvalZero<p> 922*10465441SEvalZeroSet up a new UDP connection. 923*10465441SEvalZero<p> 924*10465441SEvalZeroThis function sets up a new UDP connection. The function will automatically allocate an unused local port for the new connection. However, another port can be chosen by using the <a class="el" href="a00147.html#ga20812098a4663c8a9fc4ce8e95391b6">uip_udp_bind()</a> call, after the <a class="el" href="a00147.html#g79c4110211247df3fb30b8cf1c4c02af">uip_udp_new()</a> function has been called.<p> 925*10465441SEvalZeroExample: <div class="fragment"><pre class="fragment"> <a class="code" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> addr; 926*10465441SEvalZero <span class="keyword">struct </span><a class="code" href="a00095.html">uip_udp_conn</a> *c; 927*10465441SEvalZero 928*10465441SEvalZero <a class="code" href="a00148.html#g87f0b54ade0d159fba495089128a4932">uip_ipaddr</a>(&addr, 192,168,2,1); 929*10465441SEvalZero c = <a class="code" href="a00147.html#g79c4110211247df3fb30b8cf1c4c02af">uip_udp_new</a>(&addr, <a class="code" href="a00148.html#g69a7a4951ff21b302267532c21ee78fc">HTONS</a>(12345)); 930*10465441SEvalZero <span class="keywordflow">if</span>(c != <a class="code" href="a00160.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>) { 931*10465441SEvalZero <a class="code" href="a00147.html#ga20812098a4663c8a9fc4ce8e95391b6">uip_udp_bind</a>(c, <a class="code" href="a00148.html#g69a7a4951ff21b302267532c21ee78fc">HTONS</a>(12344)); 932*10465441SEvalZero } 933*10465441SEvalZero</pre></div> <dl compact><dt><b>Parameters:</b></dt><dd> 934*10465441SEvalZero <table border="0" cellspacing="2" cellpadding="0"> 935*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>ripaddr</em> </td><td>The IP address of the remote host.</td></tr> 936*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>rport</em> </td><td>The remote port number in network byte order.</td></tr> 937*10465441SEvalZero </table> 938*10465441SEvalZero</dl> 939*10465441SEvalZero<dl compact><dt><b>Returns:</b></dt><dd>The <a class="el" href="a00095.html">uip_udp_conn</a> structure for the new connection or NULL if no connection could be allocated. </dd></dl> 940*10465441SEvalZero 941*10465441SEvalZero<p> 942*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00473">473</a> of file <a class="el" href="a00201.html">uip.c</a>. 943*10465441SEvalZero<p> 944*10465441SEvalZeroReferences <a class="el" href="a00201.html#l01882">htons()</a>, <a class="el" href="a00202.html#l01212">uip_udp_conn::lport</a>, <a class="el" href="a00201.html#l00173">uip_udp_conn</a>, <a class="el" href="a00201.html#l00174">uip_udp_conns</a>, and <a class="el" href="a00206.html#l00206">UIP_UDP_CONNS</a>. 945*10465441SEvalZero<p> 946*10465441SEvalZeroReferenced by <a class="el" href="a00172.html#l00438">resolv_conf()</a>. </td> 947*10465441SEvalZero </tr> 948*10465441SEvalZero</table> 949*10465441SEvalZero<a class="anchor" name="g7023a34ba9e9d03b5fbedbcb32924453"></a><!-- doxytag: member="uip.h::uip_udpchksum" ref="g7023a34ba9e9d03b5fbedbcb32924453" args="(void)" --><p> 950*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 951*10465441SEvalZero <tr> 952*10465441SEvalZero <td class="mdRow"> 953*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 954*10465441SEvalZero <tr> 955*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> uip_udpchksum </td> 956*10465441SEvalZero <td class="md" valign="top">( </td> 957*10465441SEvalZero <td class="md" nowrap valign="top">void </td> 958*10465441SEvalZero <td class="mdname1" valign="top" nowrap> </td> 959*10465441SEvalZero <td class="md" valign="top"> ) </td> 960*10465441SEvalZero <td class="md" nowrap></td> 961*10465441SEvalZero </tr> 962*10465441SEvalZero </table> 963*10465441SEvalZero </td> 964*10465441SEvalZero </tr> 965*10465441SEvalZero</table> 966*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 967*10465441SEvalZero <tr> 968*10465441SEvalZero <td> 969*10465441SEvalZero 970*10465441SEvalZero </td> 971*10465441SEvalZero <td> 972*10465441SEvalZero 973*10465441SEvalZero<p> 974*10465441SEvalZeroCalculate the UDP checksum of the packet in uip_buf and uip_appdata. 975*10465441SEvalZero<p> 976*10465441SEvalZeroThe UDP checksum is the Internet checksum of data contents of the UDP segment, and a pseudo-header as defined in RFC768.<p> 977*10465441SEvalZero<dl compact><dt><b>Returns:</b></dt><dd>The UDP checksum of the UDP segment in uip_buf and pointed to by uip_appdata. </dd></dl> 978*10465441SEvalZero 979*10465441SEvalZero<p> 980*10465441SEvalZeroReferenced by <a class="el" href="a00201.html#l00682">uip_process()</a>. </td> 981*10465441SEvalZero </tr> 982*10465441SEvalZero</table> 983*10465441SEvalZero<a class="anchor" name="gaa585784b0914cac1d37f07f85457008"></a><!-- doxytag: member="uip.c::uip_unlisten" ref="gaa585784b0914cac1d37f07f85457008" args="(u16_t port)" --><p> 984*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 985*10465441SEvalZero <tr> 986*10465441SEvalZero <td class="mdRow"> 987*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 988*10465441SEvalZero <tr> 989*10465441SEvalZero <td class="md" nowrap valign="top">void uip_unlisten </td> 990*10465441SEvalZero <td class="md" valign="top">( </td> 991*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> </td> 992*10465441SEvalZero <td class="mdname1" valign="top" nowrap> <em>port</em> </td> 993*10465441SEvalZero <td class="md" valign="top"> ) </td> 994*10465441SEvalZero <td class="md" nowrap></td> 995*10465441SEvalZero </tr> 996*10465441SEvalZero </table> 997*10465441SEvalZero </td> 998*10465441SEvalZero </tr> 999*10465441SEvalZero</table> 1000*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 1001*10465441SEvalZero <tr> 1002*10465441SEvalZero <td> 1003*10465441SEvalZero 1004*10465441SEvalZero </td> 1005*10465441SEvalZero <td> 1006*10465441SEvalZero 1007*10465441SEvalZero<p> 1008*10465441SEvalZeroStop listening to the specified port. 1009*10465441SEvalZero<p> 1010*10465441SEvalZero<dl compact><dt><b>Note:</b></dt><dd>Since this function expects the port number in network byte order, a conversion using <a class="el" href="a00148.html#g69a7a4951ff21b302267532c21ee78fc">HTONS()</a> or <a class="el" href="a00148.html#ga22b04cac8cf283ca12f028578bebc06">htons()</a> is necessary.</dd></dl> 1011*10465441SEvalZero<div class="fragment"><pre class="fragment"> <a class="code" href="a00147.html#gaa585784b0914cac1d37f07f85457008">uip_unlisten</a>(<a class="code" href="a00148.html#g69a7a4951ff21b302267532c21ee78fc">HTONS</a>(80)); 1012*10465441SEvalZero</pre></div><p> 1013*10465441SEvalZero<dl compact><dt><b>Parameters:</b></dt><dd> 1014*10465441SEvalZero <table border="0" cellspacing="2" cellpadding="0"> 1015*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>port</em> </td><td>A 16-bit port number in network byte order. </td></tr> 1016*10465441SEvalZero </table> 1017*10465441SEvalZero</dl> 1018*10465441SEvalZero 1019*10465441SEvalZero<p> 1020*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00518">518</a> of file <a class="el" href="a00201.html">uip.c</a>. 1021*10465441SEvalZero<p> 1022*10465441SEvalZeroReferences <a class="el" href="a00206.html#l00259">UIP_LISTENPORTS</a>. </td> 1023*10465441SEvalZero </tr> 1024*10465441SEvalZero</table> 1025*10465441SEvalZero<hr><h2>Variable Documentation</h2> 1026*10465441SEvalZero<a class="anchor" name="g561b8eda32e059d4e7397f776268cc63"></a><!-- doxytag: member="uip.c::uip_appdata" ref="g561b8eda32e059d4e7397f776268cc63" args="" --><p> 1027*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 1028*10465441SEvalZero <tr> 1029*10465441SEvalZero <td class="mdRow"> 1030*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 1031*10465441SEvalZero <tr> 1032*10465441SEvalZero <td class="md" nowrap valign="top">void* <a class="el" href="a00150.html#g561b8eda32e059d4e7397f776268cc63">uip_appdata</a> </td> 1033*10465441SEvalZero </tr> 1034*10465441SEvalZero </table> 1035*10465441SEvalZero </td> 1036*10465441SEvalZero </tr> 1037*10465441SEvalZero</table> 1038*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 1039*10465441SEvalZero <tr> 1040*10465441SEvalZero <td> 1041*10465441SEvalZero 1042*10465441SEvalZero </td> 1043*10465441SEvalZero <td> 1044*10465441SEvalZero 1045*10465441SEvalZero<p> 1046*10465441SEvalZeroPointer to the application data in the packet buffer. 1047*10465441SEvalZero<p> 1048*10465441SEvalZeroThis pointer points to the application data when the application is called. If the application wishes to send data, the application may use this space to write the data into before calling <a class="el" href="a00147.html#g04b053a623aac7cd4195157d470661b3">uip_send()</a>. 1049*10465441SEvalZero<p> 1050*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00143">143</a> of file <a class="el" href="a00201.html">uip.c</a>. 1051*10465441SEvalZero<p> 1052*10465441SEvalZeroReferenced by <a class="el" href="a00201.html#l00682">uip_process()</a>, and <a class="el" href="a00199.html#l00049">uip_split_output()</a>. </td> 1053*10465441SEvalZero </tr> 1054*10465441SEvalZero</table> 1055*10465441SEvalZero<a class="anchor" name="g561b8eda32e059d4e7397f776268cc63"></a><!-- doxytag: member="uip.h::uip_appdata" ref="g561b8eda32e059d4e7397f776268cc63" args="" --><p> 1056*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 1057*10465441SEvalZero <tr> 1058*10465441SEvalZero <td class="mdRow"> 1059*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 1060*10465441SEvalZero <tr> 1061*10465441SEvalZero <td class="md" nowrap valign="top">void* <a class="el" href="a00150.html#g561b8eda32e059d4e7397f776268cc63">uip_appdata</a> </td> 1062*10465441SEvalZero </tr> 1063*10465441SEvalZero </table> 1064*10465441SEvalZero </td> 1065*10465441SEvalZero </tr> 1066*10465441SEvalZero</table> 1067*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 1068*10465441SEvalZero <tr> 1069*10465441SEvalZero <td> 1070*10465441SEvalZero 1071*10465441SEvalZero </td> 1072*10465441SEvalZero <td> 1073*10465441SEvalZero 1074*10465441SEvalZero<p> 1075*10465441SEvalZeroPointer to the application data in the packet buffer. 1076*10465441SEvalZero<p> 1077*10465441SEvalZeroThis pointer points to the application data when the application is called. If the application wishes to send data, the application may use this space to write the data into before calling <a class="el" href="a00147.html#g04b053a623aac7cd4195157d470661b3">uip_send()</a>. <dl compact><dt><b>Examples: </b></dt><dd> 1078*10465441SEvalZero<a class="el" href="a00048.html#a9">dhcpc.c</a>, <a class="el" href="a00046.html#a136">resolv.c</a>, <a class="el" href="a00044.html#a224">telnetd.c</a>, and <a class="el" href="a00040.html#a275">webclient.c</a>.</dl> 1079*10465441SEvalZero<p> 1080*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00143">143</a> of file <a class="el" href="a00201.html">uip.c</a>. 1081*10465441SEvalZero<p> 1082*10465441SEvalZeroReferenced by <a class="el" href="a00201.html#l00682">uip_process()</a>, and <a class="el" href="a00199.html#l00049">uip_split_output()</a>. </td> 1083*10465441SEvalZero </tr> 1084*10465441SEvalZero</table> 1085*10465441SEvalZero<a class="anchor" name="gb81e78f890dbbee50c533a9734b74fd9"></a><!-- doxytag: member="uip.c::uip_buf" ref="gb81e78f890dbbee50c533a9734b74fd9" args="[UIP_BUFSIZE+2]" --><p> 1086*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 1087*10465441SEvalZero <tr> 1088*10465441SEvalZero <td class="mdRow"> 1089*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 1090*10465441SEvalZero <tr> 1091*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> <a class="el" href="a00150.html#gb81e78f890dbbee50c533a9734b74fd9">uip_buf</a>[UIP_BUFSIZE+2] </td> 1092*10465441SEvalZero </tr> 1093*10465441SEvalZero </table> 1094*10465441SEvalZero </td> 1095*10465441SEvalZero </tr> 1096*10465441SEvalZero</table> 1097*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 1098*10465441SEvalZero <tr> 1099*10465441SEvalZero <td> 1100*10465441SEvalZero 1101*10465441SEvalZero </td> 1102*10465441SEvalZero <td> 1103*10465441SEvalZero 1104*10465441SEvalZero<p> 1105*10465441SEvalZeroThe uIP packet buffer. 1106*10465441SEvalZero<p> 1107*10465441SEvalZeroThe uip_buf array is used to hold incoming and outgoing packets. The device driver should place incoming data into this buffer. When sending data, the device driver should read the link level headers and the TCP/IP headers from this buffer. The size of the link level headers is configured by the UIP_LLH_LEN define.<p> 1108*10465441SEvalZero<dl compact><dt><b>Note:</b></dt><dd>The application data need not be placed in this buffer, so the device driver must read it from the place pointed to by the uip_appdata pointer as illustrated by the following example: <div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> 1109*10465441SEvalZero devicedriver_send(<span class="keywordtype">void</span>) 1110*10465441SEvalZero { 1111*10465441SEvalZero hwsend(&<a class="code" href="a00146.html#gb81e78f890dbbee50c533a9734b74fd9">uip_buf</a>[0], <a class="code" href="a00153.html#ge6f4a2453dbd8bc60e6a82774552366a">UIP_LLH_LEN</a>); 1112*10465441SEvalZero <span class="keywordflow">if</span>(<a class="code" href="a00149.html#g12a33f0c09711167bdf3dd7d7cf8c5a1">uip_len</a> <= <a class="code" href="a00153.html#ge6f4a2453dbd8bc60e6a82774552366a">UIP_LLH_LEN</a> + <a class="code" href="a00150.html#gee37386b2ab828787c05227eb109def7">UIP_TCPIP_HLEN</a>) { 1113*10465441SEvalZero hwsend(&<a class="code" href="a00146.html#gb81e78f890dbbee50c533a9734b74fd9">uip_buf</a>[<a class="code" href="a00153.html#ge6f4a2453dbd8bc60e6a82774552366a">UIP_LLH_LEN</a>], <a class="code" href="a00149.html#g12a33f0c09711167bdf3dd7d7cf8c5a1">uip_len</a> - UIP_LLH_LEN); 1114*10465441SEvalZero } <span class="keywordflow">else</span> { 1115*10465441SEvalZero hwsend(&<a class="code" href="a00146.html#gb81e78f890dbbee50c533a9734b74fd9">uip_buf</a>[<a class="code" href="a00153.html#ge6f4a2453dbd8bc60e6a82774552366a">UIP_LLH_LEN</a>], <a class="code" href="a00150.html#gee37386b2ab828787c05227eb109def7">UIP_TCPIP_HLEN</a>); 1116*10465441SEvalZero hwsend(<a class="code" href="a00150.html#g561b8eda32e059d4e7397f776268cc63">uip_appdata</a>, <a class="code" href="a00149.html#g12a33f0c09711167bdf3dd7d7cf8c5a1">uip_len</a> - <a class="code" href="a00150.html#gee37386b2ab828787c05227eb109def7">UIP_TCPIP_HLEN</a> - <a class="code" href="a00153.html#ge6f4a2453dbd8bc60e6a82774552366a">UIP_LLH_LEN</a>); 1117*10465441SEvalZero } 1118*10465441SEvalZero } 1119*10465441SEvalZero</pre></div> </dd></dl> 1120*10465441SEvalZero 1121*10465441SEvalZero<p> 1122*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00139">139</a> of file <a class="el" href="a00201.html">uip.c</a>. 1123*10465441SEvalZero<p> 1124*10465441SEvalZeroReferenced by <a class="el" href="a00201.html#l00682">uip_process()</a>. </td> 1125*10465441SEvalZero </tr> 1126*10465441SEvalZero</table> 1127*10465441SEvalZero<a class="anchor" name="g788ffac72342f6172343d7f8099cbe1a"></a><!-- doxytag: member="uip.c::uip_conn" ref="g788ffac72342f6172343d7f8099cbe1a" args="" --><p> 1128*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 1129*10465441SEvalZero <tr> 1130*10465441SEvalZero <td class="mdRow"> 1131*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 1132*10465441SEvalZero <tr> 1133*10465441SEvalZero <td class="md" nowrap valign="top">struct <a class="el" href="a00088.html">uip_conn</a>* <a class="el" href="a00088.html">uip_conn</a> </td> 1134*10465441SEvalZero </tr> 1135*10465441SEvalZero </table> 1136*10465441SEvalZero </td> 1137*10465441SEvalZero </tr> 1138*10465441SEvalZero</table> 1139*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 1140*10465441SEvalZero <tr> 1141*10465441SEvalZero <td> 1142*10465441SEvalZero 1143*10465441SEvalZero </td> 1144*10465441SEvalZero <td> 1145*10465441SEvalZero 1146*10465441SEvalZero<p> 1147*10465441SEvalZeroPointer to the current TCP connection. 1148*10465441SEvalZero<p> 1149*10465441SEvalZeroThe <a class="el" href="a00088.html">uip_conn</a> pointer can be used to access the current TCP connection. 1150*10465441SEvalZero<p> 1151*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00163">163</a> of file <a class="el" href="a00201.html">uip.c</a>. 1152*10465441SEvalZero<p> 1153*10465441SEvalZeroReferenced by <a class="el" href="a00201.html#l00407">uip_connect()</a>. </td> 1154*10465441SEvalZero </tr> 1155*10465441SEvalZero</table> 1156*10465441SEvalZero<a class="anchor" name="g788ffac72342f6172343d7f8099cbe1a"></a><!-- doxytag: member="uip.h::uip_conn" ref="g788ffac72342f6172343d7f8099cbe1a" args="" --><p> 1157*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 1158*10465441SEvalZero <tr> 1159*10465441SEvalZero <td class="mdRow"> 1160*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 1161*10465441SEvalZero <tr> 1162*10465441SEvalZero <td class="md" nowrap valign="top">struct <a class="el" href="a00088.html">uip_conn</a>* <a class="el" href="a00088.html">uip_conn</a> </td> 1163*10465441SEvalZero </tr> 1164*10465441SEvalZero </table> 1165*10465441SEvalZero </td> 1166*10465441SEvalZero </tr> 1167*10465441SEvalZero</table> 1168*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 1169*10465441SEvalZero <tr> 1170*10465441SEvalZero <td> 1171*10465441SEvalZero 1172*10465441SEvalZero </td> 1173*10465441SEvalZero <td> 1174*10465441SEvalZero 1175*10465441SEvalZero<p> 1176*10465441SEvalZeroPointer to the current TCP connection. 1177*10465441SEvalZero<p> 1178*10465441SEvalZeroThe <a class="el" href="a00088.html">uip_conn</a> pointer can be used to access the current TCP connection. <dl compact><dt><b>Examples: </b></dt><dd> 1179*10465441SEvalZero<a class="el" href="a00036.html#a105">hello-world.c</a>, <a class="el" href="a00038.html#a189">smtp.c</a>, and <a class="el" href="a00040.html#a269">webclient.c</a>.</dl> 1180*10465441SEvalZero<p> 1181*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00163">163</a> of file <a class="el" href="a00201.html">uip.c</a>. 1182*10465441SEvalZero<p> 1183*10465441SEvalZeroReferenced by <a class="el" href="a00201.html#l00407">uip_connect()</a>. </td> 1184*10465441SEvalZero </tr> 1185*10465441SEvalZero</table> 1186*10465441SEvalZero<a class="anchor" name="g12a33f0c09711167bdf3dd7d7cf8c5a1"></a><!-- doxytag: member="uip.c::uip_len" ref="g12a33f0c09711167bdf3dd7d7cf8c5a1" args="" --><p> 1187*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 1188*10465441SEvalZero <tr> 1189*10465441SEvalZero <td class="mdRow"> 1190*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 1191*10465441SEvalZero <tr> 1192*10465441SEvalZero <td class="md" nowrap valign="top"><a class="el" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> <a class="el" href="a00150.html#g12a33f0c09711167bdf3dd7d7cf8c5a1">uip_len</a> </td> 1193*10465441SEvalZero </tr> 1194*10465441SEvalZero </table> 1195*10465441SEvalZero </td> 1196*10465441SEvalZero </tr> 1197*10465441SEvalZero</table> 1198*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 1199*10465441SEvalZero <tr> 1200*10465441SEvalZero <td> 1201*10465441SEvalZero 1202*10465441SEvalZero </td> 1203*10465441SEvalZero <td> 1204*10465441SEvalZero 1205*10465441SEvalZero<p> 1206*10465441SEvalZeroThe length of the packet in the uip_buf buffer. 1207*10465441SEvalZero<p> 1208*10465441SEvalZeroThe global variable uip_len holds the length of the packet in the uip_buf buffer.<p> 1209*10465441SEvalZeroWhen the network device driver calls the uIP input function, uip_len should be set to the length of the packet in the uip_buf buffer.<p> 1210*10465441SEvalZeroWhen sending packets, the device driver should use the contents of the uip_len variable to determine the length of the outgoing packet. 1211*10465441SEvalZero<p> 1212*10465441SEvalZeroDefinition at line <a class="el" href="a00201.html#l00155">155</a> of file <a class="el" href="a00201.html">uip.c</a>. 1213*10465441SEvalZero<p> 1214*10465441SEvalZeroReferenced by <a class="el" href="a00204.html#l00278">uip_arp_arpin()</a>, <a class="el" href="a00201.html#l00682">uip_process()</a>, and <a class="el" href="a00199.html#l00049">uip_split_output()</a>. </td> 1215*10465441SEvalZero </tr> 1216*10465441SEvalZero</table> 1217*10465441SEvalZero<a class="anchor" name="g9ee50a40597e67fce96541ab56c3b712"></a><!-- doxytag: member="uip.h::uip_stat" ref="g9ee50a40597e67fce96541ab56c3b712" args="" --><p> 1218*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0"> 1219*10465441SEvalZero <tr> 1220*10465441SEvalZero <td class="mdRow"> 1221*10465441SEvalZero <table cellpadding="0" cellspacing="0" border="0"> 1222*10465441SEvalZero <tr> 1223*10465441SEvalZero <td class="md" nowrap valign="top">struct <a class="el" href="a00093.html">uip_stats</a> <a class="el" href="a00150.html#g9ee50a40597e67fce96541ab56c3b712">uip_stat</a> </td> 1224*10465441SEvalZero </tr> 1225*10465441SEvalZero </table> 1226*10465441SEvalZero </td> 1227*10465441SEvalZero </tr> 1228*10465441SEvalZero</table> 1229*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0"> 1230*10465441SEvalZero <tr> 1231*10465441SEvalZero <td> 1232*10465441SEvalZero 1233*10465441SEvalZero </td> 1234*10465441SEvalZero <td> 1235*10465441SEvalZero 1236*10465441SEvalZero<p> 1237*10465441SEvalZeroThe uIP TCP/IP statistics. 1238*10465441SEvalZero<p> 1239*10465441SEvalZeroThis is the variable in which the uIP TCP/IP statistics are gathered. 1240*10465441SEvalZero<p> 1241*10465441SEvalZeroReferenced by <a class="el" href="a00201.html#l00682">uip_process()</a>. </td> 1242*10465441SEvalZero </tr> 1243*10465441SEvalZero</table> 1244*10465441SEvalZero<hr size="1"><address style="align: right;"><small>Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by 1245*10465441SEvalZero<a href="http://www.doxygen.org/index.html"> 1246*10465441SEvalZero<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address> 1247*10465441SEvalZero</body> 1248*10465441SEvalZero</html> 1249