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 /* Misc */
418 
419 #endif /* __LWIPOPTS_H__ */
420