mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-02-08 22:13:48 +01:00
insert ipv4 address if enabled back
This commit is contained in:
parent
6555ae5b0a
commit
f162876600
2 changed files with 51 additions and 2 deletions
|
@ -231,7 +231,7 @@ namespace i2p
|
||||||
bool updated = false;
|
bool updated = false;
|
||||||
for (auto& address : m_RouterInfo.GetAddresses ())
|
for (auto& address : m_RouterInfo.GetAddresses ())
|
||||||
{
|
{
|
||||||
if (address->IsNTCP2 () && (address->port != port || address->ntcp2->isPublished != publish) && (!v4only || address->host.is_v4 ()))
|
if (address->IsNTCP2 () && (address->port != port || address->ntcp2->isPublished != publish) && (!v4only || address->IsV4 ()))
|
||||||
{
|
{
|
||||||
if (!port && !address->port)
|
if (!port && !address->port)
|
||||||
{
|
{
|
||||||
|
@ -508,7 +508,7 @@ namespace i2p
|
||||||
auto& addresses = m_RouterInfo.GetAddresses ();
|
auto& addresses = m_RouterInfo.GetAddresses ();
|
||||||
for (auto& addr: addresses)
|
for (auto& addr: addresses)
|
||||||
{
|
{
|
||||||
if (addr->host.is_v6 ())
|
if (addr->IsV6 () && !i2p::util::net::IsYggdrasilAddress (addr->host))
|
||||||
{
|
{
|
||||||
if (addr->transportStyle == i2p::data::RouterInfo::eTransportSSU)
|
if (addr->transportStyle == i2p::data::RouterInfo::eTransportSSU)
|
||||||
foundSSU = true;
|
foundSSU = true;
|
||||||
|
@ -554,8 +554,54 @@ namespace i2p
|
||||||
|
|
||||||
void RouterContext::SetSupportsV4 (bool supportsV4)
|
void RouterContext::SetSupportsV4 (bool supportsV4)
|
||||||
{
|
{
|
||||||
|
// check if updates
|
||||||
|
if (supportsV4 && SupportsV4 ()) return;
|
||||||
|
if (!supportsV4 && !SupportsV4 ()) return;
|
||||||
|
// update
|
||||||
if (supportsV4)
|
if (supportsV4)
|
||||||
|
{
|
||||||
|
bool foundSSU = false, foundNTCP2 = false;
|
||||||
|
std::string host = "127.0.0.1";
|
||||||
|
uint16_t port = 0;
|
||||||
|
auto& addresses = m_RouterInfo.GetAddresses ();
|
||||||
|
for (auto& addr: addresses)
|
||||||
|
{
|
||||||
|
if (addr->IsV4 ())
|
||||||
|
{
|
||||||
|
if (addr->transportStyle == i2p::data::RouterInfo::eTransportSSU)
|
||||||
|
foundSSU = true;
|
||||||
|
else if (addr->transportStyle == i2p::data::RouterInfo::eTransportNTCP)
|
||||||
|
foundNTCP2 = true;
|
||||||
|
}
|
||||||
|
if (addr->port) port = addr->port;
|
||||||
|
}
|
||||||
|
if (!port) i2p::config::GetOption("port", port);
|
||||||
|
// SSU
|
||||||
|
if (!foundSSU)
|
||||||
|
{
|
||||||
|
bool ssu; i2p::config::GetOption("ssu", ssu);
|
||||||
|
if (ssu)
|
||||||
|
m_RouterInfo.AddSSUAddress (host.c_str (), port, nullptr);
|
||||||
|
}
|
||||||
|
// NTCP2
|
||||||
|
if (!foundNTCP2)
|
||||||
|
{
|
||||||
|
bool ntcp2; i2p::config::GetOption("ntcp2.enabled", ntcp2);
|
||||||
|
if (ntcp2)
|
||||||
|
{
|
||||||
|
bool ntcp2Published; i2p::config::GetOption("ntcp2.published", ntcp2Published);
|
||||||
|
if (ntcp2Published)
|
||||||
|
{
|
||||||
|
uint16_t ntcp2Port; i2p::config::GetOption ("ntcp2.port", ntcp2Port);
|
||||||
|
if (!ntcp2Port) ntcp2Port = port;
|
||||||
|
m_RouterInfo.AddNTCP2Address (m_NTCP2Keys->staticPublicKey, m_NTCP2Keys->iv, boost::asio::ip::address::from_string (host), ntcp2Port);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_RouterInfo.AddNTCP2Address (m_NTCP2Keys->staticPublicKey, m_NTCP2Keys->iv);
|
||||||
|
}
|
||||||
|
}
|
||||||
m_RouterInfo.EnableV4 ();
|
m_RouterInfo.EnableV4 ();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
m_RouterInfo.DisableV4 ();
|
m_RouterInfo.DisableV4 ();
|
||||||
UpdateRouterInfo ();
|
UpdateRouterInfo ();
|
||||||
|
|
|
@ -151,6 +151,9 @@ namespace data
|
||||||
|
|
||||||
bool IsIntroducer () const { return caps & eSSUIntroducer; };
|
bool IsIntroducer () const { return caps & eSSUIntroducer; };
|
||||||
bool IsPeerTesting () const { return caps & eSSUTesting; };
|
bool IsPeerTesting () const { return caps & eSSUTesting; };
|
||||||
|
|
||||||
|
bool IsV4 () const { return (caps & AddressCaps::eV4) || host.is_v4 (); };
|
||||||
|
bool IsV6 () const { return (caps & AddressCaps::eV6) || host.is_v6 (); };
|
||||||
};
|
};
|
||||||
typedef std::list<std::shared_ptr<Address> > Addresses;
|
typedef std::list<std::shared_ptr<Address> > Addresses;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue