IP_Address can now be a wildcard (not a valid IP, used for binding)

(cherry picked from commit 4198291cd4)
This commit is contained in:
Fabio Alessandrelli 2017-01-18 04:03:51 +01:00
parent 603105df18
commit 90a747a52d
2 changed files with 10 additions and 1 deletions

View File

@ -174,6 +174,7 @@ void IP_Address::clear() {
memset(&field8[0], 0, sizeof(field8));
valid = false;
wildcard = false;
};
bool IP_Address::is_ipv4() const {
@ -206,10 +207,16 @@ void IP_Address::set_ipv6(const uint8_t *p_buf) {
IP_Address::IP_Address(const String &p_string) {
clear();
if (p_string.find(":") >= 0) {
if (p_string == "*") {
// Wildcard (not a vaild IP)
wildcard = true;
} else if (p_string.find(":") >= 0) {
// IPv6
_parse_ipv6(p_string);
valid = true;
} else if (p_string.get_slice_count(".") == 4) {
// IPv4 (mapped to IPv6 internally)
field16[5] = 0xffff;

View File

@ -41,6 +41,7 @@ private:
};
bool valid;
bool wildcard;
protected:
void _parse_ipv6(const String &p_string);
@ -66,6 +67,7 @@ public:
}
void clear();
bool is_wildcard() const { return wildcard; }
bool is_valid() const { return valid; }
bool is_ipv4() const;
const uint8_t *get_ipv4() const;