aboutsummaryrefslogtreecommitdiff
path: root/src/netbase.cpp
diff options
context:
space:
mode:
authorGavin Andresen <gavinandresen@gmail.com>2012-03-22 09:19:01 -0400
committerGavin Andresen <gavinandresen@gmail.com>2012-03-22 09:19:01 -0400
commita6b4a11385bf44e695c3e47cbd0de6e40eea0b23 (patch)
treecf0388fcb5169c85b495092e09be6af5a886a236 /src/netbase.cpp
parent0e894be626ae15f26f6f1483b38c7e9191bdb638 (diff)
parent5fee401fe14aa6459428a26a82f764db70a6a0b9 (diff)
Merge branch 'addrman' of https://github.com/sipa/bitcoin
Diffstat (limited to 'src/netbase.cpp')
-rw-r--r--src/netbase.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/netbase.cpp b/src/netbase.cpp
index 7799a65972..baf7c412a0 100644
--- a/src/netbase.cpp
+++ b/src/netbase.cpp
@@ -519,15 +519,22 @@ bool CNetAddr::GetIn6Addr(struct in6_addr* pipv6Addr) const
std::vector<unsigned char> CNetAddr::GetGroup() const
{
std::vector<unsigned char> vchRet;
- int nClass = 0; // 0=IPv6, 1=IPv4, 255=unroutable
+ int nClass = 0; // 0=IPv6, 1=IPv4, 254=local, 255=unroutable
int nStartByte = 0;
int nBits = 16;
- // for unroutable addresses, each address is considered different
+ // all local addresses belong to the same group
+ if (IsLocal())
+ {
+ nClass = 254;
+ nBits = 0;
+ }
+
+ // all unroutable addresses belong to the same group
if (!IsRoutable())
{
nClass = 255;
- nBits = 128;
+ nBits = 0;
}
// for IPv4 addresses, '1' + the 16 higher-order bits of the IP
// includes mapped IPv4, SIIT translated IPv4, and the well-known prefix