Browse Source

Add some additional detail to the peer record in CAPI and JSON control plane.

Adam Ierymenko 10 years ago
parent
commit
d2503172d8
4 changed files with 32 additions and 10 deletions
  1. 10 0
      include/ZeroTierOne.h
  2. 2 0
      node/Node.cpp
  3. 16 10
      one.cpp
  4. 4 0
      service/ControlPlane.cpp

+ 10 - 0
include/ZeroTierOne.h

@@ -560,6 +560,16 @@ typedef struct
 	 */
 	uint64_t address;
 
+	/**
+	 * Time we last received a unicast frame from this peer
+	 */
+	uint64_t lastUnicastFrame;
+
+	/**
+	 * Time we last received a multicast rame from this peer
+	 */
+	uint64_t lastMulticastFrame;
+
 	/**
 	 * Remote major version or -1 if not known
 	 */

+ 2 - 0
node/Node.cpp

@@ -343,6 +343,8 @@ ZT1_PeerList *Node::peers() const
 	for(std::map< Address,SharedPtr<Peer> >::iterator pi(peers.begin());pi!=peers.end();++pi) {
 		ZT1_Peer *p = &(pl->peers[pl->peerCount++]);
 		p->address = pi->second->address().toInt();
+		p->lastUnicastFrame = pi->second->lastUnicastFrame();
+		p->lastMulticastFrame = pi->second->lastMulticastFrame();
 		if (pi->second->remoteVersionKnown()) {
 			p->versionMajor = pi->second->remoteVersionMajor();
 			p->versionMinor = pi->second->remoteVersionMinor();

+ 16 - 10
one.cpp

@@ -675,16 +675,6 @@ int main(int argc,char **argv)
 			return 0; // forked
 		// else p == 0, so we are daemonized
 	}
-
-	{
-		// Write .pid file to home folder
-		std::string pidPath(homeDir + ZT_PATH_SEPARATOR_S + ZT1_PID_PATH);
-		FILE *pf = fopen(pidPath.c_str(),"w");
-		if (pf) {
-			fprintf(pf,"%ld",(long)getpid());
-			fclose(pf);
-		}
-	}
 #endif // __UNIX_LIKE__
 
 #ifdef __WINDOWS__
@@ -723,6 +713,18 @@ int main(int argc,char **argv)
 	}
 #endif // ZT_ENABLE_NETWORK_CONTROLLER
 
+#ifdef __UNIX_LIKE__
+	std::string pidPath(homeDir + ZT_PATH_SEPARATOR_S + ZT1_PID_PATH);
+	{
+		// Write .pid file to home folder
+		FILE *pf = fopen(pidPath.c_str(),"w");
+		if (pf) {
+			fprintf(pf,"%ld",(long)getpid());
+			fclose(pf);
+		}
+	}
+#endif // __UNIX_LIKE__
+
 	unsigned int returnValue = 0;
 
 	try {
@@ -762,5 +764,9 @@ int main(int argc,char **argv)
 	zt1Service = (OneService *)0;
 	delete controller;
 
+#ifdef __UNIX_LIKE__
+	OSUtils::rm(pidPath.c_str());
+#endif
+
 	return returnValue;
 }

+ 4 - 0
service/ControlPlane.cpp

@@ -177,6 +177,8 @@ static void _jsonAppend(std::string &buf,const ZT1_Peer *peer)
 	Utils::snprintf(json,sizeof(json),
 		"{"
 		"\"address\": \"%.10llx\","
+		"\"lastUnicastFrame\": %llu,"
+		"\"lastMulticastFrame\": %llu,"
 		"\"versionMajor\": %d,"
 		"\"versionMinor\": %d,"
 		"\"versionRev\": %d,"
@@ -186,6 +188,8 @@ static void _jsonAppend(std::string &buf,const ZT1_Peer *peer)
 		"\"paths\": %s"
 		"}",
 		peer->address,
+		peer->lastUnicastFrame,
+		peer->lastMulticastFrame,
 		peer->versionMajor,
 		peer->versionMinor,
 		peer->versionRev,