|
|
|
|
@ -673,12 +673,20 @@ NetworkController::ResultCode EmbeddedNetworkController::doNetworkConfigRequest(
|
|
|
|
|
json &memberCapabilities = member["capabilities"]; |
|
|
|
|
json &memberTags = member["tags"]; |
|
|
|
|
|
|
|
|
|
if (rules.is_array()) { |
|
|
|
|
for(unsigned long i=0;i<rules.size();++i) { |
|
|
|
|
if (nc.ruleCount >= ZT_MAX_NETWORK_RULES) |
|
|
|
|
break; |
|
|
|
|
if (_parseRule(rules[i],nc.rules[nc.ruleCount])) |
|
|
|
|
++nc.ruleCount; |
|
|
|
|
if (metaData.getUI(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_RULES_ENGINE_REV,0) <= 0) { |
|
|
|
|
// Old versions with no rules engine support get an allow everything rule.
|
|
|
|
|
// Since rules are enforced bidirectionally, newer versions *will* still
|
|
|
|
|
// enforce rules on the inbound side.
|
|
|
|
|
nc.ruleCount = 1; |
|
|
|
|
nc.rules[0].t = ZT_NETWORK_RULE_ACTION_ACCEPT; |
|
|
|
|
} else { |
|
|
|
|
if (rules.is_array()) { |
|
|
|
|
for(unsigned long i=0;i<rules.size();++i) { |
|
|
|
|
if (nc.ruleCount >= ZT_MAX_NETWORK_RULES) |
|
|
|
|
break; |
|
|
|
|
if (_parseRule(rules[i],nc.rules[nc.ruleCount])) |
|
|
|
|
++nc.ruleCount; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|