Commit 4108c8d
committed
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.1 parent 4897e00 commit 4108c8d
6 files changed
+662
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
228 | 228 | | |
229 | 229 | | |
230 | 230 | | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
231 | 234 | | |
232 | 235 | | |
233 | 236 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
501 | 501 | | |
502 | 502 | | |
503 | 503 | | |
504 | | - | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
505 | 509 | | |
506 | 510 | | |
507 | 511 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
505 | 505 | | |
506 | 506 | | |
507 | 507 | | |
508 | | - | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
509 | 513 | | |
510 | 514 | | |
511 | 515 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
322 | 322 | | |
323 | 323 | | |
324 | 324 | | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
325 | 329 | | |
0 commit comments