From 88a3c685fb5a4e756a1d6e280a5780c56c810a93 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 4 Aug 2020 13:52:57 -0700 Subject: [PATCH] latest --- controller/DB.cpp | 7 +++++++ controller/EmbeddedNetworkController.cpp | 4 ++++ node/Network.cpp | 1 + service/OneService.cpp | 15 +++++++++++++++ 4 files changed, 27 insertions(+) diff --git a/controller/DB.cpp b/controller/DB.cpp index dfa4fa094..a1a72f408 100644 --- a/controller/DB.cpp +++ b/controller/DB.cpp @@ -48,6 +48,8 @@ void DB::initNetwork(nlohmann::json &network) { "type","ACTION_ACCEPT" } }}; } + if (!network.count("dns")) network["dns"] = nlohmann::json::array(); + network["objtype"] = "network"; } @@ -110,6 +112,7 @@ bool DB::get(const uint64_t networkId,nlohmann::json &network) std::lock_guard l2(nw->lock); network = nw->config; } + fprintf(stderr, "DB::get(uint64_t,json): %s %s\n", OSUtils::jsonString(network["nwid"],"").c_str(), OSUtils::jsonDump(network["dns"], 2).c_str()); return true; } @@ -132,6 +135,7 @@ bool DB::get(const uint64_t networkId,nlohmann::json &network,const uint64_t mem return false; member = m->second; } + fprintf(stderr, "DB::get(uint64_t,json,uint64_t,mjson): %s %s\n", OSUtils::jsonString(network["nwid"],"").c_str(), OSUtils::jsonDump(network["dns"], 2).c_str()); return true; } @@ -155,6 +159,7 @@ bool DB::get(const uint64_t networkId,nlohmann::json &network,const uint64_t mem return false; member = m->second; } + fprintf(stderr, "DB::get(uint64_t,json,uint64_t,mjson,summary): %s %s\n", OSUtils::jsonString(network["nwid"],"").c_str(), OSUtils::jsonDump(network["dns"], 2).c_str()); return true; } @@ -175,6 +180,7 @@ bool DB::get(const uint64_t networkId,nlohmann::json &network,std::vectormembers.begin();m!=nw->members.end();++m) members.push_back(m->second); } + fprintf(stderr, "DB::get(uint64_t,json,members): %s %s\n", OSUtils::jsonString(network["nwid"],"").c_str(), OSUtils::jsonDump(network["dns"], 2).c_str()); return true; } @@ -305,6 +311,7 @@ void DB::_networkChanged(nlohmann::json &old,nlohmann::json &networkConfig,bool { if (networkConfig.is_object()) { const std::string ids = networkConfig["id"]; + fprintf(stderr, "DB::_networkChanged(): %s\n", OSUtils::jsonDump(networkConfig["dns"]).c_str()); const uint64_t networkId = Utils::hexStrToU64(ids.c_str()); if (networkId) { std::shared_ptr<_Network> nw; diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp index f37e4f776..b525895bd 100644 --- a/controller/EmbeddedNetworkController.cpp +++ b/controller/EmbeddedNetworkController.cpp @@ -1390,6 +1390,7 @@ void EmbeddedNetworkController::_request( nc->mtu = std::max(std::min((unsigned int)OSUtils::jsonInt(network["mtu"],ZT_DEFAULT_MTU),(unsigned int)ZT_MAX_MTU),(unsigned int)ZT_MIN_MTU); nc->multicastLimit = (unsigned int)OSUtils::jsonInt(network["multicastLimit"],32ULL); + std::string rtt(OSUtils::jsonString(member["remoteTraceTarget"],"")); if (rtt.length() == 10) { nc->remoteTraceTarget = Address(Utils::hexStrToU64(rtt.c_str())); @@ -1713,9 +1714,11 @@ void EmbeddedNetworkController::_request( } if(dns.is_array()) { + fprintf(stderr, "dns is array of size %d\n", dns.size()); nc->dnsCount = 0; for(unsigned int p=0; p < dns.size(); ++p) { json &d = dns[p]; + fprintf(stderr, "%s\n", OSUtils::jsonDump(d, 2).c_str()); if (d.is_object()) { std::string domain = OSUtils::jsonString(d["domain"],""); memcpy(nc->dns[nc->dnsCount].domain, domain.c_str(), domain.size()); @@ -1730,6 +1733,7 @@ void EmbeddedNetworkController::_request( } } } else { + fprintf(stderr, "dns is NOT an array\n"); dns = json::array(); } diff --git a/node/Network.cpp b/node/Network.cpp index 76b322af6..97642fa18 100644 --- a/node/Network.cpp +++ b/node/Network.cpp @@ -1429,6 +1429,7 @@ void Network::_externalConfig(ZT_VirtualNetworkConfig *ec) const } ec->dnsCount = _config.dnsCount; + fprintf(stderr, "Network::_externalConfig dnsCount: %d\n", ec->dnsCount); if (ec->dnsCount > 0) { memcpy(&ec->dns, &_config.dns, sizeof(ZT_VirtualNetworkDNS)); } diff --git a/service/OneService.cpp b/service/OneService.cpp index d9239a16c..f48e90640 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -231,6 +231,21 @@ static void _networkToJson(nlohmann::json &nj,const ZT_VirtualNetworkConfig *nc, mca.push_back(m); } nj["multicastSubscriptions"] = mca; + + nj["dns"] = nlohmann::json::array(); + for(unsigned int i=0;idnsCount;++i) { + nlohmann::json m; + m["domain"] = nc->dns[i].domain; + m["servers"] = nlohmann::json::array(); + for(int j=0;jdns[i].server_addr[j]); + if (a.isV4() || a.isV6()) { + char buf[256]; + m["servers"].push_back(a.toIpString(buf)); + } + } + } } static void _peerToJson(nlohmann::json &pj,const ZT_Peer *peer)