mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
lwip2 fix and update (#4729)
* interactive example: update with option for using DHCP again after using static IP
* lwip2: avoid crash when IP address is set to 0(any) by dhcp not getting its lease renewal in due time
* lwip2: automatically remove oldest PCBs in time-wait state, limit their number
thanks to @me-no-dev 07f4d4c241 (diff-f8258e71e25fb9985ca3799e3d8b88ecR399)
* faq: update about tcpCleanup()
* lwip2: add a macro HAS_PHY_CAPTURE=1 indicating capture facility is available
This commit is contained in:
parent
144152ce6b
commit
1a9403df1b
@ -93,8 +93,15 @@ This error may pop up after switching between
|
||||
How to clear TCP PCBs in time-wait state ?
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This is needed with lwIP-v1.4, less needed with lwIP-v2 but timeout is still
|
||||
too high.
|
||||
This is not needed anymore:
|
||||
|
||||
PCBs in time-wait state are limited to 5 and removed when that number is
|
||||
exceeded.
|
||||
|
||||
Ref. `lwIP-v1.4 <https://github.com/esp8266/Arduino/commit/07f4d4c241df2c552899857f39a4295164f686f2#diff-f8258e71e25fb9985ca3799e3d8b88ecR399>`__,
|
||||
`lwIP-v2 <https://github.com/d-a-v/esp82xx-nonos-linklayer/commit/420960dfc0dbe07114f7364845836ac333bc84f7>`__
|
||||
|
||||
For reference:
|
||||
|
||||
Time-wait PCB state helps TCP not confusing two consecutive connections with the
|
||||
same (s-ip,s-port,d-ip,d-port) when the first is already closed but still
|
||||
|
@ -85,7 +85,7 @@ void loop() {
|
||||
case 'n': DO(WiFi.setSleepMode(WIFI_NONE_SLEEP));
|
||||
case 'l': DO(WiFi.setSleepMode(WIFI_LIGHT_SLEEP));
|
||||
case 'm': DO(WiFi.setSleepMode(WIFI_MODEM_SLEEP));
|
||||
case 's': DO(WiFi.config(staticip, gateway, subnet));
|
||||
case 'D': DO(wifi_station_dhcpc_start());
|
||||
case 'S': DO(WiFi.config(staticip, gateway, subnet)); // use static address
|
||||
case 's': DO(WiFi.config(0u, 0u, 0u)); // back to dhcp client
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
||||
Subproject commit 2b827f842925b2daf12b67ab1ae498e58174124e
|
||||
Subproject commit 0c0d8c2fb90de1fc1a956c89984b74dcdd7bf8dc
|
@ -35,6 +35,7 @@
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
#define HAS_PHY_CAPTURE 1
|
||||
void (*phy_capture) (int netif_idx, const char* data, size_t len, int out, int success);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -1,5 +1,5 @@
|
||||
// generated by makefiles/make-lwip2-hash
|
||||
#ifndef LWIP_HASH_H
|
||||
#define LWIP_HASH_H
|
||||
#define LWIP_HASH_STR "STABLE-2_0_3_RELEASE/glue:arduino-2.4.1-7-g2b827f8"
|
||||
#define LWIP_HASH_STR "STABLE-2_0_3_RELEASE/glue:arduino-2.4.1-10-g0c0d8c2"
|
||||
#endif // LWIP_HASH_H
|
||||
|
@ -2997,6 +2997,7 @@
|
||||
|
||||
/*
|
||||
--------------------------------------------------
|
||||
------------- End of original lwipopts -----------
|
||||
--------------------------------------------------
|
||||
*/
|
||||
|
||||
@ -3013,4 +3014,34 @@ struct netif;
|
||||
#endif
|
||||
LWIP_ERR_T lwip_unhandled_packet (struct pbuf* pbuf, struct netif* netif) __attribute__((weak));
|
||||
|
||||
/*
|
||||
--------------------------------------------------
|
||||
----------------- TIME-WAIT tweak ----------------
|
||||
--------------------------------------------------
|
||||
port @me-no-dev time-wait tweak
|
||||
https://github.com/esp8266/Arduino/commit/07f4d4c241df2c552899857f39a4295164f686f2#diff-f8258e71e25fb9985ca3799e3d8b88ecR399
|
||||
*/
|
||||
|
||||
void tcp_kill_timewait (void);
|
||||
#define TCP_TW_LIMIT(l) \
|
||||
if (l) do { \
|
||||
u32_t count_plus_1 = 1; \
|
||||
struct tcp_pcb* tmp = tcp_tw_pcbs; \
|
||||
if (tmp) \
|
||||
while ((tmp = tmp->next)) \
|
||||
++count_plus_1; \
|
||||
while (--count_plus_1 > (l)) \
|
||||
/* kill the oldest */ \
|
||||
/* pcb in TW state */ \
|
||||
tcp_kill_timewait(); \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* MEMP_NUM_TCP_PCB_TIME_WAIT: the number of TCP pcbs in TIME_WAIT state.
|
||||
* (requires the LWIP_TCP option, 0 = disabled)
|
||||
*/
|
||||
#ifndef MEMP_NUM_TCP_PCB_TIME_WAIT
|
||||
#define MEMP_NUM_TCP_PCB_TIME_WAIT 5
|
||||
#endif
|
||||
|
||||
#endif // MYLWIPOPTS_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user