mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-02-02 06:54:15 +00:00
return relay tag for ipv6 introducer
This commit is contained in:
parent
5cca5472e6
commit
25eae3c116
@ -1172,7 +1172,7 @@ namespace data
|
|||||||
return GetRandomRouter (
|
return GetRandomRouter (
|
||||||
[](std::shared_ptr<const RouterInfo> router)->bool
|
[](std::shared_ptr<const RouterInfo> router)->bool
|
||||||
{
|
{
|
||||||
return router->IsIntroducer () && !router->IsHidden () && !router->IsFloodfill (); // floodfills don't send relay tag
|
return router->IsIntroducer (true) && !router->IsHidden () && !router->IsFloodfill (); // floodfills don't send relay tag
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1105,8 +1105,7 @@ namespace data
|
|||||||
|
|
||||||
bool RouterInfo::IsPeerTesting (bool v4) const
|
bool RouterInfo::IsPeerTesting (bool v4) const
|
||||||
{
|
{
|
||||||
auto supportedTransports = m_SupportedTransports & (v4 ? eSSUV4 : eSSUV6);
|
if (!(m_SupportedTransports & (v4 ? eSSUV4 : eSSUV6))) return false;
|
||||||
if (!supportedTransports) return false;
|
|
||||||
return (bool)GetAddress (
|
return (bool)GetAddress (
|
||||||
[v4](std::shared_ptr<const RouterInfo::Address> address)->bool
|
[v4](std::shared_ptr<const RouterInfo::Address> address)->bool
|
||||||
{
|
{
|
||||||
@ -1115,14 +1114,14 @@ namespace data
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RouterInfo::IsIntroducer () const
|
bool RouterInfo::IsIntroducer (bool v4) const
|
||||||
{
|
{
|
||||||
// TODO: support ipv6
|
if (!(m_SupportedTransports & (v4 ? eSSUV4 : eSSUV6))) return false;
|
||||||
if (!(m_SupportedTransports & eSSUV4)) return false;
|
|
||||||
return (bool)GetAddress (
|
return (bool)GetAddress (
|
||||||
[](std::shared_ptr<const RouterInfo::Address> address)->bool
|
[v4](std::shared_ptr<const RouterInfo::Address> address)->bool
|
||||||
{
|
{
|
||||||
return (address->transportStyle == eTransportSSU) && address->IsIntroducer ();
|
return (address->transportStyle == eTransportSSU) && address->IsIntroducer () &&
|
||||||
|
((v4 && address->IsV4 ()) || (!v4 && address->IsV6 ()));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ namespace data
|
|||||||
bool IsExtraBandwidth () const { return m_Caps & RouterInfo::eExtraBandwidth; };
|
bool IsExtraBandwidth () const { return m_Caps & RouterInfo::eExtraBandwidth; };
|
||||||
bool IsEligibleFloodfill () const;
|
bool IsEligibleFloodfill () const;
|
||||||
bool IsPeerTesting (bool v4) const;
|
bool IsPeerTesting (bool v4) const;
|
||||||
bool IsIntroducer () const;
|
bool IsIntroducer (bool v4) const;
|
||||||
|
|
||||||
uint8_t GetCaps () const { return m_Caps; };
|
uint8_t GetCaps () const { return m_Caps; };
|
||||||
void SetCaps (uint8_t caps);
|
void SetCaps (uint8_t caps);
|
||||||
|
@ -212,7 +212,7 @@ namespace transport
|
|||||||
{
|
{
|
||||||
uint8_t extendedOptionsLen = buf[headerSize];
|
uint8_t extendedOptionsLen = buf[headerSize];
|
||||||
headerSize++;
|
headerSize++;
|
||||||
if (extendedOptionsLen >= 3) // options are presented
|
if (extendedOptionsLen >= 2) // options are presented
|
||||||
{
|
{
|
||||||
uint16_t flags = bufbe16toh (buf + headerSize);
|
uint16_t flags = bufbe16toh (buf + headerSize);
|
||||||
sendRelayTag = flags & EXTENDED_OPTIONS_FLAG_REQUEST_RELAY_TAG;
|
sendRelayTag = flags & EXTENDED_OPTIONS_FLAG_REQUEST_RELAY_TAG;
|
||||||
@ -464,7 +464,7 @@ namespace transport
|
|||||||
else
|
else
|
||||||
s.Insert (address->host.to_v6 ().to_bytes ().data (), 16); // our IP V6
|
s.Insert (address->host.to_v6 ().to_bytes ().data (), 16); // our IP V6
|
||||||
s.Insert<uint16_t> (htobe16 (address->port)); // our port
|
s.Insert<uint16_t> (htobe16 (address->port)); // our port
|
||||||
if (sendRelayTag && i2p::context.GetRouterInfo ().IsIntroducer () && !IsV6 ())
|
if (sendRelayTag && i2p::context.GetRouterInfo ().IsIntroducer (!IsV6 ()))
|
||||||
{
|
{
|
||||||
RAND_bytes((uint8_t *)&m_SentRelayTag, 4);
|
RAND_bytes((uint8_t *)&m_SentRelayTag, 4);
|
||||||
if (!m_SentRelayTag) m_SentRelayTag = 1;
|
if (!m_SentRelayTag) m_SentRelayTag = 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user