From 57ef31d51cd86b8e1b9509f2dc1de5f96431c943 Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Thu, 16 Feb 2017 16:06:04 -0800 Subject: Route re-add patch for linux build on Synology devices --- make-linux.mk | 4 ++++ osdep/LinuxEthernetTap.cpp | 2 ++ service/OneService.cpp | 7 ++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/make-linux.mk b/make-linux.mk index 016f7b7c..dff30de6 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -80,6 +80,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 diff --git a/osdep/LinuxEthernetTap.cpp b/osdep/LinuxEthernetTap.cpp index e336bb67..55a6d9f6 100644 --- a/osdep/LinuxEthernetTap.cpp +++ b/osdep/LinuxEthernetTap.cpp @@ -221,8 +221,10 @@ bool LinuxEthernetTap::addIp(const InetAddress &ip) return false; std::vector 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::iterator i(allIps.begin());i!=allIps.end();++i) { diff --git a/service/OneService.cpp b/service/OneService.cpp index 30e6c938..381709f8 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -1108,12 +1108,17 @@ public: } } for(std::vector::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); } -- cgit v1.2.3