summaryrefslogtreecommitdiff
path: root/node/Node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/Node.cpp')
-rw-r--r--node/Node.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/node/Node.cpp b/node/Node.cpp
index dcf1d657..7b51d3bd 100644
--- a/node/Node.cpp
+++ b/node/Node.cpp
@@ -27,4 +27,127 @@
#include "Node.hpp"
#include "RuntimeEnvironment.hpp"
+#include "NetworkConfigMaster.hpp"
+#include "CMWC4096.hpp"
+#include "Switch.hpp"
+#include "Multicaster.hpp"
+#include "AntiRecursion.hpp"
+#include "Topology.hpp"
+#include "Buffer.hpp"
+#include "Packet.hpp"
+#include "Logger.hpp"
+#include "Address.hpp"
+#include "Identity.hpp"
+namespace ZeroTier {
+
+Node::Node(
+ ZT1_DataStoreGetFunction *dataStoreGetFunction,
+ ZT1_DataStorePutFunction *dataStorePutFunction,
+ ZT1_VirtualNetworkConfigCallback *networkConfigCallback,
+ ZT1_StatusCallback *statusCallback) :
+ RR(new RuntimeEnvironment(this)),
+ _outputWireMessages((ZT1_WireMessage *)0),
+ _outputWireMessageCount(0),
+ _outputWireMessageCapacity(8),
+ _outputWireMessages_m(),
+ _outputFrames((ZT1_VirtualNetworkFrame *)0),
+ _outputFrameCount(0),
+ _outputFrameCapacity(8),
+ _outputFrames_m(),
+ _dataStoreGetFunction(dataStoreGetFunction),
+ _dataStorePutFunction(dataStorePutFunction),
+ _networkConfigCallback(networkConfigCallback),
+ _statusCallback(statusCallback),
+ _networks(),
+ _networks_m(),
+ _now(0),
+ _timeOfLastPacketReceived(0),
+ _timeOfLastPrivilegedPacket(0),
+ _spamCounter(0)
+{
+ try {
+ _outputWireMessages = new ZT1_WireMessage[_outputWireMessageCapacity];
+ _outputFrames = new ZT1_VirtualNetworkFrame[_outputFrameCapacity];
+ RR->prng = new CMWC4096();
+ RR->sw = new Switch(RR);
+ RR->mc = new Multicaster(RR);
+ RR->antiRec = new AntiRecursion(RR);
+ RR->topology = new Topology(RR);
+ } catch ( ... ) {
+ delete [] _outputFrames;
+ delete [] _outputWireMessages;
+ delete RR->topology;
+ delete RR->antiRec;
+ delete RR->mc;
+ delete RR->sw;
+ delete RR->prng;
+ delete RR->log;
+ delete RR;
+ throw;
+ }
+}
+
+Node::~Node()
+{
+ delete [] _outputFrames;
+ delete [] _outputWireMessages;
+ delete RR->topology;
+ delete RR->antiRec;
+ delete RR->mc;
+ delete RR->sw;
+ delete RR->prng;
+ delete RR->log;
+ delete RR;
+}
+
+ZT1_ResultCode Node::run(
+ uint64_t now,
+ const ZT1_WireMessage *inputWireMessages,
+ unsigned int inputWireMessageCount,
+ const ZT1_VirtualNetworkFrame *inputFrames,
+ unsigned int inputFrameCount,
+ const ZT1_WireMessage **outputWireMessages,
+ unsigned int *outputWireMessageCount,
+ const ZT1_VirtualNetworkFrame **outputFrames,
+ unsigned int *outputLanFrameCount,
+ unsigned long *maxNextInterval)
+{
+}
+
+ZT1_ResultCode Node::join(uint64_t nwid)
+{
+}
+
+ZT1_ResultCode Node::leave(uint64_t nwid)
+{
+}
+
+void Node::status(ZT1_NodeStatus *status)
+{
+}
+
+ZT1_PeerList *Node::peers()
+{
+}
+
+ZT1_VirtualNetworkConfig *Node::networkConfig(uint64_t nwid)
+{
+}
+
+ZT1_VirtualNetworkList *Node::listNetworks()
+{
+}
+
+void Node::freeQueryResult(void *qr)
+{
+ if (qr)
+ ::free(qr);
+}
+
+void Node::setNetconfMaster(void *networkConfigMasterInstance)
+{
+ RR->netconfMaster = reinterpret_cast<NetworkConfigMaster *>(networkConfigMasterInstance);
+}
+
+} // namespace ZeroTier