aboutsummaryrefslogtreecommitdiff
path: root/src/netbase.cpp
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2012-10-07 14:53:17 +0200
committerPieter Wuille <pieter.wuille@gmail.com>2012-10-07 15:10:14 +0200
commit4e882b79605e15297f7c5411bfd5f3dce4cad6f1 (patch)
tree5a977ebe01dd3a3ff0dcff60af4427815af407ef /src/netbase.cpp
parentee0b64853699c08602fed81cdefc62d7e8dcdce2 (diff)
downloadbitcoin-4e882b79605e15297f7c5411bfd5f3dce4cad6f1.tar.xz
Remove I2P support from netbase
I2P apparently needs 256 bits to store a fully routable address. Garlicat requires a centralized lookup service to map the 80-bit addresses to fully routable ones (as far as I understood), so that's not really usable in our situation. To support I2P routing and peer exchange for it, another solution is needed. This will most likely imply a network protocol change, and extension of the 'addr' message.
Diffstat (limited to 'src/netbase.cpp')
-rw-r--r--src/netbase.cpp41
1 files changed, 4 insertions, 37 deletions
diff --git a/src/netbase.cpp b/src/netbase.cpp
index daa8a8d07e..a69502028a 100644
--- a/src/netbase.cpp
+++ b/src/netbase.cpp
@@ -29,7 +29,6 @@ enum Network ParseNetwork(std::string net) {
if (net == "ipv4") return NET_IPV4;
if (net == "ipv6") return NET_IPV6;
if (net == "tor") return NET_TOR;
- if (net == "i2p") return NET_I2P;
return NET_UNROUTABLE;
}
@@ -540,7 +539,6 @@ void CNetAddr::SetIP(const CNetAddr& ipIn)
}
static const unsigned char pchOnionCat[] = {0xFD,0x87,0xD8,0x7E,0xEB,0x43};
-static const unsigned char pchGarliCat[] = {0xFD,0x60,0xDB,0x4D,0xDD,0xB5};
bool CNetAddr::SetSpecial(const std::string &strName)
{
@@ -553,15 +551,6 @@ bool CNetAddr::SetSpecial(const std::string &strName)
ip[i + sizeof(pchOnionCat)] = vchAddr[i];
return true;
}
- if (strName.size()>11 && strName.substr(strName.size() - 11, 11) == ".oc.b32.i2p") {
- std::vector<unsigned char> vchAddr = DecodeBase32(strName.substr(0, strName.size() - 11).c_str());
- if (vchAddr.size() != 16-sizeof(pchGarliCat))
- return false;
- memcpy(ip, pchOnionCat, sizeof(pchGarliCat));
- for (unsigned int i=0; i<16-sizeof(pchGarliCat); i++)
- ip[i + sizeof(pchGarliCat)] = vchAddr[i];
- return true;
- }
return false;
}
@@ -611,7 +600,7 @@ bool CNetAddr::IsIPv4() const
bool CNetAddr::IsIPv6() const
{
- return (!IsIPv4() && !IsTor() && !IsI2P());
+ return (!IsIPv4() && !IsTor());
}
bool CNetAddr::IsRFC1918() const
@@ -675,11 +664,6 @@ bool CNetAddr::IsTor() const
return (memcmp(ip, pchOnionCat, sizeof(pchOnionCat)) == 0);
}
-bool CNetAddr::IsI2P() const
-{
- return (memcmp(ip, pchGarliCat, sizeof(pchGarliCat)) == 0);
-}
-
bool CNetAddr::IsLocal() const
{
// IPv4 loopback
@@ -738,7 +722,7 @@ bool CNetAddr::IsValid() const
bool CNetAddr::IsRoutable() const
{
- return IsValid() && !(IsRFC1918() || IsRFC3927() || IsRFC4862() || (IsRFC4193() && !IsTor() && !IsI2P()) || IsRFC4843() || IsLocal());
+ return IsValid() && !(IsRFC1918() || IsRFC3927() || IsRFC4862() || (IsRFC4193() && !IsTor()) || IsRFC4843() || IsLocal());
}
enum Network CNetAddr::GetNetwork() const
@@ -752,9 +736,6 @@ enum Network CNetAddr::GetNetwork() const
if (IsTor())
return NET_TOR;
- if (IsI2P())
- return NET_I2P;
-
return NET_IPV6;
}
@@ -762,8 +743,6 @@ std::string CNetAddr::ToStringIP() const
{
if (IsTor())
return EncodeBase32(&ip[6], 10) + ".onion";
- if (IsI2P())
- return EncodeBase32(&ip[6], 10) + ".oc.b32.i2p";
CService serv(*this, 0);
#ifdef USE_IPV6
struct sockaddr_storage sockaddr;
@@ -871,12 +850,6 @@ std::vector<unsigned char> CNetAddr::GetGroup() const
nStartByte = 6;
nBits = 4;
}
- else if (IsI2P())
- {
- nClass = NET_I2P;
- nStartByte = 6;
- nBits = 4;
- }
// for he.net, use /36 groups
else if (GetByte(15) == 0x20 && GetByte(14) == 0x11 && GetByte(13) == 0x04 && GetByte(12) == 0x70)
nBits = 36;
@@ -962,11 +935,6 @@ int CNetAddr::GetReachabilityFrom(const CNetAddr *paddrPartner) const
case NET_IPV4: return REACH_IPV4; // Tor users can connect to IPv4 as well
case NET_TOR: return REACH_PRIVATE;
}
- case NET_I2P:
- switch(ourNet) {
- default: return REACH_DEFAULT;
- case NET_I2P: return REACH_PRIVATE;
- }
case NET_TEREDO:
switch(ourNet) {
default: return REACH_DEFAULT;
@@ -982,8 +950,7 @@ int CNetAddr::GetReachabilityFrom(const CNetAddr *paddrPartner) const
case NET_TEREDO: return REACH_TEREDO;
case NET_IPV6: return REACH_IPV6_WEAK;
case NET_IPV4: return REACH_IPV4;
- case NET_I2P: return REACH_PRIVATE; // assume connections from unroutable addresses are
- case NET_TOR: return REACH_PRIVATE; // either from Tor/I2P, or don't care about our address
+ case NET_TOR: return REACH_PRIVATE; // either from Tor, or don't care about our address
}
}
}
@@ -1140,7 +1107,7 @@ std::string CService::ToStringPort() const
std::string CService::ToStringIPPort() const
{
- if (IsIPv4() || IsTor() || IsI2P()) {
+ if (IsIPv4() || IsTor()) {
return ToStringIP() + ":" + ToStringPort();
} else {
return "[" + ToStringIP() + "]:" + ToStringPort();