On 09/12/2017 12:49 PM, Andy Zhou wrote:
Add a new function clone_xlate_actions(), which shares the same
signature as do_xlate_actions();  Later patch will make use
of this function.

Signed-off-by: Andy Zhou <[email protected]>
---
  ofproto/ofproto-dpif-xlate.c | 20 ++++++++++++++------
  1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
index d5b47666e974..223313d4ecba 100644
--- a/ofproto/ofproto-dpif-xlate.c
+++ b/ofproto/ofproto-dpif-xlate.c
@@ -5334,7 +5334,8 @@ reversible_actions(const struct ofpact *ofpacts, size_t 
ofpacts_len)
  }
static void
-compose_clone(struct xlate_ctx *ctx, const struct ofpact_nest *oc)
+clone_xlate_actions(const struct ofpact *actions, size_t actions_len,
+                    struct xlate_ctx *ctx)
  {
      struct ofpbuf old_stack = ctx->stack;
      union mf_subvalue new_stack[1024 / sizeof(union mf_subvalue)];
@@ -5347,12 +5348,11 @@ compose_clone(struct xlate_ctx *ctx, const struct 
ofpact_nest *oc)
      ofpbuf_put(&ctx->action_set, old_action_set.data, old_action_set.size);
size_t offset, ac_offset;
-    size_t oc_actions_len = ofpact_nest_get_action_len(oc);
      struct flow old_flow = ctx->xin->flow;
- if (reversible_actions(oc->actions, oc_actions_len)) {
+    if (reversible_actions(actions, actions_len)) {
          old_flow = ctx->xin->flow;
-        do_xlate_actions(oc->actions, oc_actions_len, ctx);
+        do_xlate_actions(actions, actions_len, ctx);
          if (ctx->freezing) {
              finish_freezing(ctx);
          }
@@ -5373,7 +5373,7 @@ compose_clone(struct xlate_ctx *ctx, const struct 
ofpact_nest *oc)
      if (ctx->xbridge->support.clone) { /* Use clone action */
          /* Use clone action as datapath clone. */
          offset = nl_msg_start_nested(ctx->odp_actions, OVS_ACTION_ATTR_CLONE);
-        do_xlate_actions(oc->actions, oc_actions_len, ctx);
+        do_xlate_actions(actions, actions_len, ctx);
          if (ctx->freezing) {
              finish_freezing(ctx);
          }
@@ -5386,7 +5386,7 @@ compose_clone(struct xlate_ctx *ctx, const struct 
ofpact_nest *oc)
          offset = nl_msg_start_nested(ctx->odp_actions, 
OVS_ACTION_ATTR_SAMPLE);
          ac_offset = nl_msg_start_nested(ctx->odp_actions,
                                          OVS_SAMPLE_ATTR_ACTIONS);
-        do_xlate_actions(oc->actions, oc_actions_len, ctx);
+        do_xlate_actions(actions, actions_len, ctx);
          if (ctx->freezing) {
              finish_freezing(ctx);
          }
@@ -5425,6 +5425,14 @@ xlate_done:
  }
static void
+compose_clone(struct xlate_ctx *ctx, const struct ofpact_nest *oc)
+{
+    size_t oc_actions_len = ofpact_nest_get_action_len(oc);
+
+    clone_xlate_actions(oc->actions, oc_actions_len, ctx);
+}
+
+static void
  xlate_meter_action(struct xlate_ctx *ctx, const struct ofpact_meter *meter)
  {
      if (meter->provider_meter_id != UINT32_MAX) {


Tested-by: Greg Rose <[email protected]>
Reviewed-by: Greg Rose <[email protected]>

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to