1 /* 2 * Copyright (c) 2022 Hunan OpenValley Digital Industry Development Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef __LWIPOPTS_H__ 17 #define __LWIPOPTS_H__ 18 19 #include <stdint.h> 20 #include <stdbool.h> 21 #include <stdlib.h> 22 #include <sys/types.h> 23 #include "sdkconfig.h" 24 25 #define SYS_LIGHTWEIGHT_PROT (1) 26 #define MEMCPY memcpy 27 #define SMEMCPY memcpy 28 29 #define LWIP_RAND esp_random 30 #define MEM_LIBC_MALLOC (1) 31 #define MEMP_MEM_MALLOC (1) 32 #define MEM_ALIGNMENT (4) 33 #define MEMP_NUM_NETCONN CONFIG_LWIP_MAX_SOCKETS 34 #define MEMP_NUM_RAW_PCB CONFIG_LWIP_MAX_RAW_PCBS 35 #define MEMP_NUM_TCP_PCB CONFIG_LWIP_MAX_ACTIVE_TCP 36 #define MEMP_NUM_TCP_PCB_LISTEN CONFIG_LWIP_MAX_LISTENING_TCP 37 #define MEMP_NUM_UDP_PCB CONFIG_LWIP_MAX_UDP_PCBS 38 #define ARP_QUEUEING (1) 39 #define IP_REASSEMBLY CONFIG_LWIP_IP4_REASSEMBLY 40 #define LWIP_IPV6_REASS CONFIG_LWIP_IP6_REASSEMBLY 41 #define IP_FRAG CONFIG_LWIP_IP4_FRAG 42 #define LWIP_IPV6_FRAG CONFIG_LWIP_IP6_FRAG 43 #define IP_REASS_MAXAGE (3) 44 #define IP_REASS_MAX_PBUFS (10) 45 #define IP_FORWARD CONFIG_LWIP_IP_FORWARD 46 #define IP_NAPT CONFIG_LWIP_IPV4_NAPT 47 #define LWIP_ICMP CONFIG_LWIP_ICMP 48 #define LWIP_BROADCAST_PING CONFIG_LWIP_BROADCAST_PING 49 #define LWIP_MULTICAST_PING CONFIG_LWIP_MULTICAST_PING 50 #define LWIP_RAW (1) 51 #define LWIP_DHCP (1) 52 #define DHCP_MAXRTX (0) 53 #define DHCP_DOES_ARP_CHECK CONFIG_LWIP_DHCP_DOES_ARP_CHECK 54 #define ESP_DHCP_DISABLE_CLIENT_ID CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID 55 #if CONFIG_LWIP_DHCP_RESTORE_LAST_IP 56 #define LWIP_DHCP_IP_ADDR_RESTORE dhcp_ip_addr_restore 57 #define LWIP_DHCP_IP_ADDR_STORE dhcp_ip_addr_store 58 #define LWIP_DHCP_IP_ADDR_ERASE dhcp_ip_addr_erase 59 #endif 60 61 #ifdef CONFIG_LWIP_AUTOIP 62 #define LWIP_AUTOIP (1) 63 #define LWIP_DHCP_AUTOIP_COOP (1) 64 #define LWIP_DHCP_AUTOIP_COOP_TRIES CONFIG_LWIP_AUTOIP_TRIES 65 #define LWIP_AUTOIP_MAX_CONFLICTS CONFIG_LWIP_AUTOIP_MAX_CONFLICTS 66 #define LWIP_AUTOIP_RATE_LIMIT_INTERVAL CONFIG_LWIP_AUTOIP_RATE_LIMIT_INTERVAL 67 #endif 68 69 #define LWIP_IGMP (1) 70 #define LWIP_DNS (1) 71 #define DNS_MAX_SERVERS (3) 72 #define DNS_FALLBACK_SERVER_INDEX (DNS_MAX_SERVERS - 1) 73 #define TCP_QUEUE_OOSEQ CONFIG_LWIP_TCP_QUEUE_OOSEQ 74 #define LWIP_TCP_SACK_OUT CONFIG_LWIP_TCP_SACK_OUT 75 #define ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES CONFIG_LWIP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES 76 #define TCP_MSS CONFIG_LWIP_TCP_MSS 77 #define TCP_TMR_INTERVAL CONFIG_LWIP_TCP_TMR_INTERVAL 78 #define TCP_MSL CONFIG_LWIP_TCP_MSL 79 #define TCP_MAXRTX CONFIG_LWIP_TCP_MAXRTX 80 #define TCP_SYNMAXRTX CONFIG_LWIP_TCP_SYNMAXRTX 81 #define TCP_LISTEN_BACKLOG (1) 82 #ifdef CONFIG_LWIP_TCP_OVERSIZE_MSS 83 #define TCP_OVERSIZE TCP_MSS 84 #endif 85 #ifdef CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS 86 #define TCP_OVERSIZE (TCP_MSS/4) 87 #endif 88 #ifdef CONFIG_LWIP_TCP_OVERSIZE_DISABLE 89 #define TCP_OVERSIZE (0) 90 #endif 91 #ifndef TCP_OVERSIZE 92 #error "One of CONFIG_TCP_OVERSIZE_xxx options should be set by sdkconfig" 93 #endif 94 #ifdef CONFIG_LWIP_WND_SCALE 95 #define LWIP_WND_SCALE (1) 96 #define TCP_RCV_SCALE CONFIG_LWIP_TCP_RCV_SCALE 97 #endif 98 #define LWIP_TCP_RTO_TIME CONFIG_LWIP_TCP_RTO_TIME 99 #define LWIP_NETIF_HOSTNAME (1) 100 #define LWIP_NETIF_TX_SINGLE_PBUF (1) 101 #ifdef CONFIG_LWIP_NETIF_LOOPBACK 102 #define LWIP_NETIF_LOOPBACK (1) 103 #define LWIP_LOOPBACK_MAX_PBUFS CONFIG_LWIP_LOOPBACK_MAX_PBUFS 104 #endif 105 #ifdef CONFIG_LWIP_SLIP_SUPPORT 106 #define SLIP_RX_FROM_ISR (1) 107 #define SLIP_USE_RX_THREAD (0) 108 #define SLIP_DEBUG_ON CONFIG_LWIP_SLIP_DEBUG_ON 109 #if SLIP_DEBUG_ON 110 #define SLIP_DEBUG LWIP_DBG_ON 111 #else 112 #define SLIP_DEBUG LWIP_DBG_OFF 113 #endif 114 #endif 115 #define TCPIP_THREAD_NAME "tiT" 116 #define TCPIP_THREAD_STACKSIZE (4096) 117 #define TCPIP_THREAD_PRIO (25-7) 118 #define TCPIP_MBOX_SIZE CONFIG_LWIP_TCPIP_RECVMBOX_SIZE 119 #define DEFAULT_UDP_RECVMBOX_SIZE CONFIG_LWIP_UDP_RECVMBOX_SIZE 120 #define DEFAULT_TCP_RECVMBOX_SIZE CONFIG_LWIP_TCP_RECVMBOX_SIZE 121 #define DEFAULT_ACCEPTMBOX_SIZE (6) 122 #define DEFAULT_THREAD_STACKSIZE TCPIP_THREAD_STACKSIZE 123 #define DEFAULT_THREAD_PRIO TCPIP_THREAD_PRIO 124 #define DEFAULT_RAW_RECVMBOX_SIZE (6) 125 #define LWIP_TCPIP_CORE_LOCKING (0) 126 #define LWIP_SO_SNDTIMEO (1) 127 #define LWIP_SO_RCVTIMEO (1) 128 #define LWIP_TCP_KEEPALIVE (1) 129 #define LWIP_SO_LINGER CONFIG_LWIP_SO_LINGER 130 #define LWIP_SO_RCVBUF CONFIG_LWIP_SO_RCVBUF 131 #define SO_REUSE CONFIG_LWIP_SO_REUSE 132 #define LWIP_DNS_SUPPORT_MDNS_QUERIES CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES 133 #define SO_REUSE_RXTOALL CONFIG_LWIP_SO_REUSE_RXTOALL 134 #define LWIP_NETBUF_RECVINFO CONFIG_LWIP_NETBUF_RECVINFO 135 #define LWIP_STATS CONFIG_LWIP_STATS 136 #if LWIP_STATS 137 #define LWIP_STATS_DISPLAY CONFIG_LWIP_STATS 138 #endif 139 #define PPP_SUPPORT CONFIG_LWIP_PPP_SUPPORT 140 #if PPP_SUPPORT 141 #define PPP_IPV6_SUPPORT CONFIG_LWIP_PPP_ENABLE_IPV6 142 #define PPP_NOTIFY_PHASE CONFIG_LWIP_PPP_NOTIFY_PHASE_SUPPORT 143 #define PAP_SUPPORT CONFIG_LWIP_PPP_PAP_SUPPORT 144 #define CHAP_SUPPORT CONFIG_LWIP_PPP_CHAP_SUPPORT 145 #define MSCHAP_SUPPORT CONFIG_LWIP_PPP_MSCHAP_SUPPORT 146 #define MPPE_SUPPORT CONFIG_LWIP_PPP_MPPE_SUPPORT 147 #define PPP_MAXIDLEFLAG (0) 148 #define PPP_DEBUG_ON CONFIG_LWIP_PPP_DEBUG_ON 149 #if PPP_DEBUG_ON 150 #define PPP_DEBUG LWIP_DBG_ON 151 #define PRINTPKT_SUPPORT (1) 152 #define PPP_PROTOCOLNAME (1) 153 #else 154 #define PPP_DEBUG LWIP_DBG_OFF 155 #endif 156 #endif 157 #define LWIP_IPV6 (0) 158 #define MEMP_NUM_ND6_QUEUE (0) 159 #define LWIP_ND6_NUM_NEIGHBORS (0) 160 #define LWIP_HOOK_FILENAME "lwip_default_hooks.h" 161 #ifdef CONFIG_LWIP_ETHARP_DEBUG 162 #define ETHARP_DEBUG LWIP_DBG_ON 163 #else 164 #define ETHARP_DEBUG LWIP_DBG_OFF 165 #endif 166 #ifdef CONFIG_LWIP_NETIF_DEBUG 167 #define NETIF_DEBUG LWIP_DBG_ON 168 #else 169 #define NETIF_DEBUG LWIP_DBG_OFF 170 #endif 171 #ifdef CONFIG_LWIP_PBUF_DEBUG 172 #define PBUF_DEBUG LWIP_DBG_ON 173 #else 174 #define PBUF_DEBUG LWIP_DBG_OFF 175 #endif 176 #ifdef CONFIG_LWIP_API_LIB_DEBUG 177 #define API_LIB_DEBUG LWIP_DBG_ON 178 #else 179 #define API_LIB_DEBUG LWIP_DBG_OFF 180 #endif 181 #ifdef CONFIG_LWIP_SOCKETS_DEBUG 182 #define SOCKETS_DEBUG LWIP_DBG_ON 183 #else 184 #define SOCKETS_DEBUG LWIP_DBG_OFF 185 #endif 186 #ifdef CONFIG_LWIP_ICMP_DEBUG 187 #define ICMP_DEBUG LWIP_DBG_ON 188 #else 189 #define ICMP_DEBUG LWIP_DBG_OFF 190 #endif 191 #ifdef CONFIG_LWIP_ICMP6_DEBUG 192 #define ICMP6_DEBUG LWIP_DBG_ON 193 #else 194 #define ICMP6_DEBUG LWIP_DBG_OFF 195 #endif 196 #ifdef CONFIG_LWIP_DHCP_DEBUG 197 #define DHCP_DEBUG LWIP_DBG_ON 198 #else 199 #define DHCP_DEBUG LWIP_DBG_OFF 200 #endif 201 #ifdef CONFIG_LWIP_DHCP_STATE_DEBUG 202 #define ESP_DHCP_DEBUG LWIP_DBG_ON 203 #else 204 #define ESP_DHCP_DEBUG LWIP_DBG_OFF 205 #endif 206 #ifdef CONFIG_LWIP_IP_DEBUG 207 #define IP_DEBUG LWIP_DBG_ON 208 #else 209 #define IP_DEBUG LWIP_DBG_OFF 210 #endif 211 #ifdef CONFIG_LWIP_IP6_DEBUG 212 #define IP6_DEBUG LWIP_DBG_ON 213 #else 214 #define IP6_DEBUG LWIP_DBG_OFF 215 #endif 216 #ifdef CONFIG_LWIP_TCP_DEBUG 217 #define TCP_DEBUG LWIP_DBG_ON 218 #else 219 #define TCP_DEBUG LWIP_DBG_OFF 220 #endif 221 #define MEMP_DEBUG LWIP_DBG_OFF 222 #define TCP_INPUT_DEBUG LWIP_DBG_OFF 223 #define TCP_OUTPUT_DEBUG LWIP_DBG_OFF 224 #define TCPIP_DEBUG LWIP_DBG_OFF 225 #define TCP_OOSEQ_DEBUG LWIP_DBG_OFF 226 #define ETHARP_TRUST_IP_MAC CONFIG_LWIP_ETHARP_TRUST_IP_MAC 227 #define LWIP_POSIX_SOCKETS_IO_NAMES (0) 228 #define LWIP_SOCKET_OFFSET (FD_SETSIZE - CONFIG_LWIP_MAX_SOCKETS) 229 #define ESP_LWIP (1) 230 #define ESP_LWIP_ARP (0) 231 #define ESP_PER_SOC_TCP_WND (0) 232 #define ESP_THREAD_SAFE (0) 233 #define ESP_THREAD_SAFE_DEBUG LWIP_DBG_OFF 234 #define ESP_DHCP (0) 235 #define ESP_DNS (0) 236 #define ESP_PERF (0) 237 #define ESP_RANDOM_TCP_PORT (1) 238 #define ESP_IP4_ATON (1) 239 #define ESP_LIGHT_SLEEP (1) 240 #define ESP_L2_TO_L3_COPY CONFIG_LWIP_L2_TO_L3_COPY 241 #define ESP_STATS_MEM CONFIG_LWIP_STATS 242 #define ESP_STATS_DROP CONFIG_LWIP_STATS 243 #define ESP_STATS_TCP (0) 244 #define ESP_LWIP_LOGI(...) 245 #define ESP_PING (1) 246 #define ESP_HAS_SELECT (1) 247 #define ESP_AUTO_RECV (1) 248 #define ESP_PBUF (1) 249 #define ESP_IPV6 (0) 250 #define ESP_SOCKET (1) 251 #define ESP_LWIP_SELECT (1) 252 #define ESP_THREAD_PROTECTION (0) 253 #define ESP_IRAM_ATTR 254 #define ESP_LWIP_IGMP_TIMERS_ONDEMAND (1) 255 #define ESP_LWIP_MLD6_TIMERS_ONDEMAND (1) 256 #define TCP_SND_BUF CONFIG_LWIP_TCP_SND_BUF_DEFAULT 257 #define TCP_WND CONFIG_LWIP_TCP_WND_DEFAULT 258 #ifdef CONFIG_LWIP_DEBUG 259 #define LWIP_DEBUG LWIP_DBG_ON 260 #else 261 #undef LWIP_DEBUG 262 #endif 263 #define CHECKSUM_CHECK_UDP CONFIG_LWIP_CHECKSUM_CHECK_UDP 264 #define CHECKSUM_CHECK_IP CONFIG_LWIP_CHECKSUM_CHECK_IP 265 #define CHECKSUM_CHECK_ICMP CONFIG_LWIP_CHECKSUM_CHECK_ICMP 266 #define LWIP_NETCONN_FULLDUPLEX (1) 267 #define LWIP_NETCONN_SEM_PER_THREAD (1) 268 #define LWIP_DHCP_MAX_NTP_SERVERS CONFIG_LWIP_DHCP_MAX_NTP_SERVERS 269 #define LWIP_TIMEVAL_PRIVATE (0) 270 #ifdef __cplusplus 271 #define LWIP_FORWARD_DECLARE_C_CXX extern "C" 272 #else 273 #define LWIP_FORWARD_DECLARE_C_CXX 274 #endif 275 276 #define SNTP_SERVER_DNS (1) 277 #define SNTP_SUPPRESS_DELAY_CHECK 278 279 #define SOC_SEND_LOG 280 #undef MQTT_OUTPUT_RINGBUF_SIZE 281 #define MQTT_OUTPUT_RINGBUF_SIZE (1024) 282 #undef MQTT_VAR_HEADER_BUFFER_LEN 283 #define MQTT_VAR_HEADER_BUFFER_LEN (1024) 284 #undef MQTT_REQ_MAX_IN_FLIGHT 285 #define MQTT_REQ_MAX_IN_FLIGHT (15) 286 #undef MQTT_REQ_TIMEOUT 287 #define MQTT_REQ_TIMEOUT (30) 288 #undef MQTT_CONNECT_TIMOUT 289 #define MQTT_CONNECT_TIMOUT (100) 290 291 #if LWIP_NETCONN_SEM_PER_THREAD 292 #define LWIP_NETCONN_THREAD_SEM_GET sys_thread_sem_get 293 #define LWIP_NETCONN_THREAD_SEM_ALLOC sys_thread_sem_init 294 #define LWIP_NETCONN_THREAD_SEM_FREE sys_thread_sem_deinit 295 #endif 296 297 #endif 298