mirror of
https://github.com/ZeroTier/ZeroTierOne
synced 2025-08-14 10:37:33 -07:00
netconf service work
This commit is contained in:
parent
8d30d51cf3
commit
741642ba53
5 changed files with 110 additions and 1 deletions
|
@ -67,6 +67,7 @@
|
|||
#include "Mutex.hpp"
|
||||
#include "Multicaster.hpp"
|
||||
#include "CMWC4096.hpp"
|
||||
#include "Service.hpp"
|
||||
|
||||
#include "../version.h"
|
||||
|
||||
|
@ -191,6 +192,10 @@ struct _NodeImpl
|
|||
}
|
||||
};
|
||||
|
||||
static void _netconfServiceMessageHandler(void *renv,Service &svc,const Dictionary &msg)
|
||||
{
|
||||
}
|
||||
|
||||
Node::Node(const char *hp)
|
||||
throw() :
|
||||
_impl(new _NodeImpl)
|
||||
|
@ -209,6 +214,10 @@ Node::~Node()
|
|||
{
|
||||
_NodeImpl *impl = (_NodeImpl *)_impl;
|
||||
|
||||
#ifndef __WINDOWS__
|
||||
delete impl->renv.netconfService;
|
||||
#endif
|
||||
|
||||
delete impl->renv.sysEnv;
|
||||
delete impl->renv.topology;
|
||||
delete impl->renv.sw;
|
||||
|
@ -337,6 +346,18 @@ Node::ReasonForTermination Node::run()
|
|||
return impl->terminateBecause(Node::NODE_UNRECOVERABLE_ERROR,"unknown exception during initialization");
|
||||
}
|
||||
|
||||
#ifndef __WINDOWS__
|
||||
try {
|
||||
std::string netconfServicePath(_r->homePath + ZT_PATH_SEPARATOR_S + "services.d" + ZT_PATH_SEPARATOR_S + "netconf.service");
|
||||
if (Utils::fileExists(netconfServicePath.c_str())) {
|
||||
LOG("netconf.d/netconfi.service appears to exist, starting...");
|
||||
_r->netconfService = new Service(_r,"netconf",netconfServicePath.c_str(),&_netconfServiceMessageHandler,_r);
|
||||
}
|
||||
} catch ( ... ) {
|
||||
LOG("unexpected exception attempting to start services");
|
||||
}
|
||||
#endif
|
||||
|
||||
try {
|
||||
uint64_t lastPingCheck = 0;
|
||||
uint64_t lastClean = Utils::now(); // don't need to do this immediately
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#define _ZT_RUNTIMEENVIRONMENT_HPP
|
||||
|
||||
#include <string>
|
||||
#include "Constants.hpp"
|
||||
#include "Identity.hpp"
|
||||
#include "Condition.hpp"
|
||||
|
||||
|
@ -42,6 +43,7 @@ class Topology;
|
|||
class SysEnv;
|
||||
class Multicaster;
|
||||
class CMWC4096;
|
||||
class Service;
|
||||
|
||||
/**
|
||||
* Holds global state for an instance of ZeroTier::Node
|
||||
|
@ -67,6 +69,9 @@ public:
|
|||
sw((Switch *)0),
|
||||
topology((Topology *)0),
|
||||
sysEnv((SysEnv *)0)
|
||||
#ifndef __WINDOWS__
|
||||
,netconfService((Service *)0)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -88,6 +93,10 @@ public:
|
|||
Switch *sw;
|
||||
Topology *topology;
|
||||
SysEnv *sysEnv;
|
||||
|
||||
#ifndef __WINDOWS__
|
||||
Service *netconfService; // may be null
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace ZeroTier
|
||||
|
|
|
@ -72,7 +72,11 @@ public:
|
|||
* @param handler Handler function to call when service generates output
|
||||
* @param arg First argument to service
|
||||
*/
|
||||
Service(const RuntimeEnvironment *renv,const char *name,const char *path,void (*handler)(void *,Service &,const Dictionary &),void *arg);
|
||||
Service(const RuntimeEnvironment *renv,
|
||||
const char *name,
|
||||
const char *path,
|
||||
void (*handler)(void *,Service &,const Dictionary &),
|
||||
void *arg);
|
||||
|
||||
virtual ~Service();
|
||||
|
||||
|
|
|
@ -119,6 +119,15 @@ public:
|
|||
*/
|
||||
static uint64_t getLastModified(const char *path);
|
||||
|
||||
/**
|
||||
* @param path Path to check
|
||||
* @return True if file or directory exists at path location
|
||||
*/
|
||||
static inline bool fileExists(const char *path)
|
||||
{
|
||||
return (getLastModified(path) != 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param t64 Time in ms since epoch
|
||||
* @return RFC1123 date string
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue