* The classifier supports versioning for two reasons:
*
* 1. Support for versioned modifications makes it possible to perform an
- * arbitraty series of classifier changes as one atomic transaction,
+ * arbitrary series of classifier changes as one atomic transaction,
* where intermediate versions of the classifier are not visible to any
* lookups. Also, when a rule is added for a future version, or marked
* for removal after the current version, such modifications can be
* ovsrcu_postpone() call to destruct the rule is called from the first RCU
* callback that removes the rule.
*
- * Rules that have never been visible to lookups are an exeption to the above
+ * Rules that have never been visible to lookups are an exception to the above
* rule. Such rules can be removed immediately, but their destruction must
* still be RCU postponed, as the rule's visibility attribute may be examined
* parallel to the rule's removal. */
struct cls_subtable;
struct cls_match;
+struct mf_field;
+typedef OVSRCU_TYPE(struct mf_field *) rcu_field_ptr;
struct trie_node;
typedef OVSRCU_TYPE(struct trie_node *) rcu_trie_ptr;
/* Prefix trie for a 'field' */
struct cls_trie {
- const struct mf_field *field; /* Trie field, or NULL. */
- rcu_trie_ptr root; /* NULL if none. */
+ rcu_field_ptr field; /* Trie field, or NULL. */
+ rcu_trie_ptr root; /* NULL if none. */
};
enum {
const struct match *,
int priority,
ovs_version_t);
+const struct cls_rule *classifier_find_minimatch_exactly(
+ const struct classifier *, const struct minimatch *,
+ int priority, ovs_version_t);
+
bool classifier_is_empty(const struct classifier *);
int classifier_count(const struct classifier *);