diff options
author | Adam Ierymenko <adam.ierymenko@zerotier.com> | 2018-04-18 08:05:51 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-18 08:05:51 -0700 |
commit | c2ffbb8627d8cb83b4502dd506d7b3263822beef (patch) | |
tree | 02f574af0d9b88a8af535db0c8254c491d208976 | |
parent | 3de7691af306f86b5b3aa6fb15777841e9ba1388 (diff) | |
parent | 73ca9b6373a758bcba7d589064dd2cfb27208d3a (diff) | |
download | infinitytier-c2ffbb8627d8cb83b4502dd506d7b3263822beef.tar.gz infinitytier-c2ffbb8627d8cb83b4502dd506d7b3263822beef.zip |
Merge pull request #673 from neutronscott/dev
check physical blacklist for interface binding as well
-rw-r--r-- | service/OneService.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/service/OneService.cpp b/service/OneService.cpp index abbd6e75..4d1c792f 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -2414,7 +2414,22 @@ public: return false; } } - + { + // Check global blacklists + const std::vector<InetAddress> *gbl = (const std::vector<InetAddress> *)0; + if (ifaddr.ss_family == AF_INET) { + gbl = &_globalV4Blacklist; + } else if (ifaddr.ss_family == AF_INET6) { + gbl = &_globalV6Blacklist; + } + if (gbl) { + Mutex::Lock _l(_localConfig_m); + for(std::vector<InetAddress>::const_iterator a(gbl->begin());a!=gbl->end();++a) { + if (a->containsAddress(ifaddr)) + return false; + } + } + } { Mutex::Lock _l(_nets_m); for(std::map<uint64_t,NetworkState>::const_iterator n(_nets.begin());n!=_nets.end();++n) { |