Contiki 2.6

uipopt.h

Go to the documentation of this file.
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_DS6_PREFIX_NBU
00213 /** Default number of IPv6 prefixes associated to the node's interface */
00214 #define UIP_CONF_DS6_PREFIX_NBU     2
00215 #endif
00216 
00217 #ifndef UIP_CONF_DS6_NBR_NBU
00218 /** Default number of neighbors that can be stored in the %neighbor cache */
00219 #define UIP_CONF_DS6_NBR_NBU    4
00220 #endif
00221 
00222 #ifndef UIP_CONF_DS6_DEFRT_NBU
00223 /** Minimum number of default routers */
00224 #define UIP_CONF_DS6_DEFRT_NBU       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  uint8_t state;
00648  uint16_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 /** @} */