summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Marchand <david.marchand@redhat.com>2019-11-18 16:37:14 +0100
committerFerruh Yigit <ferruh.yigit@intel.com>2019-11-20 17:36:06 +0100
commit8fad2e5ab2c54ae12db0c3255b69d0c4f44a5194 (patch)
tree609685bd8e5d337914ef6bbd314d7fc6f9809adb
parent36e5527573a52d7e762d7ee0829541475f382e08 (diff)
downloaddpdk-next-net-intel-8fad2e5ab2c54ae12db0c3255b69d0c4f44a5194.zip
dpdk-next-net-intel-8fad2e5ab2c54ae12db0c3255b69d0c4f44a5194.tar.gz
dpdk-next-net-intel-8fad2e5ab2c54ae12db0c3255b69d0c4f44a5194.tar.xz
app/testpmd: report invalid command line parameter
We currently do not check that a non option string has been passed to testpmd. Example: $ ./master/app/testpmd --no-huge -m 512 --vdev net_null0 \ --vdev net_null1 -- -i nb-cores=2 --total-num-mbuf 2048 [...] testpmd> show config fwd io packet forwarding - ports=2 - cores=1 - streams=2 - NUMA support enabled, MP allocation mode: native Logical Core 1 (socket 0) forwards packets on 2 streams: RX P=0/Q=0 (socket 0) -> TX P=1/Q=0 (socket 0) peer=02:00:00:00:00:01 RX P=1/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00 Here nb-cores=2 is just ignored, while the (probably sleepy) user did not notice this. Validate that all strings passed to testpmd are part of a known option. After this patch: $ ./master/app/testpmd --no-huge -m 512 --vdev net_null0 \ --vdev net_null1 -- -i nb-cores=2 --total-num-mbuf 2048 [...] Invalid parameter: nb-cores=2 EAL: Error - exiting with code: 1 Cause: Command line incorrect While at it, when passing an unknown option, print the string that gets refused by getopt_long to help the user. Fixes: af75078fece3 ("first public release") Cc: stable@dpdk.org Signed-off-by: David Marchand <david.marchand@redhat.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
-rw-r--r--app/test-pmd/parameters.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index deca7a6..2e7a504 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -1363,12 +1363,19 @@ launch_args_parse(int argc, char** argv)
break;
default:
usage(argv[0]);
+ printf("Invalid option: %s\n", argv[optind]);
rte_exit(EXIT_FAILURE,
"Command line is incomplete or incorrect\n");
break;
}
}
+ if (optind != argc) {
+ usage(argv[0]);
+ printf("Invalid parameter: %s\n", argv[optind]);
+ rte_exit(EXIT_FAILURE, "Command line is incorrect\n");
+ }
+
/* Set offload configuration from command line parameters. */
rx_mode.offloads = rx_offloads;
tx_mode.offloads = tx_offloads;