|
|
@ -237,35 +237,47 @@ namespace data |
|
|
|
{ |
|
|
|
{ |
|
|
|
switch (*cap) |
|
|
|
switch (*cap) |
|
|
|
{ |
|
|
|
{ |
|
|
|
case 'f': |
|
|
|
case CAPS_FLAG_FLOODFILL: |
|
|
|
m_Caps |= Caps::eFloodfill; |
|
|
|
m_Caps |= Caps::eFloodfill; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 'M': |
|
|
|
case CAPS_FLAG_HIGH_BANDWIDTH1: |
|
|
|
case 'N': |
|
|
|
case CAPS_FLAG_HIGH_BANDWIDTH2: |
|
|
|
case 'O': |
|
|
|
case CAPS_FLAG_HIGH_BANDWIDTH3: |
|
|
|
m_Caps |= Caps::eHighBandwidth; |
|
|
|
m_Caps |= Caps::eHighBandwidth; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 'R': |
|
|
|
case CAPS_FLAG_HIDDEN: |
|
|
|
|
|
|
|
m_Caps |= Caps::eHidden; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case CAPS_FLAG_REACHABLE: |
|
|
|
m_Caps |= Caps::eReachable; |
|
|
|
m_Caps |= Caps::eReachable; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 'B': |
|
|
|
case CAPS_FLAG_UNREACHABLE: |
|
|
|
|
|
|
|
m_Caps |= Caps::eUnreachable; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case CAPS_FLAG_SSU_TESTING: |
|
|
|
m_Caps |= Caps::eSSUTesting; |
|
|
|
m_Caps |= Caps::eSSUTesting; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 'C': |
|
|
|
case CAPS_FLAG_SSU_INTRODUCER: |
|
|
|
m_Caps |= Caps::eSSUIntroducer; |
|
|
|
m_Caps |= Caps::eSSUIntroducer; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 'H': |
|
|
|
|
|
|
|
m_Caps |= Caps::eHidden; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 'U': |
|
|
|
|
|
|
|
m_Caps |= Caps::eUnreachable; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
default: ; |
|
|
|
default: ; |
|
|
|
} |
|
|
|
} |
|
|
|
cap++; |
|
|
|
cap++; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void RouterInfo::UpdateCapsProperty () |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
std::string caps; |
|
|
|
|
|
|
|
caps += (m_Caps & eHighBandwidth) ? CAPS_FLAG_HIGH_BANDWIDTH1 : CAPS_FLAG_LOW_BANDWIDTH2; // bandwidth
|
|
|
|
|
|
|
|
if (m_Caps & eFloodfill) caps += CAPS_FLAG_FLOODFILL; // floodfill
|
|
|
|
|
|
|
|
if (m_Caps & eHidden) caps += CAPS_FLAG_HIDDEN; // hidden
|
|
|
|
|
|
|
|
if (m_Caps & eReachable) caps += CAPS_FLAG_REACHABLE; // reachable
|
|
|
|
|
|
|
|
if (m_Caps & eUnreachable) caps += CAPS_FLAG_UNREACHABLE; // unreachable
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SetProperty ("caps", caps.c_str ()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void RouterInfo::UpdateIdentHashBase64 () |
|
|
|
void RouterInfo::UpdateIdentHashBase64 () |
|
|
|
{ |
|
|
|
{ |
|
|
|
size_t l = i2p::data::ByteStreamToBase64 (m_IdentHash, 32, m_IdentHashBase64, 48); |
|
|
|
size_t l = i2p::data::ByteStreamToBase64 (m_IdentHash, 32, m_IdentHashBase64, 48); |
|
|
@ -302,8 +314,8 @@ namespace data |
|
|
|
WriteString ("caps", properties); |
|
|
|
WriteString ("caps", properties); |
|
|
|
properties << '='; |
|
|
|
properties << '='; |
|
|
|
std::string caps; |
|
|
|
std::string caps; |
|
|
|
if (IsPeerTesting ()) caps += 'B'; |
|
|
|
if (IsPeerTesting ()) caps += CAPS_FLAG_SSU_TESTING; |
|
|
|
if (IsIntroducer ()) caps += 'C'; |
|
|
|
if (IsIntroducer ()) caps += CAPS_FLAG_SSU_INTRODUCER; |
|
|
|
WriteString (caps, properties); |
|
|
|
WriteString (caps, properties); |
|
|
|
properties << ';'; |
|
|
|
properties << ';'; |
|
|
|
} |
|
|
|
} |
|
|
@ -511,6 +523,12 @@ namespace data |
|
|
|
} |
|
|
|
} |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void RouterInfo::SetCaps (uint8_t caps) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
m_Caps = caps; |
|
|
|
|
|
|
|
UpdateCapsProperty (); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void RouterInfo::SetCaps (const char * caps) |
|
|
|
void RouterInfo::SetCaps (const char * caps) |
|
|
|
{ |
|
|
|
{ |
|
|
|