This function will be used by later commit.

Signed-off-by: Pravin B Shelar <pshe...@nicira.com>
---
 lib/dpif-netdev.c |   16 +---------------
 lib/meta-flow.c   |   20 ++++++++++++++++++++
 lib/meta-flow.h   |    1 +
 3 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 8687a47..1fa4a3c 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -1139,21 +1139,7 @@ dpif_netdev_mask_from_nlattrs(const struct nlattr *key, 
uint32_t key_len,
         /* Force unwildcard the in_port. */
         mask->in_port.odp_port = u32_to_odp(UINT32_MAX);
     } else {
-        enum mf_field_id id;
-        /* No mask key, unwildcard everything except fields whose
-         * prerequisities are not met. */
-        memset(mask, 0x0, sizeof *mask);
-
-        for (id = 0; id < MFF_N_IDS; ++id) {
-            /* Skip registers and metadata. */
-            if (!(id >= MFF_REG0 && id < MFF_REG0 + FLOW_N_REGS)
-                && id != MFF_METADATA) {
-                const struct mf_field *mf = mf_from_id(id);
-                if (mf_are_prereqs_ok(mf, flow)) {
-                    mf_mask_field(mf, mask);
-                }
-            }
-        }
+        flow_mask_unwildcard_all(flow, mask);
     }
 
     return 0;
diff --git a/lib/meta-flow.c b/lib/meta-flow.c
index 6ef564e..ddc2f27 100644
--- a/lib/meta-flow.c
+++ b/lib/meta-flow.c
@@ -1657,6 +1657,26 @@ mf_mask_field(const struct mf_field *mf, struct flow 
*mask)
     }
 }
 
+void
+flow_mask_unwildcard_all(const struct flow *flow, struct flow *mask)
+{
+    enum mf_field_id id;
+    /* No mask key, unwildcard everything except fields whose
+     * prerequisities are not met. */
+    memset(mask, 0x0, sizeof *mask);
+
+    for (id = 0; id < MFF_N_IDS; ++id) {
+        /* Skip registers and metadata. */
+        if (!(id >= MFF_REG0 && id < MFF_REG0 + FLOW_N_REGS)
+            && id != MFF_METADATA) {
+            const struct mf_field *mf = mf_from_id(id);
+            if (mf_are_prereqs_ok(mf, flow)) {
+                mf_mask_field(mf, mask);
+            }
+        }
+    }
+}
+
 /* Sets 'flow' member field described by 'mf' to 'value'.  The caller is
  * responsible for ensuring that 'flow' meets 'mf''s prerequisites.*/
 void
diff --git a/lib/meta-flow.h b/lib/meta-flow.h
index 91dfecd..8b3cd5e 100644
--- a/lib/meta-flow.h
+++ b/lib/meta-flow.h
@@ -413,4 +413,5 @@ void mf_format(const struct mf_field *,
                struct ds *);
 void mf_format_subvalue(const union mf_subvalue *subvalue, struct ds *s);
 
+void flow_mask_unwildcard_all(const struct flow *flow, struct flow *mask);
 #endif /* meta-flow.h */
-- 
1.7.9.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to