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:
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user