فهرست منبع

More reorg, work in progress.

Adam Ierymenko 5 سال پیش
والد
کامیت
3c11c13af4
100فایلهای تغییر یافته به همراه171 افزوده شده و 171 حذف شده
  1. 0 0
      attic/java/CMakeLists.txt
  2. 0 0
      attic/java/README.md
  3. 0 0
      attic/java/build.xml
  4. 0 0
      attic/java/jni/Android.mk
  5. 0 0
      attic/java/jni/Application.mk
  6. 0 0
      attic/java/jni/ZT_jnilookup.cpp
  7. 0 0
      attic/java/jni/ZT_jnilookup.h
  8. 0 0
      attic/java/jni/ZT_jniutils.cpp
  9. 0 0
      attic/java/jni/ZT_jniutils.h
  10. 0 0
      attic/java/jni/com_zerotierone_sdk_Node.cpp
  11. 0 0
      attic/java/jni/com_zerotierone_sdk_Node.h
  12. 0 0
      attic/java/src/com/zerotier/sdk/DataStoreGetListener.java
  13. 0 0
      attic/java/src/com/zerotier/sdk/DataStorePutListener.java
  14. 0 0
      attic/java/src/com/zerotier/sdk/Event.java
  15. 0 0
      attic/java/src/com/zerotier/sdk/EventListener.java
  16. 0 0
      attic/java/src/com/zerotier/sdk/NativeUtils.java
  17. 0 0
      attic/java/src/com/zerotier/sdk/Node.java
  18. 0 0
      attic/java/src/com/zerotier/sdk/NodeException.java
  19. 0 0
      attic/java/src/com/zerotier/sdk/NodeStatus.java
  20. 0 0
      attic/java/src/com/zerotier/sdk/PacketSender.java
  21. 0 0
      attic/java/src/com/zerotier/sdk/PathChecker.java
  22. 0 0
      attic/java/src/com/zerotier/sdk/Peer.java
  23. 0 0
      attic/java/src/com/zerotier/sdk/PeerPhysicalPath.java
  24. 0 0
      attic/java/src/com/zerotier/sdk/PeerRole.java
  25. 0 0
      attic/java/src/com/zerotier/sdk/ResultCode.java
  26. 0 0
      attic/java/src/com/zerotier/sdk/Version.java
  27. 0 0
      attic/java/src/com/zerotier/sdk/VirtualNetworkConfig.java
  28. 0 0
      attic/java/src/com/zerotier/sdk/VirtualNetworkConfigListener.java
  29. 0 0
      attic/java/src/com/zerotier/sdk/VirtualNetworkConfigOperation.java
  30. 0 0
      attic/java/src/com/zerotier/sdk/VirtualNetworkFrameListener.java
  31. 0 0
      attic/java/src/com/zerotier/sdk/VirtualNetworkRoute.java
  32. 0 0
      attic/java/src/com/zerotier/sdk/VirtualNetworkStatus.java
  33. 0 0
      attic/java/src/com/zerotier/sdk/VirtualNetworkType.java
  34. 3 3
      controller/DB.hpp
  35. 6 6
      controller/EmbeddedNetworkController.cpp
  36. 5 5
      controller/EmbeddedNetworkController.hpp
  37. 1 1
      controller/PostgreSQL.cpp
  38. 1 1
      controller/RabbitMQ.hpp
  39. 0 0
      core/AES.cpp
  40. 0 0
      core/AES.hpp
  41. 0 0
      core/Address.hpp
  42. 0 0
      core/Buf.cpp
  43. 0 0
      core/Buf.hpp
  44. 0 0
      core/C25519.cpp
  45. 0 0
      core/C25519.hpp
  46. 0 0
      core/CMakeLists.txt
  47. 0 0
      core/Capability.cpp
  48. 0 0
      core/Capability.hpp
  49. 0 0
      core/CertificateOfMembership.cpp
  50. 0 0
      core/CertificateOfMembership.hpp
  51. 0 0
      core/CertificateOfOwnership.cpp
  52. 0 0
      core/CertificateOfOwnership.hpp
  53. 1 1
      core/Constants.hpp
  54. 0 0
      core/Containers.hpp
  55. 0 0
      core/Credential.cpp
  56. 0 0
      core/Credential.hpp
  57. 0 0
      core/Defragmenter.hpp
  58. 0 0
      core/Dictionary.cpp
  59. 0 0
      core/Dictionary.hpp
  60. 0 0
      core/ECC384.cpp
  61. 0 0
      core/ECC384.hpp
  62. 0 0
      core/Endpoint.cpp
  63. 0 0
      core/Endpoint.hpp
  64. 0 0
      core/EphemeralKey.hpp
  65. 0 0
      core/Expect.hpp
  66. 0 0
      core/FCV.hpp
  67. 0 0
      core/Fingerprint.hpp
  68. 0 0
      core/Identity.cpp
  69. 0 0
      core/Identity.hpp
  70. 0 0
      core/InetAddress.cpp
  71. 0 0
      core/InetAddress.hpp
  72. 0 0
      core/LZ4.cpp
  73. 0 0
      core/LZ4.hpp
  74. 0 0
      core/Locator.cpp
  75. 0 0
      core/Locator.hpp
  76. 0 0
      core/MAC.hpp
  77. 0 0
      core/Membership.cpp
  78. 0 0
      core/Membership.hpp
  79. 0 0
      core/Meter.hpp
  80. 0 0
      core/MulticastGroup.hpp
  81. 154 154
      core/Mutex.hpp
  82. 0 0
      core/Network.cpp
  83. 0 0
      core/Network.hpp
  84. 0 0
      core/NetworkConfig.cpp
  85. 0 0
      core/NetworkConfig.hpp
  86. 0 0
      core/NetworkController.hpp
  87. 0 0
      core/Node.cpp
  88. 0 0
      core/Node.hpp
  89. 0 0
      core/OS.hpp
  90. 0 0
      core/Path.cpp
  91. 0 0
      core/Path.hpp
  92. 0 0
      core/Peer.cpp
  93. 0 0
      core/Peer.hpp
  94. 0 0
      core/Poly1305.cpp
  95. 0 0
      core/Poly1305.hpp
  96. 0 0
      core/Protocol.hpp
  97. 0 0
      core/README.md
  98. 0 0
      core/Revocation.cpp
  99. 0 0
      core/Revocation.hpp
  100. 0 0
      core/RuntimeEnvironment.hpp

+ 0 - 0
java/CMakeLists.txt → attic/java/CMakeLists.txt


+ 0 - 0
java/README.md → attic/java/README.md


+ 0 - 0
java/build.xml → attic/java/build.xml


+ 0 - 0
java/jni/Android.mk → attic/java/jni/Android.mk


+ 0 - 0
java/jni/Application.mk → attic/java/jni/Application.mk


+ 0 - 0
java/jni/ZT_jnilookup.cpp → attic/java/jni/ZT_jnilookup.cpp


+ 0 - 0
java/jni/ZT_jnilookup.h → attic/java/jni/ZT_jnilookup.h


+ 0 - 0
java/jni/ZT_jniutils.cpp → attic/java/jni/ZT_jniutils.cpp


+ 0 - 0
java/jni/ZT_jniutils.h → attic/java/jni/ZT_jniutils.h


+ 0 - 0
java/jni/com_zerotierone_sdk_Node.cpp → attic/java/jni/com_zerotierone_sdk_Node.cpp


+ 0 - 0
java/jni/com_zerotierone_sdk_Node.h → attic/java/jni/com_zerotierone_sdk_Node.h


+ 0 - 0
java/src/com/zerotier/sdk/DataStoreGetListener.java → attic/java/src/com/zerotier/sdk/DataStoreGetListener.java


+ 0 - 0
java/src/com/zerotier/sdk/DataStorePutListener.java → attic/java/src/com/zerotier/sdk/DataStorePutListener.java


+ 0 - 0
java/src/com/zerotier/sdk/Event.java → attic/java/src/com/zerotier/sdk/Event.java


+ 0 - 0
java/src/com/zerotier/sdk/EventListener.java → attic/java/src/com/zerotier/sdk/EventListener.java


+ 0 - 0
java/src/com/zerotier/sdk/NativeUtils.java → attic/java/src/com/zerotier/sdk/NativeUtils.java


+ 0 - 0
java/src/com/zerotier/sdk/Node.java → attic/java/src/com/zerotier/sdk/Node.java


+ 0 - 0
java/src/com/zerotier/sdk/NodeException.java → attic/java/src/com/zerotier/sdk/NodeException.java


+ 0 - 0
java/src/com/zerotier/sdk/NodeStatus.java → attic/java/src/com/zerotier/sdk/NodeStatus.java


+ 0 - 0
java/src/com/zerotier/sdk/PacketSender.java → attic/java/src/com/zerotier/sdk/PacketSender.java


+ 0 - 0
java/src/com/zerotier/sdk/PathChecker.java → attic/java/src/com/zerotier/sdk/PathChecker.java


+ 0 - 0
java/src/com/zerotier/sdk/Peer.java → attic/java/src/com/zerotier/sdk/Peer.java


+ 0 - 0
java/src/com/zerotier/sdk/PeerPhysicalPath.java → attic/java/src/com/zerotier/sdk/PeerPhysicalPath.java


+ 0 - 0
java/src/com/zerotier/sdk/PeerRole.java → attic/java/src/com/zerotier/sdk/PeerRole.java


+ 0 - 0
java/src/com/zerotier/sdk/ResultCode.java → attic/java/src/com/zerotier/sdk/ResultCode.java


+ 0 - 0
java/src/com/zerotier/sdk/Version.java → attic/java/src/com/zerotier/sdk/Version.java


+ 0 - 0
java/src/com/zerotier/sdk/VirtualNetworkConfig.java → attic/java/src/com/zerotier/sdk/VirtualNetworkConfig.java


+ 0 - 0
java/src/com/zerotier/sdk/VirtualNetworkConfigListener.java → attic/java/src/com/zerotier/sdk/VirtualNetworkConfigListener.java


+ 0 - 0
java/src/com/zerotier/sdk/VirtualNetworkConfigOperation.java → attic/java/src/com/zerotier/sdk/VirtualNetworkConfigOperation.java


+ 0 - 0
java/src/com/zerotier/sdk/VirtualNetworkFrameListener.java → attic/java/src/com/zerotier/sdk/VirtualNetworkFrameListener.java


+ 0 - 0
java/src/com/zerotier/sdk/VirtualNetworkRoute.java → attic/java/src/com/zerotier/sdk/VirtualNetworkRoute.java


+ 0 - 0
java/src/com/zerotier/sdk/VirtualNetworkStatus.java → attic/java/src/com/zerotier/sdk/VirtualNetworkStatus.java


+ 0 - 0
java/src/com/zerotier/sdk/VirtualNetworkType.java → attic/java/src/com/zerotier/sdk/VirtualNetworkType.java


+ 3 - 3
controller/DB.hpp

@@ -16,9 +16,9 @@
 
 //#define ZT_CONTROLLER_USE_LIBPQ
 
-#include "../node/Constants.hpp"
-#include "../node/Identity.hpp"
-#include "../node/InetAddress.hpp"
+#include "../core/Constants.hpp"
+#include "../core/Identity.hpp"
+#include "../core/InetAddress.hpp"
 #include "../osdep/OSUtils.hpp"
 #include "../osdep/BlockingQueue.hpp"
 

+ 6 - 6
controller/EmbeddedNetworkController.cpp

@@ -21,12 +21,12 @@
 #include <thread>
 #include <memory>
 
-#include "../node/Constants.hpp"
-#include "../node/Node.hpp"
-#include "../node/CertificateOfMembership.hpp"
-#include "../node/NetworkConfig.hpp"
-#include "../node/Dictionary.hpp"
-#include "../node/MAC.hpp"
+#include "../core/Constants.hpp"
+#include "../core/Node.hpp"
+#include "../core/CertificateOfMembership.hpp"
+#include "../core/NetworkConfig.hpp"
+#include "../core/Dictionary.hpp"
+#include "../core/MAC.hpp"
 
 #include "EmbeddedNetworkController.hpp"
 #include "LFDB.hpp"

+ 5 - 5
controller/EmbeddedNetworkController.hpp

@@ -25,11 +25,11 @@
 #include <unordered_map>
 #include <atomic>
 
-#include "../node/Constants.hpp"
-#include "../node/NetworkController.hpp"
-#include "../node/Utils.hpp"
-#include "../node/Address.hpp"
-#include "../node/InetAddress.hpp"
+#include "../core/Constants.hpp"
+#include "../core/NetworkController.hpp"
+#include "../core/Utils.hpp"
+#include "../core/Address.hpp"
+#include "../core/InetAddress.hpp"
 
 #include "../osdep/OSUtils.hpp"
 #include "../osdep/Thread.hpp"

+ 1 - 1
controller/PostgreSQL.cpp

@@ -15,7 +15,7 @@
 
 #ifdef ZT_CONTROLLER_USE_LIBPQ
 
-#include "../node/Constants.hpp"
+#include "../core/Constants.hpp"
 #include "EmbeddedNetworkController.hpp"
 #include "RabbitMQ.hpp"
 #include "../version.h"

+ 1 - 1
controller/RabbitMQ.hpp

@@ -29,7 +29,7 @@ struct MQConfig {
 
 #ifdef ZT_CONTROLLER_USE_LIBPQ
 
-#include "../node/Mutex.hpp"
+#include "../core/Mutex.hpp"
 
 #include <amqp.h>
 #include <amqp_tcp_socket.h>

+ 0 - 0
node/AES.cpp → core/AES.cpp


+ 0 - 0
node/AES.hpp → core/AES.hpp


+ 0 - 0
node/Address.hpp → core/Address.hpp


+ 0 - 0
node/Buf.cpp → core/Buf.cpp


+ 0 - 0
node/Buf.hpp → core/Buf.hpp


+ 0 - 0
node/C25519.cpp → core/C25519.cpp


+ 0 - 0
node/C25519.hpp → core/C25519.hpp


+ 0 - 0
node/CMakeLists.txt → core/CMakeLists.txt


+ 0 - 0
node/Capability.cpp → core/Capability.cpp


+ 0 - 0
node/Capability.hpp → core/Capability.hpp


+ 0 - 0
node/CertificateOfMembership.cpp → core/CertificateOfMembership.cpp


+ 0 - 0
node/CertificateOfMembership.hpp → core/CertificateOfMembership.hpp


+ 0 - 0
node/CertificateOfOwnership.cpp → core/CertificateOfOwnership.cpp


+ 0 - 0
node/CertificateOfOwnership.hpp → core/CertificateOfOwnership.hpp


+ 1 - 1
node/Constants.hpp → core/Constants.hpp

@@ -14,7 +14,7 @@
 #ifndef ZT_CONSTANTS_HPP
 #define ZT_CONSTANTS_HPP
 
-#include "../include/ZeroTierCore.h"
+#include "ZeroTierCore.h"
 #include "OS.hpp"
 
 #if __has_include("version.h")

+ 0 - 0
node/Containers.hpp → core/Containers.hpp


+ 0 - 0
node/Credential.cpp → core/Credential.cpp


+ 0 - 0
node/Credential.hpp → core/Credential.hpp


+ 0 - 0
node/Defragmenter.hpp → core/Defragmenter.hpp


+ 0 - 0
node/Dictionary.cpp → core/Dictionary.cpp


+ 0 - 0
node/Dictionary.hpp → core/Dictionary.hpp


+ 0 - 0
node/ECC384.cpp → core/ECC384.cpp


+ 0 - 0
node/ECC384.hpp → core/ECC384.hpp


+ 0 - 0
node/Endpoint.cpp → core/Endpoint.cpp


+ 0 - 0
node/Endpoint.hpp → core/Endpoint.hpp


+ 0 - 0
node/EphemeralKey.hpp → core/EphemeralKey.hpp


+ 0 - 0
node/Expect.hpp → core/Expect.hpp


+ 0 - 0
node/FCV.hpp → core/FCV.hpp


+ 0 - 0
node/Fingerprint.hpp → core/Fingerprint.hpp


+ 0 - 0
node/Identity.cpp → core/Identity.cpp


+ 0 - 0
node/Identity.hpp → core/Identity.hpp


+ 0 - 0
node/InetAddress.cpp → core/InetAddress.cpp


+ 0 - 0
node/InetAddress.hpp → core/InetAddress.hpp


+ 0 - 0
node/LZ4.cpp → core/LZ4.cpp


+ 0 - 0
node/LZ4.hpp → core/LZ4.hpp


+ 0 - 0
node/Locator.cpp → core/Locator.cpp


+ 0 - 0
node/Locator.hpp → core/Locator.hpp


+ 0 - 0
node/MAC.hpp → core/MAC.hpp


+ 0 - 0
node/Membership.cpp → core/Membership.cpp


+ 0 - 0
node/Membership.hpp → core/Membership.hpp


+ 0 - 0
node/Meter.hpp → core/Meter.hpp


+ 0 - 0
node/MulticastGroup.hpp → core/MulticastGroup.hpp


+ 154 - 154
node/Mutex.hpp → core/Mutex.hpp

@@ -1,154 +1,154 @@
-/*
- * Copyright (c)2013-2020 ZeroTier, Inc.
- *
- * Use of this software is governed by the Business Source License included
- * in the LICENSE.TXT file in the project's root directory.
- *
- * Change Date: 2024-01-01
- *
- * On the date above, in accordance with the Business Source License, use
- * of this software will be governed by version 2.0 of the Apache License.
- */
-/****/
-
-#ifndef ZT_MUTEX_HPP
-#define ZT_MUTEX_HPP
-
-#include "Constants.hpp"
-
-#include <cstdint>
-#include <cstdlib>
-
-#ifndef __WINDOWS__
-#include <pthread.h>
-#endif
-
-namespace ZeroTier {
-
-class Mutex
-{
-public:
-	ZT_INLINE Mutex() noexcept { pthread_mutex_init(&_mh,nullptr); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
-	ZT_INLINE ~Mutex() noexcept { pthread_mutex_destroy(&_mh); }
-
-	ZT_INLINE void lock() const noexcept { pthread_mutex_lock(&((const_cast <Mutex *> (this))->_mh)); }
-	ZT_INLINE void unlock() const noexcept { pthread_mutex_unlock(&((const_cast <Mutex *> (this))->_mh)); }
-
-	class Lock
-	{
-	public:
-		explicit ZT_INLINE Lock(Mutex &m) noexcept : _m(&m) { m.lock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
-		explicit ZT_INLINE Lock(const Mutex &m) noexcept : _m(const_cast<Mutex *>(&m)) { _m->lock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
-		ZT_INLINE ~Lock() { _m->unlock(); }
-	private:
-		Mutex *const _m;
-	};
-
-private:
-	ZT_INLINE Mutex(const Mutex &) noexcept {} // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
-	ZT_INLINE const Mutex &operator=(const Mutex &) noexcept { return *this; }
-
-	pthread_mutex_t _mh;
-};
-
-class RWMutex
-{
-public:
-	ZT_INLINE RWMutex() noexcept { pthread_rwlock_init(&_mh,nullptr); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
-	ZT_INLINE ~RWMutex() noexcept { pthread_rwlock_destroy(&_mh); }
-
-	ZT_INLINE void lock() const noexcept { pthread_rwlock_wrlock(&((const_cast <RWMutex *> (this))->_mh)); }
-	ZT_INLINE void rlock() const noexcept { pthread_rwlock_rdlock(&((const_cast <RWMutex *> (this))->_mh)); }
-	ZT_INLINE void unlock() const noexcept { pthread_rwlock_unlock(&((const_cast <RWMutex *> (this))->_mh)); }
-	ZT_INLINE void runlock() const noexcept { pthread_rwlock_unlock(&((const_cast <RWMutex *> (this))->_mh)); }
-
-	/**
-	 * RAAI locker that acquires only the read lock (shared read)
-	 */
-	class RLock
-	{
-	public:
-		explicit ZT_INLINE RLock(RWMutex &m) noexcept : _m(&m) { m.rlock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
-		explicit ZT_INLINE RLock(const RWMutex &m) noexcept : _m(const_cast<RWMutex *>(&m)) { _m->rlock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
-		ZT_INLINE ~RLock() { _m->runlock(); }
-	private:
-		RWMutex *const _m;
-	};
-
-	/**
-	 * RAAI locker that acquires the write lock (exclusive write, no readers)
-	 */
-	class Lock
-	{
-	public:
-		explicit ZT_INLINE Lock(RWMutex &m) noexcept : _m(&m) { m.lock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
-		explicit ZT_INLINE Lock(const RWMutex &m) noexcept : _m(const_cast<RWMutex *>(&m)) { _m->lock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
-		ZT_INLINE ~Lock() { _m->unlock(); }
-	private:
-		RWMutex *const _m;
-	};
-
-	/**
-	 * RAAI locker that acquires the read lock first and can switch modes
-	 *
-	 * Use writing() to acquire the write lock if not already acquired. Use reading() to
-	 * let go of the write lock and go back to only holding the read lock.
-	 */
-	class RMaybeWLock
-	{
-	public:
-		explicit ZT_INLINE RMaybeWLock(RWMutex &m) noexcept : _m(&m),_w(false) { m.rlock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
-		explicit ZT_INLINE RMaybeWLock(const RWMutex &m) noexcept : _m(const_cast<RWMutex *>(&m)),_w(false) { _m->rlock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
-		ZT_INLINE void writing() noexcept { if (!_w) { _w = true; _m->runlock(); _m->lock(); } }
-		ZT_INLINE void reading() noexcept { if (_w) { _w = false; _m->unlock(); _m->rlock(); } }
-		ZT_INLINE ~RMaybeWLock() { if (_w) _m->unlock(); else _m->runlock(); }
-	private:
-		RWMutex *const _m;
-		bool _w;
-	};
-
-private:
-	ZT_INLINE RWMutex(const RWMutex &) noexcept {} // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
-	ZT_INLINE const RWMutex &operator=(const RWMutex &) noexcept { return *this; }
-
-	pthread_rwlock_t _mh;
-};
-
-} // namespace ZeroTier
-
-#if 0
-#include <Windows.h>
-
-namespace ZeroTier {
-
-class Mutex
-{
-public:
-	ZT_INLINE Mutex() { InitializeCriticalSection(&_cs); }
-	ZT_INLINE ~Mutex() { DeleteCriticalSection(&_cs); }
-	ZT_INLINE void lock() { EnterCriticalSection(&_cs); }
-	ZT_INLINE void unlock() { LeaveCriticalSection(&_cs); }
-	ZT_INLINE void lock() const { (const_cast <Mutex *> (this))->lock(); }
-	ZT_INLINE void unlock() const { (const_cast <Mutex *> (this))->unlock(); }
-
-	class Lock
-	{
-	public:
-		ZT_INLINE Lock(Mutex &m) : _m(&m) { m.lock(); }
-		ZT_INLINE Lock(const Mutex &m) : _m(const_cast<Mutex *>(&m)) { _m->lock(); }
-		ZT_INLINE ~Lock() { _m->unlock(); }
-	private:
-		Mutex *const _m;
-	};
-
-private:
-	ZT_INLINE Mutex(const Mutex &) {}
-	ZT_INLINE const Mutex &operator=(const Mutex &) { return *this; }
-
-	CRITICAL_SECTION _cs;
-};
-
-} // namespace ZeroTier
-#endif
-
-#endif
+/*
+ * Copyright (c)2013-2020 ZeroTier, Inc.
+ *
+ * Use of this software is governed by the Business Source License included
+ * in the LICENSE.TXT file in the project's root directory.
+ *
+ * Change Date: 2024-01-01
+ *
+ * On the date above, in accordance with the Business Source License, use
+ * of this software will be governed by version 2.0 of the Apache License.
+ */
+/****/
+
+#ifndef ZT_MUTEX_HPP
+#define ZT_MUTEX_HPP
+
+#include "Constants.hpp"
+
+#include <cstdint>
+#include <cstdlib>
+
+#ifndef __WINDOWS__
+#include <pthread.h>
+#endif
+
+namespace ZeroTier {
+
+class Mutex
+{
+public:
+	ZT_INLINE Mutex() noexcept { pthread_mutex_init(&_mh,nullptr); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
+	ZT_INLINE ~Mutex() noexcept { pthread_mutex_destroy(&_mh); }
+
+	ZT_INLINE void lock() const noexcept { pthread_mutex_lock(&((const_cast <Mutex *> (this))->_mh)); }
+	ZT_INLINE void unlock() const noexcept { pthread_mutex_unlock(&((const_cast <Mutex *> (this))->_mh)); }
+
+	class Lock
+	{
+	public:
+		explicit ZT_INLINE Lock(Mutex &m) noexcept : _m(&m) { m.lock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
+		explicit ZT_INLINE Lock(const Mutex &m) noexcept : _m(const_cast<Mutex *>(&m)) { _m->lock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
+		ZT_INLINE ~Lock() { _m->unlock(); }
+	private:
+		Mutex *const _m;
+	};
+
+private:
+	ZT_INLINE Mutex(const Mutex &) noexcept {} // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
+	ZT_INLINE const Mutex &operator=(const Mutex &) noexcept { return *this; }
+
+	pthread_mutex_t _mh;
+};
+
+class RWMutex
+{
+public:
+	ZT_INLINE RWMutex() noexcept { pthread_rwlock_init(&_mh,nullptr); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
+	ZT_INLINE ~RWMutex() noexcept { pthread_rwlock_destroy(&_mh); }
+
+	ZT_INLINE void lock() const noexcept { pthread_rwlock_wrlock(&((const_cast <RWMutex *> (this))->_mh)); }
+	ZT_INLINE void rlock() const noexcept { pthread_rwlock_rdlock(&((const_cast <RWMutex *> (this))->_mh)); }
+	ZT_INLINE void unlock() const noexcept { pthread_rwlock_unlock(&((const_cast <RWMutex *> (this))->_mh)); }
+	ZT_INLINE void runlock() const noexcept { pthread_rwlock_unlock(&((const_cast <RWMutex *> (this))->_mh)); }
+
+	/**
+	 * RAAI locker that acquires only the read lock (shared read)
+	 */
+	class RLock
+	{
+	public:
+		explicit ZT_INLINE RLock(RWMutex &m) noexcept : _m(&m) { m.rlock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
+		explicit ZT_INLINE RLock(const RWMutex &m) noexcept : _m(const_cast<RWMutex *>(&m)) { _m->rlock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
+		ZT_INLINE ~RLock() { _m->runlock(); }
+	private:
+		RWMutex *const _m;
+	};
+
+	/**
+	 * RAAI locker that acquires the write lock (exclusive write, no readers)
+	 */
+	class Lock
+	{
+	public:
+		explicit ZT_INLINE Lock(RWMutex &m) noexcept : _m(&m) { m.lock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
+		explicit ZT_INLINE Lock(const RWMutex &m) noexcept : _m(const_cast<RWMutex *>(&m)) { _m->lock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
+		ZT_INLINE ~Lock() { _m->unlock(); }
+	private:
+		RWMutex *const _m;
+	};
+
+	/**
+	 * RAAI locker that acquires the read lock first and can switch modes
+	 *
+	 * Use writing() to acquire the write lock if not already acquired. Use reading() to
+	 * let go of the write lock and go back to only holding the read lock.
+	 */
+	class RMaybeWLock
+	{
+	public:
+		explicit ZT_INLINE RMaybeWLock(RWMutex &m) noexcept : _m(&m),_w(false) { m.rlock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
+		explicit ZT_INLINE RMaybeWLock(const RWMutex &m) noexcept : _m(const_cast<RWMutex *>(&m)),_w(false) { _m->rlock(); } // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
+		ZT_INLINE void writing() noexcept { if (!_w) { _w = true; _m->runlock(); _m->lock(); } }
+		ZT_INLINE void reading() noexcept { if (_w) { _w = false; _m->unlock(); _m->rlock(); } }
+		ZT_INLINE ~RMaybeWLock() { if (_w) _m->unlock(); else _m->runlock(); }
+	private:
+		RWMutex *const _m;
+		bool _w;
+	};
+
+private:
+	ZT_INLINE RWMutex(const RWMutex &) noexcept {} // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init)
+	ZT_INLINE const RWMutex &operator=(const RWMutex &) noexcept { return *this; }
+
+	pthread_rwlock_t _mh;
+};
+
+} // namespace ZeroTier
+
+#if 0
+#include <Windows.h>
+
+namespace ZeroTier {
+
+class Mutex
+{
+public:
+	ZT_INLINE Mutex() { InitializeCriticalSection(&_cs); }
+	ZT_INLINE ~Mutex() { DeleteCriticalSection(&_cs); }
+	ZT_INLINE void lock() { EnterCriticalSection(&_cs); }
+	ZT_INLINE void unlock() { LeaveCriticalSection(&_cs); }
+	ZT_INLINE void lock() const { (const_cast <Mutex *> (this))->lock(); }
+	ZT_INLINE void unlock() const { (const_cast <Mutex *> (this))->unlock(); }
+
+	class Lock
+	{
+	public:
+		ZT_INLINE Lock(Mutex &m) : _m(&m) { m.lock(); }
+		ZT_INLINE Lock(const Mutex &m) : _m(const_cast<Mutex *>(&m)) { _m->lock(); }
+		ZT_INLINE ~Lock() { _m->unlock(); }
+	private:
+		Mutex *const _m;
+	};
+
+private:
+	ZT_INLINE Mutex(const Mutex &) {}
+	ZT_INLINE const Mutex &operator=(const Mutex &) { return *this; }
+
+	CRITICAL_SECTION _cs;
+};
+
+} // namespace ZeroTier
+#endif
+
+#endif

+ 0 - 0
node/Network.cpp → core/Network.cpp


+ 0 - 0
node/Network.hpp → core/Network.hpp


+ 0 - 0
node/NetworkConfig.cpp → core/NetworkConfig.cpp


+ 0 - 0
node/NetworkConfig.hpp → core/NetworkConfig.hpp


+ 0 - 0
node/NetworkController.hpp → core/NetworkController.hpp


+ 0 - 0
node/Node.cpp → core/Node.cpp


+ 0 - 0
node/Node.hpp → core/Node.hpp


+ 0 - 0
node/OS.hpp → core/OS.hpp


+ 0 - 0
node/Path.cpp → core/Path.cpp


+ 0 - 0
node/Path.hpp → core/Path.hpp


+ 0 - 0
node/Peer.cpp → core/Peer.cpp


+ 0 - 0
node/Peer.hpp → core/Peer.hpp


+ 0 - 0
node/Poly1305.cpp → core/Poly1305.cpp


+ 0 - 0
node/Poly1305.hpp → core/Poly1305.hpp


+ 0 - 0
node/Protocol.hpp → core/Protocol.hpp


+ 0 - 0
node/README.md → core/README.md


+ 0 - 0
node/Revocation.cpp → core/Revocation.cpp


+ 0 - 0
node/Revocation.hpp → core/Revocation.hpp


+ 0 - 0
node/RuntimeEnvironment.hpp → core/RuntimeEnvironment.hpp


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است