mirror of
https://github.com/openvswitch/ovs
synced 2025-10-15 14:17:18 +00:00
match: New function minimatch_matches_flow().
Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
16
lib/match.h
16
lib/match.h
@@ -132,13 +132,15 @@ void match_print(const struct match *);
|
||||
|
||||
/* A sparse representation of a "struct match".
|
||||
*
|
||||
* This has the same invariant as "struct match", that is, a 1-bit in the
|
||||
* 'flow' must correspond to a 1-bit in 'mask'.
|
||||
* There are two invariants:
|
||||
*
|
||||
* The invariants for the underlying miniflow and minimask are also maintained,
|
||||
* which means that 'flow' and 'mask' can have different 'map's. In
|
||||
* particular, if the match checks that a given 32-bit field has value 0, then
|
||||
* 'map' will have a 1-bit in 'mask' but a 0-bit in 'flow' for that field. */
|
||||
* - The same invariant as "struct match", that is, a 1-bit in the 'flow'
|
||||
* must correspond to a 1-bit in 'mask'.
|
||||
*
|
||||
* - 'flow' and 'mask' have the same 'map'. This implies that 'flow' and
|
||||
* 'mask' have the same part of "struct flow" at the same offset into
|
||||
* 'values', which makes minimatch_matches_flow() faster.
|
||||
*/
|
||||
struct minimatch {
|
||||
struct miniflow flow;
|
||||
struct minimask mask;
|
||||
@@ -154,6 +156,8 @@ void minimatch_expand(const struct minimatch *, struct match *);
|
||||
bool minimatch_equal(const struct minimatch *a, const struct minimatch *b);
|
||||
uint32_t minimatch_hash(const struct minimatch *, uint32_t basis);
|
||||
|
||||
bool minimatch_matches_flow(const struct minimatch *, const struct flow *);
|
||||
|
||||
void minimatch_format(const struct minimatch *, struct ds *,
|
||||
unsigned int priority);
|
||||
char *minimatch_to_string(const struct minimatch *, unsigned int priority);
|
||||
|
Reference in New Issue
Block a user