diff --git a/daemon/HTTPServer.cpp b/daemon/HTTPServer.cpp
index aa40e16f..363b365a 100644
--- a/daemon/HTTPServer.cpp
+++ b/daemon/HTTPServer.cpp
@@ -11,7 +11,6 @@
#include "Log.h"
#include "Config.h"
#include "Tunnel.h"
-#include "TransitTunnel.h"
#include "Transports.h"
#include "NetDb.hpp"
#include "HTTP.h"
@@ -230,8 +229,8 @@ namespace http {
ShowTraffic (s, i2p::transport::transports.GetTotalSentBytes ());
s << " (" << (double) i2p::transport::transports.GetOutBandwidth () / 1024 << " KiB/s)
\r\n";
s << "Transit: ";
- ShowTraffic (s, i2p::tunnel::GetTotalTrasitTransmittedBytes ());
- s << "
\r\n";
+ ShowTraffic (s, i2p::transport::transports.GetTotalTransitTransmittedBytes ());
+ s << " (" << (double) i2p::transport::transports.GetTransitBandwidth () / 1024 << " KiB/s)
\r\n";
s << "Data path: " << i2p::fs::GetDataDir() << "
\r\n";
s << "
\r\n
\r\n
\r\n";
s << "Router Ident: " << i2p::context.GetRouterInfo().GetIdentHashBase64() << "
\r\n";
diff --git a/libi2pd/TransitTunnel.cpp b/libi2pd/TransitTunnel.cpp
index 78dc19f5..bcba4d60 100644
--- a/libi2pd/TransitTunnel.cpp
+++ b/libi2pd/TransitTunnel.cpp
@@ -11,13 +11,6 @@ namespace i2p
{
namespace tunnel
{
- static uint64_t m_TotalTransitTrasmittedBytes = 0;
-
- uint64_t GetTotalTrasitTransmittedBytes ()
- {
- return m_TotalTransitTrasmittedBytes;
- }
-
TransitTunnel::TransitTunnel (uint32_t receiveTunnelID,
const uint8_t * nextIdent, uint32_t nextTunnelID,
const uint8_t * layerKey,const uint8_t * ivKey):
@@ -29,7 +22,7 @@ namespace tunnel
void TransitTunnel::EncryptTunnelMsg (std::shared_ptr in, std::shared_ptr out)
{
m_Encryption.Encrypt (in->GetPayload () + 4, out->GetPayload () + 4);
- m_TotalTransitTrasmittedBytes += TUNNEL_DATA_MSG_SIZE;
+ i2p::transport::transports.UpdateTotalTransitTransmittedBytes (TUNNEL_DATA_MSG_SIZE);
}
TransitTunnelParticipant::~TransitTunnelParticipant ()
diff --git a/libi2pd/TransitTunnel.h b/libi2pd/TransitTunnel.h
index 0be7a6ef..eec244ce 100644
--- a/libi2pd/TransitTunnel.h
+++ b/libi2pd/TransitTunnel.h
@@ -99,8 +99,6 @@ namespace tunnel
const uint8_t * nextIdent, uint32_t nextTunnelID,
const uint8_t * layerKey,const uint8_t * ivKey,
bool isGateway, bool isEndpoint);
-
- uint64_t GetTotalTrasitTransmittedBytes ();
}
}
diff --git a/libi2pd/Transports.cpp b/libi2pd/Transports.cpp
index 2227e8f5..993b3e64 100644
--- a/libi2pd/Transports.cpp
+++ b/libi2pd/Transports.cpp
@@ -112,8 +112,10 @@ namespace transport
m_IsOnline (true), m_IsRunning (false), m_Thread (nullptr), m_Service (nullptr),
m_Work (nullptr), m_PeerCleanupTimer (nullptr), m_PeerTestTimer (nullptr),
m_NTCPServer (nullptr), m_SSUServer (nullptr), m_DHKeysPairSupplier (5), // 5 pre-generated keys
- m_TotalSentBytes(0), m_TotalReceivedBytes(0), m_InBandwidth (0), m_OutBandwidth (0),
- m_LastInBandwidthUpdateBytes (0), m_LastOutBandwidthUpdateBytes (0), m_LastBandwidthUpdateTime (0)
+ m_TotalSentBytes(0), m_TotalReceivedBytes(0), m_TotalTransitTransmittedBytes (0),
+ m_InBandwidth (0), m_OutBandwidth (0), m_TransitBandwidth(0),
+ m_LastInBandwidthUpdateBytes (0), m_LastOutBandwidthUpdateBytes (0),
+ m_LastTransitBandwidthUpdateBytes (0), m_LastBandwidthUpdateTime (0)
{
}
@@ -243,11 +245,13 @@ namespace transport
{
m_InBandwidth = (m_TotalReceivedBytes - m_LastInBandwidthUpdateBytes)*1000/delta; // per second
m_OutBandwidth = (m_TotalSentBytes - m_LastOutBandwidthUpdateBytes)*1000/delta; // per second
+ m_TransitBandwidth = (m_TotalTransitTransmittedBytes - m_LastTransitBandwidthUpdateBytes)*1000/delta;
}
}
m_LastBandwidthUpdateTime = ts;
m_LastInBandwidthUpdateBytes = m_TotalReceivedBytes;
- m_LastOutBandwidthUpdateBytes = m_TotalSentBytes;
+ m_LastOutBandwidthUpdateBytes = m_TotalSentBytes;
+ m_LastTransitBandwidthUpdateBytes = m_TotalTransitTransmittedBytes;
}
bool Transports::IsBandwidthExceeded () const
diff --git a/libi2pd/Transports.h b/libi2pd/Transports.h
index a68838e2..8cc97d22 100644
--- a/libi2pd/Transports.h
+++ b/libi2pd/Transports.h
@@ -99,9 +99,12 @@ namespace transport
void UpdateSentBytes (uint64_t numBytes) { m_TotalSentBytes += numBytes; };
void UpdateReceivedBytes (uint64_t numBytes) { m_TotalReceivedBytes += numBytes; };
uint64_t GetTotalSentBytes () const { return m_TotalSentBytes; };
- uint64_t GetTotalReceivedBytes () const { return m_TotalReceivedBytes; };
+ uint64_t GetTotalReceivedBytes () const { return m_TotalReceivedBytes; };
+ uint64_t GetTotalTransitTransmittedBytes () const { return m_TotalTransitTransmittedBytes; }
+ void UpdateTotalTransitTransmittedBytes (uint32_t add) { m_TotalTransitTransmittedBytes += add; };
uint32_t GetInBandwidth () const { return m_InBandwidth; };
uint32_t GetOutBandwidth () const { return m_OutBandwidth; };
+ uint32_t GetTransitBandwidth () const { return m_TransitBandwidth; };
bool IsBandwidthExceeded () const;
size_t GetNumPeers () const { return m_Peers.size (); };
std::shared_ptr GetRandomPeer () const;
@@ -155,9 +158,9 @@ namespace transport
DHKeysPairSupplier m_DHKeysPairSupplier;
- std::atomic m_TotalSentBytes, m_TotalReceivedBytes;
- uint32_t m_InBandwidth, m_OutBandwidth; // bytes per second
- uint64_t m_LastInBandwidthUpdateBytes, m_LastOutBandwidthUpdateBytes;
+ std::atomic m_TotalSentBytes, m_TotalReceivedBytes, m_TotalTransitTransmittedBytes;
+ uint32_t m_InBandwidth, m_OutBandwidth, m_TransitBandwidth; // bytes per second
+ uint64_t m_LastInBandwidthUpdateBytes, m_LastOutBandwidthUpdateBytes, m_LastTransitBandwidthUpdateBytes;
uint64_t m_LastBandwidthUpdateTime;
/** which router families to trust for first hops */