mirror of
https://github.com/esp8266/Arduino.git
synced 2025-07-27 18:02:17 +03:00
Make DNS resolution order selectable during runtime or compile time (#6865)
* Make DNS resolution order selectable during runtime or compile time (only in dual stack mode). * Extend IPv6 example to show usage of new hostByName function with selectable resolving order * Fix function definition of fqdn_rt in IPv6.ino. * Fix function call. * Fix missing bracket... * Only run if built with dual stack support * Make DNS resolution order selectable during runtime or compile time (only in dual stack mode). * Extend IPv6 example to show usage of new hostByName function with selectable resolving order * Fix function definition of fqdn_rt in IPv6 example. * Implement enum class for resolve type * Fix example IPv6.ino * Fix typedef in ESP8266WiFiGeneric.h function call * Change enum class definition to not depend on lwip/dns.h * Move err_t err definition outside switch. Fix typecast. * Always define DNSResolveType as pio test otherwise failes even if the enum class isn't used. Co-authored-by: altelch <heiko.krupp@rhrk.uni-kl.de> Co-authored-by: david gauchard <gauchard@laas.fr>
This commit is contained in:
@ -1,4 +1,3 @@
|
||||
|
||||
/*
|
||||
arduino IPv6 example
|
||||
released to public domain
|
||||
@ -27,7 +26,8 @@
|
||||
#define STAPSK "your-password"
|
||||
#endif
|
||||
|
||||
#define FQDN F("www.google.com") // with both IPv4 & IPv6 addresses
|
||||
#define FQDN F("www.google.com") // with both IPv4 & IPv6 addresses
|
||||
#define FQDN2 F("www.yahoo.com") // with both IPv4 & IPv6 addresses
|
||||
#define FQDN6 F("ipv6.google.com") // does not resolve in IPv4
|
||||
#define STATUSDELAY_MS 10000
|
||||
#define TCP_PORT 23
|
||||
@ -50,6 +50,21 @@ void fqdn(Print& out, const String& fqdn) {
|
||||
}
|
||||
}
|
||||
|
||||
#if LWIP_IPV4 && LWIP_IPV6
|
||||
void fqdn_rt(Print& out, const String& fqdn, DNSResolveType resolveType) {
|
||||
out.print(F("resolving "));
|
||||
out.print(fqdn);
|
||||
out.print(F(": "));
|
||||
IPAddress result;
|
||||
if (WiFi.hostByName(fqdn.c_str(), result, 10000, resolveType)) {
|
||||
result.printTo(out);
|
||||
out.println();
|
||||
} else {
|
||||
out.println(F("timeout or not found"));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void status(Print& out) {
|
||||
out.println(F("------------------------------"));
|
||||
out.println(ESP.getFullVersion());
|
||||
@ -85,7 +100,10 @@ void status(Print& out) {
|
||||
// an example is provided with a fqdn which does not resolve with IPv4
|
||||
fqdn(out, FQDN);
|
||||
fqdn(out, FQDN6);
|
||||
|
||||
#if LWIP_IPV4 && LWIP_IPV6
|
||||
fqdn_rt(out, FQDN, DNSResolveType::DNS_AddrType_IPv4_IPv6); // IPv4 before IPv6
|
||||
fqdn_rt(out, FQDN2, DNSResolveType::DNS_AddrType_IPv6_IPv4); // IPv6 before IPv4
|
||||
#endif
|
||||
out.println(F("------------------------------"));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user