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