Hi Stephen, These changes are looking good as compared to http://patches.dpdk.org/project/dpdk/patch/20220912190330.73159-1-step...@networkplumber.org/. I have tested the changes. Works for me. I am looking for this change in this release. Can you send the v1?
Thanks and regards, Arshdeep Kaur > -----Original Message----- > From: Stephen Hemminger <step...@networkplumber.org> > Sent: Tuesday, September 13, 2022 12:34 AM > To: dev@dpdk.org > Cc: Stephen Hemminger <step...@networkplumber.org>; Kaur, Arshdeep > <arshdeep.k...@intel.com> > Subject: [RFT] dumpcap: add file-prefix option > > When using dumpcap in container environment or with multiple DPDK > processes, it is useful to be able to specify file prefix. > > This version only accepts the long format option used by other commands. > If no prefix is specified then the default is used. > > Suggested-by: Arshdeep Kaur <arshdeep.k...@intel.com> > Signed-off-by: Stephen Hemminger <step...@networkplumber.org> > --- > Did basic command line test, but still needs testing with a prefix being used > (ie multiple apps). > > app/dumpcap/main.c | 24 ++++++++++++++++++------ > 1 file changed, 18 insertions(+), 6 deletions(-) > > diff --git a/app/dumpcap/main.c b/app/dumpcap/main.c index > a6041d4ff495..bdeef96d9c0b 100644 > --- a/app/dumpcap/main.c > +++ b/app/dumpcap/main.c > @@ -61,6 +61,7 @@ static char *output_name; static const char > *filter_str; static unsigned int ring_size = 2048; static const char > *capture_comment; > +static const char *file_prefix; > static uint32_t snaplen = RTE_MBUF_DEFAULT_BUF_SIZE; static bool > dump_bpf; static struct { @@ -122,6 +123,7 @@ static void usage(void) > " add a capture comment to the output > file\n" > "\n" > "Miscellaneous:\n" > + " --file-prefix=<prefix> prefix to use for multi-process\n" > " -q don't report packet capture counts\n" > " -v, --version print version information and exit\n" > " -h, --help display this help and exit\n" > @@ -310,6 +312,7 @@ static void parse_opts(int argc, char **argv) > static const struct option long_options[] = { > { "autostop", required_argument, NULL, 'a' }, > { "capture-comment", required_argument, NULL, 0 }, > + { "file-prefix", required_argument, NULL, 0 }, > { "help", no_argument, NULL, 'h' }, > { "interface", required_argument, NULL, 'i' }, > { "list-interfaces", no_argument, NULL, 'D' }, > @@ -330,11 +333,13 @@ static void parse_opts(int argc, char **argv) > > switch (c) { > case 0: > - switch (option_index) { > - case 0: > + if (!strcmp(long_options[option_index].name, > + "capture-comment")) { > capture_comment = optarg; > - break; > - default: > + } else if (!strcmp(long_options[option_index].name, > + "file-prefix")) { > + file_prefix = optarg; > + } else { > usage(); > exit(1); > } > @@ -512,12 +517,14 @@ static void dpdk_init(void) > static const char * const args[] = { > "dumpcap", "--proc-type", "secondary", > "--log-level", "notice" > - > }; > - const int eal_argc = RTE_DIM(args); > + int eal_argc = RTE_DIM(args); > char **eal_argv; > unsigned int i; > > + if (file_prefix != NULL) > + eal_argc += 2; > + > /* DPDK API requires mutable versions of command line arguments. > */ > eal_argv = calloc(eal_argc + 1, sizeof(char *)); > if (eal_argv == NULL) > @@ -527,6 +534,11 @@ static void dpdk_init(void) > for (i = 1; i < RTE_DIM(args); i++) > eal_argv[i] = strdup(args[i]); > > + if (file_prefix != NULL) { > + eal_argv[i++] = strdup("--file-prefix"); > + eal_argv[i++] = strdup(file_prefix); > + } > + > if (rte_eal_init(eal_argc, eal_argv) < 0) > rte_exit(EXIT_FAILURE, "EAL init failed: is primary process > running?\n"); > > -- > 2.35.1