diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp index a83894644..9cb971a58 100644 --- a/controller/EmbeddedNetworkController.cpp +++ b/controller/EmbeddedNetworkController.cpp @@ -918,6 +918,7 @@ void EmbeddedNetworkController::configureHTTPControlPlane( auto meta = json::object(); auto data = json::array(); + uint64_t networkCount = 0; for(std::set<uint64_t>::const_iterator nwid(networkIds.begin()); nwid != networkIds.end(); ++nwid) { json network; @@ -927,23 +928,26 @@ void EmbeddedNetworkController::configureHTTPControlPlane( std::vector<json> memTmp; if (_db.get(*nwid, network, memTmp)) { - uint64_t authorizedCount = 0; - uint64_t totalCount = memTmp.size(); + if (!network.is_null()) { + uint64_t authorizedCount = 0; + uint64_t totalCount = memTmp.size(); + networkCount++; - for (auto m = memTmp.begin(); m != memTmp.end(); ++m) { - bool a = OSUtils::jsonBool((*m)["authorized"], 0); - if (a) { authorizedCount++; } + for (auto m = memTmp.begin(); m != memTmp.end(); ++m) { + bool a = OSUtils::jsonBool((*m)["authorized"], 0); + if (a) { authorizedCount++; } + } + + auto nwMeta = json::object(); + nwMeta["totalMemberCount"] = totalCount; + nwMeta["authorizedMemberCount"] = authorizedCount; + network["meta"] = nwMeta; + + data.push_back(network); } - - auto nwMeta = json::object(); - nwMeta["totalMemberCount"] = totalCount; - nwMeta["authorizedMemberCount"] = authorizedCount; - network["meta"] = nwMeta; } - - data.push_back(network); } - meta["networkCount"] = networkIds.size(); + meta["networkCount"] = networkCount; auto out = json::object(); out["data"] = data; @@ -1090,26 +1094,26 @@ void EmbeddedNetworkController::configureHTTPControlPlane( auto out = nlohmann::json::object(); auto meta = nlohmann::json::object(); - auto members = nlohmann::json::array(); std::vector<json> memTmp; if (_db.get(nwid, network, memTmp)) { - members.push_back(memTmp); + uint64_t authorizedCount = 0; + uint64_t totalCount = memTmp.size(); + for (auto m = memTmp.begin(); m != memTmp.end(); ++m) { + bool a = OSUtils::jsonBool((*m)["authorized"], 0); + if (a) { authorizedCount++; } + } + + meta["totalCount"] = totalCount; + meta["authorizedCount"] = authorizedCount; + + out["data"] = memTmp; + out["meta"] = meta; + + setContent(req, res, out.dump()); + } else { + res.status = 404; + return; } - - uint64_t authorizedCount = 0; - uint64_t totalCount = memTmp.size(); - for (auto m = memTmp.begin(); m != memTmp.end(); ++m) { - bool a = OSUtils::jsonBool((*m)["authorized"], 0); - if (a) { authorizedCount++; } - } - - meta["totalCount"] = totalCount; - meta["authorizedCount"] = authorizedCount; - - out["data"] = members; - out["meta"] = meta; - - setContent(req, res, out.dump()); }; s.Get(memberListPath2, memberListGet2); sv6.Get(memberListPath2, memberListGet2); diff --git a/node/Network.cpp b/node/Network.cpp index e13b32d53..1f49c651c 100644 --- a/node/Network.cpp +++ b/node/Network.cpp @@ -114,14 +114,14 @@ static _doZtFilterResult _doZtFilter( // uncomment for easier debugging fprintf // if (!ztDest) { return DOZTFILTER_ACCEPT; } #ifdef ZT_TRACE - char buf[40], buf2[40]; - fprintf(stderr, "\nsrc %s dest %s inbound: %d ethertype %u", ztSource.toString(buf), ztDest.toString(buf2), inbound, etherType); + //char buf[40], buf2[40]; + //fprintf(stderr, "\nsrc %s dest %s inbound: %d ethertype %u", ztSource.toString(buf), ztDest.toString(buf2), inbound, etherType); #endif for(unsigned int rn=0;rn<ruleCount;++rn) { const ZT_VirtualNetworkRuleType rt = (ZT_VirtualNetworkRuleType)(rules[rn].t & 0x3f); #ifdef ZT_TRACE - fprintf(stderr, "\n%02u %02d", rn, rt); + //fprintf(stderr, "\n%02u %02d", rn, rt); #endif // First check if this is an ACTION @@ -135,19 +135,19 @@ static _doZtFilterResult _doZtFilter( case ZT_NETWORK_RULE_ACTION_DROP: { if (!!skipDrop) { #ifdef ZT_TRACE - fprintf(stderr, "\tskip Drop"); + //fprintf(stderr, "\tskip Drop"); #endif skipDrop = 0; continue; } #ifdef ZT_TRACE - fprintf(stderr, "\tDrop\n"); + //fprintf(stderr, "\tDrop\n"); #endif return DOZTFILTER_DROP; } case ZT_NETWORK_RULE_ACTION_ACCEPT: { #ifdef ZT_TRACE - fprintf(stderr, "\tAccept\n"); + //fprintf(stderr, "\tAccept\n"); #endif return (superAccept ? DOZTFILTER_SUPER_ACCEPT : DOZTFILTER_ACCEPT); // match, accept packet } @@ -473,12 +473,12 @@ static _doZtFilterResult _doZtFilter( if ((localTag != &(nconf.tags[nconf.tagCount]))&&(localTag->id() == rules[rn].v.tag.id)) { const Tag *const remoteTag = ((membership) ? membership->getTag(nconf,rules[rn].v.tag.id) : (const Tag *)0); #ifdef ZT_TRACE - fprintf(stderr, "\tlocal tag [%u: %u] remote tag [%u: %u] match [%u]", + /*fprintf(stderr, "\tlocal tag [%u: %u] remote tag [%u: %u] match [%u]", !!localTag ? localTag->id() : 0, !!localTag ? localTag->value() : 0, !!remoteTag ? remoteTag->id() : 0, !!remoteTag ? remoteTag->value() : 0, - thisRuleMatches); + thisRuleMatches);*/ #endif if (remoteTag) { const uint32_t ltv = localTag->value(); @@ -501,7 +501,7 @@ static _doZtFilterResult _doZtFilter( if ((inbound)&&(!superAccept)) { thisRuleMatches = hardNo; #ifdef ZT_TRACE - fprintf(stderr, "\tinbound "); + //fprintf(stderr, "\tinbound "); #endif } else { // Outbound side is not strict since if we have to match both tags and @@ -512,7 +512,7 @@ static _doZtFilterResult _doZtFilter( skipDrop = 1; thisRuleMatches = hardYes; #ifdef ZT_TRACE - fprintf(stderr, "\toutbound "); + //fprintf(stderr, "\toutbound "); #endif } } @@ -524,13 +524,13 @@ static _doZtFilterResult _doZtFilter( case ZT_NETWORK_RULE_MATCH_TAG_RECEIVER: { const Tag *const localTag = std::lower_bound(&(nconf.tags[0]),&(nconf.tags[nconf.tagCount]),rules[rn].v.tag.id,Tag::IdComparePredicate()); #ifdef ZT_TRACE - const Tag *const remoteTag = ((membership) ? membership->getTag(nconf,rules[rn].v.tag.id) : (const Tag *)0); + /*const Tag *const remoteTag = ((membership) ? membership->getTag(nconf,rules[rn].v.tag.id) : (const Tag *)0); fprintf(stderr, "\tlocal tag [%u: %u] remote tag [%u: %u] match [%u]", !!localTag ? localTag->id() : 0, !!localTag ? localTag->value() : 0, !!remoteTag ? remoteTag->id() : 0, !!remoteTag ? remoteTag->value() : 0, - thisRuleMatches); + thisRuleMatches);*/ #endif if (superAccept) { skipDrop = 1;