summaryrefslogtreecommitdiff
path: root/controller
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2016-09-30 14:07:00 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2016-09-30 14:07:00 -0700
commit988049f39bf7731c0189544b316850b81b004de3 (patch)
tree80291a78a3eaf560a1ba765150533420aac550c5 /controller
parent6651b8310e2c6adc3ef311d07ba497bbcef0165f (diff)
downloadinfinitytier-988049f39bf7731c0189544b316850b81b004de3.tar.gz
infinitytier-988049f39bf7731c0189544b316850b81b004de3.zip
Add new rule to rules engine: random match.
Diffstat (limited to 'controller')
-rw-r--r--controller/EmbeddedNetworkController.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp
index c60f7322..d656bad3 100644
--- a/controller/EmbeddedNetworkController.cpp
+++ b/controller/EmbeddedNetworkController.cpp
@@ -260,6 +260,11 @@ static json _renderRule(ZT_VirtualNetworkRule &rule)
r["start"] = (unsigned int)rule.v.frameSize[0];
r["end"] = (unsigned int)rule.v.frameSize[1];
break;
+ case ZT_NETWORK_RULE_MATCH_RANDOM:
+ r["type"] = "MATCH_RANDOM";
+ r["not"] = ((rule.t & 0x80) != 0);
+ r["probability"] = (unsigned long)rule.v.randomProbability;
+ break;
case ZT_NETWORK_RULE_MATCH_TAGS_DIFFERENCE:
r["type"] = "MATCH_TAGS_DIFFERENCE";
r["not"] = ((rule.t & 0x80) != 0);
@@ -441,6 +446,9 @@ static bool _parseRule(json &r,ZT_VirtualNetworkRule &rule)
rule.v.frameSize[0] = (uint16_t)(_jI(r["start"],0ULL) & 0xffffULL);
rule.v.frameSize[1] = (uint16_t)(_jI(r["end"],(uint64_t)rule.v.frameSize[0]) & 0xffffULL);
return true;
+ } else if (t == "MATCH_RANDOM") {
+ rule.t |= ZT_NETWORK_RULE_MATCH_RANDOM;
+ rule.v.randomProbability = (uint32_t)(_jI(r["probability"],0ULL) & 0xffffffffULL);
} else if (t == "MATCH_TAGS_DIFFERENCE") {
rule.t |= ZT_NETWORK_RULE_MATCH_TAGS_DIFFERENCE;
rule.v.tag.id = (uint32_t)(_jI(r["id"],0ULL) & 0xffffffffULL);