diff --git a/components/lwip/CMakeLists.txt b/components/lwip/CMakeLists.txt index 580d9dc49e..dec0ecb86c 100644 --- a/components/lwip/CMakeLists.txt +++ b/components/lwip/CMakeLists.txt @@ -46,6 +46,7 @@ set(srcs "lwip/src/core/ipv4/icmp.c" "lwip/src/core/ipv4/igmp.c" "lwip/src/core/ipv4/ip4.c" + "lwip/src/core/ipv4/ip4_napt.c" "lwip/src/core/ipv4/ip4_addr.c" "lwip/src/core/ipv4/ip4_frag.c" "lwip/src/core/ipv6/dhcp6.c" diff --git a/components/lwip/Kconfig b/components/lwip/Kconfig index 6ce323a744..ffd34c995f 100644 --- a/components/lwip/Kconfig +++ b/components/lwip/Kconfig @@ -122,6 +122,20 @@ menu "LWIP" help Enabling this option allows reassemblying incoming fragmented IP packets. + config LWIP_IP_FORWARD + bool "Enable IP forwarding" + default n + help + Enabling this option allows packets forwarding across multiple interfaces. + + config LWIP_IPV4_NAPT + bool "Enable NAT (new/experimental)" + depends on LWIP_IP_FORWARD + select LWIP_L2_TO_L3_COPY + default n + help + Enabling this option allows Network Address and Port Translation. + config LWIP_STATS bool "Enable LWIP statistics" default n diff --git a/components/lwip/lwip b/components/lwip/lwip index 5c181728c8..754b8d5dcb 160000 --- a/components/lwip/lwip +++ b/components/lwip/lwip @@ -1 +1 @@ -Subproject commit 5c181728c894d8c051070b1cf21c55a6222fc64b +Subproject commit 754b8d5dcb2a2626d81918b60772c18dee41e54e diff --git a/components/lwip/port/esp32/include/lwipopts.h b/components/lwip/port/esp32/include/lwipopts.h index d6aa757f01..0296bbb79c 100644 --- a/components/lwip/port/esp32/include/lwipopts.h +++ b/components/lwip/port/esp32/include/lwipopts.h @@ -185,6 +185,20 @@ */ #define IP_REASS_MAX_PBUFS 10 +/** + * IP_FORWARD==1: Enables the ability to forward IP packets across network + * interfaces. If you are going to run lwIP on a device with only one network + * interface, define this to 0. + */ +#define IP_FORWARD CONFIG_LWIP_IP_FORWARD + +/** + * IP_NAPT==1: Enables IPv4 Network Address and Port Translation. + * Note that both CONFIG_LWIP_IP_FORWARD and CONFIG_LWIP_L2_TO_L3_COPY options + * need to be enabled in system configuration for the NAPT to work on ESP platform + */ +#define IP_NAPT CONFIG_LWIP_IPV4_NAPT + /* ---------------------------------- ---------- ICMP options ----------