lwipopts.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. #ifndef LWIP_HDR_LWIPOPTS_H
  2. #define LWIP_HDR_LWIPOPTS_H
  3. #ifdef __USE_SDK_LWIP__
  4. #else
  5. #include "stdlib.h"
  6. #ifndef __BSP_COMMON_H__
  7. #include "c_common.h"
  8. #endif
  9. #define NO_SYS 1 //是否不带OS,1不带
  10. #define NO_SYS_NO_TIMERS 1
  11. #define LWIP_TIMERS 0
  12. #define LWIP_TIMERS_CUSTOM 1
  13. #define LWIP_MPU_COMPATIBLE 1
  14. #define LWIP_TCPIP_CORE_LOCKING 0
  15. #define LWIP_TCPIP_CORE_LOCKING_INPUT 0
  16. #define SYS_LIGHTWEIGHT_PROT 0 //平台锁,保护关键区域内缓存的分配与释放,目前lwip不允许放在中断处理,不需要额外的平台锁
  17. //mem管理
  18. #define MEM_ALIGNMENT 4
  19. #define MEMP_MEM_MALLOC 1
  20. //#define MEM_LIBC_MALLOC 1
  21. //#define mem_clib_free luat_heap_free
  22. //#define mem_clib_malloc luat_heap_malloc
  23. //#define mem_clib_calloc luat_heap_calloc
  24. //#define MEM_USE_POOLS 1
  25. //#define MEMP_NUM_RAW_PCB 4
  26. //#define MEMP_NUM_UDP_PCB 16
  27. //#define MEMP_NUM_TCP_PCB 20
  28. //#define MEMP_NUM_TCP_PCB_LISTEN 4
  29. //#define MEMP_NUM_PBUF 256
  30. //#define MEMP_NUM_REASSDATA //IP数据包排队数量
  31. //
  32. //#define MEMP_NUM_ARP_QUEUE //arp队列数
  33. //
  34. //#define MEMP_NUM_IGMP_GROUP //组播网络接口数
  35. //
  36. //#define MEMP_NUM_SYS_TIMEOUT //系统超时设置
  37. //
  38. //#define MEMP_NUM_NETBUF //netbuf结构数
  39. //
  40. //#define MEMP_NUM_NETCONN //netconn结构数
  41. //
  42. //#define MEMP_NUM_TCPIP_MSG_API //tcpip消息数
  43. //
  44. //#define MEMP_NUM_TCPIP_MSG_INPKT //tcpip数据包相关设置
  45. #define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 0
  46. #define LWIP_SINGLE_NETIF 0
  47. #define LWIP_ARP 1
  48. #define ARP_TABLE_SIZE 10 //ip地址缓冲对数量
  49. #define ARP_MAXAGE 300
  50. #define ARP_QUEUEING 0 //arp队列
  51. #define ARP_QUEUE_LEN 3
  52. #define ETHARP_SUPPORT_VLAN 0
  53. #define LWIP_ETHERNET LWIP_ARP
  54. #define ETH_PAD_SIZE 0
  55. #define ETHARP_SUPPORT_STATIC_ENTRIES 0
  56. #define ETHARP_TABLE_MATCH_NETIF !LWIP_SINGLE_NETIF
  57. #define LWIP_IPV4 1
  58. #define IP_FORWARD 1 //ip包转发
  59. #define IP_REASSEMBLY 1 //IP断点续传
  60. #define IP_FRAG 1 //IP断点发送
  61. #define IP_OPTIONS_ALLOWED 1 //ip选项允许
  62. #define IP_REASS_MAXAGE 15 //分段数据包最大时间
  63. #define IP_REASS_MAX_PBUFS 10 //分段组装条数
  64. #define IP_DEFAULT_TTL 255 //IP最大ttl时间
  65. #define IP_SOF_BROADCAST 0
  66. #define IP_SOF_BROADCAST_RECV 0
  67. #define IP_FORWARD_ALLOW_TX_ON_RX_NETIF 0
  68. #define LWIP_ICMP 1 //ICMP使能
  69. #define ICMP_TTL (IP_DEFAULT_TTL)
  70. #define LWIP_BROADCAST_PING 0
  71. #define LWIP_MULTICAST_PING 0
  72. #define LWIP_RAW 1
  73. #define RAW_TTL (IP_DEFAULT_TTL)
  74. #define LWIP_DHCP LWIP_UDP //DHCP使能
  75. #define DHCP_DOES_ARP_CHECK 1 //arp地址检查
  76. #define LWIP_DHCP_CHECK_LINK_UP 0
  77. #define LWIP_DHCP_BOOTP_FILE 0
  78. #define LWIP_DHCP_GET_NTP_SRV 0
  79. #define LWIP_DHCP_MAX_NTP_SERVERS 0
  80. #define LWIP_DHCP_MAX_DNS_SERVERS DNS_MAX_SERVERS
  81. #define LWIP_AUTOIP 0
  82. #define LWIP_DHCP_AUTOIP_COOP 0
  83. #define LWIP_DHCP_AUTOIP_COOP_TRIES 9
  84. #define LWIP_MIB2_CALLBACKS 0
  85. #define LWIP_MULTICAST_TX_OPTIONS ((LWIP_IGMP || LWIP_IPV6_MLD) && (LWIP_UDP || LWIP_RAW))
  86. #define LWIP_IGMP 0
  87. #define LWIP_DNS 0
  88. #define DNS_TABLE_SIZE 16 // dns最大记录数
  89. #define DNS_MAX_NAME_LENGTH 256
  90. #define DNS_MAX_SERVERS 4 //最大dns服务数
  91. #define DNS_MAX_RETRIES 4
  92. #define DNS_DOES_NAME_CHECK 1
  93. #define LWIP_DNS_SECURE (LWIP_DNS_SECURE_RAND_XID | LWIP_DNS_SECURE_NO_MULTIPLE_OUTSTANDING | LWIP_DNS_SECURE_RAND_SRC_PORT)
  94. #define DNS_LOCAL_HOSTLIST 0
  95. #define DNS_LOCAL_HOSTLIST_IS_DYNAMIC 0
  96. #define LWIP_DNS_SUPPORT_MDNS_QUERIES 0
  97. #define LWIP_UDP 1
  98. #define LWIP_UDPLITE 0
  99. #define UDP_TTL (IP_DEFAULT_TTL)
  100. #define LWIP_NETBUF_RECVINFO 0
  101. #define LWIP_TCP 1
  102. #define TCP_TTL (IP_DEFAULT_TTL)
  103. #define TCP_QUEUE_OOSEQ (LWIP_TCP)
  104. #define LWIP_TCP_SACK_OUT 0
  105. #define LWIP_TCP_MAX_SACK_NUM 4
  106. #define TCP_MSS 1500
  107. #define TCP_CALCULATE_EFF_SEND_MSS 1
  108. #define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS))
  109. #define TCP_SNDLOWAT LWIP_MIN(LWIP_MAX(((TCP_SND_BUF)/2), (2 * TCP_MSS) + 1), (TCP_SND_BUF) - 1)
  110. #define TCP_SNDQUEUELOWAT LWIP_MAX(((TCP_SND_QUEUELEN)/2), 5)
  111. #define TCP_OOSEQ_MAX_BYTES 0
  112. #define TCP_OOSEQ_BYTES_LIMIT(pcb) TCP_OOSEQ_MAX_BYTES
  113. #define TCP_OOSEQ_MAX_PBUFS 0
  114. #define TCP_OOSEQ_PBUFS_LIMIT(pcb) TCP_OOSEQ_MAX_PBUFS
  115. #define TCP_LISTEN_BACKLOG 0
  116. #define TCP_DEFAULT_LISTEN_BACKLOG 0xff
  117. #define TCP_OVERSIZE TCP_MSS
  118. #define LWIP_TCP_TIMESTAMPS 0
  119. #define TCP_WND_UPDATE_THRESHOLD LWIP_MIN((TCP_WND / 4), (TCP_MSS * 4))
  120. #define LWIP_EVENT_API 0
  121. #define LWIP_CALLBACK_API 1
  122. #define LWIP_WND_SCALE 1
  123. #define TCP_RCV_SCALE 0
  124. #define LWIP_TCP_PCB_NUM_EXT_ARGS 0
  125. #define LWIP_ALTCP 0
  126. #define LWIP_ALTCP_TLS 0
  127. #define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE)
  128. #define PBUF_LINK_ENCAPSULATION_HLEN 0
  129. #define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_ENCAPSULATION_HLEN+PBUF_LINK_HLEN)
  130. #define LWIP_PBUF_REF_T u8_t
  131. #define LWIP_SINGLE_NETIF 0
  132. #define LWIP_NETIF_HOSTNAME 0
  133. #define LWIP_NETIF_API 0
  134. #define LWIP_NETIF_STATUS_CALLBACK 0
  135. #define LWIP_NETIF_EXT_STATUS_CALLBACK 1
  136. #define LWIP_NETIF_LINK_CALLBACK 1
  137. #define LWIP_NETIF_REMOVE_CALLBACK 0
  138. #define LWIP_NETIF_HWADDRHINT 0
  139. #define LWIP_NETIF_TX_SINGLE_PBUF 0
  140. #define LWIP_NUM_NETIF_CLIENT_DATA 0
  141. #define LWIP_HAVE_LOOPIF 0
  142. #define LWIP_LOOPIF_MULTICAST 0
  143. #define LWIP_NETIF_LOOPBACK 0
  144. #define LWIP_LOOPBACK_MAX_PBUFS 0
  145. #define LWIP_NETIF_LOOPBACK_MULTITHREADING (!NO_SYS)
  146. /*#define TCPIP_THREAD_NAME "tcpip_thread"
  147. #define TCPIP_THREAD_STACKSIZE 0
  148. #define TCPIP_THREAD_PRIO 1
  149. #define TCPIP_MBOX_SIZE 0
  150. #define LWIP_TCPIP_THREAD_ALIVE()
  151. #define SLIPIF_THREAD_NAME "slipif_loop"
  152. #define SLIPIF_THREAD_STACKSIZE 0
  153. #define SLIPIF_THREAD_PRIO 1
  154. #define DEFAULT_THREAD_NAME "lwIP"
  155. #define DEFAULT_THREAD_STACKSIZE 0
  156. #define DEFAULT_THREAD_PRIO 1
  157. #define DEFAULT_RAW_RECVMBOX_SIZE 0
  158. #define DEFAULT_UDP_RECVMBOX_SIZE 0
  159. #define DEFAULT_TCP_RECVMBOX_SIZE 0
  160. #define DEFAULT_ACCEPTMBOX_SIZE 0*/
  161. #define LWIP_NETCONN 0
  162. #define LWIP_TCPIP_TIMEOUT 1
  163. #define LWIP_NETCONN_SEM_PER_THREAD 0
  164. #define LWIP_NETCONN_FULLDUPLEX 0
  165. #define LWIP_SOCKET 0
  166. #define LWIP_COMPAT_SOCKETS 1 /* 0..2 */
  167. #define LWIP_POSIX_SOCKETS_IO_NAMES 1
  168. #define LWIP_SOCKET_OFFSET 0
  169. #define LWIP_TCP_KEEPALIVE 1
  170. #define TCP_KEEPIDLE_DEFAULT 540000 //cmnet require 10min, so use 9min
  171. #define TCP_KEEPINTVL_DEFAULT 5000
  172. #define LWIP_SO_SNDTIMEO 0
  173. #define LWIP_SO_RCVTIMEO 0
  174. #define LWIP_SO_SNDRCVTIMEO_NONSTANDARD 1
  175. #define LWIP_SO_RCVBUF 0
  176. #define LWIP_SO_LINGER 0
  177. #define RECV_BUFSIZE_DEFAULT INT_MAX
  178. #define LWIP_TCP_CLOSE_TIMEOUT_MS_DEFAULT 20000
  179. #define SO_REUSE 1
  180. #define SO_REUSE_RXTOALL 1
  181. #define LWIP_FIONREAD_LINUXMODE 0
  182. #define LWIP_SOCKET_SELECT 1
  183. #define LWIP_SOCKET_POLL 1
  184. #define LWIP_STATS 1
  185. #define LWIP_STATS_DISPLAY 0
  186. #define LINK_STATS 1
  187. #define ETHARP_STATS (LWIP_ARP)
  188. #define IP_STATS 1
  189. #define IPFRAG_STATS (IP_REASSEMBLY || IP_FRAG)
  190. #define ICMP_STATS 1
  191. #define IGMP_STATS (LWIP_IGMP)
  192. #define UDP_STATS (LWIP_UDP)
  193. #define TCP_STATS (LWIP_TCP)
  194. #define MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0))
  195. #define MEMP_STATS (MEMP_MEM_MALLOC == 0)
  196. #define SYS_STATS (NO_SYS == 0)
  197. #define IP6_STATS (LWIP_IPV6)
  198. #define ICMP6_STATS (LWIP_IPV6 && LWIP_ICMP6)
  199. #define IP6_FRAG_STATS (LWIP_IPV6 && (LWIP_IPV6_FRAG || LWIP_IPV6_REASS))
  200. #define MLD6_STATS (LWIP_IPV6 && LWIP_IPV6_MLD)
  201. #define ND6_STATS (LWIP_IPV6)
  202. #define MIB2_STATS 0
  203. //#define LWIP_CHECKSUM_CTRL_PER_NETIF 1
  204. //#define CHECKSUM_GEN_IP 1
  205. //#define CHECKSUM_GEN_UDP 1
  206. //#define CHECKSUM_GEN_TCP 1
  207. //#define CHECKSUM_GEN_ICMP 1
  208. //#define CHECKSUM_GEN_ICMP6 1
  209. //#define CHECKSUM_CHECK_IP 1
  210. //#define CHECKSUM_CHECK_UDP 1
  211. //#define CHECKSUM_CHECK_TCP 1
  212. //#define CHECKSUM_CHECK_ICMP 1
  213. //#define CHECKSUM_CHECK_ICMP6 1
  214. //#define LWIP_CHECKSUM_ON_COPY 1
  215. #define LWIP_IPV6 1
  216. #define IPV6_REASS_MAXAGE 60
  217. #define LWIP_IPV6_SCOPES (LWIP_IPV6 && !LWIP_SINGLE_NETIF)
  218. #define LWIP_IPV6_SCOPES_DEBUG 0
  219. #define LWIP_IPV6_NUM_ADDRESSES 3
  220. #define LWIP_IPV6_FORWARD 0
  221. #define LWIP_IPV6_FRAG 1
  222. #define LWIP_IPV6_REASS (LWIP_IPV6)
  223. #define LWIP_IPV6_SEND_ROUTER_SOLICIT 1
  224. #define LWIP_IPV6_AUTOCONFIG (LWIP_IPV6)
  225. #define LWIP_IPV6_ADDRESS_LIFETIMES (LWIP_IPV6_AUTOCONFIG)
  226. #define LWIP_IPV6_DUP_DETECT_ATTEMPTS 1
  227. #define LWIP_ICMP6 (LWIP_IPV6)
  228. #define LWIP_ICMP6_DATASIZE 8
  229. #define LWIP_ICMP6_HL 255
  230. #define LWIP_IPV6_MLD (LWIP_IPV6)
  231. #define MEMP_NUM_MLD6_GROUP 4
  232. #define LWIP_ND6_QUEUEING (LWIP_IPV6)
  233. #define MEMP_NUM_ND6_QUEUE 20
  234. #define LWIP_ND6_NUM_NEIGHBORS 10
  235. #define LWIP_ND6_NUM_DESTINATIONS 10
  236. #define LWIP_ND6_NUM_PREFIXES 5
  237. #define LWIP_ND6_NUM_ROUTERS 3
  238. #define LWIP_ND6_MAX_MULTICAST_SOLICIT 3
  239. #define LWIP_ND6_MAX_UNICAST_SOLICIT 3
  240. #define LWIP_ND6_MAX_ANYCAST_DELAY_TIME 1000
  241. #define LWIP_ND6_MAX_NEIGHBOR_ADVERTISEMENT 3
  242. #define LWIP_ND6_REACHABLE_TIME 30000
  243. #define LWIP_ND6_RETRANS_TIMER 1000
  244. #define LWIP_ND6_DELAY_FIRST_PROBE_TIME 5000
  245. #define LWIP_ND6_ALLOW_RA_UPDATES 1
  246. #define LWIP_ND6_TCP_REACHABILITY_HINTS 1
  247. #define LWIP_ND6_RDNSS_MAX_DNS_SERVERS 0
  248. #define LWIP_IPV6_DHCP6 0
  249. #define LWIP_IPV6_DHCP6_STATEFUL 0
  250. #define LWIP_IPV6_DHCP6_STATELESS LWIP_IPV6_DHCP6
  251. #define LWIP_DHCP6_GET_NTP_SRV 0
  252. #define LWIP_DHCP6_MAX_NTP_SERVERS 0
  253. #define LWIP_DHCP6_MAX_DNS_SERVERS DNS_MAX_SERVERS
  254. //#define LWIP_USING_NAT
  255. /* TODO: check hooks */
  256. #define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL
  257. #define LWIP_DBG_TYPES_ON LWIP_DBG_ON
  258. #define LWIP_TESTMODE 0
  259. #define LWIP_PERF 0
  260. #define LWIP_PROVIDE_ERRNO
  261. //#define SYS_ARCH_INC(var, val)
  262. //#define SYS_ARCH_DEC(var, val)
  263. //#define SYS_ARCH_GET(var, val)
  264. //#define SYS_ARCH_SET(var, val)
  265. #define SYS_ARCH_LOCKED(code)
  266. #define SYS_ARCH_DECL_PROTECT(x)
  267. #define SYS_ARCH_PROTECT(x)
  268. #define SYS_ARCH_UNPROTECT(x)
  269. typedef uint32_t sys_prot_t;
  270. //#define LWIP_DEBUG 0
  271. #define LWIP_NUM_SOCKETS 8
  272. #define TCP_MAXRTX 12
  273. #define TCP_SYNMAXRTX 6
  274. #define TCP_SND_BUF (32 * TCP_MSS)
  275. #define TCP_WND (32 * TCP_MSS)
  276. #define MEM_SIZE 8192 * 3
  277. #define TCP_MORE_DELAY 0
  278. #ifdef LWIP_USER_CONFIG_FILE
  279. #include LWIP_USER_CONFIG_FILE
  280. #endif
  281. #endif
  282. #endif /* LWIP_HDR_LWIPOPTS_H */