diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-10-19 15:19:04 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-10-19 15:19:04 -0700 |
commit | cfdcce6d1299b4bc407b9b44c0abb55c5ea9f4b5 (patch) | |
tree | 3a3df9370ef780ca7b586e13f9b994f8835bb573 /node | |
parent | 0b2e5ed499aea0076caa2dc1d8784796e54da538 (diff) | |
download | infinitytier-cfdcce6d1299b4bc407b9b44c0abb55c5ea9f4b5.tar.gz infinitytier-cfdcce6d1299b4bc407b9b44c0abb55c5ea9f4b5.zip |
Fix very obscure IP scope classification logic bug.
Diffstat (limited to 'node')
-rw-r--r-- | node/InetAddress.cpp | 12 | ||||
-rw-r--r-- | node/Peer.cpp | 2 |
2 files changed, 6 insertions, 8 deletions
diff --git a/node/InetAddress.cpp b/node/InetAddress.cpp index e542f0d4..abb46240 100644 --- a/node/InetAddress.cpp +++ b/node/InetAddress.cpp @@ -77,14 +77,12 @@ InetAddress::IpScope InetAddress::ipScope() const if ((ip & 0xffff0000) == 0xc0a80000) return IP_SCOPE_PRIVATE; // 192.168.0.0/16 break; case 0xff: return IP_SCOPE_NONE; // 255.0.0.0/8 (broadcast, or unused/unusable) - default: - switch(ip >> 28) { - case 0xe: return IP_SCOPE_MULTICAST; // 224.0.0.0/4 - case 0xf: return IP_SCOPE_PSEUDOPRIVATE; // 240.0.0.0/4 ("reserved," usually unusable) - default: return IP_SCOPE_GLOBAL; // everything else - } - break; } + switch(ip >> 28) { + case 0xe: return IP_SCOPE_MULTICAST; // 224.0.0.0/4 + case 0xf: return IP_SCOPE_PSEUDOPRIVATE; // 240.0.0.0/4 ("reserved," usually unusable) + } + return IP_SCOPE_GLOBAL; } break; case AF_INET6: { diff --git a/node/Peer.cpp b/node/Peer.cpp index ba6ef4af..6f566be4 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -203,7 +203,7 @@ bool Peer::doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now,int inet RR->node->putPacket(p->localAddress(),p->address(),&_natKeepaliveBuf,sizeof(_natKeepaliveBuf)); p->sent(now); } else { - TRACE("no PING or NAT keepalive: %llums/%llums send/receive inactivity",now - p->lastSend(),now - p->lastReceived()); + TRACE("no PING or NAT keepalive: addr==%s reliable==%d %llums/%llums send/receive inactivity",p->address().toString().c_str(),(int)p->reliable(),now - p->lastSend(),now - p->lastReceived()); } return true; } |