When translating actions within open flow clone, actions generated by finish_freezeing() should also be enclosed within the datapath clone netlink encoding.
Signed-off-by: Andy Zhou <az...@ovn.org> --- ofproto/ofproto-dpif-xlate.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c index 9e1f837cb23e..e5ad832d7c47 100644 --- a/ofproto/ofproto-dpif-xlate.c +++ b/ofproto/ofproto-dpif-xlate.c @@ -5353,6 +5353,9 @@ compose_clone(struct xlate_ctx *ctx, const struct ofpact_nest *oc) if (reversible_actions(oc->actions, oc_actions_len)) { old_flow = ctx->xin->flow; do_xlate_actions(oc->actions, oc_actions_len, ctx); + if (ctx->freezing) { + finish_freezing(ctx); + } goto xlate_done; } @@ -5372,6 +5375,9 @@ compose_clone(struct xlate_ctx *ctx, const struct ofpact_nest *oc) offset = nl_msg_start_nested(ctx->odp_actions, OVS_ACTION_ATTR_CLONE); ac_offset = ctx->odp_actions->size; do_xlate_actions(oc->actions, oc_actions_len, ctx); + if (ctx->freezing) { + finish_freezing(ctx); + } nl_msg_end_non_empty_nested(ctx->odp_actions, offset); goto dp_clone_done; } @@ -5382,6 +5388,9 @@ compose_clone(struct xlate_ctx *ctx, const struct ofpact_nest *oc) ac_offset = nl_msg_start_nested(ctx->odp_actions, OVS_SAMPLE_ATTR_ACTIONS); do_xlate_actions(oc->actions, oc_actions_len, ctx); + if (ctx->freezing) { + finish_freezing(ctx); + } if (nl_msg_end_non_empty_nested(ctx->odp_actions, ac_offset)) { nl_msg_cancel_nested(ctx->odp_actions, offset); } else { -- 1.8.3.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev