1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-16 00:43:00 +03:00

IPAddress updates (#5409)

* restore definition of ip_addr (=ipv4_addr) when IPv6 is not enabled

* overload IPAddress:operator == and != to avoid ambiguousness

* brings lwIP's INADDR_NONE (which is IPv4 255.255.255.255, suposed to be invalid address but it is)

* inet_aton is a lwIP define, rename Ethernet DNS implementation of this to prevent name collision
that's because IPAddress now includes lwip/inet.h
This commit is contained in:
david gauchard
2018-12-02 03:21:33 +01:00
committed by Develo
parent 4b16fa0a33
commit 324b3f9678
3 changed files with 16 additions and 6 deletions

View File

@ -38,9 +38,12 @@
#define IP4_ADDR_ANY4 IPADDR_ANY #define IP4_ADDR_ANY4 IPADDR_ANY
#define IPADDR4_INIT(x) { x } #define IPADDR4_INIT(x) { x }
#define CONST /* nothing: lwIP-v1 does not use const */ #define CONST /* nothing: lwIP-v1 does not use const */
#else #else // lwIP-v2+
#define CONST const #define CONST const
#endif #if !LWIP_IPV6
#define ip_addr ipv4_addr
#endif // !LWIP_IPV6
#endif // lwIP-v2+
// A class to make it easier to handle and pass around IP addresses // A class to make it easier to handle and pass around IP addresses
// IPv6 update: // IPv6 update:
@ -96,9 +99,15 @@ class IPAddress: public Printable {
bool operator==(uint32_t addr) const { bool operator==(uint32_t addr) const {
return isV4() && v4() == addr; return isV4() && v4() == addr;
} }
bool operator==(u32_t addr) const {
return isV4() && v4() == addr;
}
bool operator!=(uint32_t addr) const { bool operator!=(uint32_t addr) const {
return !(isV4() && v4() == addr); return !(isV4() && v4() == addr);
} }
bool operator!=(u32_t addr) const {
return !(isV4() && v4() == addr);
}
bool operator==(const uint8_t* addr) const; bool operator==(const uint8_t* addr) const;
// Overloaded index operator to allow getting and setting individual octets of the address // Overloaded index operator to allow getting and setting individual octets of the address
@ -193,6 +202,7 @@ class IPAddress: public Printable {
extern CONST IPAddress IPNoAddress; extern CONST IPAddress IPNoAddress;
#include <AddrList.h> #include <lwip/inet.h> // bring definition of INADDR_NONE
#include <AddrList.h> // bring interface iterator
#endif #endif

View File

@ -55,7 +55,7 @@ void DNSClient::begin(const IPAddress& aDNSServer)
} }
int DNSClient::inet_aton(const char* aIPAddrString, IPAddress& aResult) int DNSClient::inet_aton_ethlib(const char* aIPAddrString, IPAddress& aResult)
{ {
// See if we've been given a valid IP address // See if we've been given a valid IP address
const char* p =aIPAddrString; const char* p =aIPAddrString;
@ -120,7 +120,7 @@ int DNSClient::getHostByName(const char* aHostname, IPAddress& aResult)
int ret =0; int ret =0;
// See if it's a numeric IP address // See if it's a numeric IP address
if (inet_aton(aHostname, aResult)) if (inet_aton_ethlib(aHostname, aResult))
{ {
// It is, our work here is done // It is, our work here is done
return 1; return 1;

View File

@ -19,7 +19,7 @@ public:
@result 1 if aIPAddrString was successfully converted to an IP address, @result 1 if aIPAddrString was successfully converted to an IP address,
else error code else error code
*/ */
int inet_aton(const char *aIPAddrString, IPAddress& aResult); int inet_aton_ethlib(const char *aIPAddrString, IPAddress& aResult);
/** Resolve the given hostname to an IP address. /** Resolve the given hostname to an IP address.
@param aHostname Name to be resolved @param aHostname Name to be resolved