From d4e781981a769acd59108c5db062980b71a1cc50 Mon Sep 17 00:00:00 2001 From: Simon Horman Date: Fri, 2 May 2014 17:41:32 +0900 Subject: [PATCH] flow: Add mf_is_l3_or_higher() This is in preparation for using the same helper as part of support for using recirculation in conjunction series of actions including with MPLS actions that are currently not able to be translated. In that scenario this helper will be used to test if load, move and set_field actions require recirculation to occur. Signed-off-by: Simon Horman Signed-off-by: Ben Pfaff --- lib/meta-flow.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/meta-flow.h b/lib/meta-flow.h index 91dfecdaa..d02d32037 100644 --- a/lib/meta-flow.h +++ b/lib/meta-flow.h @@ -89,6 +89,8 @@ enum OVS_PACKED_ENUM mf_field_id { MFF_MPLS_BOS, /* u8 */ /* L3. */ + /* Update mf_is_l3_or_higher() if MFF_IPV4_SRC is + * no longer the first element for a field of layer 3 or higher */ MFF_IPV4_SRC, /* be32 */ MFF_IPV4_DST, /* be32 */ @@ -361,6 +363,12 @@ void mf_get_mask(const struct mf_field *, const struct flow_wildcards *, bool mf_are_prereqs_ok(const struct mf_field *, const struct flow *); void mf_mask_field_and_prereqs(const struct mf_field *, struct flow *mask); +static inline bool +mf_is_l3_or_higher(const struct mf_field *mf) +{ + return mf->id >= MFF_IPV4_SRC; +} + /* Field values. */ bool mf_is_value_valid(const struct mf_field *, const union mf_value *value); -- 2.43.0