You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds NAPT and port mapping functionality to esp8266 lwip
esp8266 can handle 2 network interfaces (Wifi client and softAP)
simultaneously in the WIFI_AP_STA mode.
Currently IP_FORWARD is implemented in lwip to forward packets
between 2 interfaces, but static routing must be setup manually.
This patch adds IP_NAPT config option to enable esp8266 to use
NAPT technique on forwarding packets from softAP clients to the
parent WiFi AP.
To enable NAPT on the interface, ip_napt_enable() must be called
with esp8266's softAP interface address. For example:
extern "C" void ip_napt_enable(unsigned long addr, int enable);
ip_napt_enable(IPAddress(192,168,4,1), 1);
This patch also provides port mappings to forward packets from
the parent WiFi network to softAP network. To register and
unregister port mappings, following functions can be used:
void ip_portmap_add(byte proto, unsigned long maddr, unsigned short mport,
unsigned long daddr, unsigned short dport);
bool ip_portmap_remove(byte proto, unsigned short mport);
For exmaple:
#define IP_PROTO_TCP 6
#define IP_PROTO_UDP 17
...
ip_portmap_add(IP_PROTO_TCP, WiFi.localIP(), 8080,
IPAddress(192,168,4,3), 80);
ip_portmap_add(IP_PROTO_UDP, WiFi.localIP(), 12345,
IPAddress(192,168,4,2), 12345);
These map TCP port 8080 on WiFi client address to 192.168.4.3:80, and
UDP port 12345 to 192.168.4.2:12345. To remove the first mapping:
ip_portmap_remove(IP_PROTO_TCP, 8080);
To apply this change, SDK needs to be recompiled with this patch:
$ cd tools/sdk/lwip/src
$ make && make release #=> intalled to ../../lib/liblwip_gcc.a
Note that this patch is experimental and is provided as is.
0 commit comments