summaryrefslogtreecommitdiff
path: root/node/InetAddress.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2017-10-25 12:42:14 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2017-10-25 12:42:14 -0700
commit459f1e7bfb50eb7b491940b7106d8788a7a5e11f (patch)
tree0fa4599508274f738dd5537ba67dadb68a16666d /node/InetAddress.cpp
parent0d8b8d8426db50cc74b95be8d3878948954a75b3 (diff)
downloadinfinitytier-459f1e7bfb50eb7b491940b7106d8788a7a5e11f.tar.gz
infinitytier-459f1e7bfb50eb7b491940b7106d8788a7a5e11f.zip
Refactor path stability stuff and add basic multipath support.
Diffstat (limited to 'node/InetAddress.cpp')
-rw-r--r--node/InetAddress.cpp36
1 files changed, 17 insertions, 19 deletions
diff --git a/node/InetAddress.cpp b/node/InetAddress.cpp
index f7585bdb..d3efc089 100644
--- a/node/InetAddress.cpp
+++ b/node/InetAddress.cpp
@@ -273,29 +273,27 @@ InetAddress InetAddress::network() const
return r;
}
-#ifdef ZT_SDK
- bool InetAddress::isEqualPrefix(const InetAddress &addr) const
- {
- if (addr.ss_family == ss_family) {
- switch(ss_family) {
- case AF_INET6: {
- const InetAddress mask(netmask());
- InetAddress addr_mask(addr.netmask());
- const uint8_t *n = reinterpret_cast<const uint8_t *>(reinterpret_cast<const struct sockaddr_in6 *>(&addr_mask)->sin6_addr.s6_addr);
- const uint8_t *m = reinterpret_cast<const uint8_t *>(reinterpret_cast<const struct sockaddr_in6 *>(&mask)->sin6_addr.s6_addr);
- const uint8_t *a = reinterpret_cast<const uint8_t *>(reinterpret_cast<const struct sockaddr_in6 *>(&addr)->sin6_addr.s6_addr);
- const uint8_t *b = reinterpret_cast<const uint8_t *>(reinterpret_cast<const struct sockaddr_in6 *>(this)->sin6_addr.s6_addr);
- for(unsigned int i=0;i<16;++i) {
- if ((a[i] & m[i]) != (b[i] & n[i]))
- return false;
- }
- return true;
+bool InetAddress::isEqualPrefix(const InetAddress &addr) const
+{
+ if (addr.ss_family == ss_family) {
+ switch(ss_family) {
+ case AF_INET6: {
+ const InetAddress mask(netmask());
+ InetAddress addr_mask(addr.netmask());
+ const uint8_t *n = reinterpret_cast<const uint8_t *>(reinterpret_cast<const struct sockaddr_in6 *>(&addr_mask)->sin6_addr.s6_addr);
+ const uint8_t *m = reinterpret_cast<const uint8_t *>(reinterpret_cast<const struct sockaddr_in6 *>(&mask)->sin6_addr.s6_addr);
+ const uint8_t *a = reinterpret_cast<const uint8_t *>(reinterpret_cast<const struct sockaddr_in6 *>(&addr)->sin6_addr.s6_addr);
+ const uint8_t *b = reinterpret_cast<const uint8_t *>(reinterpret_cast<const struct sockaddr_in6 *>(this)->sin6_addr.s6_addr);
+ for(unsigned int i=0;i<16;++i) {
+ if ((a[i] & m[i]) != (b[i] & n[i]))
+ return false;
}
+ return true;
}
}
- return false;
}
-#endif
+ return false;
+}
bool InetAddress::containsAddress(const InetAddress &addr) const
{