When creating a template table, the object pointer of the
command line "struct context" was set with an offset from the
original out buffer if there is a template ID.

If the "rules_number" is specified after the template IDs, it
couldn't be set and passed to the API correctly. With this commit,
the pointer is reset before pasring the "rules_number" field.

Fixes: c4b38873346b ("app/testpmd: add flow table management")
Cc: akozy...@nvidia.com
Cc: sta...@dpdk.org

Signed-off-by: Bing Zhao <bi...@nvidia.com>
---
 app/test-pmd/cmdline_flow.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index 5771281125..bd626e2347 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -3369,6 +3369,7 @@ static const struct token token_list[] = {
                             NEXT_ENTRY(COMMON_UNSIGNED)),
                .args = ARGS(ARGS_ENTRY(struct buffer,
                                        args.table.attr.nb_flows)),
+               .call = parse_table,
        },
        [TABLE_PATTERN_TEMPLATE] = {
                .name = "pattern_template",
@@ -10157,6 +10158,11 @@ parse_table(struct context *ctx, const struct token 
*token,
                        return -1;
                out->args.table.attr.specialize = 
RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_VPORT_ORIG;
                return len;
+       case TABLE_RULES_NUMBER:
+               ctx->objdata = 0;
+               ctx->object = out;
+               ctx->objmask = NULL;
+               return len;
        default:
                return -1;
        }
-- 
2.34.1

Reply via email to