Some tap interface changes and integration into main.cpp for *nix systems.

This commit is contained in:
Adam Ierymenko 2014-08-06 16:24:30 -07:00
parent 8a804b5257
commit 92d9ad4a7f
4 changed files with 55 additions and 3 deletions

View file

@ -56,6 +56,7 @@
#endif
#include "node/Constants.hpp"
#include "node/Defaults.hpp"
#include "node/Utils.hpp"
#include "node/Node.hpp"
@ -63,6 +64,33 @@
#include "node/Identity.hpp"
#include "node/Thread.hpp"
#include "node/CertificateOfMembership.hpp"
#include "node/EthernetTapFactory.hpp"
#include "node/RoutingTable.hpp"
#ifdef __WINDOWS__
#include "osnet/WindowsEthernetTapFactory.hpp"
#include "osnet/WindowsRoutingTable.hpp"
#define ZTCreatePlatformEthernetTapFactory (new WindowsEthernetTapFactory(homeDir))
#define ZTCreatePlatformRoutingTable (new WindowsRoutingTable())
#endif
#ifdef __LINUX__
#include "osnet/LinuxEthernetTapFactory.hpp"
#include "osnet/LinuxRoutingTable.hpp"
#define ZTCreatePlatformEthernetTapFactory (new LinuxEthernetTapFactory())
#define ZTCreatePlatformRoutingTable (new LinuxRoutingTable())
#endif
#ifdef __APPLE__
#include "osnet/OSXEthernetTapFactory.hpp"
#include "osnet/BSDRoutingTable.hpp"
#define ZTCreatePlatformEthernetTapFactory (new OSXEthernetTapFactory(homeDir,"tap.kext"))
#define ZTCreatePlatformRoutingTable (new BSDRoutingTable())
#endif
#ifndef ZTCreatePlatformEthernetTapFactory
#error Sorry, this platform has no osnet/ implementation yet. Fork me on GitHub and add one?
#endif
using namespace ZeroTier;
@ -649,7 +677,7 @@ int main(int argc,char **argv)
fclose(pf);
}
}
#endif
#endif // __UNIX_LIKE__
#ifdef __WINDOWS__
if (winRunFromCommandLine) {
@ -670,12 +698,15 @@ int main(int argc,char **argv)
return 1;
}
}
#endif
#endif // __WINDOWS__
int exitCode = 0;
bool needsReset = false;
try {
node = new Node(homeDir,udpPort,tcpPort,needsReset);
EthernetTapFactory *tapFactory = ZTCreatePlatformEthernetTapFactory;
RoutingTable *routingTable = ZTCreatePlatformRoutingTable;
node = new Node(homeDir,tapFactory,routingTable,udpPort,tcpPort,needsReset);
switch(node->run()) {
#ifdef __WINDOWS__
case Node::NODE_RESTART_FOR_UPGRADE: {