diff --git a/components/tcpip_adapter/tcpip_adapter_lwip.c b/components/tcpip_adapter/tcpip_adapter_lwip.c index f25aad925..03f9bfb64 100644 --- a/components/tcpip_adapter/tcpip_adapter_lwip.c +++ b/components/tcpip_adapter/tcpip_adapter_lwip.c @@ -33,6 +33,10 @@ #include "netif/wlanif.h" #include "netif/ethernetif.h" +#if CONFIG_LWIP_TCP_ISN_HOOK +#include "tcp_isn.h" +#endif + #include "dhcpserver/dhcpserver.h" #include "dhcpserver/dhcpserver_options.h" @@ -102,6 +106,18 @@ void tcpip_adapter_init(void) int ret; if (tcpip_inited == false) { +#if CONFIG_LWIP_TCP_ISN_HOOK + uint8_t rand_buf[16]; + /* + * This is early startup code where WiFi/BT is yet to be enabled and hence + * relevant entropy source is not available. However, bootloader enables + * SAR ADC based entropy source at its initialization, and our requirement + * of random bytes is pretty small (16), so we can assume that following + * API will provide sufficiently random data. + */ + esp_fill_random(rand_buf, sizeof(rand_buf)); + lwip_init_tcp_isn(esp_log_timestamp(), rand_buf); +#endif tcpip_inited = true; tcpip_init(NULL, NULL);