| 
					
				 | 
			
			
				@@ -867,12 +867,33 @@ void EmbeddedNetworkController::configureHTTPControlPlane( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	const std::function<void(const httplib::Request&, httplib::Response&, std::string)> setContent) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// Control plane Endpoints 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	std::string controllerPath = "/controller"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	std::string networkListPath = "/controller/network"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	std::string networkPath = "/controller/network/([0-9a-fA-F]{16})"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	std::string oldAndBustedNetworkCreatePath = "/controller/network/([0-9a-fA-F]{10})______"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	std::string memberListPath = "/controller/network/([0-9a-fA-F]{16})/member"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	std::string memberPath = "/controller/network/([0-9a-fA-F]{16})/member/([0-9a-fA-F]{10})"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	auto controllerGet = [&, setContent](const httplib::Request &req, httplib::Response &res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		char tmp[4096]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const bool dbOk = _db.isReady(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		OSUtils::ztsnprintf( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tmp, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sizeof(tmp), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"{\n\t\"controller\": true,\n\t\"apiVersion\": %d,\n\t\"clock\": %llu,\n\t\"databaseReady\": %s\n}\n", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ZT_NETCONF_CONTROLLER_API_VERSION, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			(unsigned long long)OSUtils::now(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			dbOk ? "true" : "false"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (!dbOk) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				res.status = 503; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			setContent(req, res, tmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s.Get(controllerPath, controllerGet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	sv6.Get(controllerPath, controllerGet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	auto networkListGet = [&, setContent](const httplib::Request &req, httplib::Response &res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		std::set<uint64_t> networkIds; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		_db.networks(networkIds); 
			 |