diff --git a/Daemon.cpp b/Daemon.cpp
index 13f99db6..ea98378b 100644
--- a/Daemon.cpp
+++ b/Daemon.cpp
@@ -103,7 +103,7 @@ namespace i2p
LogPrint("HTTP Server started");
i2p::data::netdb.Start();
LogPrint("NetDB started");
- i2p::transports.Start();
+ i2p::transport::transports.Start();
LogPrint("Transports started");
i2p::tunnel::tunnels.Start();
LogPrint("Tunnels started");
@@ -120,7 +120,7 @@ namespace i2p
LogPrint("Client stoped");
i2p::tunnel::tunnels.Stop();
LogPrint("Tunnels stoped");
- i2p::transports.Stop();
+ i2p::transport::transports.Stop();
LogPrint("Transports stoped");
i2p::data::netdb.Stop();
LogPrint("NetDB stoped");
diff --git a/HTTPServer.cpp b/HTTPServer.cpp
index b08948d1..93cfb528 100644
--- a/HTTPServer.cpp
+++ b/HTTPServer.cpp
@@ -699,7 +699,7 @@ namespace util
void HTTPConnection::ShowTransports (std::stringstream& s)
{
s << "NTCP
";
- for (auto it: i2p::transports.GetNTCPSessions ())
+ for (auto it: i2p::transport::transports.GetNTCPSessions ())
{
// RouterInfo of incoming connection doesn't have address
bool outgoing = it.second->GetRemoteRouterInfo ().GetNTCPAddress ();
@@ -714,7 +714,7 @@ namespace util
}
s << std::endl;
}
- auto ssuServer = i2p::transports.GetSSUServer ();
+ auto ssuServer = i2p::transport::transports.GetSSUServer ();
if (ssuServer)
{
s << "
SSU
";
diff --git a/I2NPProtocol.cpp b/I2NPProtocol.cpp
index 12ee678f..d4c6d71e 100644
--- a/I2NPProtocol.cpp
+++ b/I2NPProtocol.cpp
@@ -13,9 +13,10 @@
#include "Garlic.h"
#include "I2NPProtocol.h"
+using namespace i2p::transport;
+
namespace i2p
{
-
I2NPMessage * NewI2NPMessage ()
{
return new I2NPMessageBuffer();
@@ -353,13 +354,13 @@ namespace i2p
if (clearText.flag & 0x40) // we are endpoint of outboud tunnel
{
// so we send it to reply tunnel
- i2p::transports.SendMessage (clearText.nextIdent,
+ transports.SendMessage (clearText.nextIdent,
CreateTunnelGatewayMsg (be32toh (clearText.nextTunnel),
eI2NPVariableTunnelBuildReply, buf, len,
be32toh (clearText.nextMessageID)));
}
else
- i2p::transports.SendMessage (clearText.nextIdent,
+ transports.SendMessage (clearText.nextIdent,
CreateI2NPMessage (eI2NPVariableTunnelBuild, buf, len, be32toh (clearText.nextMessageID)));
}
}
@@ -373,13 +374,13 @@ namespace i2p
if (clearText.flag & 0x40) // we are endpoint of outbound tunnel
{
// so we send it to reply tunnel
- i2p::transports.SendMessage (clearText.nextIdent,
+ transports.SendMessage (clearText.nextIdent,
CreateTunnelGatewayMsg (be32toh (clearText.nextTunnel),
eI2NPTunnelBuildReply, buf, len,
be32toh (clearText.nextMessageID)));
}
else
- i2p::transports.SendMessage (clearText.nextIdent,
+ transports.SendMessage (clearText.nextIdent,
CreateI2NPMessage (eI2NPTunnelBuild, buf, len, be32toh (clearText.nextMessageID)));
}
}
diff --git a/NTCPSession.cpp b/NTCPSession.cpp
index aabe7fd4..a4a73dd4 100644
--- a/NTCPSession.cpp
+++ b/NTCPSession.cpp
@@ -17,14 +17,14 @@ using namespace i2p::crypto;
namespace i2p
{
-namespace ntcp
+namespace transport
{
NTCPSession::NTCPSession (boost::asio::io_service& service, i2p::data::RouterInfo& in_RemoteRouterInfo):
m_Socket (service), m_TerminationTimer (service), m_IsEstablished (false),
m_RemoteRouterInfo (in_RemoteRouterInfo), m_ReceiveBufferOffset (0),
m_NextMessage (nullptr), m_NumSentBytes (0), m_NumReceivedBytes (0)
{
- m_DHKeysPair = i2p::transports.GetNextDHKeysPair ();
+ m_DHKeysPair = transports.GetNextDHKeysPair ();
m_Establisher = new Establisher;
}
@@ -77,12 +77,12 @@ namespace ntcp
{
m_IsEstablished = false;
m_Socket.close ();
- i2p::transports.RemoveNTCPSession (this);
+ transports.RemoveNTCPSession (this);
int numDelayed = 0;
for (auto it :m_DelayedMessages)
{
// try to send them again
- i2p::transports.SendMessage (m_RemoteRouterInfo.GetIdentHash (), it);
+ transports.SendMessage (m_RemoteRouterInfo.GetIdentHash (), it);
numDelayed++;
}
m_DelayedMessages.clear ();
@@ -119,7 +119,7 @@ namespace ntcp
void NTCPSession::ClientLogin ()
{
if (!m_DHKeysPair)
- m_DHKeysPair = i2p::transports.GetNextDHKeysPair ();
+ m_DHKeysPair = transports.GetNextDHKeysPair ();
// send Phase1
const uint8_t * x = m_DHKeysPair->publicKey;
memcpy (m_Establisher->phase1.pubKey, x, 256);
@@ -189,7 +189,7 @@ namespace ntcp
void NTCPSession::SendPhase2 ()
{
if (!m_DHKeysPair)
- m_DHKeysPair = i2p::transports.GetNextDHKeysPair ();
+ m_DHKeysPair = transports.GetNextDHKeysPair ();
const uint8_t * y = m_DHKeysPair->publicKey;
memcpy (m_Establisher->phase2.pubKey, y, 256);
uint8_t xy[512];
@@ -238,7 +238,7 @@ namespace ntcp
if (ecode != boost::asio::error::operation_aborted)
{
GetRemoteRouterInfo ().SetUnreachable (true); // this RouterInfo is not valid
- i2p::transports.ReuseDHKeysPair (m_DHKeysPair);
+ transports.ReuseDHKeysPair (m_DHKeysPair);
m_DHKeysPair = nullptr;
Terminate ();
}
@@ -263,7 +263,7 @@ namespace ntcp
if (memcmp (hxy, m_Establisher->phase2.encrypted.hxy, 32))
{
LogPrint ("Incorrect hash");
- i2p::transports.ReuseDHKeysPair (m_DHKeysPair);
+ transports.ReuseDHKeysPair (m_DHKeysPair);
m_DHKeysPair = nullptr;
Terminate ();
return ;
@@ -635,7 +635,7 @@ namespace ntcp
{
LogPrint ("NTCP server session connected");
SetIsEstablished (true);
- i2p::transports.AddNTCPSession (this);
+ transports.AddNTCPSession (this);
SendTimeSyncMessage ();
SendI2NPMessage (CreateDatabaseStoreMsg ()); // we tell immediately who we are
diff --git a/NTCPSession.h b/NTCPSession.h
index adb69da6..4a5e463a 100644
--- a/NTCPSession.h
+++ b/NTCPSession.h
@@ -15,7 +15,7 @@
namespace i2p
{
-namespace ntcp
+namespace transport
{
#pragma pack(1)
@@ -67,7 +67,7 @@ namespace ntcp
const size_t NTCP_BUFFER_SIZE = 1040; // fits one tunnel message (1028)
const int NTCP_TERMINATION_TIMEOUT = 120; // 2 minutes
- class NTCPSession: public i2p::transport::TransportSession
+ class NTCPSession: public TransportSession
{
public:
diff --git a/NetDb.cpp b/NetDb.cpp
index eb7561f7..f1c20498 100644
--- a/NetDb.cpp
+++ b/NetDb.cpp
@@ -15,6 +15,8 @@
#include "Reseed.h"
#include "util.h"
+using namespace i2p::transport;
+
namespace i2p
{
namespace data
@@ -403,7 +405,7 @@ namespace data
RequestedDestination * dest = CreateRequestedDestination (destination, false, false, pool);
auto floodfill = GetClosestFloodfill (destination, dest->GetExcludedPeers ());
if (floodfill)
- i2p::transports.SendMessage (floodfill->GetIdentHash (), dest->CreateRequestMessage (floodfill->GetIdentHash ()));
+ transports.SendMessage (floodfill->GetIdentHash (), dest->CreateRequestMessage (floodfill->GetIdentHash ()));
}
}
@@ -655,10 +657,10 @@ namespace data
if (outbound)
outbound->SendTunnelDataMsg (buf+32, replyTunnelID, replyMsg);
else
- i2p::transports.SendMessage (buf+32, i2p::CreateTunnelGatewayMsg (replyTunnelID, replyMsg));
+ transports.SendMessage (buf+32, i2p::CreateTunnelGatewayMsg (replyTunnelID, replyMsg));
}
else
- i2p::transports.SendMessage (buf+32, replyMsg);
+ transports.SendMessage (buf+32, replyMsg);
}
i2p::DeleteI2NPMessage (msg);
}
@@ -712,7 +714,7 @@ namespace data
});
}
else
- i2p::transports.SendMessage (floodfill->GetIdentHash (), dest->CreateRequestMessage (floodfill->GetIdentHash ()));
+ i2p::transport::transports.SendMessage (floodfill->GetIdentHash (), dest->CreateRequestMessage (floodfill->GetIdentHash ()));
}
else
DeleteRequestedDestination (dest);
diff --git a/SSU.cpp b/SSU.cpp
index ce4c37bd..0ceff06e 100644
--- a/SSU.cpp
+++ b/SSU.cpp
@@ -12,7 +12,7 @@
namespace i2p
{
-namespace ssu
+namespace transport
{
SSUSession::SSUSession (SSUServer& server, boost::asio::ip::udp::endpoint& remoteEndpoint,
@@ -173,7 +173,7 @@ namespace ssu
LogPrint ("Session request received");
m_RemoteEndpoint = senderEndpoint;
if (!m_DHKeysPair)
- m_DHKeysPair = i2p::transports.GetNextDHKeysPair ();
+ m_DHKeysPair = transports.GetNextDHKeysPair ();
CreateAESandMacKey (buf + sizeof (SSUHeader));
SendSessionCreated (buf + sizeof (SSUHeader));
}
@@ -608,7 +608,7 @@ namespace ssu
{
// set connect timer
ScheduleConnectTimer ();
- m_DHKeysPair = i2p::transports.GetNextDHKeysPair ();
+ m_DHKeysPair = transports.GetNextDHKeysPair ();
SendSessionRequest ();
}
}
diff --git a/SSU.h b/SSU.h
index 261494ab..7f1d2563 100644
--- a/SSU.h
+++ b/SSU.h
@@ -18,7 +18,7 @@
namespace i2p
{
-namespace ssu
+namespace transport
{
#pragma pack(1)
struct SSUHeader
@@ -58,7 +58,7 @@ namespace ssu
};
class SSUServer;
- class SSUSession: public i2p::transport::TransportSession
+ class SSUSession: public TransportSession
{
public:
diff --git a/SSUData.cpp b/SSUData.cpp
index 377c8fbb..8eb69051 100644
--- a/SSUData.cpp
+++ b/SSUData.cpp
@@ -8,7 +8,7 @@
namespace i2p
{
-namespace ssu
+namespace transport
{
SSUData::SSUData (SSUSession& session):
m_Session (session), m_ResendTimer (session.m_Server.GetService ())
diff --git a/SSUData.h b/SSUData.h
index 9ac431a2..2b6abead 100644
--- a/SSUData.h
+++ b/SSUData.h
@@ -13,7 +13,7 @@
namespace i2p
{
-namespace ssu
+namespace transport
{
const size_t SSU_MTU = 1484;
diff --git a/TransitTunnel.cpp b/TransitTunnel.cpp
index 9ed8a542..25b82424 100644
--- a/TransitTunnel.cpp
+++ b/TransitTunnel.cpp
@@ -34,7 +34,7 @@ namespace tunnel
*(uint32_t *)(tunnelMsg->GetPayload ()) = htobe32 (m_NextTunnelID);
FillI2NPMessageHeader (tunnelMsg, eI2NPTunnelData);
- i2p::transports.SendMessage (m_NextIdent, tunnelMsg);
+ i2p::transport::transports.SendMessage (m_NextIdent, tunnelMsg);
}
void TransitTunnel::SendTunnelDataMsg (i2p::I2NPMessage * msg)
diff --git a/Transports.cpp b/Transports.cpp
index 590dfa77..6747febd 100644
--- a/Transports.cpp
+++ b/Transports.cpp
@@ -10,6 +10,8 @@
using namespace i2p::data;
namespace i2p
+{
+namespace transport
{
DHKeysPairSupplier::DHKeysPairSupplier (int size):
m_QueueSize (size), m_IsRunning (false), m_Thread (nullptr)
@@ -66,7 +68,7 @@ namespace i2p
}
}
- i2p::transport::DHKeysPair * DHKeysPairSupplier::Acquire ()
+ DHKeysPair * DHKeysPairSupplier::Acquire ()
{
if (!m_Queue.empty ())
{
@@ -78,14 +80,14 @@ namespace i2p
}
else // queue is empty, create new
{
- i2p::transport::DHKeysPair * pair = new i2p::transport::DHKeysPair ();
+ DHKeysPair * pair = new DHKeysPair ();
CryptoPP::DH dh (i2p::crypto::elgp, i2p::crypto::elgg);
dh.GenerateKeyPair(m_Rnd, pair->privateKey, pair->publicKey);
return pair;
}
}
- void DHKeysPairSupplier::Return (i2p::transport::DHKeysPair * pair)
+ void DHKeysPairSupplier::Return (DHKeysPair * pair)
{
std::unique_lock l(m_AcquiredMutex);
m_Queue.push (pair);
@@ -119,7 +121,7 @@ namespace i2p
boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), address.port));
LogPrint ("Start listening TCP port ", address.port);
- auto conn = new i2p::ntcp::NTCPServerConnection (m_Service);
+ auto conn = new NTCPServerConnection (m_Service);
m_NTCPAcceptor->async_accept(conn->GetSocket (), boost::bind (&Transports::HandleAccept, this,
conn, boost::asio::placeholders::error));
}
@@ -127,7 +129,7 @@ namespace i2p
{
if (!m_SSUServer)
{
- m_SSUServer = new i2p::ssu::SSUServer (address.port);
+ m_SSUServer = new SSUServer (address.port);
LogPrint ("Start listening UDP port ", address.port);
m_SSUServer->Start ();
DetectExternalIP ();
@@ -179,19 +181,19 @@ namespace i2p
}
}
- void Transports::AddNTCPSession (i2p::ntcp::NTCPSession * session)
+ void Transports::AddNTCPSession (NTCPSession * session)
{
if (session)
m_NTCPSessions[session->GetRemoteRouterInfo ().GetIdentHash ()] = session;
}
- void Transports::RemoveNTCPSession (i2p::ntcp::NTCPSession * session)
+ void Transports::RemoveNTCPSession (NTCPSession * session)
{
if (session)
m_NTCPSessions.erase (session->GetRemoteRouterInfo ().GetIdentHash ());
}
- void Transports::HandleAccept (i2p::ntcp::NTCPServerConnection * conn, const boost::system::error_code& error)
+ void Transports::HandleAccept (NTCPServerConnection * conn, const boost::system::error_code& error)
{
if (!error)
{
@@ -203,13 +205,13 @@ namespace i2p
if (error != boost::asio::error::operation_aborted)
{
- conn = new i2p::ntcp::NTCPServerConnection (m_Service);
+ conn = new NTCPServerConnection (m_Service);
m_NTCPAcceptor->async_accept(conn->GetSocket (), boost::bind (&Transports::HandleAccept, this,
conn, boost::asio::placeholders::error));
}
}
- i2p::ntcp::NTCPSession * Transports::GetNextNTCPSession ()
+ NTCPSession * Transports::GetNextNTCPSession ()
{
for (auto session: m_NTCPSessions)
if (session.second->IsEstablished ())
@@ -217,7 +219,7 @@ namespace i2p
return 0;
}
- i2p::ntcp::NTCPSession * Transports::FindNTCPSession (const i2p::data::IdentHash& ident)
+ NTCPSession * Transports::FindNTCPSession (const i2p::data::IdentHash& ident)
{
auto it = m_NTCPSessions.find (ident);
if (it != m_NTCPSessions.end ())
@@ -252,9 +254,9 @@ namespace i2p
// existing session not found. create new
// try NTCP first if message size < 16K
auto address = r->GetNTCPAddress ();
- if (address && !r->UsesIntroducer () && !r->IsUnreachable () && msg->GetLength () < i2p::ntcp::NTCP_MAX_MESSAGE_SIZE)
+ if (address && !r->UsesIntroducer () && !r->IsUnreachable () && msg->GetLength () < NTCP_MAX_MESSAGE_SIZE)
{
- auto s = new i2p::ntcp::NTCPClient (m_Service, address->host, address->port, *r);
+ auto s = new NTCPClient (m_Service, address->host, address->port, *r);
AddNTCPSession (s);
s->SendI2NPMessage (msg);
}
@@ -328,13 +330,15 @@ namespace i2p
}
}
- i2p::transport::DHKeysPair * Transports::GetNextDHKeysPair ()
+ DHKeysPair * Transports::GetNextDHKeysPair ()
{
return m_DHKeysPairSupplier.Acquire ();
}
- void Transports::ReuseDHKeysPair (i2p::transport::DHKeysPair * pair)
+ void Transports::ReuseDHKeysPair (DHKeysPair * pair)
{
m_DHKeysPairSupplier.Return (pair);
}
}
+}
+
diff --git a/Transports.h b/Transports.h
index aa9812e4..c795c2b4 100644
--- a/Transports.h
+++ b/Transports.h
@@ -18,6 +18,8 @@
#include "Identity.h"
namespace i2p
+{
+namespace transport
{
class DHKeysPairSupplier
{
@@ -27,8 +29,8 @@ namespace i2p
~DHKeysPairSupplier ();
void Start ();
void Stop ();
- i2p::transport::DHKeysPair * Acquire ();
- void Return (i2p::transport::DHKeysPair * pair);
+ DHKeysPair * Acquire ();
+ void Return (DHKeysPair * pair);
private:
@@ -38,7 +40,7 @@ namespace i2p
private:
const int m_QueueSize;
- std::queue m_Queue;
+ std::queue m_Queue;
bool m_IsRunning;
std::thread * m_Thread;
@@ -59,13 +61,13 @@ namespace i2p
boost::asio::io_service& GetService () { return m_Service; };
i2p::transport::DHKeysPair * GetNextDHKeysPair ();
- void ReuseDHKeysPair (i2p::transport::DHKeysPair * pair);
+ void ReuseDHKeysPair (DHKeysPair * pair);
- void AddNTCPSession (i2p::ntcp::NTCPSession * session);
- void RemoveNTCPSession (i2p::ntcp::NTCPSession * session);
+ void AddNTCPSession (NTCPSession * session);
+ void RemoveNTCPSession (NTCPSession * session);
- i2p::ntcp::NTCPSession * GetNextNTCPSession ();
- i2p::ntcp::NTCPSession * FindNTCPSession (const i2p::data::IdentHash& ident);
+ NTCPSession * GetNextNTCPSession ();
+ NTCPSession * FindNTCPSession (const i2p::data::IdentHash& ident);
void SendMessage (const i2p::data::IdentHash& ident, i2p::I2NPMessage * msg);
void CloseSession (const i2p::data::RouterInfo * router);
@@ -73,7 +75,7 @@ namespace i2p
private:
void Run ();
- void HandleAccept (i2p::ntcp::NTCPServerConnection * conn, const boost::system::error_code& error);
+ void HandleAccept (NTCPServerConnection * conn, const boost::system::error_code& error);
void HandleResendTimer (const boost::system::error_code& ecode, boost::asio::deadline_timer * timer,
const i2p::data::IdentHash& ident, i2p::I2NPMessage * msg);
void PostMessage (const i2p::data::IdentHash& ident, i2p::I2NPMessage * msg);
@@ -89,8 +91,8 @@ namespace i2p
boost::asio::io_service::work m_Work;
boost::asio::ip::tcp::acceptor * m_NTCPAcceptor;
- std::map m_NTCPSessions;
- i2p::ssu::SSUServer * m_SSUServer;
+ std::map m_NTCPSessions;
+ SSUServer * m_SSUServer;
DHKeysPairSupplier m_DHKeysPairSupplier;
@@ -98,10 +100,11 @@ namespace i2p
// for HTTP only
const decltype(m_NTCPSessions)& GetNTCPSessions () const { return m_NTCPSessions; };
- const i2p::ssu::SSUServer * GetSSUServer () const { return m_SSUServer; };
+ const SSUServer * GetSSUServer () const { return m_SSUServer; };
};
extern Transports transports;
}
+}
#endif
diff --git a/Tunnel.cpp b/Tunnel.cpp
index 2da68772..c16981ae 100644
--- a/Tunnel.cpp
+++ b/Tunnel.cpp
@@ -92,7 +92,7 @@ namespace tunnel
if (outboundTunnel)
outboundTunnel->SendTunnelDataMsg (GetNextIdentHash (), 0, msg);
else
- i2p::transports.SendMessage (GetNextIdentHash (), msg);
+ i2p::transport::transports.SendMessage (GetNextIdentHash (), msg);
}
bool Tunnel::HandleTunnelBuildResponse (uint8_t * msg, size_t len)
diff --git a/TunnelEndpoint.cpp b/TunnelEndpoint.cpp
index ca46199a..6074254e 100644
--- a/TunnelEndpoint.cpp
+++ b/TunnelEndpoint.cpp
@@ -235,7 +235,7 @@ namespace tunnel
i2p::HandleI2NPMessage (msg.data);
break;
case eDeliveryTypeTunnel:
- i2p::transports.SendMessage (msg.hash, i2p::CreateTunnelGatewayMsg (msg.tunnelID, msg.data));
+ i2p::transport::transports.SendMessage (msg.hash, i2p::CreateTunnelGatewayMsg (msg.tunnelID, msg.data));
break;
case eDeliveryTypeRouter:
if (msg.hash == i2p::context.GetRouterInfo ().GetIdentHash ()) // check if message is sent to us
@@ -253,7 +253,7 @@ namespace tunnel
*ds = *(msg.data);
i2p::data::netdb.PostI2NPMsg (ds);
}
- i2p::transports.SendMessage (msg.hash, msg.data);
+ i2p::transport::transports.SendMessage (msg.hash, msg.data);
}
else // we shouldn't send this message. possible leakage
{
diff --git a/TunnelGateway.cpp b/TunnelGateway.cpp
index c12c4519..d2996b17 100644
--- a/TunnelGateway.cpp
+++ b/TunnelGateway.cpp
@@ -186,7 +186,7 @@ namespace tunnel
{
m_Tunnel->EncryptTunnelMsg (tunnelMsg);
FillI2NPMessageHeader (tunnelMsg, eI2NPTunnelData);
- i2p::transports.SendMessage (m_Tunnel->GetNextIdentHash (), tunnelMsg);
+ i2p::transport::transports.SendMessage (m_Tunnel->GetNextIdentHash (), tunnelMsg);
m_NumSentBytes += TUNNEL_DATA_MSG_SIZE;
}
m_Buffer.ClearTunnelDataMsgs ();