Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Release 1.0
[palacios.git] / geekos / include / lwip / lwipopts.h
1 /**
2  * @file
3  *
4  * lwIP Options Configuration
5  */
6
7 /*
8  * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
9  * All rights reserved. 
10  * 
11  * Redistribution and use in source and binary forms, with or without modification, 
12  * are permitted provided that the following conditions are met:
13  *
14  * 1. Redistributions of source code must retain the above copyright notice,
15  *    this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright notice,
17  *    this list of conditions and the following disclaimer in the documentation
18  *    and/or other materials provided with the distribution.
19  * 3. The name of the author may not be used to endorse or promote products
20  *    derived from this software without specific prior written permission. 
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 
23  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
24  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
25  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
26  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
27  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
30  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
31  * OF SUCH DAMAGE.
32  *
33  * This file is part of the lwIP TCP/IP stack.
34  * 
35  * Author: Adam Dunkels <adam@sics.se>
36  *
37  */
38 #ifndef __LWIPOPTS_H__
39 #define __LWIPOPTS_H__
40
41 /*
42  * Include user defined options first. Anything not defined in these files
43  * will be set to standard values. Override anything you dont like!
44  */
45 #include "lwipopts.h"
46 #include "lwip/debug.h"
47
48 /*
49    -----------------------------------------------
50    ---------- Platform specific locking ----------
51    -----------------------------------------------
52 */
53
54 /**
55  * SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain
56  * critical regions during buffer allocation, deallocation and memory
57  * allocation and deallocation.
58  */
59 #define SYS_LIGHTWEIGHT_PROT            0
60
61 /** 
62  * NO_SYS==1: Provides VERY minimal functionality. Otherwise,
63  * use lwIP facilities.
64  */
65 #define NO_SYS                          0
66
67 /*
68    ------------------------------------
69    ---------- Memory options ----------
70    ------------------------------------
71 */
72
73 /**
74  * MEM_ALIGNMENT: should be set to the alignment of the CPU
75  *    4 byte alignment -> #define MEM_ALIGNMENT 4
76  *    2 byte alignment -> #define MEM_ALIGNMENT 2
77  */
78 #define MEM_ALIGNMENT                   1
79
80 /**
81  * MEM_SIZE: the size of the heap memory. If the application will send
82  * a lot of data that needs to be copied, this should be set high.
83  */
84 #define MEM_SIZE                        1600
85
86 /*
87    ------------------------------------------------
88    ---------- Internal Memory Pool Sizes ----------
89    ------------------------------------------------
90 */
91 /**
92  * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF).
93  * If the application sends a lot of data out of ROM (or other static memory),
94  * this should be set high.
95  */
96 #define MEMP_NUM_PBUF                   16
97
98 /**
99  * MEMP_NUM_RAW_PCB: Number of raw connection PCBs
100  * (requires the LWIP_RAW option)
101  */
102 #define MEMP_NUM_RAW_PCB                4
103
104 /**
105  * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
106  * per active UDP "connection".
107  * (requires the LWIP_UDP option)
108  */
109 #define MEMP_NUM_UDP_PCB                4
110
111 /**
112  * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections.
113  * (requires the LWIP_TCP option)
114  */
115 #define MEMP_NUM_TCP_PCB                4
116
117 /**
118  * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections.
119  * (requires the LWIP_TCP option)
120  */
121 #define MEMP_NUM_TCP_PCB_LISTEN         4
122
123 /**
124  * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments.
125  * (requires the LWIP_TCP option)
126  */
127 #define MEMP_NUM_TCP_SEG                16
128
129 /**
130  * MEMP_NUM_REASSDATA: the number of simultaneously IP packets queued for
131  * reassembly (whole packets, not fragments!)
132  */
133 #define MEMP_NUM_REASSDATA              1
134
135 /**
136  * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing
137  * packets (pbufs) that are waiting for an ARP request (to resolve
138  * their destination address) to finish.
139  * (requires the ARP_QUEUEING option)
140  */
141 #define MEMP_NUM_ARP_QUEUE              2
142
143 /**
144  * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts.
145  * (requires NO_SYS==0)
146  */
147 #define MEMP_NUM_SYS_TIMEOUT            3
148
149 /**
150  * MEMP_NUM_NETBUF: the number of struct netbufs.
151  * (only needed if you use the sequential API, like api_lib.c)
152  */
153 #define MEMP_NUM_NETBUF                 2
154
155 /**
156  * MEMP_NUM_NETCONN: the number of struct netconns.
157  * (only needed if you use the sequential API, like api_lib.c)
158  */
159 #define MEMP_NUM_NETCONN                4
160
161 /**
162  * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used
163  * for callback/timeout API communication. 
164  * (only needed if you use tcpip.c)
165  */
166 #define MEMP_NUM_TCPIP_MSG_API          8
167
168 /**
169  * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used
170  * for incoming packets. 
171  * (only needed if you use tcpip.c)
172  */
173 #define MEMP_NUM_TCPIP_MSG_INPKT        8
174
175 /**
176  * PBUF_POOL_SIZE: the number of buffers in the pbuf pool. 
177  */
178 #define PBUF_POOL_SIZE                  8
179
180 /*
181    ---------------------------------
182    ---------- ARP options ----------
183    ---------------------------------
184 */
185 /**
186  * LWIP_ARP==1: Enable ARP functionality.
187  */
188 #define LWIP_ARP                        1
189
190 /*
191    --------------------------------
192    ---------- IP options ----------
193    --------------------------------
194 */
195 /**
196  * IP_FORWARD==1: Enables the ability to forward IP packets across network
197  * interfaces. If you are going to run lwIP on a device with only one network
198  * interface, define this to 0.
199  */
200 #define IP_FORWARD                      0
201
202 /**
203  * IP_OPTIONS: Defines the behavior for IP options.
204  *      IP_OPTIONS_ALLOWED==0: All packets with IP options are dropped.
205  *      IP_OPTIONS_ALLOWED==1: IP options are allowed (but not parsed).
206  */
207 #define IP_OPTIONS_ALLOWED              1
208
209 /**
210  * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that
211  * this option does not affect outgoing packet sizes, which can be controlled
212  * via IP_FRAG.
213  */
214 #define IP_REASSEMBLY                   1
215
216 /**
217  * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note
218  * that this option does not affect incoming packet sizes, which can be
219  * controlled via IP_REASSEMBLY.
220  */
221 #define IP_FRAG                         1
222
223 /**
224  * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally)
225  * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived
226  * in this time, the whole packet is discarded.
227  */
228 #define IP_REASS_MAXAGE                 3
229
230 /**
231  * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled.
232  * Since the received pbufs are enqueued, be sure to configure
233  * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive
234  * packets even if the maximum amount of fragments is enqueued for reassembly!
235  */
236 #define IP_REASS_MAX_PBUFS              4
237
238 /**
239  * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP
240  * fragmentation. Otherwise pbufs are allocated and reference the original
241     * packet data to be fragmented.
242 */
243 #define IP_FRAG_USES_STATIC_BUF         0
244
245 /**
246  * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers.
247  */
248 #define IP_DEFAULT_TTL                  255
249
250 /*
251    ----------------------------------
252    ---------- ICMP options ----------
253    ----------------------------------
254 */
255 /**
256  * LWIP_ICMP==1: Enable ICMP module inside the IP stack.
257  * Be careful, disable that make your product non-compliant to RFC1122
258  */
259 #define LWIP_ICMP                       1
260
261 /*
262    ---------------------------------
263    ---------- RAW options ----------
264    ---------------------------------
265 */
266 /**
267  * LWIP_RAW==1: Enable application layer to hook into the IP layer itself.
268  */
269 #define LWIP_RAW                        1
270
271 /*
272    ----------------------------------
273    ---------- DHCP options ----------
274    ----------------------------------
275 */
276 /**
277  * LWIP_DHCP==1: Enable DHCP module.
278  */
279 #define LWIP_DHCP                       0
280
281
282 /*
283    ------------------------------------
284    ---------- AUTOIP options ----------
285    ------------------------------------
286 */
287 /**
288  * LWIP_AUTOIP==1: Enable AUTOIP module.
289  */
290 #define LWIP_AUTOIP                     0
291
292 /*
293    ----------------------------------
294    ---------- SNMP options ----------
295    ----------------------------------
296 */
297 /**
298  * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP
299  * transport.
300  */
301 #define LWIP_SNMP                       0
302
303 /*
304    ----------------------------------
305    ---------- IGMP options ----------
306    ----------------------------------
307 */
308 /**
309  * LWIP_IGMP==1: Turn on IGMP module. 
310  */
311 #define LWIP_IGMP                       0
312
313 /*
314    ----------------------------------
315    ---------- DNS options -----------
316    ----------------------------------
317 */
318 /**
319  * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS
320  * transport.
321  */
322 #define LWIP_DNS                        0
323
324 /*
325    ---------------------------------
326    ---------- UDP options ----------
327    ---------------------------------
328 */
329 /**
330  * LWIP_UDP==1: Turn on UDP.
331  */
332 #define LWIP_UDP                        1
333
334 /*
335    ---------------------------------
336    ---------- TCP options ----------
337    ---------------------------------
338 */
339 /**
340  * LWIP_TCP==1: Turn on TCP.
341  */
342 #define LWIP_TCP                        1
343
344 #define LWIP_LISTEN_BACKLOG             0
345
346 /*
347    ----------------------------------
348    ---------- Pbuf options ----------
349    ----------------------------------
350 */
351 /**
352  * PBUF_LINK_HLEN: the number of bytes that should be allocated for a
353  * link level header. The default is 14, the standard value for
354  * Ethernet.
355  */
356 #define PBUF_LINK_HLEN                  16
357
358 /**
359  * PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. The default is
360  * designed to accomodate single full size TCP frame in one pbuf, including
361  * TCP_MSS, IP header, and link header.
362 *
363  */
364 #define PBUF_POOL_BUFSIZE               LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN)
365
366 /*
367    ------------------------------------
368    ---------- LOOPIF options ----------
369    ------------------------------------
370 */
371 /**
372  * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c
373  */
374 #define LWIP_HAVE_LOOPIF                0
375
376 /*
377    ----------------------------------------------
378    ---------- Sequential layer options ----------
379    ----------------------------------------------
380 */
381
382 /**
383  * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
384  */
385 #define LWIP_NETCONN                    1
386
387 /*
388    ------------------------------------
389    ---------- Socket options ----------
390    ------------------------------------
391 */
392 /**
393  * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
394  */
395 #define LWIP_SOCKET                     1
396
397 /*
398    ----------------------------------------
399    ---------- Statistics options ----------
400    ----------------------------------------
401 */
402 /**
403  * LWIP_STATS==1: Enable statistics collection in lwip_stats.
404  */
405 #define LWIP_STATS                      0
406 /*
407    ---------------------------------
408    ---------- PPP options ----------
409    ---------------------------------
410 */
411 /**
412  * PPP_SUPPORT==1: Enable PPP.
413  */
414 #define PPP_SUPPORT                     0
415         
416
417 /* use errno provided by lwip, Lei */
418 #define LWIP_PROVIDE_ERRNO    1
419
420
421 /* Misc */
422
423 #define LWIP_TIMEVAL_PRIVATE 1
424
425 #endif /* __LWIPOPTS_H__ */