summaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2015-01-05 17:47:59 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2015-01-05 17:47:59 -0800
commit4e95384ad60c853f01c50e233b8cb48f239f033f (patch)
tree1dccba67dffcc031462d64806fc8abbeb9989fc0 /node
parent08ba2ff752e78571b54c0500e8ee53f721500048 (diff)
downloadinfinitytier-4e95384ad60c853f01c50e233b8cb48f239f033f.tar.gz
infinitytier-4e95384ad60c853f01c50e233b8cb48f239f033f.zip
Cleanup, add tristate to config code in Network, and happy new year!
Diffstat (limited to 'node')
-rw-r--r--node/Address.hpp2
-rw-r--r--node/AntiRecursion.hpp2
-rw-r--r--node/Array.hpp2
-rw-r--r--node/AtomicCounter.hpp2
-rw-r--r--node/BandwidthAccount.hpp2
-rw-r--r--node/Buffer.hpp2
-rw-r--r--node/C25519.hpp2
-rw-r--r--node/CMWC4096.hpp2
-rw-r--r--node/CertificateOfMembership.cpp2
-rw-r--r--node/CertificateOfMembership.hpp2
-rw-r--r--node/Constants.hpp2
-rw-r--r--node/Defaults.cpp2
-rw-r--r--node/Defaults.hpp2
-rw-r--r--node/Dictionary.cpp2
-rw-r--r--node/Dictionary.hpp2
-rw-r--r--node/EthernetTap.hpp2
-rw-r--r--node/EthernetTapFactory.hpp2
-rw-r--r--node/HttpClient.cpp2
-rw-r--r--node/HttpClient.hpp2
-rw-r--r--node/Identity.cpp2
-rw-r--r--node/Identity.hpp2
-rw-r--r--node/IncomingPacket.cpp15
-rw-r--r--node/IncomingPacket.hpp3
-rw-r--r--node/InetAddress.cpp2
-rw-r--r--node/InetAddress.hpp2
-rw-r--r--node/Logger.cpp2
-rw-r--r--node/Logger.hpp2
-rw-r--r--node/MAC.hpp2
-rw-r--r--node/MulticastGroup.hpp2
-rw-r--r--node/Multicaster.cpp2
-rw-r--r--node/Multicaster.hpp2
-rw-r--r--node/Mutex.hpp2
-rw-r--r--node/Network.cpp13
-rw-r--r--node/Network.hpp6
-rw-r--r--node/NetworkConfig.cpp32
-rw-r--r--node/NetworkConfig.hpp11
-rw-r--r--node/Node.cpp2
-rw-r--r--node/Node.hpp2
-rw-r--r--node/NodeConfig.cpp2
-rw-r--r--node/NodeConfig.hpp2
-rw-r--r--node/NonCopyable.hpp2
-rw-r--r--node/OutboundMulticast.cpp2
-rw-r--r--node/OutboundMulticast.hpp2
-rw-r--r--node/Packet.cpp2
-rw-r--r--node/Packet.hpp2
-rw-r--r--node/Path.hpp2
-rw-r--r--node/Peer.cpp2
-rw-r--r--node/Peer.hpp2
-rw-r--r--node/Poly1305.hpp2
-rw-r--r--node/RoutingTable.cpp2
-rw-r--r--node/RoutingTable.hpp2
-rw-r--r--node/RuntimeEnvironment.hpp2
-rw-r--r--node/SHA512.cpp2
-rw-r--r--node/SHA512.hpp2
-rw-r--r--node/SharedPtr.hpp2
-rw-r--r--node/Socket.hpp2
-rw-r--r--node/SocketManager.hpp2
-rw-r--r--node/SoftwareUpdater.cpp2
-rw-r--r--node/SoftwareUpdater.hpp2
-rw-r--r--node/Switch.cpp2
-rw-r--r--node/Switch.hpp2
-rw-r--r--node/Thread.hpp2
-rw-r--r--node/Topology.cpp2
-rw-r--r--node/Topology.hpp2
-rw-r--r--node/Utils.cpp2
-rw-r--r--node/Utils.hpp2
66 files changed, 123 insertions, 77 deletions
diff --git a/node/Address.hpp b/node/Address.hpp
index 728862da..6904999d 100644
--- a/node/Address.hpp
+++ b/node/Address.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/AntiRecursion.hpp b/node/AntiRecursion.hpp
index 23b0f04c..d4da84eb 100644
--- a/node/AntiRecursion.hpp
+++ b/node/AntiRecursion.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Array.hpp b/node/Array.hpp
index ce179c16..0cbced99 100644
--- a/node/Array.hpp
+++ b/node/Array.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/AtomicCounter.hpp b/node/AtomicCounter.hpp
index 0dbcb1cd..0e573cac 100644
--- a/node/AtomicCounter.hpp
+++ b/node/AtomicCounter.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/BandwidthAccount.hpp b/node/BandwidthAccount.hpp
index 9b5fb088..0a7646b7 100644
--- a/node/BandwidthAccount.hpp
+++ b/node/BandwidthAccount.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Buffer.hpp b/node/Buffer.hpp
index 908f36ea..4c3b9447 100644
--- a/node/Buffer.hpp
+++ b/node/Buffer.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/C25519.hpp b/node/C25519.hpp
index bbfa3ec3..f7db8749 100644
--- a/node/C25519.hpp
+++ b/node/C25519.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/CMWC4096.hpp b/node/CMWC4096.hpp
index c3e3bb41..ad127bcb 100644
--- a/node/CMWC4096.hpp
+++ b/node/CMWC4096.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/CertificateOfMembership.cpp b/node/CertificateOfMembership.cpp
index eb40388e..c87f2314 100644
--- a/node/CertificateOfMembership.cpp
+++ b/node/CertificateOfMembership.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/CertificateOfMembership.hpp b/node/CertificateOfMembership.hpp
index 910899a4..f76eb8ce 100644
--- a/node/CertificateOfMembership.hpp
+++ b/node/CertificateOfMembership.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Constants.hpp b/node/Constants.hpp
index c9202fc0..557c8208 100644
--- a/node/Constants.hpp
+++ b/node/Constants.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Defaults.cpp b/node/Defaults.cpp
index adcb9963..459b690e 100644
--- a/node/Defaults.cpp
+++ b/node/Defaults.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Defaults.hpp b/node/Defaults.hpp
index 2bb6a691..308d44a1 100644
--- a/node/Defaults.hpp
+++ b/node/Defaults.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Dictionary.cpp b/node/Dictionary.cpp
index 6c47b0ea..d6a22bf1 100644
--- a/node/Dictionary.cpp
+++ b/node/Dictionary.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Dictionary.hpp b/node/Dictionary.hpp
index 35e93e43..c0bc13a2 100644
--- a/node/Dictionary.hpp
+++ b/node/Dictionary.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/EthernetTap.hpp b/node/EthernetTap.hpp
index 132e5c20..25cd556c 100644
--- a/node/EthernetTap.hpp
+++ b/node/EthernetTap.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/EthernetTapFactory.hpp b/node/EthernetTapFactory.hpp
index c037f451..e7d44275 100644
--- a/node/EthernetTapFactory.hpp
+++ b/node/EthernetTapFactory.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/HttpClient.cpp b/node/HttpClient.cpp
index fc5eb2bd..e1b4f10d 100644
--- a/node/HttpClient.cpp
+++ b/node/HttpClient.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/HttpClient.hpp b/node/HttpClient.hpp
index f65b88e8..8d3d7cd9 100644
--- a/node/HttpClient.hpp
+++ b/node/HttpClient.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Identity.cpp b/node/Identity.cpp
index 73b36fb0..3efb5cf1 100644
--- a/node/Identity.cpp
+++ b/node/Identity.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Identity.hpp b/node/Identity.hpp
index 0f2e109e..ebca9743 100644
--- a/node/Identity.hpp
+++ b/node/Identity.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp
index 93be95ec..44511c13 100644
--- a/node/IncomingPacket.cpp
+++ b/node/IncomingPacket.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -84,6 +84,7 @@ bool IncomingPacket::tryDecode(const RuntimeEnvironment *RR)
case Packet::VERB_MULTICAST_LIKE: return _doMULTICAST_LIKE(RR,peer);
case Packet::VERB_NETWORK_MEMBERSHIP_CERTIFICATE: return _doNETWORK_MEMBERSHIP_CERTIFICATE(RR,peer);
case Packet::VERB_NETWORK_CONFIG_REQUEST: return _doNETWORK_CONFIG_REQUEST(RR,peer);
+ case Packet::VERB_NETWORK_CONFIG_REFRESH: return _doNETWORK_CONFIG_REFRESH(RR,peer);
case Packet::VERB_MULTICAST_GATHER: return _doMULTICAST_GATHER(RR,peer);
case Packet::VERB_MULTICAST_FRAME: return _doMULTICAST_FRAME(RR,peer);
}
@@ -721,6 +722,18 @@ bool IncomingPacket::_doNETWORK_CONFIG_REQUEST(const RuntimeEnvironment *RR,cons
return true;
}
+bool IncomingPacket::_doNETWORK_CONFIG_REFRESH(const RuntimeEnvironment *RR,const SharedPtr<Peer> &peer)
+{
+ try {
+ peer->received(RR,_fromSock,_remoteAddress,hops(),packetId(),Packet::VERB_NETWORK_CONFIG_REFRESH,0,Packet::VERB_NOP,Utils::now());
+ } catch (std::exception &exc) {
+ TRACE("dropped NETWORK_CONFIG_REFRESH from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),exc.what());
+ } catch ( ... ) {
+ TRACE("dropped NETWORK_CONFIG_REFRESH from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str());
+ }
+ return true;
+}
+
bool IncomingPacket::_doMULTICAST_GATHER(const RuntimeEnvironment *RR,const SharedPtr<Peer> &peer)
{
try {
diff --git a/node/IncomingPacket.hpp b/node/IncomingPacket.hpp
index 25c076d4..06edb037 100644
--- a/node/IncomingPacket.hpp
+++ b/node/IncomingPacket.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -125,6 +125,7 @@ private:
bool _doMULTICAST_LIKE(const RuntimeEnvironment *RR,const SharedPtr<Peer> &peer);
bool _doNETWORK_MEMBERSHIP_CERTIFICATE(const RuntimeEnvironment *RR,const SharedPtr<Peer> &peer);
bool _doNETWORK_CONFIG_REQUEST(const RuntimeEnvironment *RR,const SharedPtr<Peer> &peer);
+ bool _doNETWORK_CONFIG_REFRESH(const RuntimeEnvironment *RR,const SharedPtr<Peer> &peer);
bool _doMULTICAST_GATHER(const RuntimeEnvironment *RR,const SharedPtr<Peer> &peer);
bool _doMULTICAST_FRAME(const RuntimeEnvironment *RR,const SharedPtr<Peer> &peer);
diff --git a/node/InetAddress.cpp b/node/InetAddress.cpp
index 832acf04..18c7f031 100644
--- a/node/InetAddress.cpp
+++ b/node/InetAddress.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/InetAddress.hpp b/node/InetAddress.hpp
index 06da9de6..d22b1ca9 100644
--- a/node/InetAddress.hpp
+++ b/node/InetAddress.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Logger.cpp b/node/Logger.cpp
index ccae295b..5015beba 100644
--- a/node/Logger.cpp
+++ b/node/Logger.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Logger.hpp b/node/Logger.hpp
index 49d1567a..dd1bd1d2 100644
--- a/node/Logger.hpp
+++ b/node/Logger.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/MAC.hpp b/node/MAC.hpp
index 5be78f02..8d3f7599 100644
--- a/node/MAC.hpp
+++ b/node/MAC.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/MulticastGroup.hpp b/node/MulticastGroup.hpp
index cdb8b6db..57a73789 100644
--- a/node/MulticastGroup.hpp
+++ b/node/MulticastGroup.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Multicaster.cpp b/node/Multicaster.cpp
index c0567052..f3c9038e 100644
--- a/node/Multicaster.cpp
+++ b/node/Multicaster.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Multicaster.hpp b/node/Multicaster.hpp
index 3aebe57f..4219e29c 100644
--- a/node/Multicaster.hpp
+++ b/node/Multicaster.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Mutex.hpp b/node/Mutex.hpp
index 0525b5ac..c8e36e6d 100644
--- a/node/Mutex.hpp
+++ b/node/Mutex.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Network.cpp b/node/Network.cpp
index ed2d13ba..218e8615 100644
--- a/node/Network.cpp
+++ b/node/Network.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -267,10 +267,15 @@ bool Network::applyConfiguration(const SharedPtr<NetworkConfig> &conf)
return false;
}
-bool Network::setConfiguration(const Dictionary &conf,bool saveToDisk)
+int Network::setConfiguration(const Dictionary &conf,bool saveToDisk)
{
try {
SharedPtr<NetworkConfig> newConfig(new NetworkConfig(conf)); // throws if invalid
+ {
+ Mutex::Lock _l(_lock);
+ if ((_config)&&(*_config == *newConfig))
+ return 1; // OK but duplicate
+ }
if (applyConfiguration(newConfig)) {
if (saveToDisk) {
std::string confPath(RR->homePath + ZT_PATH_SEPARATOR_S + "networks.d" + ZT_PATH_SEPARATOR_S + idString() + ".conf");
@@ -280,12 +285,12 @@ bool Network::setConfiguration(const Dictionary &conf,bool saveToDisk)
Utils::lockDownFile(confPath.c_str(),false);
}
}
- return true;
+ return 2; // OK and configuration has changed
}
} catch ( ... ) {
LOG("ignored invalid configuration for network %.16llx (dictionary decode failed)",(unsigned long long)_id);
}
- return false;
+ return 0;
}
void Network::requestConfiguration()
diff --git a/node/Network.hpp b/node/Network.hpp
index 169dc3fc..a841dbda 100644
--- a/node/Network.hpp
+++ b/node/Network.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -189,9 +189,9 @@ public:
*
* @param conf Configuration in key/value dictionary form
* @param saveToDisk IF true (default), write config to disk
- * @return True if configuration was accepted
+ * @return 0 -- rejected, 1 -- accepted but not new, 2 -- accepted new config
*/
- bool setConfiguration(const Dictionary &conf,bool saveToDisk = true);
+ int setConfiguration(const Dictionary &conf,bool saveToDisk = true);
/**
* Set netconf failure to 'access denied' -- called in IncomingPacket when netconf master reports this
diff --git a/node/NetworkConfig.cpp b/node/NetworkConfig.cpp
index b3e2c178..7d7e64c6 100644
--- a/node/NetworkConfig.cpp
+++ b/node/NetworkConfig.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -103,6 +103,12 @@ void NetworkConfig::_fromDictionary(const Dictionary &d)
// NOTE: d.get(name) throws if not found, d.get(name,default) returns default
+ _nwid = Utils::hexStrToU64(d.get(ZT_NETWORKCONFIG_DICT_KEY_NETWORK_ID).c_str());
+ if (!_nwid)
+ throw std::invalid_argument("configuration contains zero network ID");
+
+ _timestamp = Utils::hexStrToU64(d.get(ZT_NETWORKCONFIG_DICT_KEY_TIMESTAMP).c_str());
+
memset(_etWhitelist,0,sizeof(_etWhitelist));
std::vector<std::string> ets(Utils::split(d.get(ZT_NETWORKCONFIG_DICT_KEY_ALLOWED_ETHERNET_TYPES).c_str(),",","",""));
for(std::vector<std::string>::const_iterator et(ets.begin());et!=ets.end();++et) {
@@ -110,11 +116,6 @@ void NetworkConfig::_fromDictionary(const Dictionary &d)
_etWhitelist[tmp >> 3] |= (1 << (tmp & 7));
}
- _nwid = Utils::hexStrToU64(d.get(ZT_NETWORKCONFIG_DICT_KEY_NETWORK_ID).c_str());
- if (!_nwid)
- throw std::invalid_argument("configuration contains zero network ID");
-
- _timestamp = Utils::hexStrToU64(d.get(ZT_NETWORKCONFIG_DICT_KEY_TIMESTAMP).c_str());
_issuedTo = Address(d.get(ZT_NETWORKCONFIG_DICT_KEY_ISSUED_TO));
_multicastLimit = Utils::hexStrToUInt(d.get(ZT_NETWORKCONFIG_DICT_KEY_MULTICAST_LIMIT,zero).c_str());
if (_multicastLimit == 0) _multicastLimit = ZT_MULTICAST_DEFAULT_LIMIT;
@@ -177,5 +178,24 @@ void NetworkConfig::_fromDictionary(const Dictionary &d)
_com.fromString(d.get(ZT_NETWORKCONFIG_DICT_KEY_CERTIFICATE_OF_MEMBERSHIP,std::string()));
}
+bool NetworkConfig::operator==(const NetworkConfig &nc) const
+{
+ if (_nwid != nc._nwid) return false;
+ if (_timestamp != nc._timestamp) return false;
+ if (memcmp(_etWhitelist,nc._etWhitelist,sizeof(_etWhitelist))) return false;
+ if (_issuedTo != nc._issuedTo) return false;
+ if (_multicastLimit != nc._multicastLimit) return false;
+ if (_allowPassiveBridging != nc._allowPassiveBridging) return false;
+ if (_private != nc._private) return false;
+ if (_enableBroadcast != nc._enableBroadcast) return false;
+ if (_name != nc._name) return false;
+ if (_description != nc._description) return false;
+ if (_staticIps != nc._staticIps) return false;
+ if (_activeBridges != nc._activeBridges) return false;
+ if (_multicastRates != nc._multicastRates) return false;
+ if (_com != nc._com) return false;
+ return true;
+}
+
} // namespace ZeroTier
diff --git a/node/NetworkConfig.hpp b/node/NetworkConfig.hpp
index ea27d525..c3bf2a6b 100644
--- a/node/NetworkConfig.hpp
+++ b/node/NetworkConfig.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -82,9 +82,13 @@ public:
{
MulticastRate() throw() {}
MulticastRate(uint32_t pl,uint32_t maxb,uint32_t acc) throw() : preload(pl),maxBalance(maxb),accrual(acc) {}
+
uint32_t preload;
uint32_t maxBalance;
uint32_t accrual;
+
+ inline bool operator==(const MulticastRate &mr) const { return ((preload == mr.preload)&&(maxBalance == mr.maxBalance)&&(accrual == mr.accrual)); }
+ inline bool operator!=(const MulticastRate &mr) const { return (!(*this == mr)); }
};
/**
@@ -159,15 +163,18 @@ public:
const MulticastRate &multicastRate(const MulticastGroup &mg) const
throw();
+ bool operator==(const NetworkConfig &nc) const;
+ inline bool operator!=(const NetworkConfig &nc) const { return (!(*this == nc)); }
+
private:
NetworkConfig() {}
~NetworkConfig() {}
void _fromDictionary(const Dictionary &d);
- unsigned char _etWhitelist[65536 / 8];
uint64_t _nwid;
uint64_t _timestamp;
+ unsigned char _etWhitelist[65536 / 8];
Address _issuedTo;
unsigned int _multicastLimit;
bool _allowPassiveBridging;
diff --git a/node/Node.cpp b/node/Node.cpp
index 58dbc4f0..f79d6402 100644
--- a/node/Node.cpp
+++ b/node/Node.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Node.hpp b/node/Node.hpp
index 01b2d135..1c7750b3 100644
--- a/node/Node.hpp
+++ b/node/Node.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/NodeConfig.cpp b/node/NodeConfig.cpp
index 57ecbc65..a151911d 100644
--- a/node/NodeConfig.cpp
+++ b/node/NodeConfig.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/NodeConfig.hpp b/node/NodeConfig.hpp
index 498d43db..d85578bf 100644
--- a/node/NodeConfig.hpp
+++ b/node/NodeConfig.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/NonCopyable.hpp b/node/NonCopyable.hpp
index d6e46f16..9c854265 100644
--- a/node/NonCopyable.hpp
+++ b/node/NonCopyable.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/OutboundMulticast.cpp b/node/OutboundMulticast.cpp
index 0be15990..ad069edf 100644
--- a/node/OutboundMulticast.cpp
+++ b/node/OutboundMulticast.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/OutboundMulticast.hpp b/node/OutboundMulticast.hpp
index 77e99377..410d4b4d 100644
--- a/node/OutboundMulticast.hpp
+++ b/node/OutboundMulticast.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Packet.cpp b/node/Packet.cpp
index e7870a98..25d96745 100644
--- a/node/Packet.cpp
+++ b/node/Packet.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Packet.hpp b/node/Packet.hpp
index 6efc67fc..d7f7fd60 100644
--- a/node/Packet.hpp
+++ b/node/Packet.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Path.hpp b/node/Path.hpp
index afef752b..a6bb2787 100644
--- a/node/Path.hpp
+++ b/node/Path.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Peer.cpp b/node/Peer.cpp
index 181761a8..7aa0d910 100644
--- a/node/Peer.cpp
+++ b/node/Peer.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Peer.hpp b/node/Peer.hpp
index 78506fd2..142002a8 100644
--- a/node/Peer.hpp
+++ b/node/Peer.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Poly1305.hpp b/node/Poly1305.hpp
index 8ef200c6..e0a26a03 100644
--- a/node/Poly1305.hpp
+++ b/node/Poly1305.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/RoutingTable.cpp b/node/RoutingTable.cpp
index 9534b321..2caafebe 100644
--- a/node/RoutingTable.cpp
+++ b/node/RoutingTable.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/RoutingTable.hpp b/node/RoutingTable.hpp
index 4049b880..c534f72c 100644
--- a/node/RoutingTable.hpp
+++ b/node/RoutingTable.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/RuntimeEnvironment.hpp b/node/RuntimeEnvironment.hpp
index 68f61143..a7b7a99b 100644
--- a/node/RuntimeEnvironment.hpp
+++ b/node/RuntimeEnvironment.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/SHA512.cpp b/node/SHA512.cpp
index faebd753..6e1f5e6a 100644
--- a/node/SHA512.cpp
+++ b/node/SHA512.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/SHA512.hpp b/node/SHA512.hpp
index 1a844ba1..7ed59cb2 100644
--- a/node/SHA512.hpp
+++ b/node/SHA512.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/SharedPtr.hpp b/node/SharedPtr.hpp
index c1a7db70..6001e19c 100644
--- a/node/SharedPtr.hpp
+++ b/node/SharedPtr.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Socket.hpp b/node/Socket.hpp
index d2525329..ac1c153c 100644
--- a/node/Socket.hpp
+++ b/node/Socket.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/SocketManager.hpp b/node/SocketManager.hpp
index b2cfb776..625ab58c 100644
--- a/node/SocketManager.hpp
+++ b/node/SocketManager.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/SoftwareUpdater.cpp b/node/SoftwareUpdater.cpp
index 3826f022..911a750e 100644
--- a/node/SoftwareUpdater.cpp
+++ b/node/SoftwareUpdater.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/SoftwareUpdater.hpp b/node/SoftwareUpdater.hpp
index dedac7b4..12b8eef1 100644
--- a/node/SoftwareUpdater.hpp
+++ b/node/SoftwareUpdater.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Switch.cpp b/node/Switch.cpp
index 6502656b..5e84acc2 100644
--- a/node/Switch.cpp
+++ b/node/Switch.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Switch.hpp b/node/Switch.hpp
index 543d49ca..e58731bd 100644
--- a/node/Switch.hpp
+++ b/node/Switch.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Thread.hpp b/node/Thread.hpp
index e02cdde6..df6465a7 100644
--- a/node/Thread.hpp
+++ b/node/Thread.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Topology.cpp b/node/Topology.cpp
index 45300ed2..3f4043da 100644
--- a/node/Topology.cpp
+++ b/node/Topology.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Topology.hpp b/node/Topology.hpp
index 15e8db3b..502b3e56 100644
--- a/node/Topology.hpp
+++ b/node/Topology.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Utils.cpp b/node/Utils.cpp
index f0a03f2c..0dfef6b3 100644
--- a/node/Utils.cpp
+++ b/node/Utils.cpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/node/Utils.hpp b/node/Utils.hpp
index defb52a9..05cd8be7 100644
--- a/node/Utils.hpp
+++ b/node/Utils.hpp
@@ -1,6 +1,6 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
- * Copyright (C) 2011-2014 ZeroTier Networks LLC
+ * Copyright (C) 2011-2015 ZeroTier Networks
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by