This patch adds implicit registration of metadata dynamic field and flag whenever a modify_field action with META as source and/or destination field is used.
Signed-off-by: Dariusz Sosnowski <[email protected]> Reviewed-by: Viacheslav Ovsiienko <[email protected]> --- app/test-pmd/cmdline_flow.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 4f7a9f17f9..dd38a635b0 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -8347,6 +8347,7 @@ parse_vc_modify_field_id(struct context *ctx, const struct token *token, { struct rte_flow_action_modify_field *action_modify_field; unsigned int i; + int ret; (void)token; (void)buf; @@ -8362,9 +8363,15 @@ parse_vc_modify_field_id(struct context *ctx, const struct token *token, if (!ctx->object) return len; action_modify_field = ctx->object; - if (ctx->curr == ACTION_MODIFY_FIELD_DST_TYPE_VALUE) + if (ctx->curr == ACTION_MODIFY_FIELD_DST_TYPE_VALUE) { action_modify_field->dst.field = (enum rte_flow_field_id)i; - else + if (action_modify_field->dst.field == RTE_FLOW_FIELD_META) { + ret = rte_flow_dynf_metadata_register(); + if (ret < 0) + return -1; + } + + } else action_modify_field->src.field = (enum rte_flow_field_id)i; return len; } -- 2.25.1

