More detail and output improvements to command bus "listpeers," and a little cleanup.

This commit is contained in:
Adam Ierymenko 2013-08-06 11:50:56 -04:00
parent 499ac2699f
commit 5f8a3f4a7f
2 changed files with 24 additions and 7 deletions

View file

@ -123,11 +123,12 @@ public:
{ {
InetAddress v4(p->ipv4ActivePath(_now)); InetAddress v4(p->ipv4ActivePath(_now));
InetAddress v6(p->ipv6ActivePath(_now)); InetAddress v6(p->ipv6ActivePath(_now));
_P("200 listpeers %s %s %s %d", _P("200 listpeers %s %s %s %u %s",
p->address().toString().c_str(), p->address().toString().c_str(),
((v4) ? v4.toString().c_str() : "(none)"), ((v4) ? v4.toString().c_str() : "-"),
((v6) ? v6.toString().c_str() : "(none)"), ((v6) ? v6.toString().c_str() : "-"),
(((v4)||(v6)) ? (int)p->latency() : -1)); (((v4)||(v6)) ? p->latency() : 0),
p->remoteVersion().c_str());
} }
private: private:
@ -149,13 +150,14 @@ std::vector<std::string> NodeConfig::execute(const char *command)
_P("200 help help"); _P("200 help help");
_P("200 help listpeers"); _P("200 help listpeers");
_P("200 help listnetworks"); _P("200 help listnetworks");
_P("200 help join <network ID> [<network invitation code>]"); _P("200 help join <network ID>");
_P("200 help leave <network ID>"); _P("200 help leave <network ID>");
} else if (cmd[0] == "listpeers") { } else if (cmd[0] == "listpeers") {
_P("200 listpeers <ztaddr> <ipv4> <ipv6> <latency> <version>");
_r->topology->eachPeer(_DumpPeerStatistics(r)); _r->topology->eachPeer(_DumpPeerStatistics(r));
} else if (cmd[0] == "listnetworks") { } else if (cmd[0] == "listnetworks") {
Mutex::Lock _l(_networks_m); Mutex::Lock _l(_networks_m);
_P("200 listnetworks <nwid> <type> <dev> <ips>"); _P("200 listnetworks <nwid> <status> <type> <dev> <ips>");
for(std::map< uint64_t,SharedPtr<Network> >::const_iterator nw(_networks.begin());nw!=_networks.end();++nw) { for(std::map< uint64_t,SharedPtr<Network> >::const_iterator nw(_networks.begin());nw!=_networks.end();++nw) {
std::string tmp; std::string tmp;
std::set<InetAddress> ips(nw->second->tap().ips()); std::set<InetAddress> ips(nw->second->tap().ips());
@ -164,7 +166,9 @@ std::vector<std::string> NodeConfig::execute(const char *command)
tmp.push_back(','); tmp.push_back(',');
tmp.append(i->toString()); tmp.append(i->toString());
} }
_P("200 listnetworks %.16llx %s %s %s", // TODO: display network status, such as "permission denied to closed
// network" or "waiting".
_P("200 listnetworks %.16llx OK %s %s %s",
(unsigned long long)nw->first, (unsigned long long)nw->first,
(nw->second->isOpen() ? "public" : "private"), (nw->second->isOpen() ? "public" : "private"),
nw->second->tap().deviceName().c_str(), nw->second->tap().deviceName().c_str(),

View file

@ -347,6 +347,19 @@ public:
_vRevision = vrev; _vRevision = vrev;
} }
/**
* @return Remote version in string form or '?' if unknown
*/
inline std::string remoteVersion() const
{
if ((_vMajor)||(_vMinor)||(_vRevision)) {
char tmp[32];
sprintf(tmp,"%u.%u.%u",_vMajor,_vMinor,_vRevision);
return std::string(tmp);
}
return std::string("?");
}
/** /**
* Get and reset dirty flag * Get and reset dirty flag
* *