summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2019-08-04 15:08:33 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2019-08-04 15:08:33 -0700
commit639fc602572bfa61c86041c954149370355b4c24 (patch)
treea933c9747a8655613ce3adfbb8a608dec1fbb916
parent21467596bcb3c2c1b5fe667a8391075c7a15e696 (diff)
downloadinfinitytier-639fc602572bfa61c86041c954149370355b4c24.tar.gz
infinitytier-639fc602572bfa61c86041c954149370355b4c24.zip
GitHub issue #990
-rw-r--r--node/Membership.hpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/node/Membership.hpp b/node/Membership.hpp
index 506573ed..73e11c6c 100644
--- a/node/Membership.hpp
+++ b/node/Membership.hpp
@@ -136,7 +136,7 @@ public:
if (_isCredentialTimestampValid(nconf,*v)&&(v->owns(r)))
return true;
}
- return false;
+ return _isV6NDPEmulated(nconf,r);
}
/**
@@ -191,6 +191,15 @@ public:
static uint64_t credentialKey(const Credential::Type &t,const uint32_t i) { return (((uint64_t)t << 32) | (uint64_t)i); }
private:
+ inline bool _isV6NDPEmulated(const NetworkConfig &nconf,const MAC &m) const { return false; }
+ inline bool _isV6NDPEmulated(const NetworkConfig &nconf,const InetAddress &ip) const
+ {
+ if ((ip.isV6())&&(nconf.ndpEmulation())&&((InetAddress::makeIpv66plane(nconf.networkId,nconf.issuedTo.toInt()).ipsEqual(ip))||(InetAddress::makeIpv6rfc4193(nconf.networkId,nconf.issuedTo.toInt()).ipsEqual(ip)))) {
+ return true;
+ }
+ return false;
+ }
+
template<typename C>
inline bool _isCredentialTimestampValid(const NetworkConfig &nconf,const C &remoteCredential) const
{