diff options
author | Ben Pfaff <blp@nicira.com> | 2011-10-12 17:04:13 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2011-11-21 14:45:54 -0800 |
commit | 28da1f8f725fc2a797174df18a7b3e31ef49ede0 (patch) | |
tree | cc8bc318db3e9ff30bff612747cfd6dfcb5823e4 /lib/meta-flow.h | |
parent | 3719455c2a2a445f78d6e3b67f345ec96e15b60c (diff) |
nx-match: Fold all of its data structures into mf_field.
This is less redundant.
Diffstat (limited to 'lib/meta-flow.h')
-rw-r--r-- | lib/meta-flow.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/meta-flow.h b/lib/meta-flow.h index 79907132..a552e3ce 100644 --- a/lib/meta-flow.h +++ b/lib/meta-flow.h @@ -178,7 +178,14 @@ struct mf_field { flow_wildcards_t fww_bit; /* Either 0 or exactly one FWW_* bit. */ enum mf_string string; enum mf_prereqs prereqs; + bool writable; /* May be written by actions? */ + + /* NXM properties. + * + * A few "mf_field"s don't correspond to NXM fields. Those have 0 and + * NULL for the following members, respectively. */ uint32_t nxm_header; /* An NXM_* constant (a few fields have 0). */ + const char *nxm_name; /* The "NXM_*" constant's name. */ }; /* The representation of a field's value. */ @@ -194,6 +201,8 @@ union mf_value { /* Finding mf_fields. */ const struct mf_field *mf_from_id(enum mf_field_id); const struct mf_field *mf_from_name(const char *name); +const struct mf_field *mf_from_nxm_header(uint32_t nxm_header); +const struct mf_field *mf_from_nxm_name(const char *nxm_name); /* Inspecting wildcarded bits. */ bool mf_is_all_wild(const struct mf_field *, const struct flow_wildcards *); @@ -213,6 +222,8 @@ void mf_get_value(const struct mf_field *, const struct flow *, union mf_value *value); void mf_set_value(const struct mf_field *, const union mf_value *value, struct cls_rule *); +void mf_set_flow_value(const struct mf_field *, const union mf_value *value, + struct flow *); void mf_get(const struct mf_field *, const struct cls_rule *, union mf_value *value, union mf_value *mask); |