{
match_format(&rule->match, s, rule->priority);
}
+
+/* Returns true if 'rule' matches every packet, false otherwise. */
+bool
+cls_rule_is_catchall(const struct cls_rule *rule)
+{
+ return flow_wildcards_is_catchall(&rule->match.wc);
+}
\f
/* Initializes 'cls' as a classifier that initially contains no classification
* rules. */
const struct cls_rule *target)
{
cursor->cls = cls;
- cursor->target = target;
+ cursor->target = target && !cls_rule_is_catchall(target) ? target : NULL;
}
/* Returns the first matching cls_rule in 'cursor''s iteration, or a null