Make capability flags match more user-friendly and appropriate since "match any flag" is generally what we want.

This commit is contained in:
Adam Ierymenko 2016-10-05 12:54:46 -07:00
commit adeb7e7da0
4 changed files with 9 additions and 22 deletions

View file

@ -240,9 +240,8 @@ public:
b.append((uint16_t)rules[i].v.port[1]);
break;
case ZT_NETWORK_RULE_MATCH_CHARACTERISTICS:
b.append((uint8_t)16);
b.append((uint64_t)rules[i].v.characteristics[0]);
b.append((uint64_t)rules[i].v.characteristics[1]);
b.append((uint8_t)8);
b.append((uint64_t)rules[i].v.characteristics);
break;
case ZT_NETWORK_RULE_MATCH_FRAME_SIZE_RANGE:
b.append((uint8_t)4);
@ -328,8 +327,7 @@ public:
rules[ruleCount].v.port[1] = b.template at<uint16_t>(p + 2);
break;
case ZT_NETWORK_RULE_MATCH_CHARACTERISTICS:
rules[ruleCount].v.characteristics[0] = b.template at<uint64_t>(p);
rules[ruleCount].v.characteristics[1] = b.template at<uint64_t>(p + 8);
rules[ruleCount].v.characteristics = b.template at<uint64_t>(p);
break;
case ZT_NETWORK_RULE_MATCH_FRAME_SIZE_RANGE:
rules[ruleCount].v.frameSize[0] = b.template at<uint16_t>(p);

View file

@ -497,7 +497,7 @@ static _doZtFilterResult _doZtFilter(
}
}
}
thisRuleMatches = (uint8_t)((cf & rules[rn].v.characteristics[0]) == rules[rn].v.characteristics[1]);
thisRuleMatches = (uint8_t)((cf | rules[rn].v.characteristics) != 0);
FILTER_TRACE("%u %s %c (%.16llx & %.16llx)==%.16llx -> %u",rn,_rtn(rt),(((rules[rn].t & 0x80) != 0) ? '!' : '='),cf,rules[rn].v.characteristics[0],rules[rn].v.characteristics[1],(unsigned int)thisRuleMatches);
} break;
case ZT_NETWORK_RULE_MATCH_FRAME_SIZE_RANGE: