|
@@ -1606,18 +1606,20 @@ void EmbeddedNetworkController::_circuitTestCallback(ZT_Node *node,ZT_CircuitTes
|
|
|
void EmbeddedNetworkController::_getNetworkMemberInfo(uint64_t now,uint64_t nwid,_NetworkMemberInfo &nmi)
|
|
|
{
|
|
|
Mutex::Lock _mcl(_networkMemberCache_m);
|
|
|
- auto memberCacheEntry = _networkMemberCache[nwid];
|
|
|
+ std::map< Address,nlohmann::json > &memberCacheEntry = _networkMemberCache[nwid];
|
|
|
nmi.totalMemberCount = memberCacheEntry.size();
|
|
|
- for(std::map< Address,nlohmann::json >::const_iterator nm(memberCacheEntry.begin());nm!=memberCacheEntry.end();++nm) {
|
|
|
+ for(std::map< Address,nlohmann::json >::iterator nm(memberCacheEntry.begin());nm!=memberCacheEntry.end();++nm) {
|
|
|
if (_jB(nm->second["authorized"],false)) {
|
|
|
++nmi.authorizedMemberCount;
|
|
|
|
|
|
- auto mlog = nm->second["recentLog"];
|
|
|
- if ((mlog.is_array())&&(mlog.size() > 0)) {
|
|
|
- auto mlog1 = mlog[0];
|
|
|
- if (mlog1.is_object()) {
|
|
|
- if ((now - _jI(mlog1["ts"],0ULL)) < ZT_NETCONF_NODE_ACTIVE_THRESHOLD)
|
|
|
- ++nmi.activeMemberCount;
|
|
|
+ if (nm->second.count("recentLog")) {
|
|
|
+ json &mlog = nm->second["recentLog"];
|
|
|
+ if ((mlog.is_array())&&(mlog.size() > 0)) {
|
|
|
+ json &mlog1 = mlog[0];
|
|
|
+ if (mlog1.is_object()) {
|
|
|
+ if ((now - _jI(mlog1["ts"],0ULL)) < ZT_NETCONF_NODE_ACTIVE_THRESHOLD)
|
|
|
+ ++nmi.activeMemberCount;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1625,12 +1627,14 @@ void EmbeddedNetworkController::_getNetworkMemberInfo(uint64_t now,uint64_t nwid
|
|
|
nmi.activeBridges.insert(nm->first);
|
|
|
}
|
|
|
|
|
|
- auto mips = nm->second["ipAssignments"];
|
|
|
- if (mips.is_array()) {
|
|
|
- for(unsigned long i=0;i<mips.size();++i) {
|
|
|
- InetAddress mip(_jS(mips[i],""));
|
|
|
- if ((mip.ss_family == AF_INET)||(mip.ss_family == AF_INET6))
|
|
|
- nmi.allocatedIps.insert(mip);
|
|
|
+ if (nm->second.count("ipAssignments")) {
|
|
|
+ json &mips = nm->second["ipAssignments"];
|
|
|
+ if (mips.is_array()) {
|
|
|
+ for(unsigned long i=0;i<mips.size();++i) {
|
|
|
+ InetAddress mip(_jS(mips[i],""));
|
|
|
+ if ((mip.ss_family == AF_INET)||(mip.ss_family == AF_INET6))
|
|
|
+ nmi.allocatedIps.insert(mip);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
} else {
|