summaryrefslogtreecommitdiff
path: root/node/NetworkConfig.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/NetworkConfig.hpp')
-rw-r--r--node/NetworkConfig.hpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/node/NetworkConfig.hpp b/node/NetworkConfig.hpp
index 0ada4710..9b12aa0e 100644
--- a/node/NetworkConfig.hpp
+++ b/node/NetworkConfig.hpp
@@ -65,6 +65,11 @@
*/
#define ZT_NETWORKCONFIG_SPECIALIST_TYPE_ANCHOR 0x0000040000000000ULL
+/**
+ * Device can send CIRCUIT_TESTs for this network
+ */
+#define ZT_NETWORKCONFIG_SPECIALIST_TYPE_CIRCUIT_TESTER 0x0000080000000000ULL
+
namespace ZeroTier {
// Dictionary capacity needed for max size network config
@@ -274,6 +279,21 @@ public:
}
/**
+ * @param byPeer Address to check
+ * @return True if this peer is allowed to do circuit tests on this network (controller is always true)
+ */
+ inline bool circuitTestingAllowed(const Address &byPeer) const
+ {
+ if (byPeer.toInt() == ((networkId >> 24) & 0xffffffffffULL))
+ return true;
+ for(unsigned int i=0;i<specialistCount;++i) {
+ if ((byPeer == specialists[i])&&((specialists[i] & ZT_NETWORKCONFIG_SPECIALIST_TYPE_CIRCUIT_TESTER) != 0))
+ return true;
+ }
+ return false;
+ }
+
+ /**
* @return True if this network config is non-NULL
*/
inline operator bool() const throw() { return (networkId != 0); }