[v2] dumpcap: add the mutiprocess fileprefix support.

Message ID 20220912124309.233363-1-arshdeep.kaur@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series [v2] dumpcap: add the mutiprocess fileprefix support. |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-aarch64-compile-testing fail Testing issues
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-aarch64-unit-testing fail Testing issues
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-x86_64-compile-testing fail Testing issues
ci/iol-x86_64-unit-testing fail Testing issues
ci/github-robot: build fail github build: failed

Commit Message

Kaur, Arshdeep Sept. 12, 2022, 12:43 p.m. UTC
  New optional parameter "-m <fileprefix>" added.
It will update the mp_socket path for multiprocess communication.
Default : '/var/run/dpdk/rte/mp_socket'
Updated : '/var/run/dpdk/<file-prefix>/mp_socket'

Note: Give -m as first argument.

Signed-off-by: Arshdeep Kaur <arshdeep.kaur@intel.com>
---
 app/dumpcap/main.c | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)
  

Comments

Stephen Hemminger Sept. 12, 2022, 2:50 p.m. UTC | #1
On Mon, 12 Sep 2022 05:43:09 -0700
Arshdeep Kaur <arshdeep.kaur@intel.com> wrote:

> New optional parameter "-m <fileprefix>" added.
> It will update the mp_socket path for multiprocess communication.
> Default : '/var/run/dpdk/rte/mp_socket'
> Updated : '/var/run/dpdk/<file-prefix>/mp_socket'
> 
> Note: Give -m as first argument.
> 
> Signed-off-by: Arshdeep Kaur <arshdeep.kaur@intel.com>

The args to dumpcap are chosen to be the same as existing
wireshark dumpcap. This probably should be long option only.
Why not use an environment variable instead?

> ---
>  app/dumpcap/main.c | 23 ++++++++++++++++++-----
>  1 file changed, 18 insertions(+), 5 deletions(-)
> 
> diff --git a/app/dumpcap/main.c b/app/dumpcap/main.c
> index 8972c45a71..1aa43ad9c1 100644
> --- a/app/dumpcap/main.c
> +++ b/app/dumpcap/main.c
> @@ -323,7 +323,7 @@ static void parse_opts(int argc, char **argv)
>  	int option_index, c;
>  
>  	for (;;) {
> -		c = getopt_long(argc, argv, "a:b:c:dDf:ghi:nN:pPqs:vw:",
> +		c = getopt_long(argc, argv, "a:b:c:dDf:ghi:nN:m:pPqs:vw:",
>  				long_options, &option_index);
>  		if (c == -1)
>  			break;
> @@ -392,6 +392,9 @@ static void parse_opts(int argc, char **argv)
>  		case 'v':
>  			printf("%s\n", version());
>  			exit(0);
> +		case 'm':
> +			/* Handled before dpdk_init */
> +			break;
>  		default:
>  			fprintf(stderr, "Invalid option: %s\n",
>  				argv[optind - 1]);
> @@ -507,10 +510,10 @@ report_packet_stats(dumpcap_out_t out)
>   * typical EAL command line arguments.
>   * We don't want to expose all the DPDK internals to the user.
>   */
> -static void dpdk_init(void)
> +static void dpdk_init(const char * const prefix)
>  {
> -	static const char * const args[] = {
> -		"dumpcap", "--proc-type", "secondary",
> +		const char * const args[] = {
> +		"dumpcap", "--proc-type", "secondary", "--file-prefix", prefix,
>  		"--log-level", "notice"
>  
>  	};
> @@ -787,7 +790,17 @@ int main(int argc, char **argv)
>  	progname = argv[0];
>  
>  	parse_opts(argc, argv);
> -	dpdk_init();
> +	char prefix[256];

Slightly short.
> +	strcpy(prefix, "rte");
> +
> +	printf("\nIMP:: Please provide -m file_prefix as first argument in case non-default mp_socket path is to be setup (e.g. ./dpdk-dumpcap -m wls_0)\n\n");

Error message should look like other code.

> +	/* In order to use mp_socket path other than default, give -m as first argument. */
> +	if (argc >= 3) {
> +		if (strncmp(argv[1], "-m", 2) == 0)
> +			strncpy(prefix, argv[2], sizeof(prefix));
> +	}
> +
> +	dpdk_init(prefix);
>  
>  	if (filter_str)
>  		compile_filter();
  

Patch

diff --git a/app/dumpcap/main.c b/app/dumpcap/main.c
index 8972c45a71..1aa43ad9c1 100644
--- a/app/dumpcap/main.c
+++ b/app/dumpcap/main.c
@@ -323,7 +323,7 @@  static void parse_opts(int argc, char **argv)
 	int option_index, c;
 
 	for (;;) {
-		c = getopt_long(argc, argv, "a:b:c:dDf:ghi:nN:pPqs:vw:",
+		c = getopt_long(argc, argv, "a:b:c:dDf:ghi:nN:m:pPqs:vw:",
 				long_options, &option_index);
 		if (c == -1)
 			break;
@@ -392,6 +392,9 @@  static void parse_opts(int argc, char **argv)
 		case 'v':
 			printf("%s\n", version());
 			exit(0);
+		case 'm':
+			/* Handled before dpdk_init */
+			break;
 		default:
 			fprintf(stderr, "Invalid option: %s\n",
 				argv[optind - 1]);
@@ -507,10 +510,10 @@  report_packet_stats(dumpcap_out_t out)
  * typical EAL command line arguments.
  * We don't want to expose all the DPDK internals to the user.
  */
-static void dpdk_init(void)
+static void dpdk_init(const char * const prefix)
 {
-	static const char * const args[] = {
-		"dumpcap", "--proc-type", "secondary",
+		const char * const args[] = {
+		"dumpcap", "--proc-type", "secondary", "--file-prefix", prefix,
 		"--log-level", "notice"
 
 	};
@@ -787,7 +790,17 @@  int main(int argc, char **argv)
 	progname = argv[0];
 
 	parse_opts(argc, argv);
-	dpdk_init();
+	char prefix[256];
+	strcpy(prefix, "rte");
+
+	printf("\nIMP:: Please provide -m file_prefix as first argument in case non-default mp_socket path is to be setup (e.g. ./dpdk-dumpcap -m wls_0)\n\n");
+	/* In order to use mp_socket path other than default, give -m as first argument. */
+	if (argc >= 3) {
+		if (strncmp(argv[1], "-m", 2) == 0)
+			strncpy(prefix, argv[2], sizeof(prefix));
+	}
+
+	dpdk_init(prefix);
 
 	if (filter_str)
 		compile_filter();