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