[dpdk-dev] [PATCH] examples/ipsec-secgw: remove redundant string compare
Anoob Joseph
Anoob.Joseph at caviumnetworks.com
Wed Mar 28 16:28:02 CEST 2018
Hi Akhil, Radu,
Did you get time to review the patch?
Thanks,
Anoob
On 23/03/18 11:20, Anoob Joseph wrote:
> Removing redundant strncmp in parsing long arguments. The getopt library
> provides means to identify long options using the "val" field of
> structure option. The existing code gets 0 as "val" for all long
> arguments and then uses strncmp to figure out which long option was
> being referred to. Fixing this.
>
> In addition, the macros and enums used for long arguments have been
> renamed and repositioned adhering to the general convention followed in
> various other apps, like l3fwd.
>
> Signed-off-by: Anoob Joseph <anoob.joseph at caviumnetworks.com>
> ---
> examples/ipsec-secgw/ipsec-secgw.c | 104 +++++++++++++++++++------------------
> 1 file changed, 54 insertions(+), 50 deletions(-)
>
> diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c
> index 5726fd3..b833686 100644
> --- a/examples/ipsec-secgw/ipsec-secgw.c
> +++ b/examples/ipsec-secgw/ipsec-secgw.c
> @@ -59,10 +59,6 @@
> #define CDEV_MP_CACHE_SZ 64
> #define MAX_QUEUE_PAIRS 1
>
> -#define OPTION_CONFIG "config"
> -#define OPTION_SINGLE_SA "single-sa"
> -#define OPTION_CRYPTODEV_MASK "cryptodev_mask"
> -
> #define BURST_TX_DRAIN_US 100 /* TX drain every ~100us */
>
> #define NB_SOCKETS 4
> @@ -125,6 +121,29 @@ struct ethaddr_info ethaddr_tbl[RTE_MAX_ETHPORTS] = {
> { 0, ETHADDR(0x00, 0x16, 0x3e, 0x49, 0x9e, 0xdd) }
> };
>
> +#define CMD_LINE_OPT_CONFIG "config"
> +#define CMD_LINE_OPT_SINGLE_SA "single-sa"
> +#define CMD_LINE_OPT_CRYPTODEV_MASK "cryptodev_mask"
> +
> +enum {
> + /* long options mapped to a short option */
> +
> + /* first long only option value must be >= 256, so that we won't
> + * conflict with short options
> + */
> + CMD_LINE_OPT_MIN_NUM = 256,
> + CMD_LINE_OPT_CONFIG_NUM,
> + CMD_LINE_OPT_SINGLE_SA_NUM,
> + CMD_LINE_OPT_CRYPTODEV_MASK_NUM,
> +};
> +
> +static const struct option lgopts[] = {
> + {CMD_LINE_OPT_CONFIG, 1, 0, CMD_LINE_OPT_CONFIG_NUM},
> + {CMD_LINE_OPT_SINGLE_SA, 1, 0, CMD_LINE_OPT_SINGLE_SA_NUM},
> + {CMD_LINE_OPT_CRYPTODEV_MASK, 1, 0, CMD_LINE_OPT_CRYPTODEV_MASK_NUM},
> + {NULL, 0, 0, 0}
> +};
> +
> /* mask of enabled ports */
> static uint32_t enabled_port_mask;
> static uint64_t enabled_cryptodev_mask = UINT64_MAX;
> @@ -928,13 +947,13 @@ static void
> print_usage(const char *prgname)
> {
> printf("%s [EAL options] -- -p PORTMASK -P -u PORTMASK"
> - " --"OPTION_CONFIG" (port,queue,lcore)[,(port,queue,lcore]"
> + " --"CMD_LINE_OPT_CONFIG" (port,queue,lcore)[,(port,queue,lcore]"
> " --single-sa SAIDX -f CONFIG_FILE\n"
> " -p PORTMASK: hexadecimal bitmask of ports to configure\n"
> " -P : enable promiscuous mode\n"
> " -u PORTMASK: hexadecimal bitmask of unprotected ports\n"
> " -j FRAMESIZE: jumbo frame maximum size\n"
> - " --"OPTION_CONFIG": (port,queue,lcore): "
> + " --"CMD_LINE_OPT_CONFIG": (port,queue,lcore): "
> "rx queues configuration\n"
> " --single-sa SAIDX: use single SA index for outbound, "
> "bypassing the SP\n"
> @@ -1030,42 +1049,6 @@ parse_config(const char *q_arg)
> return 0;
> }
>
> -#define __STRNCMP(name, opt) (!strncmp(name, opt, sizeof(opt)))
> -static int32_t
> -parse_args_long_options(struct option *lgopts, int32_t option_index)
> -{
> - int32_t ret = -1;
> - const char *optname = lgopts[option_index].name;
> -
> - if (__STRNCMP(optname, OPTION_CONFIG)) {
> - ret = parse_config(optarg);
> - if (ret)
> - printf("invalid config\n");
> - }
> -
> - if (__STRNCMP(optname, OPTION_SINGLE_SA)) {
> - ret = parse_decimal(optarg);
> - if (ret != -1) {
> - single_sa = 1;
> - single_sa_idx = ret;
> - printf("Configured with single SA index %u\n",
> - single_sa_idx);
> - ret = 0;
> - }
> - }
> -
> - if (__STRNCMP(optname, OPTION_CRYPTODEV_MASK)) {
> - ret = parse_portmask(optarg);
> - if (ret != -1) {
> - enabled_cryptodev_mask = ret;
> - ret = 0;
> - }
> - }
> -
> - return ret;
> -}
> -#undef __STRNCMP
> -
> static int32_t
> parse_args(int32_t argc, char **argv)
> {
> @@ -1073,12 +1056,6 @@ parse_args(int32_t argc, char **argv)
> char **argvopt;
> int32_t option_index;
> char *prgname = argv[0];
> - static struct option lgopts[] = {
> - {OPTION_CONFIG, 1, 0, 0},
> - {OPTION_SINGLE_SA, 1, 0, 0},
> - {OPTION_CRYPTODEV_MASK, 1, 0, 0},
> - {NULL, 0, 0, 0}
> - };
> int32_t f_present = 0;
>
> argvopt = argv;
> @@ -1139,12 +1116,39 @@ parse_args(int32_t argc, char **argv)
> }
> printf("Enabled jumbo frames size %u\n", frame_size);
> break;
> - case 0:
> - if (parse_args_long_options(lgopts, option_index)) {
> + case CMD_LINE_OPT_CONFIG_NUM:
> + ret = parse_config(optarg);
> + if (ret) {
> + printf("Invalid config\n");
> print_usage(prgname);
> return -1;
> }
> break;
> + case CMD_LINE_OPT_SINGLE_SA_NUM:
> + ret = parse_decimal(optarg);
> + if (ret == -1) {
> + printf("Invalid argument[sa_idx]\n");
> + print_usage(prgname);
> + return -1;
> + }
> +
> + /* else */
> + single_sa = 1;
> + single_sa_idx = ret;
> + printf("Configured with single SA index %u\n",
> + single_sa_idx);
> + break;
> + case CMD_LINE_OPT_CRYPTODEV_MASK_NUM:
> + ret = parse_portmask(optarg);
> + if (ret == -1) {
> + printf("Invalid argument[portmask]\n");
> + print_usage(prgname);
> + return -1;
> + }
> +
> + /* else */
> + enabled_cryptodev_mask = ret;
> + break;
> default:
> print_usage(prgname);
> return -1;
More information about the dev
mailing list