00001 /** 00002 * \addtogroup uip 00003 * @{ 00004 */ 00005 00006 /** 00007 * \defgroup uipopt Configuration options for uIP 00008 * @{ 00009 * 00010 * uIP is configured using the per-project configuration file 00011 * "uipopt.h". This file contains all compile-time options for uIP and 00012 * should be tweaked to match each specific project. The uIP 00013 * distribution contains a documented example "uipopt.h" that can be 00014 * copied and modified for each project. 00015 * 00016 * \note Contiki does not use the uipopt.h file to configure uIP, but 00017 * uses a per-port uip-conf.h file that should be edited instead. 00018 */ 00019 00020 /** 00021 * \file 00022 * Configuration options for uIP. 00023 * \author Adam Dunkels <adam@dunkels.com> 00024 * 00025 * This file is used for tweaking various configuration options for 00026 * uIP. You should make a copy of this file into one of your project's 00027 * directories instead of editing this example "uipopt.h" file that 00028 * comes with the uIP distribution. 00029 */ 00030 00031 /* 00032 * Copyright (c) 2001-2003, Adam Dunkels. 00033 * All rights reserved. 00034 * 00035 * Redistribution and use in source and binary forms, with or without 00036 * modification, are permitted provided that the following conditions 00037 * are met: 00038 * 1. Redistributions of source code must retain the above copyright 00039 * notice, this list of conditions and the following disclaimer. 00040 * 2. Redistributions in binary form must reproduce the above copyright 00041 * notice, this list of conditions and the following disclaimer in the 00042 * documentation and/or other materials provided with the distribution. 00043 * 3. The name of the author may not be used to endorse or promote 00044 * products derived from this software without specific prior 00045 * written permission. 00046 * 00047 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 00048 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00049 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00050 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 00051 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00052 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 00053 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00054 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 00055 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00056 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00057 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00058 * 00059 * This file is part of the uIP TCP/IP stack. 00060 * 00061 * $Id: uipopt.h,v 1.14 2010/12/24 00:39:04 dak664 Exp $ 00062 * 00063 */ 00064 00065 #ifndef __UIPOPT_H__ 00066 #define __UIPOPT_H__ 00067 00068 #ifndef UIP_LITTLE_ENDIAN 00069 #define UIP_LITTLE_ENDIAN 3412 00070 #endif /* UIP_LITTLE_ENDIAN */ 00071 #ifndef UIP_BIG_ENDIAN 00072 #define UIP_BIG_ENDIAN 1234 00073 #endif /* UIP_BIG_ENDIAN */ 00074 00075 #include "contiki-conf.h" 00076 00077 /*------------------------------------------------------------------------------*/ 00078 00079 /** 00080 * \defgroup uipoptstaticconf Static configuration options 00081 * @{ 00082 * 00083 * These configuration options can be used for setting the IP address 00084 * settings statically, but only if UIP_FIXEDADDR is set to 1. The 00085 * configuration options for a specific node includes IP address, 00086 * netmask and default router as well as the Ethernet address. The 00087 * netmask, default router and Ethernet address are applicable only 00088 * if uIP should be run over Ethernet. 00089 * 00090 * This options are meaningful only for the IPv4 code. 00091 * 00092 * All of these should be changed to suit your project. 00093 */ 00094 00095 /** 00096 * Determines if uIP should use a fixed IP address or not. 00097 * 00098 * If uIP should use a fixed IP address, the settings are set in the 00099 * uipopt.h file. If not, the macros uip_sethostaddr(), 00100 * uip_setdraddr() and uip_setnetmask() should be used instead. 00101 * 00102 * \hideinitializer 00103 */ 00104 #define UIP_FIXEDADDR 0 00105 00106 /** 00107 * Ping IP address assignment. 00108 * 00109 * uIP uses a "ping" packets for setting its own IP address if this 00110 * option is set. If so, uIP will start with an empty IP address and 00111 * the destination IP address of the first incoming "ping" (ICMP echo) 00112 * packet will be used for setting the hosts IP address. 00113 * 00114 * \note This works only if UIP_FIXEDADDR is 0. 00115 * 00116 * \hideinitializer 00117 */ 00118 #ifdef UIP_CONF_PINGADDRCONF 00119 #define UIP_PINGADDRCONF (UIP_CONF_PINGADDRCONF) 00120 #else /* UIP_CONF_PINGADDRCONF */ 00121 #define UIP_PINGADDRCONF 0 00122 #endif /* UIP_CONF_PINGADDRCONF */ 00123 00124 00125 /** 00126 * Specifies if the uIP ARP module should be compiled with a fixed 00127 * Ethernet MAC address or not. 00128 * 00129 * If this configuration option is 0, the macro uip_setethaddr() can 00130 * be used to specify the Ethernet address at run-time. 00131 * 00132 * \hideinitializer 00133 */ 00134 #define UIP_FIXEDETHADDR 0 00135 00136 /** @} */ 00137 /*------------------------------------------------------------------------------*/ 00138 /** 00139 * \defgroup uipoptip IP configuration options 00140 * @{ 00141 * 00142 */ 00143 /** 00144 * The IP TTL (time to live) of IP packets sent by uIP. 00145 * 00146 * This should normally not be changed. 00147 */ 00148 #define UIP_TTL 64 00149 00150 /** 00151 * The maximum time an IP fragment should wait in the reassembly 00152 * buffer before it is dropped. 00153 * 00154 */ 00155 #define UIP_REASS_MAXAGE 60 /*60s*/ 00156 00157 /** 00158 * Turn on support for IP packet reassembly. 00159 * 00160 * uIP supports reassembly of fragmented IP packets. This features 00161 * requires an additional amount of RAM to hold the reassembly buffer 00162 * and the reassembly code size is approximately 700 bytes. The 00163 * reassembly buffer is of the same size as the uip_buf buffer 00164 * (configured by UIP_BUFSIZE). 00165 * 00166 * \note IP packet reassembly is not heavily tested. 00167 * 00168 * \hideinitializer 00169 */ 00170 #ifdef UIP_CONF_REASSEMBLY 00171 #define UIP_REASSEMBLY (UIP_CONF_REASSEMBLY) 00172 #else /* UIP_CONF_REASSEMBLY */ 00173 #define UIP_REASSEMBLY 0 00174 #endif /* UIP_CONF_REASSEMBLY */ 00175 /** @} */ 00176 00177 /*------------------------------------------------------------------------------*/ 00178 /** 00179 * \defgroup uipoptipv6 IPv6 configuration options 00180 * @{ 00181 * 00182 */ 00183 00184 /** The maximum transmission unit at the IP Layer*/ 00185 #define UIP_LINK_MTU 1280 00186 00187 #ifndef UIP_CONF_IPV6 00188 /** Do we use IPv6 or not (default: no) */ 00189 #define UIP_CONF_IPV6 0 00190 #endif 00191 00192 #ifndef UIP_CONF_IPV6_QUEUE_PKT 00193 /** Do we do per %neighbor queuing during address resolution (default: no) */ 00194 #define UIP_CONF_IPV6_QUEUE_PKT 0 00195 #endif 00196 00197 #ifndef UIP_CONF_IPV6_CHECKS 00198 /** Do we do IPv6 consistency checks (highly recommended, default: yes) */ 00199 #define UIP_CONF_IPV6_CHECKS 1 00200 #endif 00201 00202 #ifndef UIP_CONF_IPV6_REASSEMBLY 00203 /** Do we do IPv6 fragmentation (default: no) */ 00204 #define UIP_CONF_IPV6_REASSEMBLY 0 00205 #endif 00206 00207 #ifndef UIP_CONF_NETIF_MAX_ADDRESSES 00208 /** Default number of IPv6 addresses associated to the node's interface */ 00209 #define UIP_CONF_NETIF_MAX_ADDRESSES 3 00210 #endif 00211 00212 #ifndef UIP_CONF_ND6_MAX_PREFIXES 00213 /** Default number of IPv6 prefixes associated to the node's interface */ 00214 #define UIP_CONF_ND6_MAX_PREFIXES 3 00215 #endif 00216 00217 #ifndef UIP_CONF_ND6_MAX_NEIGHBORS 00218 /** Default number of neighbors that can be stored in the %neighbor cache */ 00219 #define UIP_CONF_ND6_MAX_NEIGHBORS 4 00220 #endif 00221 00222 #ifndef UIP_CONF_ND6_MAX_DEFROUTERS 00223 /** Minimum number of default routers */ 00224 #define UIP_CONF_ND6_MAX_DEFROUTERS 2 00225 #endif 00226 /** @} */ 00227 00228 /*------------------------------------------------------------------------------*/ 00229 /** 00230 * \defgroup uipoptudp UDP configuration options 00231 * @{ 00232 * 00233 * \note The UDP support in uIP is still not entirely complete; there 00234 * is no support for sending or receiving broadcast or multicast 00235 * packets, but it works well enough to support a number of vital 00236 * applications such as DNS queries, though 00237 */ 00238 00239 /** 00240 * Toggles whether UDP support should be compiled in or not. 00241 * 00242 * \hideinitializer 00243 */ 00244 #ifdef UIP_CONF_UDP 00245 #define UIP_UDP UIP_CONF_UDP 00246 #else /* UIP_CONF_UDP */ 00247 #define UIP_UDP 1 00248 #endif /* UIP_CONF_UDP */ 00249 00250 /** 00251 * Toggles if UDP checksums should be used or not. 00252 * 00253 * \note Support for UDP checksums is currently not included in uIP, 00254 * so this option has no function. 00255 * 00256 * \hideinitializer 00257 */ 00258 #ifdef UIP_CONF_UDP_CHECKSUMS 00259 #define UIP_UDP_CHECKSUMS (UIP_CONF_UDP_CHECKSUMS) 00260 #else 00261 #define UIP_UDP_CHECKSUMS (UIP_CONF_IPV6) 00262 #endif 00263 00264 /** 00265 * The maximum amount of concurrent UDP connections. 00266 * 00267 * \hideinitializer 00268 */ 00269 #ifdef UIP_CONF_UDP_CONNS 00270 #define UIP_UDP_CONNS (UIP_CONF_UDP_CONNS) 00271 #else /* UIP_CONF_UDP_CONNS */ 00272 #define UIP_UDP_CONNS 10 00273 #endif /* UIP_CONF_UDP_CONNS */ 00274 00275 /** 00276 * The name of the function that should be called when UDP datagrams arrive. 00277 * 00278 * \hideinitializer 00279 */ 00280 00281 00282 /** @} */ 00283 /*------------------------------------------------------------------------------*/ 00284 /** 00285 * \defgroup uipopttcp TCP configuration options 00286 * @{ 00287 */ 00288 00289 /** 00290 * Toggles whether UDP support should be compiled in or not. 00291 * 00292 * \hideinitializer 00293 */ 00294 #ifdef UIP_CONF_TCP 00295 #define UIP_TCP (UIP_CONF_TCP) 00296 #else /* UIP_CONF_UDP */ 00297 #define UIP_TCP 1 00298 #endif /* UIP_CONF_UDP */ 00299 00300 /** 00301 * Determines if support for opening connections from uIP should be 00302 * compiled in. 00303 * 00304 * If the applications that are running on top of uIP for this project 00305 * do not need to open outgoing TCP connections, this configuration 00306 * option can be turned off to reduce the code size of uIP. 00307 * 00308 * \hideinitializer 00309 */ 00310 #ifndef UIP_CONF_ACTIVE_OPEN 00311 #define UIP_ACTIVE_OPEN 1 00312 #else /* UIP_CONF_ACTIVE_OPEN */ 00313 #define UIP_ACTIVE_OPEN (UIP_CONF_ACTIVE_OPEN) 00314 #endif /* UIP_CONF_ACTIVE_OPEN */ 00315 00316 /** 00317 * The maximum number of simultaneously open TCP connections. 00318 * 00319 * Since the TCP connections are statically allocated, turning this 00320 * configuration knob down results in less RAM used. Each TCP 00321 * connection requires approximately 30 bytes of memory. 00322 * 00323 * \hideinitializer 00324 */ 00325 #ifndef UIP_CONF_MAX_CONNECTIONS 00326 #define UIP_CONNS 10 00327 #else /* UIP_CONF_MAX_CONNECTIONS */ 00328 #define UIP_CONNS (UIP_CONF_MAX_CONNECTIONS) 00329 #endif /* UIP_CONF_MAX_CONNECTIONS */ 00330 00331 00332 /** 00333 * The maximum number of simultaneously listening TCP ports. 00334 * 00335 * Each listening TCP port requires 2 bytes of memory. 00336 * 00337 * \hideinitializer 00338 */ 00339 #ifndef UIP_CONF_MAX_LISTENPORTS 00340 #define UIP_LISTENPORTS 20 00341 #else /* UIP_CONF_MAX_LISTENPORTS */ 00342 #define UIP_LISTENPORTS (UIP_CONF_MAX_LISTENPORTS) 00343 #endif /* UIP_CONF_MAX_LISTENPORTS */ 00344 00345 /** 00346 * Determines if support for TCP urgent data notification should be 00347 * compiled in. 00348 * 00349 * Urgent data (out-of-band data) is a rarely used TCP feature that 00350 * very seldom would be required. 00351 * 00352 * \hideinitializer 00353 */ 00354 #define UIP_URGDATA 0 00355 00356 /** 00357 * The initial retransmission timeout counted in timer pulses. 00358 * 00359 * This should not be changed. 00360 */ 00361 #define UIP_RTO 3 00362 00363 /** 00364 * The maximum number of times a segment should be retransmitted 00365 * before the connection should be aborted. 00366 * 00367 * This should not be changed. 00368 */ 00369 #define UIP_MAXRTX 8 00370 00371 /** 00372 * The maximum number of times a SYN segment should be retransmitted 00373 * before a connection request should be deemed to have been 00374 * unsuccessful. 00375 * 00376 * This should not need to be changed. 00377 */ 00378 #define UIP_MAXSYNRTX 5 00379 00380 /** 00381 * The TCP maximum segment size. 00382 * 00383 * This is should not be to set to more than 00384 * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. 00385 */ 00386 #ifdef UIP_CONF_TCP_MSS 00387 #define UIP_TCP_MSS (UIP_CONF_TCP_MSS) 00388 #else 00389 #define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) 00390 #endif 00391 00392 /** 00393 * The size of the advertised receiver's window. 00394 * 00395 * Should be set low (i.e., to the size of the uip_buf buffer) if the 00396 * application is slow to process incoming data, or high (32768 bytes) 00397 * if the application processes data quickly. 00398 * 00399 * \hideinitializer 00400 */ 00401 #ifndef UIP_CONF_RECEIVE_WINDOW 00402 #define UIP_RECEIVE_WINDOW (UIP_TCP_MSS) 00403 #else 00404 #define UIP_RECEIVE_WINDOW (UIP_CONF_RECEIVE_WINDOW) 00405 #endif 00406 00407 /** 00408 * How long a connection should stay in the TIME_WAIT state. 00409 * 00410 * This can be reduced for faster entry into power saving modes. 00411 */ 00412 #ifndef UIP_CONF_WAIT_TIMEOUT 00413 #define UIP_TIME_WAIT_TIMEOUT 120 00414 #else 00415 #define UIP_TIME_WAIT_TIMEOUT UIP_CONF_WAIT_TIMEOUT 00416 #endif 00417 00418 /** @} */ 00419 /*------------------------------------------------------------------------------*/ 00420 /** 00421 * \defgroup uipoptarp ARP configuration options 00422 * @{ 00423 */ 00424 00425 /** 00426 * The size of the ARP table. 00427 * 00428 * This option should be set to a larger value if this uIP node will 00429 * have many connections from the local network. 00430 * 00431 * \hideinitializer 00432 */ 00433 #ifdef UIP_CONF_ARPTAB_SIZE 00434 #define UIP_ARPTAB_SIZE (UIP_CONF_ARPTAB_SIZE) 00435 #else 00436 #define UIP_ARPTAB_SIZE 8 00437 #endif 00438 00439 /** 00440 * The maximum age of ARP table entries measured in 10ths of seconds. 00441 * 00442 * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD 00443 * default). 00444 */ 00445 #define UIP_ARP_MAXAGE 120 00446 00447 00448 /** @} */ 00449 00450 /*------------------------------------------------------------------------------*/ 00451 00452 /** 00453 * \defgroup uipoptmac layer 2 options (for ipv6) 00454 * @{ 00455 */ 00456 00457 #define UIP_DEFAULT_PREFIX_LEN 64 00458 00459 /** @} */ 00460 00461 /*------------------------------------------------------------------------------*/ 00462 00463 /** 00464 * \defgroup uipoptsics 6lowpan options (for ipv6) 00465 * @{ 00466 */ 00467 /** 00468 * Timeout for packet reassembly at the 6lowpan layer 00469 * (should be < 60s) 00470 */ 00471 #ifdef SICSLOWPAN_CONF_MAXAGE 00472 #define SICSLOWPAN_REASS_MAXAGE (SICSLOWPAN_CONF_MAXAGE) 00473 #else 00474 #define SICSLOWPAN_REASS_MAXAGE 20 00475 #endif 00476 00477 /** 00478 * Do we compress the IP header or not (default: no) 00479 */ 00480 #ifndef SICSLOWPAN_CONF_COMPRESSION 00481 #define SICSLOWPAN_CONF_COMPRESSION 0 00482 #endif 00483 00484 /** 00485 * If we use IPHC compression, how many address contexts do we support 00486 */ 00487 #ifndef SICSLOWPAN_CONF_MAX_ADDR_CONTEXTS 00488 #define SICSLOWPAN_CONF_MAX_ADDR_CONTEXTS 1 00489 #endif 00490 00491 /** 00492 * Do we support 6lowpan fragmentation 00493 */ 00494 #ifndef SICSLOWPAN_CONF_FRAG 00495 #define SICSLOWPAN_CONF_FRAG 0 00496 #endif 00497 00498 /** @} */ 00499 00500 /*------------------------------------------------------------------------------*/ 00501 00502 /** 00503 * \defgroup uipoptgeneral General configuration options 00504 * @{ 00505 */ 00506 00507 /** 00508 * The size of the uIP packet buffer. 00509 * 00510 * The uIP packet buffer should not be smaller than 60 bytes, and does 00511 * not need to be larger than 1514 bytes. Lower size results in lower 00512 * TCP throughput, larger size results in higher TCP throughput. 00513 * 00514 * \hideinitializer 00515 */ 00516 #ifndef UIP_CONF_BUFFER_SIZE 00517 #define UIP_BUFSIZE (UIP_LINK_MTU + UIP_LLH_LEN) 00518 #else /* UIP_CONF_BUFFER_SIZE */ 00519 #define UIP_BUFSIZE (UIP_CONF_BUFFER_SIZE) 00520 #endif /* UIP_CONF_BUFFER_SIZE */ 00521 00522 00523 /** 00524 * Determines if statistics support should be compiled in. 00525 * 00526 * The statistics is useful for debugging and to show the user. 00527 * 00528 * \hideinitializer 00529 */ 00530 #ifndef UIP_CONF_STATISTICS 00531 #define UIP_STATISTICS 0 00532 #else /* UIP_CONF_STATISTICS */ 00533 #define UIP_STATISTICS (UIP_CONF_STATISTICS) 00534 #endif /* UIP_CONF_STATISTICS */ 00535 00536 /** 00537 * Determines if logging of certain events should be compiled in. 00538 * 00539 * This is useful mostly for debugging. The function uip_log() 00540 * must be implemented to suit the architecture of the project, if 00541 * logging is turned on. 00542 * 00543 * \hideinitializer 00544 */ 00545 #ifndef UIP_CONF_LOGGING 00546 #define UIP_LOGGING 0 00547 #else /* UIP_CONF_LOGGING */ 00548 #define UIP_LOGGING (UIP_CONF_LOGGING) 00549 #endif /* UIP_CONF_LOGGING */ 00550 00551 /** 00552 * Broadcast support. 00553 * 00554 * This flag configures IP broadcast support. This is useful only 00555 * together with UDP. 00556 * 00557 * \hideinitializer 00558 * 00559 */ 00560 #ifndef UIP_CONF_BROADCAST 00561 #define UIP_BROADCAST 0 00562 #else /* UIP_CONF_BROADCAST */ 00563 #define UIP_BROADCAST (UIP_CONF_BROADCAST) 00564 #endif /* UIP_CONF_BROADCAST */ 00565 00566 /** 00567 * Print out a uIP log message. 00568 * 00569 * This function must be implemented by the module that uses uIP, and 00570 * is called by uIP whenever a log message is generated. 00571 */ 00572 void uip_log(char *msg); 00573 00574 /** 00575 * The link level header length. 00576 * 00577 * This is the offset into the uip_buf where the IP header can be 00578 * found. For Ethernet, this should be set to 14. For SLIP, this 00579 * should be set to 0. 00580 * 00581 * \note we probably won't use this constant for other link layers than 00582 * ethernet as they have variable header length (this is due to variable 00583 * number and type of address fields and to optional security features) 00584 * E.g.: 802.15.4 -> 2 + (1/2*4/8) + 0/5/6/10/14 00585 * 802.11 -> 4 + (6*3/4) + 2 00586 * \hideinitializer 00587 */ 00588 #ifdef UIP_CONF_LLH_LEN 00589 #define UIP_LLH_LEN (UIP_CONF_LLH_LEN) 00590 #else /* UIP_LLH_LEN */ 00591 #define UIP_LLH_LEN 14 00592 #endif /* UIP_CONF_LLH_LEN */ 00593 00594 /** @} */ 00595 /*------------------------------------------------------------------------------*/ 00596 /** 00597 * \defgroup uipoptcpu CPU architecture configuration 00598 * @{ 00599 * 00600 * The CPU architecture configuration is where the endianess of the 00601 * CPU on which uIP is to be run is specified. Most CPUs today are 00602 * little endian, and the most notable exception are the Motorolas 00603 * which are big endian. The BYTE_ORDER macro should be changed to 00604 * reflect the CPU architecture on which uIP is to be run. 00605 */ 00606 00607 /** 00608 * The byte order of the CPU architecture on which uIP is to be run. 00609 * 00610 * This option can be either UIP_BIG_ENDIAN (Motorola byte order) or 00611 * UIP_LITTLE_ENDIAN (Intel byte order). 00612 * 00613 * \hideinitializer 00614 */ 00615 #ifdef UIP_CONF_BYTE_ORDER 00616 #define UIP_BYTE_ORDER (UIP_CONF_BYTE_ORDER) 00617 #else /* UIP_CONF_BYTE_ORDER */ 00618 #define UIP_BYTE_ORDER (UIP_LITTLE_ENDIAN) 00619 #endif /* UIP_CONF_BYTE_ORDER */ 00620 00621 /** @} */ 00622 /*------------------------------------------------------------------------------*/ 00623 00624 /** 00625 * \defgroup uipoptapp Application specific configurations 00626 * @{ 00627 * 00628 * An uIP application is implemented using a single application 00629 * function that is called by uIP whenever a TCP/IP event occurs. The 00630 * name of this function must be registered with uIP at compile time 00631 * using the UIP_APPCALL definition. 00632 * 00633 * uIP applications can store the application state within the 00634 * uip_conn structure by specifying the type of the application 00635 * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t. 00636 * 00637 * The file containing the definitions must be included in the 00638 * uipopt.h file. 00639 * 00640 * The following example illustrates how this can look. 00641 \code 00642 00643 void httpd_appcall(void); 00644 #define UIP_APPCALL httpd_appcall 00645 00646 struct httpd_state { 00647 u8_t state; 00648 u16_t count; 00649 char *dataptr; 00650 char *script; 00651 }; 00652 typedef struct httpd_state uip_tcp_appstate_t 00653 \endcode 00654 */ 00655 00656 /** 00657 * \var #define UIP_APPCALL 00658 * 00659 * The name of the application function that uIP should call in 00660 * response to TCP/IP events. 00661 * 00662 */ 00663 00664 /** 00665 * \var typedef uip_tcp_appstate_t 00666 * 00667 * The type of the application state that is to be stored in the 00668 * uip_conn structure. This usually is typedef:ed to a struct holding 00669 * application state information. 00670 */ 00671 00672 /** 00673 * \var typedef uip_udp_appstate_t 00674 * 00675 * The type of the application state that is to be stored in the 00676 * uip_conn structure. This usually is typedef:ed to a struct holding 00677 * application state information. 00678 */ 00679 /** @} */ 00680 00681 #endif /* __UIPOPT_H__ */ 00682 /** @} */ 00683 /** @} */