summaryrefslogtreecommitdiff
path: root/node/Filter.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2016-08-04 15:27:20 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2016-08-04 15:27:20 -0700
commit4d9b74b171d243abe2d2d6a0039865ece8a4a00c (patch)
treea1ba2337be3f3afbab083a83ff09541cfd1f8019 /node/Filter.cpp
parent37d139177dfdc6a0cf44f964a315184fca3fc3bd (diff)
downloadinfinitytier-4d9b74b171d243abe2d2d6a0039865ece8a4a00c.tar.gz
infinitytier-4d9b74b171d243abe2d2d6a0039865ece8a4a00c.zip
.
Diffstat (limited to 'node/Filter.cpp')
-rw-r--r--node/Filter.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/node/Filter.cpp b/node/Filter.cpp
index 286a0144..b8b0bd2a 100644
--- a/node/Filter.cpp
+++ b/node/Filter.cpp
@@ -239,9 +239,10 @@ bool Filter::run(
thisRuleMatches = 0;
}
break;
- case ZT_NETWORK_RULE_MATCH_CHARACTERISTICS:
- // TODO: not supported yet
- break;
+ case ZT_NETWORK_RULE_MATCH_CHARACTERISTICS: {
+ uint64_t cf = (receiving) ? ZT_RULE_PACKET_CHARACTERISTICS_0_INBOUND : 0ULL;
+ thisRuleMatches = (uint8_t)((cf & rules[rn].v.characteristics[0]) == rules[rn].v.characteristics[1]);
+ } break;
case ZT_NETWORK_RULE_MATCH_FRAME_SIZE_RANGE:
thisRuleMatches = (uint8_t)((frameLen >= (unsigned int)rules[rn].v.frameSize[0])&&(frameLen <= (unsigned int)rules[rn].v.frameSize[1]));
break;