| /* |
| * |
| * Copyright (c) 2012-2013 Nest Labs, Inc. |
| * All rights reserved. |
| * |
| * Description: |
| * This file describes common compile-time constants used for |
| * configuring LwIP, shared across all products and platforms. |
| * |
| */ |
| |
| #ifndef __COMMON_LWIPOPTS_H__ |
| #define __COMMON_LWIPOPTS_H__ |
| |
| /** LWIP_TIMEVAL_PRIVATE: if you want to use the struct timeval provided |
| * by your system, set this to 0 and include <sys/time.h> in cc.h |
| */ |
| #define LWIP_TIMEVAL_PRIVATE (0) |
| |
| /** |
| * LwIP has three memory models it can work with for general memory |
| * allocation: |
| * |
| * 1) Standard C Library APIs and default platform heap. |
| * |
| * - Enabled by asserting MEM_LIBC_MALLOC |
| * |
| * 2) LwIP APIs and LwIP-internal heap (from BSS data). |
| * |
| * - Enabled by deasserting MEM_LIBC_MALLOC |
| * |
| * 3) Pre-allocated binned memory and object pools (from BSS data). |
| * |
| * - Enabled by deasserting MEM_LIBC_MALLOC and asserting |
| * MEM_USE_POOLS. |
| * |
| */ |
| |
| /** |
| * Do use the Standard C Library heap and associated APIs. |
| */ |
| #define MEM_LIBC_MALLOC (0) |
| |
| /** |
| * Do not use memory pools to create fixed, statically allocated pools of |
| * memory in lieu of the Standard C Library heap and APIs. |
| */ |
| #define MEM_USE_POOLS (0) |
| |
| /** |
| * Do not use custom memory pools for specific, named LwIP objects, sourced |
| * from lwippools.h. |
| */ |
| #define MEM_USE_CUSTOM_POOLS (MEM_USE_POOLS) |
| |
| /** |
| * MEM_SIZE: The size of the built-in LwIP heap memory. |
| * |
| * We size this for: |
| * |
| * 2 @ 120 bytes for outstanding transport header |
| * 5 @ 9 bytes for LwIP heap structure |
| * |
| * 288 bytes after 16 byte alignment |
| */ |
| #define MEM_SIZE 288 |
| |
| /** Define LWIP_COMPAT_MUTEX if the port has no mutexes and binary semaphores |
| * should be used instead |
| */ |
| #define LWIP_COMPAT_MUTEX (0) |
| |
| /** |
| * 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) |
| |
| /** |
| * Enable automatic IPv4 link-local address assignment. |
| */ |
| #define LWIP_AUTOIP (0) |
| |
| /** |
| * Allow DHCP and automatic IPv4 link-local address assignment to |
| * work cooperatively. |
| */ |
| #define LWIP_DHCP_AUTOIP_COOP (0) |
| |
| /** |
| * LWIP_PROVIDE_ERRNO: errno definitions from the Standard C Library. |
| */ |
| #undef LWIP_PROVIDE_ERRNO |
| |
| /** |
| * ERRNO: no errno |
| */ |
| #undef ERRNO |
| |
| /** |
| * MEMP_NUM_RAW_PCB: Number of raw connection PCBs |
| * (requires the LWIP_RAW option) |
| */ |
| #ifndef MEMP_NUM_RAW_PCB |
| #define MEMP_NUM_RAW_PCB (5) |
| #endif |
| |
| /** |
| * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One |
| * per active UDP "connection". |
| * (requires the LWIP_UDP option) |
| */ |
| #ifndef MEMP_NUM_UDP_PCB |
| #define MEMP_NUM_UDP_PCB (7 + (LWIP_DHCP) + (LWIP_DNS)) |
| #endif |
| |
| /* ARP before DHCP causes multi-second delay - turn it off */ |
| #define DHCP_DOES_ARP_CHECK (0) |
| |
| /** |
| * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c |
| */ |
| #define LWIP_HAVE_LOOPIF (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) |
| |
| /** |
| * MEMP_NUM_NETCONN: the number of struct netconns. |
| * (only needed if you use the sequential API, like api_lib.c) |
| */ |
| #define MEMP_NUM_NETCONN (1) |
| |
| /** |
| * LWIP_SO_RCVTIMEO==1: Enable SO_RCVTIMEO processing. |
| */ |
| #define LWIP_SO_RCVTIMEO (1) |
| |
| |
| /** |
| * LWIP_IGMP==0: Turn off IGMP module. |
| */ |
| #ifndef LWIP_IGMP |
| #define LWIP_IGMP (0) |
| #endif |
| |
| /** |
| * LWIP_ARP==0: Disable ARP functionality. |
| */ |
| |
| #ifndef LWIP_ARP |
| #define LWIP_ARP (0) |
| #endif |
| |
| |
| /** |
| * SO_REUSE==1: Enable SO_REUSEADDR option. |
| * Required by IGMP for reuse of multicast address and port by other sockets |
| */ |
| #define SO_REUSE (1) |
| |
| /** |
| * When using IGMP, LWIP_RAND() needs to be defined to a random-function returning an u32_t random value |
| */ |
| #define LWIP_RAND() (u32_t)lrand48() |
| |
| /** |
| * LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS==1: Randomize the local port |
| * for the first local TCP/UDP PCB. This can prevent creating |
| * predictable port numbers after booting a system (see RFC-6065). |
| */ |
| #define LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS (1) |
| |
| /** |
| * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS |
| * transport. |
| */ |
| #ifndef LWIP_DNS |
| #define LWIP_DNS (0) |
| #endif |
| |
| /** |
| * 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) |
| * |
| * We disable this because this otherwise collides with the Standard C |
| * Library where both LWIP and its headers are included. |
| */ |
| #define LWIP_POSIX_SOCKETS_IO_NAMES (0) |
| |
| #ifdef LWIP_SO_RCVBUF |
| #if ( LWIP_SO_RCVBUF == 1 ) |
| #include <limits.h> /* Needed because RECV_BUFSIZE_DEFAULT is defined as INT_MAX */ |
| #endif /* if ( LWIP_SO_RCVBUF == 1 ) */ |
| #endif /* ifdef LWIP_SO_RCVBUF */ |
| |
| /** |
| * LWIP_STATS : Turn off statistics gathering |
| */ |
| #define LWIP_STATS (0) |
| |
| /** |
| * LWIP_IPV6==1: Enable IPv6 |
| */ |
| #define LWIP_IPV6 1 |
| |
| /** |
| * LWIP_IPV6_AUTOCONFIG==0: Disable stateless address |
| * autoconfiguration (SLAAC). |
| */ |
| #define LWIP_IPV6_AUTOCONFIG (0) |
| |
| /** |
| * LWIP_IPV6_REASS -- disable reassembly, already performed by 6lowpan layer. |
| */ |
| #define LWIP_IPV6_REASS (0) |
| |
| /** |
| * LWIP_IPV6_MLD==1: enable multicast listener discovery protocol. |
| */ |
| #define LWIP_IPV6_MLD (1) |
| |
| /** |
| * |
| */ |
| |
| /** |
| * LWIP_IPV6_DHCP6==0: Disable DHCPv6 stateful address autoconfiguration. |
| */ |
| #ifndef LWIP_IPV6_DHCP6 |
| #define LWIP_IPV6_DHCP6 1 |
| #endif |
| |
| /** |
| * Enable locking in the lwip (tcpip) thread. |
| */ |
| #ifndef LWIP_TCPIP_CORE_LOCKING |
| #define LWIP_TCPIP_CORE_LOCKING 1 |
| #endif |
| |
| /** |
| * Controls if TCP should queue segments that arrive out of |
| * order. Define to 0 if your device is low on memory. |
| * See DOLO-738 as to why buffering of out of order |
| * segments has been disabled (in short, device runs out of |
| * pbufs during prolonged download, slowing down a lot.) |
| */ |
| #define TCP_QUEUE_OOSEQ 0 |
| |
| /** |
| * ARP_QUEUEING==1: Multiple outgoing packets are queued during |
| * hardware address resolution. By default, only the most recent |
| * packet is queued per IP address. This is sufficient for most |
| * protocols and mainly reduces TCP connection startup time. Set this |
| * to 1 if you know your application sends more than one packet in a |
| * row to an IP address that is not in the ARP cache. |
| */ |
| #define ARP_QUEUEING (0) |
| |
| /** |
| * 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 (PBUF_POOL_SIZE) |
| |
| /** |
| * LWIP_ND6_QUEUEING==1: queue outgoing IPv6 packets while MAC address |
| * is being resolved. |
| */ |
| #define LWIP_ND6_QUEUEING (LWIP_IPV6) |
| |
| /** |
| * MEMP_NUM_ND6_QUEUE: Max number of IPv6 packets to queue during MAC |
| * resolution. |
| */ |
| #define MEMP_NUM_ND6_QUEUE (PBUF_POOL_SIZE) |
| |
| /** |
| * LWIP_MULTICAST_PING: respond to multicast pings (default is unicast only) |
| */ |
| #define LWIP_MULTICAST_PING (1) |
| |
| /** |
| * Debug printing |
| * By default enable debug printing for debug build, but set level to off |
| * This allows user to change any desired debug level to on. |
| */ |
| #define LWIP_DEBUG |
| #define MEMP_OVERFLOW_CHECK ( 0 ) |
| #define MEMP_SANITY_CHECK ( 0 ) |
| #define MEM_DEBUG (LWIP_DBG_OFF) |
| #define MEMP_DEBUG (LWIP_DBG_ON) |
| #define PBUF_DEBUG (LWIP_DBG_OFF) |
| #define API_LIB_DEBUG (LWIP_DBG_OFF) |
| #define API_MSG_DEBUG (LWIP_DBG_OFF) |
| #define TCPIP_DEBUG (LWIP_DBG_OFF) |
| #define NETIF_DEBUG (LWIP_DBG_OFF) |
| #define SOCKETS_DEBUG (LWIP_DBG_OFF) |
| #define DEMO_DEBUG (LWIP_DBG_OFF) |
| #define DHCP_DEBUG (LWIP_DBG_OFF) |
| #define AUTOIP_DEBUG (LWIP_DBG_OFF) |
| #define ETHARP_DEBUG (LWIP_DBG_OFF) |
| #define IP_DEBUG (LWIP_DBG_OFF) |
| #define IP_REASS_DEBUG (LWIP_DBG_OFF) |
| #define IP6_DEBUG (LWIP_DBG_OFF) |
| #define RAW_DEBUG (LWIP_DBG_OFF) |
| #define ICMP_DEBUG (LWIP_DBG_OFF) |
| #define UDP_DEBUG (LWIP_DBG_OFF) |
| #define TCP_DEBUG (LWIP_DBG_OFF) |
| #define TCP_INPUT_DEBUG (LWIP_DBG_OFF) |
| #define TCP_OUTPUT_DEBUG (LWIP_DBG_OFF) |
| #define TCP_RTO_DEBUG (LWIP_DBG_OFF) |
| #define TCP_CWND_DEBUG (LWIP_DBG_OFF) |
| #define TCP_WND_DEBUG (LWIP_DBG_OFF) |
| #define TCP_FR_DEBUG (LWIP_DBG_OFF) |
| #define TCP_QLEN_DEBUG (LWIP_DBG_OFF) |
| #define TCP_RST_DEBUG (LWIP_DBG_OFF) |
| #define PPP_DEBUG (LWIP_DBG_OFF) |
| |
| #define LWIP_DBG_TYPES_ON (LWIP_DBG_ON | LWIP_DBG_TRACE) /* (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH|LWIP_DBG_HALT) */ |
| |
| /** |
| * LwIP defaults the size of most mailboxes (i.e. message queues) to |
| * zero (0). That generally makes RTOSes such as FreeRTOS very |
| * unhappy. Specify reasonable defaults instead. |
| */ |
| #define TCPIP_MBOX_SIZE 6 |
| |
| #define DEFAULT_RAW_RECVMBOX_SIZE 6 |
| |
| #define DEFAULT_UDP_RECVMBOX_SIZE 6 |
| |
| #define DEFAULT_TCP_RECVMBOX_SIZE 6 |
| |
| /** |
| * Disable processing of incoming Router Advertisements. |
| */ |
| #define LWIP_ND6_LISTEN_RA 0 |
| |
| /** |
| * Disable IPV6 router discovery. |
| */ |
| #define LWIP_IPV6_ROUTER_SUPPORT 0 |
| |
| |
| #endif /* __COMMON_LWIPOPTS_H__ */ |