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
* Update header
* Update IPAddress implementation to support V6
* Fix cut and paste error
* Explicit not equals
* Explicitly reference StreamString
* Remove != test (it is causing a conflict)
* IPv6 support: Add proper link-local and SLAAC in STA and WifiMulti
This patch partially depends on:
espressif/esp32-arduino-lib-builder#67
Without this patch we will get only Link local IPv6 (still useful for MDNS and etc).
With patch we will get also global IPv6 address by SLAAC.
By default IPv6 disabled, until it is properly tested.
Tested on BasicHttpClient by adding:
wifiMulti.IPv6(true);
before: wifiMulti.addAP() call
Enabling Core Debug Level: verbose
If IP6 obtained, in logs will be visible:
[ 8028][V][WiFiGeneric.cpp:380] _arduino_event_cb(): IF[0] Got IPv6: IP Index: 0, Zone: 2, fe80:0000:0000:0000:xxxx:xxxx:xxxx:xxxx
[ 8028][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 8 - STA_GOT_IP6
[ 11028][V][WiFiGeneric.cpp:380] _arduino_event_cb(): IF[0] Got IPv6: IP Index: 1, Zone: 0, 2a0d:yyyy:0000:4000:yyyy:yyyy:yyyy:yyyy
[ 11028][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 8 - STA_GOT_IP6
This is linked to: espressif#6242
Signed-off-by: Denys Fedoryshchenko <[email protected]>
* Add IPv6 support to WiFiServer
One of most useful features of IPv6 to have arduino accessible from internet,
without any port forward and etc.
Change is fairly trivial and backward compatible with old code, tested
with WiFiTelnetToSerial and AsyncUDPServer.
Signed-off-by: Denys Fedoryshchenko <[email protected]>
* WiFiClient::remoteIP and remoteIP6 IPv6 support
For RemoteIP and AF_INET6 socket i added support ip6 to ip4 mapping,
so .remoteIP will return IPv4 address on dual stack socket, if available.
Scenarios tested:
WiFiTelnetToSerial, wifiMulti.IPv6(true), connect both from IPv4 and IPv6
WiFiTelnetToSerial, wifiMulti.IPv6(true); but set to listen on IPv4 only.
WiFiTelnetToSerial, IPv6 disabled, with or without bind to specific IP4.
AsyncUDPServer, without IPv6 support.
Signed-off-by: Denys Fedoryshchenko <[email protected]>
* Add WiFiTelnetToSerialIPv6 example
To demonstrate new abilities of dual stack WiFiServer and
remoteIP6 we add this example.
Signed-off-by: Denys Fedoryshchenko <[email protected]>
* Add IPv6 to WifiClient (client)
We need to be able to connect to remote servers over IPv6 too,
and thats need different approach in DNS queries and connect().
As i'm trying to keep maximum compatibility, i introduce different
behaviour if IPv6 is enabled, and backward compatible (as much as possible),
if IPv6 is not enabled.
IN future when IPv6 functions are tested well enough, it can be simplified.
This implementation tested on esp32 in following scenarios using BasicHttpClient:
IPv6 true:
IPv6 only website (caveat 1) - OK
Website with A and AAAA is present (caveat 1) - OK
IPv4 only website - OK
IPv6 not enabled:
IPv6 only website - wont open (expected)
Website with A and AAAA is present - OK, opens over IPv4
IPv4 only website - OK
caveat 1 - sometimes SLAAC is slower than DHCPv4, so we might have
status WL_CONNECTED, but IPv6 global scope is not ready yet.
Signed-off-by: Denys Fedoryshchenko <[email protected]>
* WiFiTelnetToSerialIPv6.ino: fix obsolete remoteIP6 call to remoteIP
Example contained API from previous IPv6 implementation, fixing it.
Signed-off-by: Denys Fedoryshchenko <[email protected]>
Signed-off-by: Denys Fedoryshchenko <[email protected]>
Co-authored-by: Sly Gryphon <[email protected]>
Co-authored-by: Denys Fedoryshchenko <[email protected]>
0 commit comments