From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8F6E3A00C5; Wed, 12 Jan 2022 19:44:21 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 200A742703; Wed, 12 Jan 2022 19:44:21 +0100 (CET) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 0FA3140150 for ; Wed, 12 Jan 2022 19:44:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1642013059; x=1673549059; h=from:to:cc:subject:date:message-id; bh=yQpPWyUQ8JVV97bLGNdGue6/4rr0smI3OfzJw2Zajfk=; b=gEpnGyXVm0rn8BT/129+CP2VnV0dQr7xD5/Qx2b51j1DdZDuYC8koDyX Xyhg67NrRBTMN3grRRpDdxIFHAbh94Aau+rQUfaFo43PeFGM9UiEL6Acw OKjgtJ6yS4HW8v8piruKB9gxcN0nPFeRVCNm2U+PkbyT37vhrA2o8Y28A hYy8C3sno2py66p/mYD/oybo7hRrdy/fl/iz19WPQkvZlnerY2l3L7d57 BYH1xA9SgfCGdSswmEIMzd+MdjcHAY68yN5fKt3tGNeL5ZBrsETbsinRT iTFVVXHUnI3el+fnDU03O4lWpPPHqEDRd6PxzZk/+rh6Pwx+6p5clGkZb g==; X-IronPort-AV: E=McAfee;i="6200,9189,10225"; a="307166547" X-IronPort-AV: E=Sophos;i="5.88,282,1635231600"; d="scan'208";a="307166547" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2022 10:35:20 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,282,1635231600"; d="scan'208";a="529312314" Received: from silpixa00400573.ir.intel.com (HELO silpixa00400573.ger.corp.intel.com) ([10.237.223.107]) by orsmga008.jf.intel.com with ESMTP; 12 Jan 2022 10:35:19 -0800 From: Cristian Dumitrescu To: dev@dpdk.org Cc: Harshad Narayane Subject: [PATCH] examples/pipeline: print table entries to file Date: Wed, 12 Jan 2022 18:35:18 +0000 Message-Id: <20220112183518.77895-1-cristian.dumitrescu@intel.com> X-Mailer: git-send-email 2.17.1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add support for the show CLI command to print table entries to a file instead of standard output. Signed-off-by: Cristian Dumitrescu Signed-off-by: Harshad Narayane --- examples/pipeline/cli.c | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/examples/pipeline/cli.c b/examples/pipeline/cli.c index c32349e5f0..2278bcbd51 100644 --- a/examples/pipeline/cli.c +++ b/examples/pipeline/cli.c @@ -1346,7 +1346,7 @@ cmd_pipeline_table_default(char **tokens, } static const char cmd_pipeline_table_show_help[] = -"pipeline table show\n"; +"pipeline table show [filename]\n"; static void cmd_pipeline_table_show(char **tokens, @@ -1357,9 +1357,10 @@ cmd_pipeline_table_show(char **tokens, { struct pipeline *p; char *pipeline_name, *table_name; + FILE *file = NULL; int status; - if (n_tokens != 5) { + if (n_tokens != 5 && n_tokens != 6) { snprintf(out, out_size, MSG_ARG_MISMATCH, tokens[0]); return; } @@ -1372,9 +1373,18 @@ cmd_pipeline_table_show(char **tokens, } table_name = tokens[3]; - status = rte_swx_ctl_pipeline_table_fprintf(stdout, p->ctl, table_name); + file = (n_tokens == 6) ? fopen(tokens[5] , "w") : stdout; + if (!file) { + snprintf(out, out_size, "Cannot open file %s.\n", tokens[5]); + return; + } + + status = rte_swx_ctl_pipeline_table_fprintf(file, p->ctl, table_name); if (status) snprintf(out, out_size, MSG_ARG_INVALID, "table_name"); + + if (file) + fclose(file); } static const char cmd_pipeline_selector_group_add_help[] = @@ -1806,7 +1816,7 @@ cmd_pipeline_selector_group_member_delete(char **tokens, } static const char cmd_pipeline_selector_show_help[] = -"pipeline selector show\n"; +"pipeline selector show [filename]\n"; static void cmd_pipeline_selector_show(char **tokens, @@ -1817,9 +1827,10 @@ cmd_pipeline_selector_show(char **tokens, { struct pipeline *p; char *pipeline_name, *selector_name; + FILE *file = NULL; int status; - if (n_tokens != 5) { + if (n_tokens != 5 && n_tokens != 6) { snprintf(out, out_size, MSG_ARG_MISMATCH, tokens[0]); return; } @@ -1832,10 +1843,19 @@ cmd_pipeline_selector_show(char **tokens, } selector_name = tokens[3]; - status = rte_swx_ctl_pipeline_selector_fprintf(stdout, - p->ctl, selector_name); + + file = (n_tokens == 6) ? fopen(tokens[5], "w") : stdout; + if (!file) { + snprintf(out, out_size, "Cannot open file %s.\n", tokens[5]); + return; + } + + status = rte_swx_ctl_pipeline_selector_fprintf(file, p->ctl, selector_name); if (status) snprintf(out, out_size, MSG_ARG_INVALID, "selector_name"); + + if (file) + fclose(file); } static int -- 2.17.1