ofp-util: New functions ofputil_actions_equal(), ofputil_actions_clone().
authorBen Pfaff <blp@nicira.com>
Thu, 26 May 2011 23:49:10 +0000 (16:49 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 14 Jun 2011 18:21:51 +0000 (11:21 -0700)
I found that introducing these helper functions provided a very modest
increase in readability.

lib/ofp-util.c
lib/ofp-util.h

index aa8df7774593650a66e4819c31c90c3c1e6a0815..37eb073e13aedfb1676cc0db4f35bee704cf1da4 100644 (file)
@@ -2565,3 +2565,16 @@ error:
     *n_actionsp = 0;
     return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_LEN);
 }
+
+bool
+ofputil_actions_equal(const union ofp_action *a, size_t n_a,
+                      const union ofp_action *b, size_t n_b)
+{
+    return n_a == n_b && (!n_a || !memcmp(a, b, n_a * sizeof *a));
+}
+
+union ofp_action *
+ofputil_actions_clone(const union ofp_action *actions, size_t n)
+{
+    return n ? xmemdup(actions, n * sizeof *actions) : NULL;
+}
index 5ff274eba343513f02bac4c1a8cf3800be2b4915..0190caafe99c3ff5c264354dadc8e5a007bf93df 100644 (file)
@@ -291,6 +291,10 @@ bool action_outputs_to_port(const union ofp_action *, ovs_be16 port);
 
 int ofputil_pull_actions(struct ofpbuf *, unsigned int actions_len,
                          union ofp_action **, size_t *);
+
+bool ofputil_actions_equal(const union ofp_action *a, size_t n_a,
+                           const union ofp_action *b, size_t n_b);
+union ofp_action *ofputil_actions_clone(const union ofp_action *, size_t n);
 \f
 /* OpenFlow vendors.
  *