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
