summaryrefslogtreecommitdiff
path: root/service/ControlPlane.cpp
diff options
context:
space:
mode:
authorMichał Zieliński <michal@zielinscy.org.pl>2017-01-22 23:02:34 +0100
committerMichał Zieliński <michal@zielinscy.org.pl>2017-01-23 12:16:40 +0100
commit8f2a42d1ad84e5dba590e7f593d8a46cc81389b3 (patch)
treee61e1ff9fb430eb1d9eadf16ed5daacfa9551071 /service/ControlPlane.cpp
parent9a475eeff90a181af0661b87b09af7337e39167a (diff)
downloadinfinitytier-8f2a42d1ad84e5dba590e7f593d8a46cc81389b3.tar.gz
infinitytier-8f2a42d1ad84e5dba590e7f593d8a46cc81389b3.zip
allow user to specify arbitrary allowed IP networks in allowManaged
Diffstat (limited to 'service/ControlPlane.cpp')
-rw-r--r--service/ControlPlane.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/service/ControlPlane.cpp b/service/ControlPlane.cpp
index 86158a91..27027d3b 100644
--- a/service/ControlPlane.cpp
+++ b/service/ControlPlane.cpp
@@ -121,6 +121,15 @@ static void _jsonAppend(unsigned int depth,std::string &buf,const ZT_VirtualNetw
case ZT_NETWORK_TYPE_PUBLIC: ntype = "PUBLIC"; break;
}
+ std::string allowManaged = (localSettings.allowManaged) ? "true" : "false";
+ if (localSettings.allowManagedWhitelist.size() != 0) {
+ allowManaged = "";
+ for (InetAddress address : localSettings.allowManagedWhitelist) {
+ if (allowManaged.size() != 0) allowManaged += ',';
+ allowManaged += address.toIpString() + "/" + std::to_string(address.netmaskBits());
+ }
+ }
+
Utils::snprintf(json,sizeof(json),
"%s{\n"
"%s\t\"id\": \"%.16llx\",\n"
@@ -158,7 +167,7 @@ static void _jsonAppend(unsigned int depth,std::string &buf,const ZT_VirtualNetw
prefix,_jsonEnumerate(nc->assignedAddresses,nc->assignedAddressCount).c_str(),
prefix,_jsonEnumerate(nc->routes,nc->routeCount).c_str(),
prefix,_jsonEscape(portDeviceName).c_str(),
- prefix,(localSettings.allowManaged) ? "true" : "false",
+ prefix,allowManaged.c_str(),
prefix,(localSettings.allowGlobal) ? "true" : "false",
prefix,(localSettings.allowDefault) ? "true" : "false",
prefix);