diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2018-08-09 11:39:42 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2018-08-09 11:39:42 -0700 |
commit | 515d7962b01aa08de1dd8e07a7c22a7d2b730340 (patch) | |
tree | a24db96d2d1898e26836e3e7a91abc903bb280dc /service | |
parent | 553101e8b5a988003f594037dda82301b0967625 (diff) | |
download | infinitytier-515d7962b01aa08de1dd8e07a7c22a7d2b730340.tar.gz infinitytier-515d7962b01aa08de1dd8e07a7c22a7d2b730340.zip |
Build fixes.
Diffstat (limited to 'service')
-rw-r--r-- | service/OneService.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/service/OneService.cpp b/service/OneService.cpp index a34db4b4..b4539b84 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -1632,6 +1632,18 @@ public: const InetAddress *const target = reinterpret_cast<const InetAddress *>(&(n.config.routes[i].target)); const InetAddress *const via = reinterpret_cast<const InetAddress *>(&(n.config.routes[i].via)); + InetAddress *src = NULL; + for (unsigned int j=0; j<n.config.assignedAddressCount; ++j) { + const InetAddress *const tmp = reinterpret_cast<const InetAddress *>(&(n.config.assignedAddresses[j])); + if (target->isV4() && tmp->isV4()) { + src = reinterpret_cast<InetAddress *>(&(n.config.assignedAddresses[j])); + break; + } else if (target->isV6() && tmp->isV6()) { + src = reinterpret_cast<InetAddress *>(&(n.config.assignedAddresses[j])); + break; + } + } + if ( (!checkIfManagedIsAllowed(n,*target)) || ((via->ss_family == target->ss_family)&&(matchIpOnly(myIps,*via))) ) continue; @@ -1659,7 +1671,7 @@ public: continue; // Add and apply new routes - n.managedRoutes.push_back(SharedPtr<ManagedRoute>(new ManagedRoute(*target,*via,tapdev))); + n.managedRoutes.push_back(SharedPtr<ManagedRoute>(new ManagedRoute(*target,*via,*src,tapdev))); if (!n.managedRoutes.back()->sync()) n.managedRoutes.pop_back(); #endif @@ -1922,7 +1934,7 @@ public: inline void phyOnUnixAccept(PhySocket *sockL,PhySocket *sockN,void **uptrL,void **uptrN) {} inline void phyOnUnixClose(PhySocket *sock,void **uptr) {} inline void phyOnUnixData(PhySocket *sock,void **uptr,void *data,unsigned long len) {} - inline void phyOnUnixWritable(PhySocket *sock,void **uptr,bool lwip_invoked) {} + inline void phyOnUnixWritable(PhySocket *sock,void **uptr) {} inline int nodeVirtualNetworkConfigFunction(uint64_t nwid,void **nuptr,enum ZT_VirtualNetworkConfigOperation op,const ZT_VirtualNetworkConfig *nwc) { |