summaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2016-06-21 08:09:20 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2016-06-21 08:09:20 -0700
commit330c80f3f5958eb99b44632563dbe4dc0522120f (patch)
treeeb986f85261f004a41d3cea87858ec29dcbad5d6 /node
parenteee59ec9ce583a8d77c40ee87ed08269a8dc9abe (diff)
downloadinfinitytier-330c80f3f5958eb99b44632563dbe4dc0522120f.tar.gz
infinitytier-330c80f3f5958eb99b44632563dbe4dc0522120f.zip
Add rule type to match a COM field of the peer by ID and value because this will be powerful.
Diffstat (limited to 'node')
-rw-r--r--node/NetworkConfig.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/node/NetworkConfig.cpp b/node/NetworkConfig.cpp
index d906005e..7b5318e4 100644
--- a/node/NetworkConfig.cpp
+++ b/node/NetworkConfig.cpp
@@ -250,6 +250,12 @@ bool NetworkConfig::toDictionary(Dictionary<ZT_NETWORKCONFIG_DICT_CAPACITY> &d,b
tmp.append((uint32_t)rules[i].v.tcpseq[0]);
tmp.append((uint32_t)rules[i].v.tcpseq[1]);
break;
+ case ZT_NETWORK_RULE_MATCH_COM_FIELD_GE:
+ case ZT_NETWORK_RULE_MATCH_COM_FIELD_LE:
+ tmp.append((uint8_t)16);
+ tmp.append((uint64_t)rules[i].v.comIV[0]);
+ tmp.append((uint64_t)rules[i].v.comIV[1]);
+ break;
}
}
if (tmp.size()) {
@@ -469,6 +475,11 @@ bool NetworkConfig::fromDictionary(const Dictionary<ZT_NETWORKCONFIG_DICT_CAPACI
rules[ruleCount].v.tcpseq[0] = tmp.at<uint32_t>(p);
rules[ruleCount].v.tcpseq[1] = tmp.at<uint32_t>(p + 4);
break;
+ case ZT_NETWORK_RULE_MATCH_COM_FIELD_GE:
+ case ZT_NETWORK_RULE_MATCH_COM_FIELD_LE:
+ rules[ruleCount].v.comIV[0] = tmp.at<uint64_t>(p);
+ rules[ruleCount].v.comIV[1] = tmp.at<uint64_t>(p + 8);
+ break;
}
p += fieldLen;
++ruleCount;