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) {
-- 
1.8.3.1

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

Reply via email to