internal numeric id for families

This commit is contained in:
orignal 2022-03-24 15:50:20 -04:00
parent fb6ecdde1e
commit ee1c4f4fdc
8 changed files with 49 additions and 31 deletions

View file

@ -41,7 +41,7 @@ namespace data
}
RouterInfo::RouterInfo (const std::string& fullPath):
m_IsUpdated (false), m_IsUnreachable (false),
m_FamilyID (0), m_IsUpdated (false), m_IsUnreachable (false),
m_SupportedTransports (0),m_ReachableTransports (0),
m_Caps (0), m_Version (0)
{
@ -51,8 +51,9 @@ namespace data
}
RouterInfo::RouterInfo (std::shared_ptr<Buffer>&& buf, size_t len):
m_IsUpdated (true), m_IsUnreachable (false), m_SupportedTransports (0),
m_ReachableTransports (0), m_Caps (0), m_Version (0)
m_FamilyID (0), m_IsUpdated (true), m_IsUnreachable (false),
m_SupportedTransports (0), m_ReachableTransports (0),
m_Caps (0), m_Version (0)
{
if (len <= MAX_RI_BUFFER_SIZE)
{
@ -442,6 +443,7 @@ namespace data
// read properties
m_Version = 0;
bool isNetId = false;
std::string family;
uint16_t size, r = 0;
s.read ((char *)&size, sizeof (size)); if (!s) return;
size = be16toh (size);
@ -486,16 +488,15 @@ namespace data
// family
else if (!strcmp (key, ROUTER_INFO_PROPERTY_FAMILY))
{
m_Family = value;
boost::to_lower (m_Family);
family = value;
boost::to_lower (family);
}
else if (!strcmp (key, ROUTER_INFO_PROPERTY_FAMILY_SIG))
{
if (!netdb.GetFamilies ().VerifyFamily (m_Family, GetIdentHash (), value))
{
LogPrint (eLogWarning, "RouterInfo: Family signature verification failed");
m_Family.clear ();
}
if (netdb.GetFamilies ().VerifyFamily (family, GetIdentHash (), value))
m_FamilyID = netdb.GetFamilies ().GetFamilyID (family);
else
LogPrint (eLogWarning, "RouterInfo: Family ", family, " signature verification failed");
}
if (!s) return;
@ -505,9 +506,9 @@ namespace data
SetUnreachable (true);
}
bool RouterInfo::IsFamily(const std::string & fam) const
bool RouterInfo::IsFamily (FamilyID famid) const
{
return m_Family == fam;
return m_FamilyID == famid;
}
void RouterInfo::ExtractCaps (const char * value)