Route re-add patch for linux build on Synology devices

This commit is contained in:
Joseph Henry 2017-02-16 16:41:26 -08:00
parent 61b413b57f
commit b5b335a6f8
3 changed files with 12 additions and 1 deletions

View File

@ -41,6 +41,10 @@ ifeq ($(ZT_ENABLE_CLUSTER),1)
DEFS+=-DZT_ENABLE_CLUSTER
endif
ifeq ($(ZT_SYNOLOGY), 1)
DEFS+=-D__SYNOLOGY__
endif
ifeq ($(ZT_TRACE),1)
DEFS+=-DZT_TRACE
endif

View File

@ -221,8 +221,10 @@ bool LinuxEthernetTap::addIp(const InetAddress &ip)
return false;
std::vector<InetAddress> allIps(ips());
#ifndef __SYNOLOGY__
if (std::binary_search(allIps.begin(),allIps.end(),ip))
return true;
#endif
// Remove and reconfigure if address is the same but netmask is different
for(std::vector<InetAddress>::iterator i(allIps.begin());i!=allIps.end();++i) {

View File

@ -1088,12 +1088,17 @@ public:
}
}
for(std::vector<InetAddress>::iterator ip(newManagedIps.begin());ip!=newManagedIps.end();++ip) {
#ifdef __SYNOLOGY__
if (!n.tap->addIp(*ip))
fprintf(stderr,"ERROR: unable to add ip address %s" ZT_EOL_S, ip->toString().c_str());
#else
if (std::find(n.managedIps.begin(),n.managedIps.end(),*ip) == n.managedIps.end()) {
if (!n.tap->addIp(*ip))
fprintf(stderr,"ERROR: unable to add ip address %s" ZT_EOL_S, ip->toString().c_str());
}
#endif
}
n.managedIps.swap(newManagedIps);
}