Match on tag sender equals or tag recipient equals.
This commit is contained in:
parent
31bece7fa0
commit
2b10a982e9
6 changed files with 80 additions and 20 deletions
|
@ -218,6 +218,16 @@ static json _renderRule(ZT_VirtualNetworkRule &rule)
|
|||
r["id"] = rule.v.tag.id;
|
||||
r["value"] = rule.v.tag.value;
|
||||
break;
|
||||
case ZT_NETWORK_RULE_MATCH_TAG_SENDER:
|
||||
r["type"] = "MATCH_TAG_SENDER";
|
||||
r["id"] = rule.v.tag.id;
|
||||
r["value"] = rule.v.tag.value;
|
||||
break;
|
||||
case ZT_NETWORK_RULE_MATCH_TAG_RECEIVER:
|
||||
r["type"] = "MATCH_TAG_RECEIVER";
|
||||
r["id"] = rule.v.tag.id;
|
||||
r["value"] = rule.v.tag.value;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -245,6 +255,7 @@ static bool _parseRule(json &r,ZT_VirtualNetworkRule &rule)
|
|||
if (OSUtils::jsonBool(r["or"],false))
|
||||
rule.t |= 0x40;
|
||||
|
||||
bool tag = false;
|
||||
if (t == "ACTION_DROP") {
|
||||
rule.t |= ZT_NETWORK_RULE_ACTION_DROP;
|
||||
return true;
|
||||
|
@ -388,26 +399,27 @@ static bool _parseRule(json &r,ZT_VirtualNetworkRule &rule)
|
|||
return true;
|
||||
} else if (t == "MATCH_TAGS_DIFFERENCE") {
|
||||
rule.t |= ZT_NETWORK_RULE_MATCH_TAGS_DIFFERENCE;
|
||||
rule.v.tag.id = (uint32_t)(OSUtils::jsonInt(r["id"],0ULL) & 0xffffffffULL);
|
||||
rule.v.tag.value = (uint32_t)(OSUtils::jsonInt(r["value"],0ULL) & 0xffffffffULL);
|
||||
return true;
|
||||
tag = true;
|
||||
} else if (t == "MATCH_TAGS_BITWISE_AND") {
|
||||
rule.t |= ZT_NETWORK_RULE_MATCH_TAGS_BITWISE_AND;
|
||||
rule.v.tag.id = (uint32_t)(OSUtils::jsonInt(r["id"],0ULL) & 0xffffffffULL);
|
||||
rule.v.tag.value = (uint32_t)(OSUtils::jsonInt(r["value"],0ULL) & 0xffffffffULL);
|
||||
return true;
|
||||
tag = true;
|
||||
} else if (t == "MATCH_TAGS_BITWISE_OR") {
|
||||
rule.t |= ZT_NETWORK_RULE_MATCH_TAGS_BITWISE_OR;
|
||||
rule.v.tag.id = (uint32_t)(OSUtils::jsonInt(r["id"],0ULL) & 0xffffffffULL);
|
||||
rule.v.tag.value = (uint32_t)(OSUtils::jsonInt(r["value"],0ULL) & 0xffffffffULL);
|
||||
return true;
|
||||
tag = true;
|
||||
} else if (t == "MATCH_TAGS_BITWISE_XOR") {
|
||||
rule.t |= ZT_NETWORK_RULE_MATCH_TAGS_BITWISE_XOR;
|
||||
rule.v.tag.id = (uint32_t)(OSUtils::jsonInt(r["id"],0ULL) & 0xffffffffULL);
|
||||
rule.v.tag.value = (uint32_t)(OSUtils::jsonInt(r["value"],0ULL) & 0xffffffffULL);
|
||||
return true;
|
||||
tag = true;
|
||||
} else if (t == "MATCH_TAGS_EQUAL") {
|
||||
rule.t |= ZT_NETWORK_RULE_MATCH_TAGS_EQUAL;
|
||||
tag = true;
|
||||
} else if (t == "MATCH_TAG_SENDER") {
|
||||
rule.t |= ZT_NETWORK_RULE_MATCH_TAG_SENDER;
|
||||
tag = true;
|
||||
} else if (t == "MATCH_TAG_RECEIVER") {
|
||||
rule.t |= ZT_NETWORK_RULE_MATCH_TAG_RECEIVER;
|
||||
tag = true;
|
||||
}
|
||||
if (tag) {
|
||||
rule.v.tag.id = (uint32_t)(OSUtils::jsonInt(r["id"],0ULL) & 0xffffffffULL);
|
||||
rule.v.tag.value = (uint32_t)(OSUtils::jsonInt(r["value"],0ULL) & 0xffffffffULL);
|
||||
return true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue