I found that introducing these helper functions provided a very modest
increase in readability.
---
lib/ofp-util.c | 13 +++++++++++++
lib/ofp-util.h | 4 ++++
2 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/lib/ofp-util.c b/lib/ofp-util.c
index 78cb879..e72c47a 100644
--- a/lib/ofp-util.c
+++ b/lib/ofp-util.c
@@ -2496,3 +2496,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;
+}
diff --git a/lib/ofp-util.h b/lib/ofp-util.h
index 4c6968b..e35fc46 100644
--- a/lib/ofp-util.h
+++ b/lib/ofp-util.h
@@ -289,6 +289,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);
/* OpenFlow vendors.
*
--
1.7.4.4
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev