lwipopts.h 14 KB

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