single dns config per network
This commit is contained in:
parent
058d888311
commit
c0c215c83c
9 changed files with 76 additions and 147 deletions
28
node/DNS.hpp
28
node/DNS.hpp
|
@ -29,28 +29,24 @@ namespace ZeroTier {
|
|||
class DNS {
|
||||
public:
|
||||
template<unsigned int C>
|
||||
static inline void serializeDNS(Buffer<C> &b, const ZT_VirtualNetworkDNS *dns, unsigned int dnsCount)
|
||||
static inline void serializeDNS(Buffer<C> &b, const ZT_VirtualNetworkDNS *dns)
|
||||
{
|
||||
for(unsigned int i = 0; i < dnsCount; ++i) {
|
||||
b.append(dns[i].domain, 128);
|
||||
for(unsigned int j = 0; j < ZT_MAX_DNS_SERVERS; ++j) {
|
||||
InetAddress tmp(dns[i].server_addr[j]);
|
||||
tmp.serialize(b);
|
||||
}
|
||||
b.append(dns->domain, 128);
|
||||
for(unsigned int j = 0; j < ZT_MAX_DNS_SERVERS; ++j) {
|
||||
InetAddress tmp(dns->server_addr[j]);
|
||||
tmp.serialize(b);
|
||||
}
|
||||
}
|
||||
|
||||
template<unsigned int C>
|
||||
static inline void deserializeDNS(const Buffer<C> &b, unsigned int &p, ZT_VirtualNetworkDNS *dns, const unsigned int dnsCount)
|
||||
static inline void deserializeDNS(const Buffer<C> &b, unsigned int &p, ZT_VirtualNetworkDNS *dns)
|
||||
{
|
||||
memset(dns, 0, sizeof(ZT_VirtualNetworkDNS)*ZT_MAX_NETWORK_DNS);
|
||||
for(unsigned int i = 0; i < dnsCount; ++i) {
|
||||
char *d = (char*)b.data()+p;
|
||||
memcpy(dns[i].domain, d, 128);
|
||||
p += 128;
|
||||
for (unsigned int j = 0; j < ZT_MAX_DNS_SERVERS; ++j) {
|
||||
p += reinterpret_cast<InetAddress *>(&(dns[i].server_addr[j]))->deserialize(b, p);
|
||||
}
|
||||
char *d = (char*)b.data()+p;
|
||||
memset(dns, 0, sizeof(ZT_VirtualNetworkDNS));
|
||||
memcpy(dns->domain, d, 128);
|
||||
p += 128;
|
||||
for (unsigned int j = 0; j < ZT_MAX_DNS_SERVERS; ++j) {
|
||||
p += reinterpret_cast<InetAddress *>(&(dns->server_addr[j]))->deserialize(b, p);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1428,11 +1428,7 @@ void Network::_externalConfig(ZT_VirtualNetworkConfig *ec) const
|
|||
ec->multicastSubscriptions[i].adi = _myMulticastGroups[i].adi();
|
||||
}
|
||||
|
||||
ec->dnsCount = _config.dnsCount;
|
||||
fprintf(stderr, "Network::_externalConfig dnsCount: %d\n", ec->dnsCount);
|
||||
if (ec->dnsCount > 0) {
|
||||
memcpy(&ec->dns, &_config.dns, sizeof(ZT_VirtualNetworkDNS));
|
||||
}
|
||||
memcpy(&ec->dns, &_config.dns, sizeof(ZT_VirtualNetworkDNS));
|
||||
}
|
||||
|
||||
void Network::_sendUpdatesToMembers(void *tPtr,const MulticastGroup *const newMulticastGroup)
|
||||
|
|
|
@ -177,12 +177,9 @@ bool NetworkConfig::toDictionary(Dictionary<ZT_NETWORKCONFIG_DICT_CAPACITY> &d,b
|
|||
}
|
||||
|
||||
tmp->clear();
|
||||
if (dnsCount > 0) {
|
||||
tmp->append(dnsCount);
|
||||
DNS::serializeDNS(*tmp, dns, dnsCount);
|
||||
if (tmp->size()) {
|
||||
if (!d.add(ZT_NETWORKCONFIG_DICT_KEY_DNS,*tmp)) return false;
|
||||
}
|
||||
DNS::serializeDNS(*tmp, &dns);
|
||||
if (tmp->size()) {
|
||||
if (!d.add(ZT_NETWORKCONFIG_DICT_KEY_DNS,*tmp)) return false;
|
||||
}
|
||||
|
||||
delete tmp;
|
||||
|
@ -366,9 +363,7 @@ bool NetworkConfig::fromDictionary(const Dictionary<ZT_NETWORKCONFIG_DICT_CAPACI
|
|||
|
||||
if (d.get(ZT_NETWORKCONFIG_DICT_KEY_DNS, *tmp)) {
|
||||
unsigned int p = 0;
|
||||
this->dnsCount = tmp->at<unsigned int>(p);
|
||||
p += sizeof(unsigned int);
|
||||
DNS::deserializeDNS(*tmp, p, dns, (this->dnsCount <= ZT_MAX_NETWORK_DNS) ? this->dnsCount : ZT_MAX_NETWORK_DNS);
|
||||
DNS::deserializeDNS(*tmp, p, &dns);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -240,7 +240,7 @@ public:
|
|||
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)*ZT_MAX_NETWORK_DNS);
|
||||
memset(&dns, 0, sizeof(ZT_VirtualNetworkDNS));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -603,7 +603,7 @@ public:
|
|||
/**
|
||||
* ZT pushed DNS configuration
|
||||
*/
|
||||
ZT_VirtualNetworkDNS dns[ZT_MAX_NETWORK_DNS];
|
||||
ZT_VirtualNetworkDNS dns;
|
||||
};
|
||||
|
||||
} // namespace ZeroTier
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue