diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-09-30 14:07:00 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-09-30 14:07:00 -0700 |
| commit | 988049f39bf7731c0189544b316850b81b004de3 (patch) | |
| tree | 80291a78a3eaf560a1ba765150533420aac550c5 /node/Network.cpp | |
| parent | 6651b8310e2c6adc3ef311d07ba497bbcef0165f (diff) | |
| download | infinitytier-988049f39bf7731c0189544b316850b81b004de3.tar.gz infinitytier-988049f39bf7731c0189544b316850b81b004de3.zip | |
Add new rule to rules engine: random match.
Diffstat (limited to 'node/Network.cpp')
| -rw-r--r-- | node/Network.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/node/Network.cpp b/node/Network.cpp index d38a3fdd..fe899dcc 100644 --- a/node/Network.cpp +++ b/node/Network.cpp @@ -504,6 +504,10 @@ static _doZtFilterResult _doZtFilter( thisRuleMatches = (uint8_t)((frameLen >= (unsigned int)rules[rn].v.frameSize[0])&&(frameLen <= (unsigned int)rules[rn].v.frameSize[1])); FILTER_TRACE("%u %s %c %u in %u-%u -> %u",rn,_rtn(rt),(((rules[rn].t & 0x80) != 0) ? '!' : '='),frameLen,(unsigned int)rules[rn].v.frameSize[0],(unsigned int)rules[rn].v.frameSize[1],(unsigned int)thisRuleMatches); break; + case ZT_NETWORK_RULE_MATCH_RANDOM: + thisRuleMatches = (uint8_t)((uint32_t)(RR->node->prng() & 0xffffffffULL) <= rules[rn].v.randomProbability); + FILTER_TRACE("%u %s %c -> %u",rn,_rtn(rt),(((rules[rn].t & 0x80) != 0) ? '!' : '='),(unsigned int)thisRuleMatches); + break; case ZT_NETWORK_RULE_MATCH_TAGS_DIFFERENCE: case ZT_NETWORK_RULE_MATCH_TAGS_BITWISE_AND: case ZT_NETWORK_RULE_MATCH_TAGS_BITWISE_OR: |
