mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-08-02 15:02:50 +02:00
Cleanup, define specialist for network specific relays, remove some dead code.
This commit is contained in:
parent
5fb8d2aa37
commit
697011df7b
3 changed files with 61 additions and 83 deletions
|
@ -300,16 +300,6 @@ void Multicaster::send(void* tPtr, int64_t now, const SharedPtr<Network>& networ
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<Address> anchors(network->config().anchors());
|
|
||||||
for (std::vector<Address>::const_iterator a(anchors.begin()); a != anchors.end(); ++a) {
|
|
||||||
if (*a != RR->identity.address()) {
|
|
||||||
explicitGatherPeers[numExplicitGatherPeers++] = *a;
|
|
||||||
if (numExplicitGatherPeers == 16) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (unsigned int k = 0; k < numExplicitGatherPeers; ++k) {
|
for (unsigned int k = 0; k < numExplicitGatherPeers; ++k) {
|
||||||
const CertificateOfMembership* com = (network) ? ((network->config().com) ? &(network->config().com) : (const CertificateOfMembership*)0) : (const CertificateOfMembership*)0;
|
const CertificateOfMembership* com = (network) ? ((network->config().com) ? &(network->config().com) : (const CertificateOfMembership*)0) : (const CertificateOfMembership*)0;
|
||||||
Packet outp(explicitGatherPeers[k], RR->identity.address(), Packet::VERB_MULTICAST_GATHER);
|
Packet outp(explicitGatherPeers[k], RR->identity.address(), Packet::VERB_MULTICAST_GATHER);
|
||||||
|
|
|
@ -13,11 +13,61 @@
|
||||||
|
|
||||||
#include "NetworkConfig.hpp"
|
#include "NetworkConfig.hpp"
|
||||||
|
|
||||||
|
#include "DNS.hpp"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
namespace ZeroTier {
|
namespace ZeroTier {
|
||||||
|
|
||||||
|
NetworkConfig::NetworkConfig()
|
||||||
|
: networkId(0)
|
||||||
|
, timestamp(0)
|
||||||
|
, credentialTimeMaxDelta(0)
|
||||||
|
, revision(0)
|
||||||
|
, issuedTo()
|
||||||
|
, remoteTraceTarget()
|
||||||
|
, flags(0)
|
||||||
|
, remoteTraceLevel(Trace::LEVEL_NORMAL)
|
||||||
|
, mtu(0)
|
||||||
|
, multicastLimit(0)
|
||||||
|
, specialistCount(0)
|
||||||
|
, routeCount(0)
|
||||||
|
, staticIpCount(0)
|
||||||
|
, ruleCount(0)
|
||||||
|
, capabilityCount(0)
|
||||||
|
, tagCount(0)
|
||||||
|
, certificateOfOwnershipCount(0)
|
||||||
|
, capabilities()
|
||||||
|
, tags()
|
||||||
|
, certificatesOfOwnership()
|
||||||
|
, type(ZT_NETWORK_TYPE_PRIVATE)
|
||||||
|
, dnsCount(0)
|
||||||
|
, ssoEnabled(false)
|
||||||
|
, authenticationURL()
|
||||||
|
, authenticationExpiryTime(0)
|
||||||
|
, issuerURL()
|
||||||
|
, centralAuthURL()
|
||||||
|
, ssoNonce()
|
||||||
|
, ssoState()
|
||||||
|
, ssoClientID()
|
||||||
|
{
|
||||||
|
name[0] = 0;
|
||||||
|
memset(specialists, 0, sizeof(uint64_t) * ZT_MAX_NETWORK_SPECIALISTS);
|
||||||
|
memset(routes, 0, sizeof(ZT_VirtualNetworkRoute) * ZT_MAX_NETWORK_ROUTES);
|
||||||
|
memset(staticIps, 0, sizeof(InetAddress) * ZT_MAX_ZT_ASSIGNED_ADDRESSES);
|
||||||
|
memset(rules, 0, sizeof(ZT_VirtualNetworkRule) * ZT_MAX_NETWORK_RULES);
|
||||||
|
memset(&dns, 0, sizeof(ZT_VirtualNetworkDNS));
|
||||||
|
memset(authenticationURL, 0, sizeof(authenticationURL));
|
||||||
|
memset(issuerURL, 0, sizeof(issuerURL));
|
||||||
|
memset(centralAuthURL, 0, sizeof(centralAuthURL));
|
||||||
|
memset(ssoNonce, 0, sizeof(ssoNonce));
|
||||||
|
memset(ssoState, 0, sizeof(ssoState));
|
||||||
|
memset(ssoClientID, 0, sizeof(ssoClientID));
|
||||||
|
strncpy(ssoProvider, "default", sizeof(ssoProvider));
|
||||||
|
ssoProvider[sizeof(ssoProvider) - 1] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
bool NetworkConfig::toDictionary(Dictionary<ZT_NETWORKCONFIG_DICT_CAPACITY>& d, bool includeLegacy) const
|
bool NetworkConfig::toDictionary(Dictionary<ZT_NETWORKCONFIG_DICT_CAPACITY>& d, bool includeLegacy) const
|
||||||
{
|
{
|
||||||
Buffer<ZT_NETWORKCONFIG_DICT_CAPACITY>* tmp = new Buffer<ZT_NETWORKCONFIG_DICT_CAPACITY>();
|
Buffer<ZT_NETWORKCONFIG_DICT_CAPACITY>* tmp = new Buffer<ZT_NETWORKCONFIG_DICT_CAPACITY>();
|
||||||
|
|
|
@ -16,23 +16,15 @@
|
||||||
|
|
||||||
#include "../include/ZeroTierOne.h"
|
#include "../include/ZeroTierOne.h"
|
||||||
#include "Address.hpp"
|
#include "Address.hpp"
|
||||||
#include "Buffer.hpp"
|
|
||||||
#include "Capability.hpp"
|
#include "Capability.hpp"
|
||||||
#include "CertificateOfMembership.hpp"
|
#include "CertificateOfMembership.hpp"
|
||||||
#include "CertificateOfOwnership.hpp"
|
#include "CertificateOfOwnership.hpp"
|
||||||
#include "Constants.hpp"
|
|
||||||
#include "DNS.hpp"
|
|
||||||
#include "Dictionary.hpp"
|
#include "Dictionary.hpp"
|
||||||
#include "Hashtable.hpp"
|
#include "Hashtable.hpp"
|
||||||
#include "Identity.hpp"
|
|
||||||
#include "InetAddress.hpp"
|
#include "InetAddress.hpp"
|
||||||
#include "MulticastGroup.hpp"
|
|
||||||
#include "Tag.hpp"
|
#include "Tag.hpp"
|
||||||
#include "Trace.hpp"
|
#include "Trace.hpp"
|
||||||
#include "Utils.hpp"
|
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <stdexcept>
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -78,16 +70,18 @@
|
||||||
*/
|
*/
|
||||||
#define ZT_NETWORKCONFIG_SPECIALIST_TYPE_ACTIVE_BRIDGE 0x0000020000000000ULL
|
#define ZT_NETWORKCONFIG_SPECIALIST_TYPE_ACTIVE_BRIDGE 0x0000020000000000ULL
|
||||||
|
|
||||||
/**
|
|
||||||
* Anchors are stable devices on this network that can act like roots when none are up
|
|
||||||
*/
|
|
||||||
#define ZT_NETWORKCONFIG_SPECIALIST_TYPE_ANCHOR 0x0000040000000000ULL
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Designated multicast replicators replicate multicast in place of sender-side replication
|
* Designated multicast replicators replicate multicast in place of sender-side replication
|
||||||
|
*
|
||||||
|
* This is currently not really used.
|
||||||
*/
|
*/
|
||||||
#define ZT_NETWORKCONFIG_SPECIALIST_TYPE_MULTICAST_REPLICATOR 0x0000080000000000ULL
|
#define ZT_NETWORKCONFIG_SPECIALIST_TYPE_MULTICAST_REPLICATOR 0x0000080000000000ULL
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Designated per-network relays
|
||||||
|
*/
|
||||||
|
#define ZT_NETWORKCONFIG_SPECIALIST_TYPE_NETWORK_RELAY 0x0000100000000000ULL
|
||||||
|
|
||||||
namespace ZeroTier {
|
namespace ZeroTier {
|
||||||
|
|
||||||
// Dictionary capacity needed for max size network config
|
// Dictionary capacity needed for max size network config
|
||||||
|
@ -250,52 +244,7 @@ namespace ZeroTier {
|
||||||
*/
|
*/
|
||||||
class NetworkConfig {
|
class NetworkConfig {
|
||||||
public:
|
public:
|
||||||
NetworkConfig()
|
NetworkConfig();
|
||||||
: networkId(0)
|
|
||||||
, timestamp(0)
|
|
||||||
, credentialTimeMaxDelta(0)
|
|
||||||
, revision(0)
|
|
||||||
, issuedTo()
|
|
||||||
, remoteTraceTarget()
|
|
||||||
, flags(0)
|
|
||||||
, remoteTraceLevel(Trace::LEVEL_NORMAL)
|
|
||||||
, mtu(0)
|
|
||||||
, multicastLimit(0)
|
|
||||||
, specialistCount(0)
|
|
||||||
, routeCount(0)
|
|
||||||
, staticIpCount(0)
|
|
||||||
, ruleCount(0)
|
|
||||||
, capabilityCount(0)
|
|
||||||
, tagCount(0)
|
|
||||||
, certificateOfOwnershipCount(0)
|
|
||||||
, capabilities()
|
|
||||||
, tags()
|
|
||||||
, certificatesOfOwnership()
|
|
||||||
, type(ZT_NETWORK_TYPE_PRIVATE)
|
|
||||||
, dnsCount(0)
|
|
||||||
, ssoEnabled(false)
|
|
||||||
, authenticationURL()
|
|
||||||
, authenticationExpiryTime(0)
|
|
||||||
, issuerURL()
|
|
||||||
, centralAuthURL()
|
|
||||||
, ssoNonce()
|
|
||||||
, ssoState()
|
|
||||||
, ssoClientID()
|
|
||||||
{
|
|
||||||
name[0] = 0;
|
|
||||||
memset(specialists, 0, sizeof(uint64_t) * ZT_MAX_NETWORK_SPECIALISTS);
|
|
||||||
memset(routes, 0, sizeof(ZT_VirtualNetworkRoute) * ZT_MAX_NETWORK_ROUTES);
|
|
||||||
memset(staticIps, 0, sizeof(InetAddress) * ZT_MAX_ZT_ASSIGNED_ADDRESSES);
|
|
||||||
memset(rules, 0, sizeof(ZT_VirtualNetworkRule) * ZT_MAX_NETWORK_RULES);
|
|
||||||
memset(&dns, 0, sizeof(ZT_VirtualNetworkDNS));
|
|
||||||
memset(authenticationURL, 0, sizeof(authenticationURL));
|
|
||||||
memset(issuerURL, 0, sizeof(issuerURL));
|
|
||||||
memset(centralAuthURL, 0, sizeof(centralAuthURL));
|
|
||||||
memset(ssoNonce, 0, sizeof(ssoNonce));
|
|
||||||
memset(ssoState, 0, sizeof(ssoState));
|
|
||||||
memset(ssoClientID, 0, sizeof(ssoClientID));
|
|
||||||
strncpy(ssoProvider, "default", sizeof(ssoProvider));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Write this network config to a dictionary for transport
|
* Write this network config to a dictionary for transport
|
||||||
|
@ -397,17 +346,6 @@ class NetworkConfig {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::vector<Address> anchors() const
|
|
||||||
{
|
|
||||||
std::vector<Address> r;
|
|
||||||
for (unsigned int i = 0; i < specialistCount; ++i) {
|
|
||||||
if ((specialists[i] & ZT_NETWORKCONFIG_SPECIALIST_TYPE_ANCHOR) != 0) {
|
|
||||||
r.push_back(Address(specialists[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline std::vector<Address> multicastReplicators() const
|
inline std::vector<Address> multicastReplicators() const
|
||||||
{
|
{
|
||||||
std::vector<Address> r;
|
std::vector<Address> r;
|
||||||
|
@ -444,7 +382,7 @@ class NetworkConfig {
|
||||||
{
|
{
|
||||||
std::vector<Address> r;
|
std::vector<Address> r;
|
||||||
for (unsigned int i = 0; i < specialistCount; ++i) {
|
for (unsigned int i = 0; i < specialistCount; ++i) {
|
||||||
if ((specialists[i] & (ZT_NETWORKCONFIG_SPECIALIST_TYPE_ANCHOR | ZT_NETWORKCONFIG_SPECIALIST_TYPE_MULTICAST_REPLICATOR)) != 0) {
|
if ((specialists[i] & (ZT_NETWORKCONFIG_SPECIALIST_TYPE_NETWORK_RELAY | ZT_NETWORKCONFIG_SPECIALIST_TYPE_MULTICAST_REPLICATOR)) != 0) {
|
||||||
r.push_back(Address(specialists[i]));
|
r.push_back(Address(specialists[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -455,7 +393,7 @@ class NetworkConfig {
|
||||||
{
|
{
|
||||||
unsigned int c = 0;
|
unsigned int c = 0;
|
||||||
for (unsigned int i = 0; i < specialistCount; ++i) {
|
for (unsigned int i = 0; i < specialistCount; ++i) {
|
||||||
if ((specialists[i] & (ZT_NETWORKCONFIG_SPECIALIST_TYPE_ANCHOR | ZT_NETWORKCONFIG_SPECIALIST_TYPE_MULTICAST_REPLICATOR)) != 0) {
|
if ((specialists[i] & (ZT_NETWORKCONFIG_SPECIALIST_TYPE_NETWORK_RELAY | ZT_NETWORKCONFIG_SPECIALIST_TYPE_MULTICAST_REPLICATOR)) != 0) {
|
||||||
ac[c++] = specialists[i];
|
ac[c++] = specialists[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -465,7 +403,7 @@ class NetworkConfig {
|
||||||
inline void alwaysContactAddresses(Hashtable<Address, std::vector<InetAddress> >& a) const
|
inline void alwaysContactAddresses(Hashtable<Address, std::vector<InetAddress> >& a) const
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < specialistCount; ++i) {
|
for (unsigned int i = 0; i < specialistCount; ++i) {
|
||||||
if ((specialists[i] & (ZT_NETWORKCONFIG_SPECIALIST_TYPE_ANCHOR | ZT_NETWORKCONFIG_SPECIALIST_TYPE_MULTICAST_REPLICATOR)) != 0) {
|
if ((specialists[i] & (ZT_NETWORKCONFIG_SPECIALIST_TYPE_NETWORK_RELAY | ZT_NETWORKCONFIG_SPECIALIST_TYPE_MULTICAST_REPLICATOR)) != 0) {
|
||||||
a[Address(specialists[i])];
|
a[Address(specialists[i])];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue