/****************************************************************************** * DISCLAIMER * This software is supplied by Renesas Electronics Corporation and is only * intended for use with Renesas products. No other uses are authorized. * This software is owned by Renesas Electronics Corporation and is protected under * all applicable laws, including copyright laws. * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES * REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, * INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY * DISCLAIMED. * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES * FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS * AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * Renesas reserves the right, without notice, to make changes to this * software and to discontinue the availability of this software. * By using this software, you agree to the additional terms and * conditions found by accessing the following link: * http://www.renesas.com/disclaimer ****************************************************************************** * Copyright (C) 2010 Renesas Electronics Corporation. All rights reserved. ****************************************************************************** * File Name : lwipopts.h * Version : 1.0 * Device(s) : Renesas * Tool-Chain : Renesas SH2A V9+ * OS : None * H/W Platform : SH2A * Description : Build options for lwIP. To see the options that you can set, * : open lwip/src/include/lwip/opt.h. Apparently this file is * : fully commented and explains how many of the options are used. ****************************************************************************** * History : DD.MM.YYYY Version Description * : 04.02.2010 1.00 First Release ******************************************************************************/ #ifndef LWIPOPTS_H_INCLUDED #define LWIPOPTS_H_INCLUDED #include "taskPriority.h" #include "arch/sys_arch.h" #define LWIP_DEBUG /* TODO: DHCP ID */ #define DHCP_GLOBAL_XID rand() /* Renesas C run time library supplys some - and they conflict with the ones supplied by lwIP. Fantastic */ #define LWIP_PROVIDE_ERRNO /* ----------------------------------------------- ---------- Platform specific locking ---------- ----------------------------------------------- */ /** * SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain * critical regions during buffer allocation, deallocation and memory * allocation and deallocation. */ #define SYS_LIGHTWEIGHT_PROT 1 /** * NO_SYS==1: Provides VERY minimal functionality. Otherwise, * use lwIP facilities. */ #define NO_SYS 0 /** * MEMCPY: override this if you have a faster implementation at hand than the * one included in your C library */ #define MEMCPY(dst,src,len) memcpy(dst,src,len) /** * SMEMCPY: override this with care! Some compilers (e.g. gcc) can inline a * call to memcpy() if the length is known at compile time and is small. */ #define SMEMCPY(dst,src,len) memcpy(dst,src,len) /* ------------------------------------ ---------- Memory options ---------- ------------------------------------ */ /** * MEM_LIBC_MALLOC==1: Use malloc/free/realloc provided by your C-library * instead of the lwip internal allocator. Can save code size if you * already use it. NOTE: lwIP storage allocation functions are inefficient * in comparison to the functions supplied by the compiler vendor. When possible * use the library functions supplied by the compiler vendor. */ #define MEM_LIBC_MALLOC 1 /** * MEMP_MEM_MALLOC==1: Use mem_malloc/mem_free instead of the lwip pool allocator. * Especially useful with MEM_LIBC_MALLOC but handle with care regarding execution * speed and usage from interrupts! */ #define MEMP_MEM_MALLOC 1 /** * MEM_ALIGNMENT: should be set to the alignment of the CPU * 4 byte alignment -> #define MEM_ALIGNMENT 4 * 2 byte alignment -> #define MEM_ALIGNMENT 2 */ #define MEM_ALIGNMENT 4 /* Because of the 32bit RISC architecture of the SH2A CPU core the ethernet frame also needs to be padded by two bytes to force the IP addresses within the IP header to fall on 4 byte boundaries */ #define ETH_PAD_SIZE 2 /** * MEM_SIZE: the size of the heap memory. If the application will send * a lot of data that needs to be copied, this should be set high. */ #define MEM_SIZE (512 * 1024) /** * MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable * amount of bytes before and after each memp element in every pool and fills * it with a prominent default value. * MEMP_OVERFLOW_CHECK == 0 no checking * MEMP_OVERFLOW_CHECK == 1 checks each element when it is freed * MEMP_OVERFLOW_CHECK >= 2 checks each element in every pool every time * memp_malloc() or memp_free() is called (useful but slow!) */ #define MEMP_OVERFLOW_CHECK 0 /** * MEMP_SANITY_CHECK==1: run a sanity check after each memp_free() to make * sure that there are no cycles in the linked lists. */ #define MEMP_SANITY_CHECK 0 /** * MEM_USE_POOLS==1: Use an alternative to malloc() by allocating from a set * of memory pools of various sizes. When mem_malloc is called, an element of * the smallest pool that can provide the length needed is returned. * To use this, MEMP_USE_CUSTOM_POOLS also has to be enabled. */ #define MEM_USE_POOLS 0 /** * MEM_USE_POOLS_TRY_BIGGER_POOL==1: if one malloc-pool is empty, try the next * bigger pool - WARNING: THIS MIGHT WASTE MEMORY but it can make a system more * reliable. */ #define MEM_USE_POOLS_TRY_BIGGER_POOL 0 /** * MEMP_USE_CUSTOM_POOLS==1: whether to include a user file lwippools.h * that defines additional pools beyond the "standard" ones required * by lwIP. If you set this to 1, you must have lwippools.h in your * inlude path somewhere. */ #define MEMP_USE_CUSTOM_POOLS 0 /** * Set this to 1 if you want to free PBUF_RAM pbufs (or call mem_free()) from * interrupt context (or another context that doesn't allow waiting for a * semaphore). * If set to 1, mem_malloc will be protected by a semaphore and SYS_ARCH_PROTECT, * while mem_free will only use SYS_ARCH_PROTECT. mem_malloc SYS_ARCH_UNPROTECTs * with each loop so that mem_free can run. * * ATTENTION: As you can see from the above description, this leads to dis-/ * enabling interrupts often, which can be slow! Also, on low memory, mem_malloc * can need longer. * * If you don't want that, at least for NO_SYS=0, you can still use the following * functions to enqueue a deallocation call which then runs in the tcpip_thread * context: * - pbuf_free_callback(p); * - mem_free_callback(m); */ #define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 0 /* ------------------------------------------------ ---------- Internal Memory Pool Sizes ---------- ------------------------------------------------ */ /** * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF). * If the application sends a lot of data out of ROM (or other static memory), * this should be set high. */ #define MEMP_NUM_PBUF 16 /** * MEMP_NUM_RAW_PCB: Number of raw connection PCBs * (requires the LWIP_RAW option) */ #define MEMP_NUM_RAW_PCB 4 /** * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One * per active UDP "connection". * (requires the LWIP_UDP option) */ #define MEMP_NUM_UDP_PCB 4 /** * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections. * (requires the LWIP_TCP option) */ #define MEMP_NUM_TCP_PCB 5 /** * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections. * (requires the LWIP_TCP option) */ #define MEMP_NUM_TCP_PCB_LISTEN 8 /** * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments. * (requires the LWIP_TCP option) */ #define MEMP_NUM_TCP_SEG 16 /** * MEMP_NUM_REASSDATA: the number of simultaneously IP packets queued for * reassembly (whole packets, not fragments!) */ #define MEMP_NUM_REASSDATA 5 /** * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing * packets (pbufs) that are waiting for an ARP request (to resolve * their destination address) to finish. * (requires the ARP_QUEUEING option) */ #define MEMP_NUM_ARP_QUEUE 30 /** * MEMP_NUM_IGMP_GROUP: The number of multicast groups whose network interfaces * can be members et the same time (one per netif - allsystems group -, plus one * per netif membership). * (requires the LWIP_IGMP option) */ #define MEMP_NUM_IGMP_GROUP 8 /** * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts. * (requires NO_SYS==0) */ #define MEMP_NUM_SYS_TIMEOUT 64 /** * MEMP_NUM_NETBUF: the number of struct netbufs. * (only needed if you use the sequential API, like api_lib.c) */ #define MEMP_NUM_NETBUF 2 /** * MEMP_NUM_NETCONN: the number of struct netconns. * (only needed if you use the sequential API, like api_lib.c) */ #define MEMP_NUM_NETCONN 4 /** * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used * for callback/timeout API communication. * (only needed if you use tcpip.c) */ #define MEMP_NUM_TCPIP_MSG_API 8 /** * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used * for incoming packets. * (only needed if you use tcpip.c) */ #define MEMP_NUM_TCPIP_MSG_INPKT 8 /** * PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */ #define PBUF_POOL_SIZE 16 /* --------------------------------- ---------- ARP options ---------- --------------------------------- */ /** * LWIP_ARP==1: Enable ARP functionality. */ #define LWIP_ARP 1 /** * ARP_TABLE_SIZE: Number of active MAC-IP address pairs cached. */ #define ARP_TABLE_SIZE 10 /** * ARP_QUEUEING==1: Outgoing packets are queued during hardware address * resolution. */ #define ARP_QUEUEING 1 /** * ETHARP_TRUST_IP_MAC==1: Incoming IP packets cause the ARP table to be * updated with the source MAC and IP addresses supplied in the packet. * You may want to disable this if you do not trust LAN peers to have the * correct addresses, or as a limited approach to attempt to handle * spoofing. If disabled, lwIP will need to make a new ARP request if * the peer is not already in the ARP table, adding a little latency. */ #define ETHARP_TRUST_IP_MAC 1 /** * ETHARP_SUPPORT_VLAN==1: support receiving ethernet packets with VLAN header. * Additionally, you can define ETHARP_VLAN_CHECK to an u16_t VLAN ID to check. * If ETHARP_VLAN_CHECK is defined, only VLAN-traffic for this VLAN is accepted. * If ETHARP_VLAN_CHECK is not defined, all traffic is accepted. */ #define ETHARP_SUPPORT_VLAN 0 /* -------------------------------- ---------- IP options ---------- -------------------------------- */ /** * IP_FORWARD==1: Enables the ability to forward IP packets across network * interfaces. If you are going to run lwIP on a device with only one network * interface, define this to 0. */ #define IP_FORWARD 0 /** * IP_OPTIONS_ALLOWED: Defines the behavior for IP options. * IP_OPTIONS_ALLOWED==0: All packets with IP options are dropped. * IP_OPTIONS_ALLOWED==1: IP options are allowed (but not parsed). */ #define IP_OPTIONS_ALLOWED 1 /** * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that * this option does not affect outgoing packet sizes, which can be controlled * via IP_FRAG. */ #define IP_REASSEMBLY 1 /** * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note * that this option does not affect incoming packet sizes, which can be * controlled via IP_REASSEMBLY. */ /* If this is set to 0 & the app sends more than MTU it all goes wrong - why? */ #define IP_FRAG 0 /** * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally) * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived * in this time, the whole packet is discarded. */ #define IP_REASS_MAXAGE 3 /** * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled. * Since the received pbufs are enqueued, be sure to configure * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive * packets even if the maximum amount of fragments is enqueued for reassembly! */ #define IP_REASS_MAX_PBUFS 10 /** * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP * fragmentation. Otherwise pbufs are allocated and reference the original * packet data to be fragmented. */ #define IP_FRAG_USES_STATIC_BUF 0 /** * IP_FRAG_MAX_MTU: Assumed max MTU on any interface for IP frag buffer * (requires IP_FRAG_USES_STATIC_BUF==1) */ #define IP_FRAG_MAX_MTU 1500 /** * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers. */ #define IP_DEFAULT_TTL 128 /** * IP_SOF_BROADCAST=1: Use the SOF_BROADCAST field to enable broadcast * filter per pcb on udp and raw send operations. To enable broadcast filter * on recv operations, you also have to set IP_SOF_BROADCAST_RECV=1. */ #define IP_SOF_BROADCAST 0 /** * IP_SOF_BROADCAST_RECV (requires IP_SOF_BROADCAST=1) enable the broadcast * filter on recv operations. */ #define IP_SOF_BROADCAST_RECV 0 /* ---------------------------------- ---------- ICMP options ---------- ---------------------------------- */ /** * LWIP_ICMP==1: Enable ICMP module inside the IP stack. * Be careful, disable that make your product non-compliant to RFC1122 */ #define LWIP_ICMP 1 /** * ICMP_TTL: Default value for Time-To-Live used by ICMP packets. */ #define ICMP_TTL (IP_DEFAULT_TTL) /** * LWIP_BROADCAST_PING==1: respond to broadcast pings (default is unicast only) */ #define LWIP_BROADCAST_PING 0 /** * LWIP_MULTICAST_PING==1: respond to multicast pings (default is unicast only) */ #define LWIP_MULTICAST_PING 0 /* --------------------------------- ---------- RAW options ---------- --------------------------------- */ /** * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. */ #define LWIP_RAW 1 /** * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. */ #define RAW_TTL (IP_DEFAULT_TTL) /* ---------------------------------- ---------- DHCP options ---------- ---------------------------------- The Dynamic Host Configuration Protocol (DHCP) is a computer networking protocol used by hosts (DHCP clients) to retrieve IP address assignments and other configuration information. */ /** * LWIP_DHCP==1: Enable DHCP module. */ #define LWIP_DHCP 1 /** * DHCP_DOES_ARP_CHECK==1: Do an ARP check on the offered address. */ #define DHCP_DOES_ARP_CHECK ((LWIP_DHCP) && (LWIP_ARP)) /* ------------------------------------ ---------- AUTOIP options ---------- ------------------------------------ Like DHCP, AUTOIP is a module that enables dynamic IPv4 addresses to be assigned to a device on startup. However, DHCP requires a DHCP server. AUTOIP is a server-less method of choosing an IP address. */ /** * LWIP_AUTOIP==1: Enable AUTOIP module. */ #define LWIP_AUTOIP 0 /** * LWIP_DHCP_AUTOIP_COOP==1: Allow DHCP and AUTOIP to be both enabled on * the same interface at the same time. */ #define LWIP_DHCP_AUTOIP_COOP 0 /** * LWIP_DHCP_AUTOIP_COOP_TRIES: Set to the number of DHCP DISCOVER probes * that should be sent before falling back on AUTOIP. This can be set * as low as 1 to get an AutoIP address very quickly, but you should * be prepared to handle a changing IP address when DHCP overrides * AutoIP. */ #define LWIP_DHCP_AUTOIP_COOP_TRIES 9 /* ---------------------------------- ---------- SNMP options ---------- ---------------------------------- Simple Network Management Protocol (SNMP) is a UDP-based network protocol. It is used mostly in network management systems to monitor network-attached devices for conditions that warrant administrative attention. */ /** * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP * transport. */ #define LWIP_SNMP 0 /** * SNMP_CONCURRENT_REQUESTS: Number of concurrent requests the module will * allow. At least one request buffer is required. */ #define SNMP_CONCURRENT_REQUESTS 1 /** * SNMP_TRAP_DESTINATIONS: Number of trap destinations. At least one trap * destination is required */ #define SNMP_TRAP_DESTINATIONS 1 /** * SNMP_PRIVATE_MIB: */ #define SNMP_PRIVATE_MIB 0 /** * Only allow SNMP write actions that are 'safe' (e.g. disabeling netifs is not * a safe action and disabled when SNMP_SAFE_REQUESTS = 1). * Unsafe requests are disabled by default! */ #define SNMP_SAFE_REQUESTS 1 /* ---------------------------------- ---------- IGMP options ---------- ---------------------------------- The Internet Group Management Protocol (IGMP) is a communications protocol used to manage the membership of Internet Protocol multicast groups. IGMP is used by IP hosts and adjacent multicast routers to establish multicast group memberships. */ /** * LWIP_IGMP==1: Turn on IGMP module. */ #define LWIP_IGMP 0 /* ---------------------------------- ---------- DNS options ----------- ---------------------------------- */ /** * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS * transport. */ #define LWIP_DNS 1 /** DNS maximum number of entries to maintain locally. */ #define DNS_TABLE_SIZE 32 /** DNS maximum host name length supported in the name table. */ #define DNS_MAX_NAME_LENGTH 256 /** The maximum of DNS servers */ #define DNS_MAX_SERVERS 4 /** DNS do a name checking between the query and the response. */ #define DNS_DOES_NAME_CHECK 1 /** DNS use a local buffer if DNS_USES_STATIC_BUF=0, a static one if DNS_USES_STATIC_BUF=1, or a dynamic one if DNS_USES_STATIC_BUF=2. The buffer will be of size DNS_MSG_SIZE */ #define DNS_USES_STATIC_BUF 2 /** DNS message max. size. Default value is RFC compliant. */ #define DNS_MSG_SIZE 512 /** DNS_LOCAL_HOSTLIST: Implements a local host-to-address list. If enabled, * you have to define * #define DNS_LOCAL_HOSTLIST_INIT {{"host1", 0x123}, {"host2", 0x234}} * (an array of structs name/address, where address is an u32_t in network * byte order). * * Instead, you can also use an external function: * #define DNS_LOOKUP_LOCAL_EXTERN(x) extern u32_t my_lookup_function(const char *name) * that returns the IP address or INADDR_NONE if not found. */ #define DNS_LOCAL_HOSTLIST 0 /** If this is turned on, the local host-list can be dynamically changed * at runtime. */ #define DNS_LOCAL_HOSTLIST_IS_DYNAMIC 0 /* --------------------------------- ---------- UDP options ---------- --------------------------------- */ /** * LWIP_UDP==1: Turn on UDP. */ #define LWIP_UDP 1 /** * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP) */ #define LWIP_UDPLITE 0 /** * UDP_TTL: Default Time-To-Live value. */ #define UDP_TTL (IP_DEFAULT_TTL) /** * LWIP_NETBUF_RECVINFO==1: append destination addr and port to every netbuf. */ #define LWIP_NETBUF_RECVINFO 0 /* --------------------------------- ---------- TCP options ---------- --------------------------------- */ /** * LWIP_TCP==1: Turn on TCP. */ #define LWIP_TCP 1 /** * TCP_TTL: Default Time-To-Live value. */ #define TCP_TTL (IP_DEFAULT_TTL) /** * TCP_WND: The size of a TCP window. This must be at least * (2 * TCP_MSS) for things to work well */ #define TCP_WND (4 * TCP_MSS) /** * TCP_MAXRTX: Maximum number of retransmissions of data segments. */ #define TCP_MAXRTX 12 /** * TCP_SYNMAXRTX: Maximum number of retransmissions of SYN segments. */ #define TCP_SYNMAXRTX 6 /** * TCP_QUEUE_OOSEQ==1: TCP will queue segments that arrive out of order. * Define to 0 if your device is low on memory. */ #define TCP_QUEUE_OOSEQ (LWIP_TCP) /** * TCP_MSS: TCP Maximum segment size. (default is 536, a conservative default, * you might want to increase this.) * For the receive side, this MSS is advertised to the remote side * when opening a connection. For the transmit size, this MSS sets * an upper limit on the MSS advertised by the remote host. */ #define TCP_MSS 536 /** * TCP_CALCULATE_EFF_SEND_MSS: "The maximum size of a segment that TCP really * sends, the 'effective send MSS,' MUST be the smaller of the send MSS (which * reflects the available reassembly buffer size at the remote host) and the * largest size permitted by the IP layer" (RFC 1122) * Setting this to 1 enables code that checks TCP_MSS against the MTU of the * netif used for a connection and limits the MSS if it would be too big otherwise. */ #define TCP_CALCULATE_EFF_SEND_MSS 1 /** * TCP_SND_BUF: TCP sender buffer space (bytes). */ #define TCP_SND_BUF 1500 /** * TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */ #define TCP_SND_QUEUELEN (4 * (TCP_SND_BUF)/(TCP_MSS)) /** * TCP_SNDLOWAT: TCP writable space (bytes). This must be less than or equal * to TCP_SND_BUF. It is the amount of space which must be available in the * TCP snd_buf for select to return writable. */ #define TCP_SNDLOWAT ((TCP_SND_BUF)/2) /** * TCP_LISTEN_BACKLOG: Enable the backlog option for tcp listen pcb. */ #define TCP_LISTEN_BACKLOG 0 /** * The maximum allowed backlog for TCP listen netconns. * This backlog is used unless another is explicitly specified. * 0xff is the maximum (u8_t). */ #define TCP_DEFAULT_LISTEN_BACKLOG 0xff /** * LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option. */ #define LWIP_TCP_TIMESTAMPS 0 /** * TCP_WND_UPDATE_THRESHOLD: difference in window to trigger an * explicit window update */ #define TCP_WND_UPDATE_THRESHOLD (TCP_WND / 4) /** * LWIP_EVENT_API and LWIP_CALLBACK_API: Only one of these should be set to 1. * LWIP_EVENT_API==1: The user defines lwip_tcp_event() to receive all * events (accept, sent, etc) that happen in the system. * LWIP_CALLBACK_API==1: The PCB callback function is called directly * for the event. */ #define LWIP_CALLBACK_API 1 // They appear to be mutually exclusive //#define LWIP_EVENT_API 0 /* ---------------------------------- ---------- Pbuf options ---------- ---------------------------------- */ /** * PBUF_LINK_HLEN: the number of bytes that should be allocated for a * link level header. The default is 14, the standard value for * Ethernet. */ #define PBUF_LINK_HLEN 14 /** * PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. The default is * designed to accomodate single full size TCP frame in one pbuf, including * TCP_MSS, IP header, and link header. */ #define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN) /* ------------------------------------------------ ---------- Network Interfaces options ---------- ------------------------------------------------ */ /** * LWIP_NETIF_HOSTNAME==1: use DHCP_OPTION_HOSTNAME with netif's hostname * field. */ #define LWIP_NETIF_HOSTNAME 1 /** * LWIP_NETIF_API==1: Support netif api (in netifapi.c) */ #define LWIP_NETIF_API 1 /** * LWIP_NETIF_STATUS_CALLBACK==1: Support a callback function whenever an interface * changes its up/down status (i.e., due to DHCP IP acquistion) */ #define LWIP_NETIF_STATUS_CALLBACK 1 /** * LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface * whenever the link changes (i.e., link down) */ #define LWIP_NETIF_LINK_CALLBACK 1 /** * LWIP_NETIF_HWADDRHINT==1: Cache link-layer-address hints (e.g. table * indices) in struct netif. TCP and UDP can make use of this to prevent * scanning the ARP table for every sent packet. While this is faster for big * ARP tables or many concurrent connections, it might be counterproductive * if you have a tiny ARP table or if there never are concurrent connections. */ #define LWIP_NETIF_HWADDRHINT 0 /** * LWIP_NETIF_LOOPBACK==1: Support sending packets with a destination IP * address equal to the netif IP address, looping them back up the stack. */ #define LWIP_NETIF_LOOPBACK 0 /** * LWIP_LOOPBACK_MAX_PBUFS: Maximum number of pbufs on queue for loopback * sending for each netif (0 = disabled) */ #define LWIP_LOOPBACK_MAX_PBUFS 0 /** * LWIP_NETIF_LOOPBACK_MULTITHREADING: Indicates whether threading is enabled in * the system, as netifs must change how they behave depending on this setting * for the LWIP_NETIF_LOOPBACK option to work. * Setting this is needed to avoid reentering non-reentrant functions like * tcp_input(). * LWIP_NETIF_LOOPBACK_MULTITHREADING==1: Indicates that the user is using a * multithreaded environment like tcpip.c. In this case, netif->input() * is called directly. * LWIP_NETIF_LOOPBACK_MULTITHREADING==0: Indicates a polling (or NO_SYS) setup. * The packets are put on a list and netif_poll() must be called in * the main application loop. */ #define LWIP_NETIF_LOOPBACK_MULTITHREADING (!NO_SYS) /** * LWIP_NETIF_TX_SINGLE_PBUF: if this is set to 1, lwIP tries to put all data * to be sent into one single pbuf. This is for compatibility with DMA-enabled * MACs that do not support scatter-gather. * Beware that this might involve CPU-memcpy before transmitting that would not * be needed without this flag! Use this only if you need to! * * @todo: TCP and IP-frag do not work with this, yet: */ // TODO: Set to 0 with LAN89218 #define LWIP_NETIF_TX_SINGLE_PBUF 1 /* ------------------------------------ ---------- LOOPIF options ---------- ------------------------------------ */ /** * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c */ #define LWIP_HAVE_LOOPIF 0 /* ------------------------------------ ---------- SLIPIF options ---------- ------------------------------------ The Serial Line Internet Protocol (SLIP) is a mostly obsolete encapsulation of the Internet Protocol designed to work over serial ports and modem connections. It is documented in RFC 1055. On personal computers, SLIP has been largely replaced by the Point-to-Point Protocol (PPP), which is better engineered, has more features and does not require its IP address configuration to be set before it is established. On microcontrollers, however, SLIP is still the preferred way of encapsulating IP packets due to its very small overhead. */ /** * LWIP_HAVE_SLIPIF==1: Support slip interface and slipif.c */ #define LWIP_HAVE_SLIPIF 0 /* ------------------------------------ ---------- Thread options ---------- ------------------------------------ */ /** * TCPIP_THREAD_NAME: The name assigned to the main tcpip thread. */ #define TCPIP_THREAD_NAME "lwIP Main" /** * TCPIP_THREAD_STACKSIZE: The stack size used by the main tcpip thread. * The stack size value itself is platform-dependent, but is passed to * sys_thread_new() when the thread is created. */ #define TCPIP_THREAD_STACKSIZE 4096 /** * TCPIP_THREAD_PRIO: The priority assigned to the main tcpip thread. * The priority value itself is platform-dependent, but is passed to * sys_thread_new() when the thread is created. */ #define TCPIP_THREAD_PRIO TASK_LWIP_MAIN_PRI /** * TCPIP_MBOX_SIZE: The mailbox size for the tcpip thread messages * The queue size value itself is platform-dependent, but is passed to * sys_mbox_new() when tcpip_init is called. */ #define TCPIP_MBOX_SIZE 0 /** * SLIPIF_THREAD_NAME: The name assigned to the slipif_loop thread. */ #define SLIPIF_THREAD_NAME "slipif_loop" /** * SLIP_THREAD_STACKSIZE: The stack size used by the slipif_loop thread. * The stack size value itself is platform-dependent, but is passed to * sys_thread_new() when the thread is created. */ #define SLIPIF_THREAD_STACKSIZE 0 /** * SLIPIF_THREAD_PRIO: The priority assigned to the slipif_loop thread. * The priority value itself is platform-dependent, but is passed to * sys_thread_new() when the thread is created. */ #define SLIPIF_THREAD_PRIO 0 /** * PPP_THREAD_NAME: The name assigned to the pppMain thread. */ #define PPP_THREAD_NAME "pppMain" /** * PPP_THREAD_STACKSIZE: The stack size used by the pppMain thread. * The stack size value itself is platform-dependent, but is passed to * sys_thread_new() when the thread is created. */ #define PPP_THREAD_STACKSIZE 0 /** * PPP_THREAD_PRIO: The priority assigned to the pppMain thread. * The priority value itself is platform-dependent, but is passed to * sys_thread_new() when the thread is created. */ #define PPP_THREAD_PRIO 0 /** * DEFAULT_THREAD_NAME: The name assigned to any other lwIP thread. */ #define DEFAULT_THREAD_NAME "lwIP" /** * DEFAULT_THREAD_STACKSIZE: The stack size used by any other lwIP thread. * The stack size value itself is platform-dependent, but is passed to * sys_thread_new() when the thread is created. */ #define DEFAULT_THREAD_STACKSIZE 0 /** * DEFAULT_THREAD_PRIO: The priority assigned to any other lwIP thread. * The priority value itself is platform-dependent, but is passed to * sys_thread_new() when the thread is created. */ #define DEFAULT_THREAD_PRIO 0 /** * DEFAULT_RAW_RECVMBOX_SIZE: The mailbox size for the incoming packets on a * NETCONN_RAW. The queue size value itself is platform-dependent, but is passed * to sys_mbox_new() when the recvmbox is created. */ #define DEFAULT_RAW_RECVMBOX_SIZE 0 /** * DEFAULT_UDP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a * NETCONN_UDP. The queue size value itself is platform-dependent, but is passed * to sys_mbox_new() when the recvmbox is created. */ #define DEFAULT_UDP_RECVMBOX_SIZE 0 /** * DEFAULT_TCP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a * NETCONN_TCP. The queue size value itself is platform-dependent, but is passed * to sys_mbox_new() when the recvmbox is created. */ #define DEFAULT_TCP_RECVMBOX_SIZE 0 /** * DEFAULT_ACCEPTMBOX_SIZE: The mailbox size for the incoming connections. * The queue size value itself is platform-dependent, but is passed to * sys_mbox_new() when the acceptmbox is created. */ #define DEFAULT_ACCEPTMBOX_SIZE 0 /* ---------------------------------------------- ---------- Sequential layer options ---------- ---------------------------------------------- */ /** * LWIP_TCPIP_CORE_LOCKING: (EXPERIMENTAL!) * Don't use it if you're not an active lwIP project member */ #define LWIP_TCPIP_CORE_LOCKING 0 /** * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c) */ #define LWIP_NETCONN 1 /* ------------------------------------ ---------- Socket options ---------- ------------------------------------ */ /** * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c) */ #define LWIP_SOCKET 1 /** * LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names. * (only used if you use sockets.c) */ #define LWIP_COMPAT_SOCKETS 0 /** * LWIP_POSIX_SOCKETS_IO_NAMES==1: Enable POSIX-style sockets functions names. * Disable this option if you use a POSIX operating system that uses the same * names (read, write & close). (only used if you use sockets.c) */ #define LWIP_POSIX_SOCKETS_IO_NAMES 0 /** * LWIP_TCP_KEEPALIVE==1: Enable TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT * options processing. Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set * in seconds. (does not require sockets.c, and will affect tcp.c) */ #define LWIP_TCP_KEEPALIVE 0 /** * LWIP_SO_RCVTIMEO==1: Enable SO_RCVTIMEO processing. */ #define LWIP_SO_RCVTIMEO 0 /** * LWIP_SO_RCVBUF==1: Enable SO_RCVBUF processing. */ #define LWIP_SO_RCVBUF 0 /** * If LWIP_SO_RCVBUF is used, this is the default value for recv_bufsize. */ #define RECV_BUFSIZE_DEFAULT INT_MAX /** * SO_REUSE==1: Enable SO_REUSEADDR and SO_REUSEPORT options. DO NOT USE! */ #define SO_REUSE 0 /* ---------------------------------------- ---------- Statistics options ---------- ---------------------------------------- */ /** * LWIP_STATS==1: Enable statistics collection in lwip_stats. */ #define LWIP_STATS 0 #if LWIP_STATS /** * LWIP_STATS_DISPLAY==1: Compile in the statistics output functions. */ #define LWIP_STATS_DISPLAY 0 /** * LINK_STATS==1: Enable link stats. */ #define LINK_STATS 1 /** * ETHARP_STATS==1: Enable etharp stats. */ #define ETHARP_STATS (LWIP_ARP) /** * IP_STATS==1: Enable IP stats. */ #define IP_STATS 1 /** * IPFRAG_STATS==1: Enable IP fragmentation stats. Default is * on if using either frag or reass. */ #define IPFRAG_STATS (IP_REASSEMBLY || IP_FRAG) /** * ICMP_STATS==1: Enable ICMP stats. */ #define ICMP_STATS 1 /** * IGMP_STATS==1: Enable IGMP stats. */ #define IGMP_STATS (LWIP_IGMP) /** * UDP_STATS==1: Enable UDP stats. Default is on if * UDP enabled, otherwise off. */ #define UDP_STATS (LWIP_UDP) /** * TCP_STATS==1: Enable TCP stats. Default is on if TCP * enabled, otherwise off. */ #define TCP_STATS (LWIP_TCP) /** * MEM_STATS==1: Enable mem.c stats. */ #define MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0)) /** * MEMP_STATS==1: Enable memp.c pool stats. */ #define MEMP_STATS (MEMP_MEM_MALLOC == 0) /** * SYS_STATS==1: Enable system stats (sem and mbox counts, etc). */ #define SYS_STATS (NO_SYS == 0) #else #define LINK_STATS 0 #define IP_STATS 0 #define IPFRAG_STATS 0 #define ICMP_STATS 0 #define IGMP_STATS 0 #define UDP_STATS 0 #define TCP_STATS 0 #define MEM_STATS 0 #define MEMP_STATS 0 #define SYS_STATS 0 #define LWIP_STATS_DISPLAY 0 #endif /* LWIP_STATS */ /* --------------------------------- ---------- PPP options ---------- --------------------------------- */ /** * PPP_SUPPORT==1: Enable PPP. */ #define PPP_SUPPORT 0 /** * PPPOE_SUPPORT==1: Enable PPP Over Ethernet */ #define PPPOE_SUPPORT 0 /** * PPPOS_SUPPORT==1: Enable PPP Over Serial */ #define PPPOS_SUPPORT PPP_SUPPORT #if PPP_SUPPORT /** * NUM_PPP: Max PPP sessions. */ #define NUM_PPP 1 /** * PAP_SUPPORT==1: Support PAP. */ #define PAP_SUPPORT 0 /** * CHAP_SUPPORT==1: Support CHAP. */ #define CHAP_SUPPORT 0 /** * MSCHAP_SUPPORT==1: Support MSCHAP. CURRENTLY NOT SUPPORTED! DO NOT SET! */ #define MSCHAP_SUPPORT 0 /** * CBCP_SUPPORT==1: Support CBCP. CURRENTLY NOT SUPPORTED! DO NOT SET! */ #define CBCP_SUPPORT 0 /** * CCP_SUPPORT==1: Support CCP. CURRENTLY NOT SUPPORTED! DO NOT SET! */ #define CCP_SUPPORT 0 /** * VJ_SUPPORT==1: Support VJ header compression. */ #define VJ_SUPPORT 0 /** * MD5_SUPPORT==1: Support MD5 (see also CHAP). */ #define MD5_SUPPORT 0 /* * Timeouts */ #define FSM_DEFTIMEOUT 6 /* Timeout time in seconds */ #define FSM_DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */ #define FSM_DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */ #define FSM_DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */ #define UPAP_DEFTIMEOUT 6 /* Timeout (seconds) for retransmitting req */ #define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */ #define CHAP_DEFTIMEOUT 6 /* Timeout time in seconds */ #define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */ /* Interval in seconds between keepalive echo requests, 0 to disable. */ #define LCP_ECHOINTERVAL 0 /* Number of unanswered echo requests before failure. */ #define LCP_MAXECHOFAILS 3 /* Max Xmit idle time (in jiffies) before resend flag char. */ #define PPP_MAXIDLEFLAG 100 /* * Packet sizes * * Note - lcp shouldn't be allowed to negotiate stuff outside these * limits. See lcp.h in the pppd directory. * (XXX - these constants should simply be shared by lcp.c instead * of living in lcp.h) */ #define PPP_MTU 1500 /* Default MTU (size of Info field) */ #define PPP_MAXMTU 1500 /* Largest MTU we allow */ #define PPP_MINMTU 64 #define PPP_MRU 1500 /* default MRU = max length of info field */ #define PPP_MAXMRU 1500 /* Largest MRU we allow */ #define PPP_DEFMRU 296 /* Try for this */ #define PPP_MINMRU 128 /* No MRUs below this */ #define MAXNAMELEN 256 /* max length of hostname or name for auth */ #define MAXSECRETLEN 256 /* max length of password or secret */ #endif /* PPP_SUPPORT */ /* -------------------------------------- ---------- Checksum options ---------- -------------------------------------- */ /** * CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets. */ #define CHECKSUM_GEN_IP 1 /** * CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets. */ #define CHECKSUM_GEN_UDP 1 /** * CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets. */ #define CHECKSUM_GEN_TCP 1 /** * CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets. */ #define CHECKSUM_CHECK_IP 1 /** * CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets. */ #define CHECKSUM_CHECK_UDP 1 /** * CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets. */ #define CHECKSUM_CHECK_TCP 1 /* --------------------------------------- ---------- Debugging options ---------- --------------------------------------- */ /** * LWIP_DBG_MIN_LEVEL: After masking, the value of the debug is * compared against this value. If it is smaller, then debugging * messages are written. */ #define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL /** * LWIP_DBG_TYPES_ON: A mask that can be used to globally enable/disable * debug messages of certain types. */ #define LWIP_DBG_TYPES_ON LWIP_DBG_ON /** * ETHARP_DEBUG: Enable debugging in etharp.c. */ #define ETHARP_DEBUG LWIP_DBG_OFF /** * NETIF_DEBUG: Enable debugging in netif.c. */ #define NETIF_DEBUG LWIP_DBG_OFF /** * PBUF_DEBUG: Enable debugging in pbuf.c. */ #define PBUF_DEBUG LWIP_DBG_OFF /** * API_LIB_DEBUG: Enable debugging in api_lib.c. */ #define API_LIB_DEBUG LWIP_DBG_OFF /** * API_MSG_DEBUG: Enable debugging in api_msg.c. */ #define API_MSG_DEBUG LWIP_DBG_OFF /** * SOCKETS_DEBUG: Enable debugging in sockets.c. */ #define SOCKETS_DEBUG LWIP_DBG_OFF /** * ICMP_DEBUG: Enable debugging in icmp.c. */ #define ICMP_DEBUG LWIP_DBG_OFF /** * IGMP_DEBUG: Enable debugging in igmp.c. */ #define IGMP_DEBUG LWIP_DBG_OFF /** * INET_DEBUG: Enable debugging in inet.c. */ #define INET_DEBUG LWIP_DBG_OFF /** * IP_DEBUG: Enable debugging for IP. */ #define IP_DEBUG LWIP_DBG_OFF /** * IP_REASS_DEBUG: Enable debugging in ip_frag.c for both frag & reass. */ #define IP_REASS_DEBUG LWIP_DBG_OFF /** * RAW_DEBUG: Enable debugging in raw.c. */ #define RAW_DEBUG LWIP_DBG_OFF /** * MEM_DEBUG: Enable debugging in mem.c. */ #define MEM_DEBUG LWIP_DBG_OFF /** * MEMP_DEBUG: Enable debugging in memp.c. */ #define MEMP_DEBUG LWIP_DBG_OFF /** * SYS_DEBUG: Enable debugging in sys.c. */ #define SYS_DEBUG LWIP_DBG_OFF /** * TCP_DEBUG: Enable debugging for TCP. */ #define TCP_DEBUG LWIP_DBG_ON /** * TCP_INPUT_DEBUG: Enable debugging in tcp_in.c for incoming debug. */ #define TCP_INPUT_DEBUG LWIP_DBG_ON /** * TCP_FR_DEBUG: Enable debugging in tcp_in.c for fast retransmit. */ #define TCP_FR_DEBUG LWIP_DBG_OFF /** * TCP_RTO_DEBUG: Enable debugging in TCP for retransmit * timeout. */ #define TCP_RTO_DEBUG LWIP_DBG_OFF /** * TCP_CWND_DEBUG: Enable debugging for TCP congestion window. */ #define TCP_CWND_DEBUG LWIP_DBG_OFF /** * TCP_WND_DEBUG: Enable debugging in tcp_in.c for window updating. */ #define TCP_WND_DEBUG LWIP_DBG_OFF /** * TCP_OUTPUT_DEBUG: Enable debugging in tcp_out.c output functions. */ #define TCP_OUTPUT_DEBUG LWIP_DBG_ON /** * TCP_RST_DEBUG: Enable debugging for TCP with the RST message. */ #define TCP_RST_DEBUG LWIP_DBG_OFF /** * TCP_QLEN_DEBUG: Enable debugging for TCP queue lengths. */ #define TCP_QLEN_DEBUG LWIP_DBG_OFF /** * UDP_DEBUG: Enable debugging in UDP. */ #define UDP_DEBUG LWIP_DBG_OFF /** * TCPIP_DEBUG: Enable debugging in tcpip.c. */ #define TCPIP_DEBUG LWIP_DBG_OFF /** * PPP_DEBUG: Enable debugging for PPP. */ #define PPP_DEBUG LWIP_DBG_OFF /** * SLIP_DEBUG: Enable debugging in slipif.c. */ #define SLIP_DEBUG LWIP_DBG_OFF /** * DHCP_DEBUG: Enable debugging in dhcp.c. */ #define DHCP_DEBUG LWIP_DBG_OFF /** * AUTOIP_DEBUG: Enable debugging in autoip.c. */ #define AUTOIP_DEBUG LWIP_DBG_OFF /** * SNMP_MSG_DEBUG: Enable debugging for SNMP messages. */ #define SNMP_MSG_DEBUG LWIP_DBG_OFF /** * SNMP_MIB_DEBUG: Enable debugging for SNMP MIBs. */ #define SNMP_MIB_DEBUG LWIP_DBG_OFF /** * DNS_DEBUG: Enable debugging for DNS. */ #define DNS_DEBUG LWIP_DBG_OFF #endif /* LWIPOPTS_H_INCLUDED */ /****************************************************************************** End Of File ******************************************************************************/