From patchwork Wed Nov 11 08:15:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ibtisam Tariq X-Patchwork-Id: 83991 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E5AC4A09D2; Wed, 11 Nov 2020 09:15:27 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5D48FF64; Wed, 11 Nov 2020 09:15:26 +0100 (CET) Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by dpdk.org (Postfix) with ESMTP id 20B50DED for ; Wed, 11 Nov 2020 09:15:25 +0100 (CET) Received: by mail-wm1-f68.google.com with SMTP id p19so3566063wmg.0 for ; Wed, 11 Nov 2020 00:15:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emumba-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=BhMHy4dK7sGc4Eew+ptGlEyR0KYP/4JbmGTMiVLrCxc=; b=gbgbktXKwX5gaLFNAnKaQhnfJX8GPlLyiefQVh6ZHYL6xcgKzH5lYBM4lYz7XRYmQA /3Cyul1bQiFeobY84OmDO2lsdktMIzoo9gA318cvtfSC8MsjNxl5F4TTWUej7Bx+zMBs SjwISyJRa1bro8xBTHejcsSsglVSiAXusjIHrTLSOYyNXwkQCqmE3VjI1/WSViaGFXvP 8bqA9NGhnTu4WFafsxuUJIuzCpe5Wt9tLYMzun6BxH3crQF6adwaULKAXo88RjsXtGpz NKQ43GyCC2wiJYGXiIGjvPDbr10XHkRGGgK1UxPeqQftdbYQZqGOQ+1luZGcYi7jSkog Wrvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=BhMHy4dK7sGc4Eew+ptGlEyR0KYP/4JbmGTMiVLrCxc=; b=uM9fE0imdLintoubQO6gwHNZ3CDnCYtVQWG+tbGTmluPQtGgZAK2htr0K6xafFNeIJ DU4So40RSE47/y0oW/UrXmydYYJhRWjxQFdfMmUfLvx8Wq9t3yYTvhROOFkx/w/FZcfZ zKDMWEe7vSCIOQJxlxZaq/zliNJ+0oEPTjFVOwSgGl9iW4sfrKN2SMHV+Qo6GygkF18v YZb/DYEUlECncrVobxh6NPg2ZdA6i45eB3wl6Hju/is5Uv9gN09M3KHALBusgJiQzbOi 9s3wgQl6sWmbemysJ/y6XwVkryd8osXGHsbFN+1am5qoalATC2T+5gGQknPWPX2CDIsG rmLA== X-Gm-Message-State: AOAM530RB/+N5Binng+Q4Tjv/1ljLoeQlGVp3o+mi+qGcvDVZnYKkJiG E3xA8cim0xvrB9iIdK8u7qEW3g== X-Google-Smtp-Source: ABdhPJxbOmEU17PLFk/GmY3nwh2rp5xP044xzbTjD+hHLfsy/s04cZ6Hce0yL2OOW1CSTJHcGyRwOg== X-Received: by 2002:a1c:dc0a:: with SMTP id t10mr1581416wmg.5.1605082523797; Wed, 11 Nov 2020 00:15:23 -0800 (PST) Received: from localhost.localdomain ([39.33.227.210]) by smtp.gmail.com with ESMTPSA id z3sm909539wrw.87.2020.11.11.00.15.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Nov 2020 00:15:23 -0800 (PST) From: Ibtisam Tariq To: maxime.coquelin@redhat.com, chenbo.xia@intel.com, cristian.dumitrescu@intel.com, jasvinder.singh@intel.com, john.mcnamara@intel.com, reshma.pattan@intel.com, konstantin.ananyev@intel.com, marko.kovacevic@intel.com Cc: dev@dpdk.org, Ibtisam Tariq Date: Wed, 11 Nov 2020 08:15:01 +0000 Message-Id: <20201111081507.19913-1-ibtisam.tariq@emumba.com> X-Mailer: git-send-email 2.17.1 Subject: [dpdk-dev] [PATCH 1/7] examples/fips_validation: enhance getopt_long usage X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Instead of using getopt_long return value, strcmp was used to compare the input parameters with the struct option array. This patch get rid of all those strcmp by directly binding each longopt with an int enum. This is to improve readability and consistency in all examples. Bugzilla ID: 238 Cc: marko.kovacevic@intel.com Reported-by: David Marchand Signed-off-by: Ibtisam Tariq --- v2: * Added parser_read_uint16 function to remove extra variable. * Remove extra indentations. * Remove extra block brackets in switch statement. * Replace the pre-processor with actual value, if it used once. * Change enum names to start with OPT_ and remove KEYWORD from enum names. v1 * enhance getopt_long usage --- examples/fips_validation/fips_validation.c | 16 ++ examples/fips_validation/fips_validation.h | 3 + examples/fips_validation/main.c | 253 +++++++++++---------- 3 files changed, 157 insertions(+), 115 deletions(-) diff --git a/examples/fips_validation/fips_validation.c b/examples/fips_validation/fips_validation.c index 4c3ed80c8..52a7bf952 100644 --- a/examples/fips_validation/fips_validation.c +++ b/examples/fips_validation/fips_validation.c @@ -650,6 +650,22 @@ parser_read_uint32(uint32_t *value, char *p) return 0; } +int +parser_read_uint16(uint16_t *value, const char *p) +{ + uint64_t val = 0; + int ret = parser_read_uint64(&val, p); + + if (ret < 0) + return ret; + + if (val > UINT16_MAX) + return -ERANGE; + + *value = val; + return 0; +} + void parse_write_hex_str(struct fips_val *src) { diff --git a/examples/fips_validation/fips_validation.h b/examples/fips_validation/fips_validation.h index 8396932f9..6cda4e0bd 100644 --- a/examples/fips_validation/fips_validation.h +++ b/examples/fips_validation/fips_validation.h @@ -257,6 +257,9 @@ parser_read_uint32(uint32_t *value, char *p); int parser_read_uint32_val(const char *key, char *src, struct fips_val *val); +int +parser_read_uint16(uint16_t *value, const char *p); + int writeback_hex_str(const char *key, char *dst, struct fips_val *val); diff --git a/examples/fips_validation/main.c b/examples/fips_validation/main.c index cad6bcb18..36ed4b546 100644 --- a/examples/fips_validation/main.c +++ b/examples/fips_validation/main.c @@ -15,17 +15,26 @@ #include "fips_validation.h" #include "fips_dev_self_test.h" -#define REQ_FILE_PATH_KEYWORD "req-file" -#define RSP_FILE_PATH_KEYWORD "rsp-file" -#define MBUF_DATAROOM_KEYWORD "mbuf-dataroom" -#define FOLDER_KEYWORD "path-is-folder" -#define CRYPTODEV_KEYWORD "cryptodev" -#define CRYPTODEV_ID_KEYWORD "cryptodev-id" -#define CRYPTODEV_ST_KEYWORD "self-test" -#define CRYPTODEV_BK_ID_KEYWORD "broken-test-id" -#define CRYPTODEV_BK_DIR_KEY "broken-test-dir" -#define CRYPTODEV_ENC_KEYWORD "enc" -#define CRYPTODEV_DEC_KEYWORD "dec" +enum { +#define OPT_REQ_FILE_PATH "req-file" + OPT_REQ_FILE_PATH_NUM = 256, +#define OPT_RSP_FILE_PATH "rsp-file" + OPT_RSP_FILE_PATH_NUM, +#define OPT_MBUF_DATAROOM "mbuf-dataroom" + OPT_MBUF_DATAROOM_NUM, +#define OPT_FOLDER "path-is-folder" + OPT_FOLDER_NUM, +#define OPT_CRYPTODEV "cryptodev" + OPT_CRYPTODEV_NUM, +#define OPT_CRYPTODEV_ID "cryptodev-id" + OPT_CRYPTODEV_ID_NUM, +#define OPT_CRYPTODEV_ST "self-test" + OPT_CRYPTODEV_ST_NUM, +#define OPT_CRYPTODEV_BK_ID "broken-test-id" + OPT_CRYPTODEV_BK_ID_NUM, +#define OPT_CRYPTODEV_BK_DIR_KEY "broken-test-dir" + OPT_CRYPTODEV_BK_DIR_KEY_NUM, +}; struct fips_test_vector vec; struct fips_test_interim_info info; @@ -212,10 +221,10 @@ cryptodev_fips_validate_usage(const char *prgname) " --%s: self test indicator\n" " --%s: self broken test ID\n" " --%s: self broken test direction\n", - prgname, REQ_FILE_PATH_KEYWORD, RSP_FILE_PATH_KEYWORD, - FOLDER_KEYWORD, MBUF_DATAROOM_KEYWORD, def_mbuf_seg_size, - CRYPTODEV_KEYWORD, CRYPTODEV_ID_KEYWORD, CRYPTODEV_ST_KEYWORD, - CRYPTODEV_BK_ID_KEYWORD, CRYPTODEV_BK_DIR_KEY); + prgname, OPT_REQ_FILE_PATH, OPT_RSP_FILE_PATH, + OPT_FOLDER, OPT_MBUF_DATAROOM, def_mbuf_seg_size, + OPT_CRYPTODEV, OPT_CRYPTODEV_ID, OPT_CRYPTODEV_ST, + OPT_CRYPTODEV_BK_ID, OPT_CRYPTODEV_BK_DIR_KEY); } static int @@ -226,16 +235,25 @@ cryptodev_fips_validate_parse_args(int argc, char **argv) char **argvopt; int option_index; struct option lgopts[] = { - {REQ_FILE_PATH_KEYWORD, required_argument, 0, 0}, - {RSP_FILE_PATH_KEYWORD, required_argument, 0, 0}, - {FOLDER_KEYWORD, no_argument, 0, 0}, - {MBUF_DATAROOM_KEYWORD, required_argument, 0, 0}, - {CRYPTODEV_KEYWORD, required_argument, 0, 0}, - {CRYPTODEV_ID_KEYWORD, required_argument, 0, 0}, - {CRYPTODEV_ST_KEYWORD, no_argument, 0, 0}, - {CRYPTODEV_BK_ID_KEYWORD, required_argument, 0, 0}, - {CRYPTODEV_BK_DIR_KEY, required_argument, 0, 0}, - {NULL, 0, 0, 0} + {OPT_REQ_FILE_PATH, required_argument, + NULL, OPT_REQ_FILE_PATH_NUM}, + {OPT_RSP_FILE_PATH, required_argument, + NULL, OPT_RSP_FILE_PATH_NUM}, + {OPT_FOLDER, no_argument, + NULL, OPT_FOLDER_NUM}, + {OPT_MBUF_DATAROOM, required_argument, + NULL, OPT_MBUF_DATAROOM_NUM}, + {OPT_CRYPTODEV, required_argument, + NULL, OPT_CRYPTODEV_NUM}, + {OPT_CRYPTODEV_ID, required_argument, + NULL, OPT_CRYPTODEV_ID_NUM}, + {OPT_CRYPTODEV_ST, no_argument, + NULL, OPT_CRYPTODEV_ST_NUM}, + {OPT_CRYPTODEV_BK_ID, required_argument, + NULL, OPT_CRYPTODEV_BK_ID_NUM}, + {OPT_CRYPTODEV_BK_DIR_KEY, required_argument, + NULL, OPT_CRYPTODEV_BK_DIR_KEY_NUM}, + {NULL, 0, 0, 0} }; argvopt = argv; @@ -248,108 +266,113 @@ cryptodev_fips_validate_parse_args(int argc, char **argv) return -EINVAL; } - while ((opt = getopt_long(argc, argvopt, "s:", + while ((opt = getopt_long(argc, argvopt, "", lgopts, &option_index)) != EOF) { + if (opt == '?') { + cryptodev_fips_validate_usage(prgname); + return -1; + } + switch (opt) { - case 0: - if (strcmp(lgopts[option_index].name, - REQ_FILE_PATH_KEYWORD) == 0) - env.req_path = optarg; - else if (strcmp(lgopts[option_index].name, - RSP_FILE_PATH_KEYWORD) == 0) - env.rsp_path = optarg; - else if (strcmp(lgopts[option_index].name, - FOLDER_KEYWORD) == 0) - env.is_path_folder = 1; - else if (strcmp(lgopts[option_index].name, - CRYPTODEV_KEYWORD) == 0) { - ret = parse_cryptodev_arg(optarg); - if (ret < 0) { - cryptodev_fips_validate_usage(prgname); - return -EINVAL; - } - } else if (strcmp(lgopts[option_index].name, - CRYPTODEV_ID_KEYWORD) == 0) { - ret = parse_cryptodev_id_arg(optarg); - if (ret < 0) { - cryptodev_fips_validate_usage(prgname); - return -EINVAL; - } - } else if (strcmp(lgopts[option_index].name, - CRYPTODEV_ST_KEYWORD) == 0) { - env.self_test = 1; - } else if (strcmp(lgopts[option_index].name, - CRYPTODEV_BK_ID_KEYWORD) == 0) { - if (!env.broken_test_config) { - env.broken_test_config = rte_malloc( - NULL, - sizeof(*env.broken_test_config), - 0); - if (!env.broken_test_config) - return -ENOMEM; - - env.broken_test_config->expect_fail_dir = - self_test_dir_enc_auth_gen; - } + case OPT_REQ_FILE_PATH_NUM: + env.req_path = optarg; + break; - if (parser_read_uint32( - &env.broken_test_config->expect_fail_test_idx, - optarg) < 0) { - rte_free(env.broken_test_config); - cryptodev_fips_validate_usage(prgname); - return -EINVAL; - } - } else if (strcmp(lgopts[option_index].name, - CRYPTODEV_BK_DIR_KEY) == 0) { - if (!env.broken_test_config) { - env.broken_test_config = rte_malloc( - NULL, - sizeof(*env.broken_test_config), - 0); - if (!env.broken_test_config) - return -ENOMEM; - - env.broken_test_config-> - expect_fail_test_idx = 0; - } + case OPT_RSP_FILE_PATH_NUM: + env.rsp_path = optarg; + break; - if (strcmp(optarg, CRYPTODEV_ENC_KEYWORD) == 0) - env.broken_test_config->expect_fail_dir = - self_test_dir_enc_auth_gen; - else if (strcmp(optarg, CRYPTODEV_DEC_KEYWORD) - == 0) - env.broken_test_config->expect_fail_dir = - self_test_dir_dec_auth_verify; - else { - rte_free(env.broken_test_config); - cryptodev_fips_validate_usage(prgname); - return -EINVAL; - } - } else if (strcmp(lgopts[option_index].name, - MBUF_DATAROOM_KEYWORD) == 0) { - uint32_t data_room_size; - - if (parser_read_uint32(&data_room_size, - optarg) < 0) { - cryptodev_fips_validate_usage(prgname); - return -EINVAL; - } + case OPT_FOLDER_NUM: + env.is_path_folder = 1; + break; - if (data_room_size == 0 || - data_room_size > UINT16_MAX) { - cryptodev_fips_validate_usage(prgname); - return -EINVAL; - } + case OPT_CRYPTODEV_NUM: + ret = parse_cryptodev_arg(optarg); + if (ret < 0) { + cryptodev_fips_validate_usage(prgname); + return -EINVAL; + } + break; - env.mbuf_data_room = data_room_size; - } else { + case OPT_CRYPTODEV_ID_NUM: + ret = parse_cryptodev_id_arg(optarg); + if (ret < 0) { cryptodev_fips_validate_usage(prgname); return -EINVAL; } break; + + case OPT_CRYPTODEV_ST_NUM: + env.self_test = 1; + break; + + case OPT_CRYPTODEV_BK_ID_NUM: + if (!env.broken_test_config) { + env.broken_test_config = rte_malloc( + NULL, + sizeof(*env.broken_test_config), + 0); + if (!env.broken_test_config) + return -ENOMEM; + + env.broken_test_config->expect_fail_dir = + self_test_dir_enc_auth_gen; + } + + if (parser_read_uint32( + &env.broken_test_config->expect_fail_test_idx, + optarg) < 0) { + rte_free(env.broken_test_config); + cryptodev_fips_validate_usage(prgname); + return -EINVAL; + } + break; + + case OPT_CRYPTODEV_BK_DIR_KEY_NUM: + if (!env.broken_test_config) { + env.broken_test_config = rte_malloc( + NULL, + sizeof(*env.broken_test_config), + 0); + if (!env.broken_test_config) + return -ENOMEM; + + env.broken_test_config->expect_fail_test_idx = + 0; + } + + if (strcmp(optarg, "enc") == 0) + env.broken_test_config->expect_fail_dir = + self_test_dir_enc_auth_gen; + else if (strcmp(optarg, "dec") + == 0) + env.broken_test_config->expect_fail_dir = + self_test_dir_dec_auth_verify; + else { + rte_free(env.broken_test_config); + cryptodev_fips_validate_usage(prgname); + return -EINVAL; + } + break; + + + case OPT_MBUF_DATAROOM_NUM: + if (parser_read_uint16(&env.mbuf_data_room, + optarg) < 0) { + cryptodev_fips_validate_usage(prgname); + return -EINVAL; + } + + if (env.mbuf_data_room == 0) { + cryptodev_fips_validate_usage(prgname); + return -EINVAL; + } + break; + default: - return -1; + cryptodev_fips_validate_usage(prgname); + return -EINVAL; } } From patchwork Wed Nov 11 08:15:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ibtisam Tariq X-Patchwork-Id: 83992 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6333DA09D2; Wed, 11 Nov 2020 09:15:51 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 55F2737B4; Wed, 11 Nov 2020 09:15:38 +0100 (CET) Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by dpdk.org (Postfix) with ESMTP id 588EEDED for ; Wed, 11 Nov 2020 09:15:36 +0100 (CET) Received: by mail-wm1-f67.google.com with SMTP id c9so1373112wml.5 for ; Wed, 11 Nov 2020 00:15:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emumba-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=8/bMqTB2IPlN6tm1497yxo6X2DSOWJfRDe+GNnqAOHk=; b=CWo8yJD7Oa7QqZN0zR9SOmGlXZmX0KTD0PL0+U+zegxyCU20XKTL5VPFJCzTSkllVv LNAn8hJ7Z2tIVeSEf/DwcpQdpgJIwCmBRXehIzGzenmeZ4w2ALQTHFEOhagDTDJCcRIq JfQPrcgc7HdzTG31D04FrzHyCCdhrJUSrBxFW4MG9k2g4wPZErA9zwT6wFKESDNfJbwb DgTR5IVUpFtRe8DI0TgNRVIDxxPOeVHppfwR8CkDgWpYrvQWk0b4Jcif+XmdyfaLXjXz i8jrvY0oz9DVDTEXNrgIAiaSf8V/pGMGF/e4KnSTgXexkR2hfnftSBGnO2p96DR7Vwag fvJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=8/bMqTB2IPlN6tm1497yxo6X2DSOWJfRDe+GNnqAOHk=; b=c4RsAYFfVv6YAvs6fivE7H+1xMHqTNXSWcV0AKHe8gr7LJbnY70PJRQlRy0NBPWAeX jFt6Tm354FEeUKGXIhVKh8S+X9kYQPCMD0vOrG9ZHzclt2v2eF14WlRaMcC3peBrPivZ K/W/bugQMwl4UosR7SL9mT582hE3rQhtW+oMM1I9FIuBhc21zfJa0kMHA5OznvIZieoO I9jEMpASeEeN7SLlmTLyuNNrA1bRkcMuZZssOnT3ysDNt6qh05ppkMf5WtxJMLJaaR+h EmlLlVrcKOJeP6u6zyG3SjmLDp+aZslJxV1Txb1U5moXhO3B4EkgnaQOLn4rF1/olxIQ Lzdw== X-Gm-Message-State: AOAM532Unlj3brjr23muxG2sexXuPMEqCWgraz562ODsSEbP7W3ZcVST tuVM+rh4TSstUhTwtsP1g2LfCA== X-Google-Smtp-Source: ABdhPJxtaVz5rxsdIaGKGIV0WlGVmm3lKEC18pi//QNkrjdD5nfngY2DAriCwPWJ0D4Vv4G01akvVA== X-Received: by 2002:a1c:ac03:: with SMTP id v3mr1363360wme.9.1605082535106; Wed, 11 Nov 2020 00:15:35 -0800 (PST) Received: from localhost.localdomain ([39.33.227.210]) by smtp.gmail.com with ESMTPSA id z3sm909539wrw.87.2020.11.11.00.15.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Nov 2020 00:15:34 -0800 (PST) From: Ibtisam Tariq To: maxime.coquelin@redhat.com, chenbo.xia@intel.com, cristian.dumitrescu@intel.com, jasvinder.singh@intel.com, john.mcnamara@intel.com, reshma.pattan@intel.com, konstantin.ananyev@intel.com, marko.kovacevic@intel.com Cc: dev@dpdk.org, Ibtisam Tariq Date: Wed, 11 Nov 2020 08:15:02 +0000 Message-Id: <20201111081507.19913-2-ibtisam.tariq@emumba.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201111081507.19913-1-ibtisam.tariq@emumba.com> References: <20201111081507.19913-1-ibtisam.tariq@emumba.com> Subject: [dpdk-dev] [PATCH 2/7] examples/l3fwd-acl: enhance getopt_long usage X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Instead of using getopt_long return value, strcmp was used to compare the input parameters with the struct option array. This patch get rid of all those strcmp by directly binding each longopt with an int enum. This is to improve readability and consistency in all examples. Bugzilla ID: 238 Cc: konstantin.ananyev@intel.com Reported-by: David Marchand Signed-off-by: Ibtisam Tariq --- v2 * Remove extra indentations. * Remove extra block brackets in switch statement. * Change enum names to start with OPT_ and remove KEYWORD from enum names. v1 * enhance getopt_long usage --- examples/l3fwd-acl/main.c | 219 +++++++++++++++++++------------------- 1 file changed, 110 insertions(+), 109 deletions(-) diff --git a/examples/l3fwd-acl/main.c b/examples/l3fwd-acl/main.c index 961594f5f..5725963ad 100644 --- a/examples/l3fwd-acl/main.c +++ b/examples/l3fwd-acl/main.c @@ -195,13 +195,24 @@ send_single_packet(struct rte_mbuf *m, uint16_t port); #define ACL_LEAD_CHAR ('@') #define ROUTE_LEAD_CHAR ('R') #define COMMENT_LEAD_CHAR ('#') -#define OPTION_CONFIG "config" -#define OPTION_NONUMA "no-numa" -#define OPTION_ENBJMO "enable-jumbo" -#define OPTION_RULE_IPV4 "rule_ipv4" -#define OPTION_RULE_IPV6 "rule_ipv6" -#define OPTION_ALG "alg" -#define OPTION_ETH_DEST "eth-dest" + +enum { +#define OPT_CONFIG "config" + OPT_CONFIG_NUM = 256, +#define OPT_NONUMA "no-numa" + OPT_NONUMA_NUM, +#define OPT_ENBJMO "enable-jumbo" + OPT_ENBJMO_NUM, +#define OPT_RULE_IPV4 "rule_ipv4" + OPT_RULE_IPV4_NUM, +#define OPT_RULE_IPV6 "rule_ipv6" + OPT_RULE_IPV6_NUM, +#define OPT_ALG "alg" + OPT_ALG_NUM, +#define OPT_ETH_DEST "eth-dest" + OPT_ETH_DEST_NUM, +}; + #define ACL_DENY_SIGNATURE 0xf0000000 #define RTE_LOGTYPE_L3FWDACL RTE_LOGTYPE_USER3 #define acl_log(format, ...) RTE_LOG(ERR, L3FWDACL, format, ##__VA_ARGS__) @@ -1177,9 +1188,9 @@ static void dump_acl_config(void) { printf("ACL option are:\n"); - printf(OPTION_RULE_IPV4": %s\n", parm_config.rule_ipv4_name); - printf(OPTION_RULE_IPV6": %s\n", parm_config.rule_ipv6_name); - printf(OPTION_ALG": %s\n", str_acl_alg(parm_config.alg)); + printf(OPT_RULE_IPV4": %s\n", parm_config.rule_ipv4_name); + printf(OPT_RULE_IPV6": %s\n", parm_config.rule_ipv6_name); + printf(OPT_ALG": %s\n", str_acl_alg(parm_config.alg)); } static int @@ -1608,27 +1619,27 @@ print_usage(const char *prgname) usage_acl_alg(alg, sizeof(alg)); printf("%s [EAL options] -- -p PORTMASK -P" - "--"OPTION_RULE_IPV4"=FILE" - "--"OPTION_RULE_IPV6"=FILE" - " [--"OPTION_CONFIG" (port,queue,lcore)[,(port,queue,lcore]]" - " [--"OPTION_ENBJMO" [--max-pkt-len PKTLEN]]\n" + "--"OPT_RULE_IPV4"=FILE" + "--"OPT_RULE_IPV6"=FILE" + " [--"OPT_CONFIG" (port,queue,lcore)[,(port,queue,lcore]]" + " [--"OPT_ENBJMO" [--max-pkt-len PKTLEN]]\n" " -p PORTMASK: hexadecimal bitmask of ports to configure\n" " -P : enable promiscuous mode\n" - " --"OPTION_CONFIG": (port,queue,lcore): " + " --"OPT_CONFIG": (port,queue,lcore): " "rx queues configuration\n" - " --"OPTION_NONUMA": optional, disable numa awareness\n" - " --"OPTION_ENBJMO": enable jumbo frame" + " --"OPT_NONUMA": optional, disable numa awareness\n" + " --"OPT_ENBJMO": enable jumbo frame" " which max packet len is PKTLEN in decimal (64-9600)\n" - " --"OPTION_RULE_IPV4"=FILE: specify the ipv4 rules entries " + " --"OPT_RULE_IPV4"=FILE: specify the ipv4 rules entries " "file. " "Each rule occupy one line. " "2 kinds of rules are supported. " "One is ACL entry at while line leads with character '%c', " "another is route entry at while line leads with " "character '%c'.\n" - " --"OPTION_RULE_IPV6"=FILE: specify the ipv6 rules " + " --"OPT_RULE_IPV6"=FILE: specify the ipv6 rules " "entries file.\n" - " --"OPTION_ALG": ACL classify method to use, one of: %s\n", + " --"OPT_ALG": ACL classify method to use, one of: %s\n", prgname, ACL_LEAD_CHAR, ROUTE_LEAD_CHAR, alg); } @@ -1747,14 +1758,14 @@ parse_args(int argc, char **argv) int option_index; char *prgname = argv[0]; static struct option lgopts[] = { - {OPTION_CONFIG, 1, 0, 0}, - {OPTION_NONUMA, 0, 0, 0}, - {OPTION_ENBJMO, 0, 0, 0}, - {OPTION_RULE_IPV4, 1, 0, 0}, - {OPTION_RULE_IPV6, 1, 0, 0}, - {OPTION_ALG, 1, 0, 0}, - {OPTION_ETH_DEST, 1, 0, 0}, - {NULL, 0, 0, 0} + {OPT_CONFIG, 1, NULL, OPT_CONFIG_NUM }, + {OPT_NONUMA, 0, NULL, OPT_NONUMA_NUM }, + {OPT_ENBJMO, 0, NULL, OPT_ENBJMO_NUM }, + {OPT_RULE_IPV4, 1, NULL, OPT_RULE_IPV4_NUM }, + {OPT_RULE_IPV6, 1, NULL, OPT_RULE_IPV6_NUM }, + {OPT_ALG, 1, NULL, OPT_ALG_NUM }, + {OPT_ETH_DEST, 1, NULL, OPT_ETH_DEST_NUM }, + {NULL, 0, 0, 0 } }; argvopt = argv; @@ -1772,104 +1783,94 @@ parse_args(int argc, char **argv) return -1; } break; + case 'P': printf("Promiscuous mode selected\n"); promiscuous_on = 1; break; /* long options */ - case 0: - if (!strncmp(lgopts[option_index].name, - OPTION_CONFIG, - sizeof(OPTION_CONFIG))) { - ret = parse_config(optarg); - if (ret) { - printf("invalid config\n"); - print_usage(prgname); - return -1; - } - } - - if (!strncmp(lgopts[option_index].name, - OPTION_NONUMA, - sizeof(OPTION_NONUMA))) { - printf("numa is disabled\n"); - numa_on = 0; - } - - if (!strncmp(lgopts[option_index].name, - OPTION_ENBJMO, sizeof(OPTION_ENBJMO))) { - struct option lenopts = { - "max-pkt-len", - required_argument, - 0, - 0 - }; - - printf("jumbo frame is enabled\n"); - port_conf.rxmode.offloads |= - DEV_RX_OFFLOAD_JUMBO_FRAME; - port_conf.txmode.offloads |= - DEV_TX_OFFLOAD_MULTI_SEGS; - - /* - * if no max-pkt-len set, then use the - * default value RTE_ETHER_MAX_LEN - */ - if (0 == getopt_long(argc, argvopt, "", - &lenopts, &option_index)) { - ret = parse_max_pkt_len(optarg); - if ((ret < 64) || - (ret > MAX_JUMBO_PKT_LEN)) { - printf("invalid packet " - "length\n"); - print_usage(prgname); - return -1; - } - port_conf.rxmode.max_rx_pkt_len = ret; - } - printf("set jumbo frame max packet length " - "to %u\n", - (unsigned int) - port_conf.rxmode.max_rx_pkt_len); + case OPT_CONFIG_NUM: + ret = parse_config(optarg); + if (ret) { + printf("invalid config\n"); + print_usage(prgname); + return -1; } + break; - if (!strncmp(lgopts[option_index].name, - OPTION_RULE_IPV4, - sizeof(OPTION_RULE_IPV4))) - parm_config.rule_ipv4_name = optarg; - - if (!strncmp(lgopts[option_index].name, - OPTION_RULE_IPV6, - sizeof(OPTION_RULE_IPV6))) { - parm_config.rule_ipv6_name = optarg; - } + case OPT_NONUMA_NUM: + printf("numa is disabled\n"); + numa_on = 0; + break; - if (!strncmp(lgopts[option_index].name, - OPTION_ALG, sizeof(OPTION_ALG))) { - parm_config.alg = parse_acl_alg(optarg); - if (parm_config.alg == - RTE_ACL_CLASSIFY_DEFAULT) { - printf("unknown %s value:\"%s\"\n", - OPTION_ALG, optarg); + case OPT_ENBJMO_NUM: + { + struct option lenopts = { + "max-pkt-len", + required_argument, + 0, + 0 + }; + + printf("jumbo frame is enabled\n"); + port_conf.rxmode.offloads |= + DEV_RX_OFFLOAD_JUMBO_FRAME; + port_conf.txmode.offloads |= + DEV_TX_OFFLOAD_MULTI_SEGS; + + /* + * if no max-pkt-len set, then use the + * default value RTE_ETHER_MAX_LEN + */ + if (0 == getopt_long(argc, argvopt, "", + &lenopts, &option_index)) { + ret = parse_max_pkt_len(optarg); + if ((ret < 64) || + (ret > MAX_JUMBO_PKT_LEN)) { + printf("invalid packet " + "length\n"); print_usage(prgname); return -1; } + port_conf.rxmode.max_rx_pkt_len = ret; } + printf("set jumbo frame max packet length " + "to %u\n", + (unsigned int) + port_conf.rxmode.max_rx_pkt_len); + break; + } + case OPT_RULE_IPV4_NUM: + parm_config.rule_ipv4_name = optarg; + break; - if (!strncmp(lgopts[option_index].name, OPTION_ETH_DEST, - sizeof(OPTION_ETH_DEST))) { - const char *serr = parse_eth_dest(optarg); - if (serr != NULL) { - printf("invalid %s value:\"%s\": %s\n", - OPTION_ETH_DEST, optarg, serr); - print_usage(prgname); - return -1; - } - } + case OPT_RULE_IPV6_NUM: + parm_config.rule_ipv6_name = optarg; + break; + case OPT_ALG_NUM: + parm_config.alg = parse_acl_alg(optarg); + if (parm_config.alg == + RTE_ACL_CLASSIFY_DEFAULT) { + printf("unknown %s value:\"%s\"\n", + OPT_ALG, optarg); + print_usage(prgname); + return -1; + } break; + case OPT_ETH_DEST_NUM: + { + const char *serr = parse_eth_dest(optarg); + if (serr != NULL) { + printf("invalid %s value:\"%s\": %s\n", + OPT_ETH_DEST, optarg, serr); + print_usage(prgname); + return -1; + } + break; + } default: print_usage(prgname); return -1; From patchwork Wed Nov 11 08:15:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ibtisam Tariq X-Patchwork-Id: 83993 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id CEA0DA09D2; Wed, 11 Nov 2020 09:16:11 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9ECE25916; Wed, 11 Nov 2020 09:15:45 +0100 (CET) Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by dpdk.org (Postfix) with ESMTP id F0BD35913 for ; Wed, 11 Nov 2020 09:15:42 +0100 (CET) Received: by mail-wm1-f68.google.com with SMTP id h2so1426551wmm.0 for ; Wed, 11 Nov 2020 00:15:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emumba-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=zlM9Wry19VUPUSww91VmY9rkU/sQzcIcwnaouWkfus0=; b=LgbYjKaWTZ94rxMBhixdobKcZG1Jcsc/QrSyrNbfdh2l0E5uQafO2ZAHHwSiAYbS1n sS7E+v0pFHM3/wSZJI0FWIgT/PACeqSEeBjPysCnEZgxtb6KD7ILHNea8sMZ7Sgy4u1L 4cdQ4q+k5w/RRzODjS+TdwVCXX3F4A7bC59w44Hwt7hTOrpPpZOTcXP43SQ4YL5ImED8 0DYT2dPH+C32w3cfIv0Xb+dc2dG0TxRRXZz/NxJ0lY4EZSsTiZ4CWrgkDFt0WLBEiade M34Sxo0DFMi2Ifzd349QamG1tBfIQOJcvna3MZJ8gWsZh0P9zzcrZ4Cvp5Lrki3vVypk G5nQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=zlM9Wry19VUPUSww91VmY9rkU/sQzcIcwnaouWkfus0=; b=h+Tpc8QH5QOn7gguoxVuCU0zKPIVPGiugnACJ5vzIbK1TA4LXXYp6m6J7kikJUJWi0 v60hnnZN6SzeY/jwIgUUQcxoQSKhEcLR/LNurE8zB4Uk3RgTpi5zPpMAX6PaGJK1051x H/P1ayWHFk8HmTiXfg89ToPvLmS5NIU40w5G/tmaeRsR9QkLKEzxnogzVlCbB6MU+juw 9gJj5kGyhz00dBWzy45drP4niZpj83fMqamUYxvJIVtePB4WxWa7jSo8m5H2M+O6AcL1 wLQ0IOsCiWI4r4jZhLKwebP1iG273e+1u80jrcHF44PTyL79/W+RCJkDGlCQitSXs9xP GoTA== X-Gm-Message-State: AOAM531EkcLP7vg/5DSRYtTmXcTnxeuxTgTyyPHyuSa9P9h8RSYxiR0h uim6/8nKkSaR/008lIe/m41lYA== X-Google-Smtp-Source: ABdhPJy+kGHhOXrjUcU1fMGxEKhnP85mbZG4EUfAdZODYUfa/W2H8cyFljdwQ5Aqq7MOpTiPczS9+A== X-Received: by 2002:a1c:205:: with SMTP id 5mr2510295wmc.7.1605082542791; Wed, 11 Nov 2020 00:15:42 -0800 (PST) Received: from localhost.localdomain ([39.33.227.210]) by smtp.gmail.com with ESMTPSA id z3sm909539wrw.87.2020.11.11.00.15.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Nov 2020 00:15:42 -0800 (PST) From: Ibtisam Tariq To: maxime.coquelin@redhat.com, chenbo.xia@intel.com, cristian.dumitrescu@intel.com, jasvinder.singh@intel.com, john.mcnamara@intel.com, reshma.pattan@intel.com, konstantin.ananyev@intel.com, marko.kovacevic@intel.com Cc: dev@dpdk.org, Ibtisam Tariq , sergio.gonzalez.monroy@intel.com, phil.yang@arm.com Date: Wed, 11 Nov 2020 08:15:03 +0000 Message-Id: <20201111081507.19913-3-ibtisam.tariq@emumba.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201111081507.19913-1-ibtisam.tariq@emumba.com> References: <20201111081507.19913-1-ibtisam.tariq@emumba.com> Subject: [dpdk-dev] [PATCH 3/7] examples/packet_ordering: enhance getopt_long usage X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Instead of using getopt_long return value, strcmp was used to compare the input parameters with the struct option array. This patch get rid of all those strcmp by directly binding each longopt with an int enum. This is to improve readability and consistency in all examples. Bugzilla ID: 238 Cc: sergio.gonzalez.monroy@intel.com Cc: phil.yang@arm.com Reported-by: David Marchand Signed-off-by: Ibtisam Tariq --- v2 * Remove extra indentations. * Remove extra block brackets in switch statement. * Change enum names to start with OPT_ and remove KEYWORD from enum names. v1 * enhance getopt_long usage --- examples/packet_ordering/main.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/examples/packet_ordering/main.c b/examples/packet_ordering/main.c index 4bea1982d..32e58c9cd 100644 --- a/examples/packet_ordering/main.c +++ b/examples/packet_ordering/main.c @@ -29,6 +29,13 @@ /* Macros for printing using RTE_LOG */ #define RTE_LOGTYPE_REORDERAPP RTE_LOGTYPE_USER1 +enum { +#define OPT_DISABLE_REORDER "disable-reorder" + OPT_DISABLE_REORDER_NUM = 256, +#define OPT_INSIGHT_WORKER "insight-worker" + OPT_INSIGHT_WORKER_NUM, +}; + unsigned int portmask; unsigned int disable_reorder; unsigned int insight_worker; @@ -157,9 +164,9 @@ parse_args(int argc, char **argv) char **argvopt; char *prgname = argv[0]; static struct option lgopts[] = { - {"disable-reorder", 0, 0, 0}, - {"insight-worker", 0, 0, 0}, - {NULL, 0, 0, 0} + {OPT_DISABLE_REORDER, 0, NULL, OPT_DISABLE_REORDER_NUM}, + {OPT_INSIGHT_WORKER, 0, NULL, OPT_INSIGHT_WORKER_NUM }, + {NULL, 0, 0, 0 } }; argvopt = argv; @@ -176,18 +183,18 @@ parse_args(int argc, char **argv) return -1; } break; + /* long options */ - case 0: - if (!strcmp(lgopts[option_index].name, "disable-reorder")) { - printf("reorder disabled\n"); - disable_reorder = 1; - } - if (!strcmp(lgopts[option_index].name, - "insight-worker")) { - printf("print all worker statistics\n"); - insight_worker = 1; - } + case OPT_DISABLE_REORDER_NUM: + printf("reorder disabled\n"); + disable_reorder = 1; + break; + + case OPT_INSIGHT_WORKER_NUM: + printf("print all worker statistics\n"); + insight_worker = 1; break; + default: print_usage(prgname); return -1; From patchwork Wed Nov 11 08:15:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ibtisam Tariq X-Patchwork-Id: 83994 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0C92EA09D2; Wed, 11 Nov 2020 09:16:33 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 25E975937; Wed, 11 Nov 2020 09:15:53 +0100 (CET) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by dpdk.org (Postfix) with ESMTP id 549A8DED for ; Wed, 11 Nov 2020 09:15:51 +0100 (CET) Received: by mail-wr1-f65.google.com with SMTP id k2so1650762wrx.2 for ; Wed, 11 Nov 2020 00:15:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emumba-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=67/hPuPOrIMwfrb5cwvWLxAILqwcvuZTYJvgWFpLXB0=; b=j55vak1QkROGqpw8U9Npxk1xzK5z+42VjB3MbLVIYhAQjjUTkKAqJq9inpAtm9xvJN G1cVGXmpfDuthNhgFjRBK2BkIkLozEedl/+ZbS20xNpN7qp8wwum4kqrdFtrAfhLMLNz ElPAKyjeATWcJkfIU9OLLXRonTFRnYK8KzslEf6XgMbHqPSKAVZYSXrGkAfxgxgy+1xO S8xM01EjasvvgMmNaBUyLUBCv2nr2R/L5emZFVIKs7Gyj2SLqJs03usGUQ/3wTYsFHDB i9CiDg/ruTaDfvrAWsOvFgbkuIJYYKBvdWQf+rbZQYvbj2BCkI2c1ee24mtnMrn6DaF9 cqpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=67/hPuPOrIMwfrb5cwvWLxAILqwcvuZTYJvgWFpLXB0=; b=oJjNLohJmiLZJxOT9ChdVxd5w2BgRU8DAyL3zefRWTG5d3QtG5DShHLgICAHPTbfCZ fiFSUpqa8PXWmVgWlMOaujaZdNzPtCx78je40BhzaztheSNdZx1R0lDaxLcCuESZ7nTM wjv+qjkvsgvkMCTrf0ken1/pnpFHkbUZXA6n1S/HHPtl3Ha9nzXO2vHGQr3L1VKSIupM L+3k2FoR9gpwDzmFXYbCvFfToh1cKOnCFtmcL2sm2f8f1ITakiBFmsvmKbsqvR/1CHY7 oZgJKNQ3pRa7TKCWRGFE9oQuNUTxVPjebFV143vCXB+/Ri51zQpArA8a1ZUej7lzomYq q+Dg== X-Gm-Message-State: AOAM5332iycDZ2tT102AgpXkuUT27NeQo7mZY6RbINCMN3LskCCvSgIM +2dXX/gn0nqwHH1RdfjUihS0Pw== X-Google-Smtp-Source: ABdhPJyQKqR+jul32he71iZLcVVjFud5XWEFkP40G78xR3sqa4Z3fDTUkGGvY9mhTgD6QIquS/dY1w== X-Received: by 2002:a5d:5450:: with SMTP id w16mr2663490wrv.425.1605082550090; Wed, 11 Nov 2020 00:15:50 -0800 (PST) Received: from localhost.localdomain ([39.33.227.210]) by smtp.gmail.com with ESMTPSA id z3sm909539wrw.87.2020.11.11.00.15.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Nov 2020 00:15:49 -0800 (PST) From: Ibtisam Tariq To: maxime.coquelin@redhat.com, chenbo.xia@intel.com, cristian.dumitrescu@intel.com, jasvinder.singh@intel.com, john.mcnamara@intel.com, reshma.pattan@intel.com, konstantin.ananyev@intel.com, marko.kovacevic@intel.com Cc: dev@dpdk.org, Ibtisam Tariq , ian.betts@intel.com Date: Wed, 11 Nov 2020 08:15:04 +0000 Message-Id: <20201111081507.19913-4-ibtisam.tariq@emumba.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201111081507.19913-1-ibtisam.tariq@emumba.com> References: <20201111081507.19913-1-ibtisam.tariq@emumba.com> Subject: [dpdk-dev] [PATCH 4/7] examples/performance-thread/l3fwd-thread: enhance getopt_long usage X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Instead of using getopt_long return value, strcmp was used to compare the input parameters with the struct option array. This patch get rid of all those strcmp by directly binding each longopt with an int enum. This is to improve readability and consistency in all examples. Bugzilla ID: 238 Cc: ian.betts@intel.com Reported-by: David Marchand Signed-off-by: Ibtisam Tariq --- v2 * Remove extra indentations. * Remove extra block brackets in switch statement. * Change enum names to start with OPT_ and remove KEYWORD from enum names. v1 * enhance getopt_long usage --- .../performance-thread/l3fwd-thread/main.c | 210 +++++++++--------- 1 file changed, 106 insertions(+), 104 deletions(-) diff --git a/examples/performance-thread/l3fwd-thread/main.c b/examples/performance-thread/l3fwd-thread/main.c index 7bf61db6b..c75d2a4a3 100644 --- a/examples/performance-thread/l3fwd-thread/main.c +++ b/examples/performance-thread/l3fwd-thread/main.c @@ -2858,18 +2858,28 @@ parse_eth_dest(const char *optarg) dest[c] = peer_addr[c]; *(uint64_t *)(val_eth + portid) = dest_eth_addr[portid]; } - -#define CMD_LINE_OPT_RX_CONFIG "rx" -#define CMD_LINE_OPT_TX_CONFIG "tx" -#define CMD_LINE_OPT_STAT_LCORE "stat-lcore" -#define CMD_LINE_OPT_ETH_DEST "eth-dest" -#define CMD_LINE_OPT_NO_NUMA "no-numa" -#define CMD_LINE_OPT_IPV6 "ipv6" -#define CMD_LINE_OPT_ENABLE_JUMBO "enable-jumbo" -#define CMD_LINE_OPT_HASH_ENTRY_NUM "hash-entry-num" -#define CMD_LINE_OPT_NO_LTHREADS "no-lthreads" -#define CMD_LINE_OPT_PARSE_PTYPE "parse-ptype" - +enum { +#define OPT_RX_CONFIG "rx" + OPT_RX_CONFIG_NUM = 256, +#define OPT_TX_CONFIG "tx" + OPT_TX_CONFIG_NUM, +#define OPT_STAT_LCORE "stat-lcore" + OPT_STAT_LCORE_NUM, +#define OPT_ETH_DEST "eth-dest" + OPT_ETH_DEST_NUM, +#define OPT_NO_NUMA "no-numa" + OPT_NO_NUMA_NUM, +#define OPT_IPV6 "ipv6" + OPT_IPV6_NUM, +#define OPT_ENABLE_JUMBO "enable-jumbo" + OPT_ENABLE_JUMBO_NUM, +#define OPT_HASH_ENTRY_NUM "hash-entry-num" + OPT_HASH_ENTRY_NUM_NUM, +#define OPT_NO_LTHREADS "no-lthreads" + OPT_NO_LTHREADS_NUM, +#define OPT_PARSE_PTYPE "parse-ptype" + OPT_PARSE_PTYPE_NUM, +}; /* Parse the argument given in the command line of the application */ static int parse_args(int argc, char **argv) @@ -2879,17 +2889,17 @@ parse_args(int argc, char **argv) int option_index; char *prgname = argv[0]; static struct option lgopts[] = { - {CMD_LINE_OPT_RX_CONFIG, 1, 0, 0}, - {CMD_LINE_OPT_TX_CONFIG, 1, 0, 0}, - {CMD_LINE_OPT_STAT_LCORE, 1, 0, 0}, - {CMD_LINE_OPT_ETH_DEST, 1, 0, 0}, - {CMD_LINE_OPT_NO_NUMA, 0, 0, 0}, - {CMD_LINE_OPT_IPV6, 0, 0, 0}, - {CMD_LINE_OPT_ENABLE_JUMBO, 0, 0, 0}, - {CMD_LINE_OPT_HASH_ENTRY_NUM, 1, 0, 0}, - {CMD_LINE_OPT_NO_LTHREADS, 0, 0, 0}, - {CMD_LINE_OPT_PARSE_PTYPE, 0, 0, 0}, - {NULL, 0, 0, 0} + {OPT_RX_CONFIG, 1, NULL, OPT_RX_CONFIG_NUM }, + {OPT_TX_CONFIG, 1, NULL, OPT_TX_CONFIG_NUM }, + {OPT_STAT_LCORE, 1, NULL, OPT_STAT_LCORE_NUM }, + {OPT_ETH_DEST, 1, NULL, OPT_ETH_DEST_NUM }, + {OPT_NO_NUMA, 0, NULL, OPT_NO_NUMA_NUM }, + {OPT_IPV6, 0, NULL, OPT_IPV6_NUM }, + {OPT_ENABLE_JUMBO, 0, NULL, OPT_ENABLE_JUMBO_NUM }, + {OPT_HASH_ENTRY_NUM, 1, NULL, OPT_HASH_ENTRY_NUM_NUM }, + {OPT_NO_LTHREADS, 0, NULL, OPT_NO_LTHREADS_NUM }, + {OPT_PARSE_PTYPE, 0, NULL, OPT_PARSE_PTYPE_NUM }, + {NULL, 0, 0, 0 } }; argvopt = argv; @@ -2907,112 +2917,104 @@ parse_args(int argc, char **argv) return -1; } break; + case 'P': printf("Promiscuous mode selected\n"); promiscuous_on = 1; break; /* long options */ - case 0: - if (!strncmp(lgopts[option_index].name, CMD_LINE_OPT_RX_CONFIG, - sizeof(CMD_LINE_OPT_RX_CONFIG))) { - ret = parse_rx_config(optarg); - if (ret) { - printf("invalid rx-config\n"); - print_usage(prgname); - return -1; - } + case OPT_RX_CONFIG_NUM: + ret = parse_rx_config(optarg); + if (ret) { + printf("invalid rx-config\n"); + print_usage(prgname); + return -1; } + break; - if (!strncmp(lgopts[option_index].name, CMD_LINE_OPT_TX_CONFIG, - sizeof(CMD_LINE_OPT_TX_CONFIG))) { - ret = parse_tx_config(optarg); - if (ret) { - printf("invalid tx-config\n"); - print_usage(prgname); - return -1; - } + case OPT_TX_CONFIG_NUM: + ret = parse_tx_config(optarg); + if (ret) { + printf("invalid tx-config\n"); + print_usage(prgname); + return -1; } + break; #if (APP_CPU_LOAD > 0) - if (!strncmp(lgopts[option_index].name, CMD_LINE_OPT_STAT_LCORE, - sizeof(CMD_LINE_OPT_STAT_LCORE))) { - cpu_load_lcore_id = parse_stat_lcore(optarg); - } + case OPT_STAT_LCORE_NUM: + cpu_load_lcore_id = parse_stat_lcore(optarg); + break; #endif - if (!strncmp(lgopts[option_index].name, CMD_LINE_OPT_ETH_DEST, - sizeof(CMD_LINE_OPT_ETH_DEST))) - parse_eth_dest(optarg); + case OPT_ETH_DEST_NUM: + parse_eth_dest(optarg); + break; - if (!strncmp(lgopts[option_index].name, CMD_LINE_OPT_NO_NUMA, - sizeof(CMD_LINE_OPT_NO_NUMA))) { - printf("numa is disabled\n"); - numa_on = 0; - } + case OPT_NO_NUMA_NUM: + printf("numa is disabled\n"); + numa_on = 0; + break; #if (APP_LOOKUP_METHOD == APP_LOOKUP_EXACT_MATCH) - if (!strncmp(lgopts[option_index].name, CMD_LINE_OPT_IPV6, - sizeof(CMD_LINE_OPT_IPV6))) { - printf("ipv6 is specified\n"); - ipv6 = 1; - } + case OPT_IPV6_NUM: + printf("ipv6 is specified\n"); + ipv6 = 1; + break; #endif - if (!strncmp(lgopts[option_index].name, CMD_LINE_OPT_NO_LTHREADS, - sizeof(CMD_LINE_OPT_NO_LTHREADS))) { - printf("l-threads model is disabled\n"); - lthreads_on = 0; - } + case OPT_NO_LTHREADS_NUM: + printf("l-threads model is disabled\n"); + lthreads_on = 0; + break; - if (!strncmp(lgopts[option_index].name, CMD_LINE_OPT_PARSE_PTYPE, - sizeof(CMD_LINE_OPT_PARSE_PTYPE))) { - printf("software packet type parsing enabled\n"); - parse_ptype_on = 1; - } + case OPT_PARSE_PTYPE_NUM: + printf("software packet type parsing enabled\n"); + parse_ptype_on = 1; + break; - if (!strncmp(lgopts[option_index].name, CMD_LINE_OPT_ENABLE_JUMBO, - sizeof(CMD_LINE_OPT_ENABLE_JUMBO))) { - struct option lenopts = {"max-pkt-len", required_argument, 0, - 0}; - - printf("jumbo frame is enabled - disabling simple TX path\n"); - port_conf.rxmode.offloads |= - DEV_RX_OFFLOAD_JUMBO_FRAME; - port_conf.txmode.offloads |= - DEV_TX_OFFLOAD_MULTI_SEGS; - - /* if no max-pkt-len set, use the default value - * RTE_ETHER_MAX_LEN - */ - if (0 == getopt_long(argc, argvopt, "", &lenopts, - &option_index)) { - - ret = parse_max_pkt_len(optarg); - if ((ret < 64) || (ret > MAX_JUMBO_PKT_LEN)) { - printf("invalid packet length\n"); - print_usage(prgname); - return -1; - } - port_conf.rxmode.max_rx_pkt_len = ret; - } - printf("set jumbo frame max packet length to %u\n", - (unsigned int)port_conf.rxmode.max_rx_pkt_len); - } -#if (APP_LOOKUP_METHOD == APP_LOOKUP_EXACT_MATCH) - if (!strncmp(lgopts[option_index].name, CMD_LINE_OPT_HASH_ENTRY_NUM, - sizeof(CMD_LINE_OPT_HASH_ENTRY_NUM))) { - ret = parse_hash_entry_number(optarg); - if ((ret > 0) && (ret <= L3FWD_HASH_ENTRIES)) { - hash_entry_number = ret; - } else { - printf("invalid hash entry number\n"); + case OPT_ENABLE_JUMBO_NUM: + { + struct option lenopts = {"max-pkt-len", + required_argument, 0, 0}; + + printf("jumbo frame is enabled - disabling simple TX path\n"); + port_conf.rxmode.offloads |= + DEV_RX_OFFLOAD_JUMBO_FRAME; + port_conf.txmode.offloads |= + DEV_TX_OFFLOAD_MULTI_SEGS; + + /* if no max-pkt-len set, use the default value + * RTE_ETHER_MAX_LEN + */ + if (0 == getopt_long(argc, argvopt, "", &lenopts, + &option_index)) { + + ret = parse_max_pkt_len(optarg); + if ((ret < 64) || (ret > MAX_JUMBO_PKT_LEN)) { + printf("invalid packet length\n"); print_usage(prgname); return -1; } + port_conf.rxmode.max_rx_pkt_len = ret; } -#endif + printf("set jumbo frame max packet length to %u\n", + (unsigned int)port_conf.rxmode.max_rx_pkt_len); break; + } +#if (APP_LOOKUP_METHOD == APP_LOOKUP_EXACT_MATCH) + case OPT_HASH_ENTRY_NUM_NUM: + ret = parse_hash_entry_number(optarg); + if ((ret > 0) && (ret <= L3FWD_HASH_ENTRIES)) { + hash_entry_number = ret; + } else { + printf("invalid hash entry number\n"); + print_usage(prgname); + return -1; + } + break; +#endif default: print_usage(prgname); From patchwork Wed Nov 11 08:15:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ibtisam Tariq X-Patchwork-Id: 83995 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C37AFA09D2; Wed, 11 Nov 2020 09:16:55 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 933AF5958; Wed, 11 Nov 2020 09:15:57 +0100 (CET) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by dpdk.org (Postfix) with ESMTP id 40E2D5953 for ; Wed, 11 Nov 2020 09:15:55 +0100 (CET) Received: by mail-wr1-f66.google.com with SMTP id 23so1622829wrc.8 for ; Wed, 11 Nov 2020 00:15:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emumba-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=qdz8HBU8UqesCQRtU4Wdn1Dxa/kS1kAAVQUmbk5BqEU=; b=NECjrd3Z7IzdSNLtF6IwCSZqXdResUjk0JcFP9DuvWVBMX/gcZMYY6S5h/91lyIq4x R0FUwtWUXVJ0/s0Pq6kXdJv2PWg7lkwyoXK91oz2o1UhcRUSKpj2NxU/2Rk5WZpL2C1P M1x0AFYnbmlIKAjau2cEMel6BXdtGUa9+u7Uxa7t2QYy9C1UbUCDrbe1Xl315DOLjHsw 2l+Tx9tcWV2b8NZZ4Yf13F7sJ4f7QgXnE3MD72qZ3Pufjqy8AbM3kTF/v7mRAUeMQmh8 NKzh3PA6fx8ZFfB8b8MH/KQ84iraZeGj20GcMsrY4MUz+VIA6gXHc9c3/SJ1cfnUKFsc BDIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=qdz8HBU8UqesCQRtU4Wdn1Dxa/kS1kAAVQUmbk5BqEU=; b=X0SJ7LMJFHmY8zDcc7u/Tx4ariCOc2BIE+A2OYIdt+gGmCbpiNOpxCOJfVFlaTlKPP /i0J7h4ALd/RPXJAEmBPLa25KMiAeYSbNngKc1bMNPiePN4yBEnXxAxnVA7Gf+4jDtmT CDC9vSjWJM81XKid84ksI+L9hFODLwb1cP4K6mWRBXaCw5XhbX0QzkKxSaCVtsZ9alyv WN44UqORuU1rfVxJLYFo3joAxN8kcPQ2vX7SlJ+Rx3S1SpXKk+b/QOVJzoko5/UwTGtX /rIsQGIlpcXzLbx6g45B7THI7XwdQ5Y8bUsid/9DyJ7ZTrmxjzX91+BE0ZQhyU7Cz61a rNxg== X-Gm-Message-State: AOAM530NjO9u6pQO+HZlPrAW/iKEv4gQQq9feLsAff1643qi7R14bu3W 2zvem/JTHas5hbgu5vBnU52f2slIzKnI6R8oecQ= X-Google-Smtp-Source: ABdhPJzY5Xv2YmRmGN+TkobYVINPl66XcPswaFg3IcNYiQ2FEUrb6Qs6fTrfv+9CBvmL/akZIEV0zQ== X-Received: by 2002:a5d:4349:: with SMTP id u9mr28009994wrr.319.1605082554975; Wed, 11 Nov 2020 00:15:54 -0800 (PST) Received: from localhost.localdomain ([39.33.227.210]) by smtp.gmail.com with ESMTPSA id z3sm909539wrw.87.2020.11.11.00.15.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Nov 2020 00:15:54 -0800 (PST) From: Ibtisam Tariq To: maxime.coquelin@redhat.com, chenbo.xia@intel.com, cristian.dumitrescu@intel.com, jasvinder.singh@intel.com, john.mcnamara@intel.com, reshma.pattan@intel.com, konstantin.ananyev@intel.com, marko.kovacevic@intel.com Cc: dev@dpdk.org, Ibtisam Tariq , stephen@networkplumber.org Date: Wed, 11 Nov 2020 08:15:05 +0000 Message-Id: <20201111081507.19913-5-ibtisam.tariq@emumba.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201111081507.19913-1-ibtisam.tariq@emumba.com> References: <20201111081507.19913-1-ibtisam.tariq@emumba.com> Subject: [dpdk-dev] [PATCH 5/7] examples/qos_sched: enhance getopt_long usage X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Instead of using getopt_long return value, strcmp was used to compare the input parameters with the struct option array. This patch get rid of all those strcmp by directly binding each longopt with an int enum. This is to improve readability and consistency in all examples. Bugzilla ID: 238 Cc: stephen@networkplumber.org Reported-by: David Marchand Signed-off-by: Ibtisam Tariq --- v2 * Remove extra indentations. * Remove extra block brackets in switch statement. * Change enum names to start with OPT_ and remove KEYWORD from enum names. v1 * enhance getopt_long usage --- examples/qos_sched/args.c | 145 ++++++++++++++++++++++---------------- 1 file changed, 83 insertions(+), 62 deletions(-) diff --git a/examples/qos_sched/args.c b/examples/qos_sched/args.c index c62719623..15bedae13 100644 --- a/examples/qos_sched/args.c +++ b/examples/qos_sched/args.c @@ -297,6 +297,25 @@ app_parse_burst_conf(const char *conf_str) return 0; } +enum { +#define OPT_PFC "pfc" + OPT_PFC_NUM = 256, +#define OPT_MNC "mnc" + OPT_MNC_NUM, +#define OPT_RSZ "rsz" + OPT_RSZ_NUM, +#define OPT_BSZ "bsz" + OPT_BSZ_NUM, +#define OPT_MSZ "msz" + OPT_MSZ_NUM, +#define OPT_RTH "rth" + OPT_RTH_NUM, +#define OPT_TTH "tth" + OPT_TTH_NUM, +#define OPT_CFG "cfg" + OPT_CFG_NUM, +}; + /* * Parses the argument given in the command line of the application, * calculates mask for used cores and initializes EAL with calculated core mask @@ -306,20 +325,19 @@ app_parse_args(int argc, char **argv) { int opt, ret; int option_index; - const char *optname; char *prgname = argv[0]; uint32_t i, nb_lcores; static struct option lgopts[] = { - { "pfc", 1, 0, 0 }, - { "mnc", 1, 0, 0 }, - { "rsz", 1, 0, 0 }, - { "bsz", 1, 0, 0 }, - { "msz", 1, 0, 0 }, - { "rth", 1, 0, 0 }, - { "tth", 1, 0, 0 }, - { "cfg", 1, 0, 0 }, - { NULL, 0, 0, 0 } + {OPT_PFC, 1, NULL, OPT_PFC_NUM}, + {OPT_MNC, 1, NULL, OPT_MNC_NUM}, + {OPT_RSZ, 1, NULL, OPT_RSZ_NUM}, + {OPT_BSZ, 1, NULL, OPT_BSZ_NUM}, + {OPT_MSZ, 1, NULL, OPT_MSZ_NUM}, + {OPT_RTH, 1, NULL, OPT_RTH_NUM}, + {OPT_TTH, 1, NULL, OPT_TTH_NUM}, + {OPT_CFG, 1, NULL, OPT_CFG_NUM}, + {NULL, 0, 0, 0 } }; /* initialize EAL first */ @@ -342,66 +360,69 @@ app_parse_args(int argc, char **argv) interactive = 1; break; /* long options */ - case 0: - optname = lgopts[option_index].name; - if (str_is(optname, "pfc")) { - ret = app_parse_flow_conf(optarg); - if (ret) { - RTE_LOG(ERR, APP, "Invalid pipe configuration %s\n", optarg); - return -1; - } - break; - } - if (str_is(optname, "mnc")) { - app_main_core = (uint32_t)atoi(optarg); - break; - } - if (str_is(optname, "rsz")) { - ret = app_parse_ring_conf(optarg); - if (ret) { - RTE_LOG(ERR, APP, "Invalid ring configuration %s\n", optarg); - return -1; - } - break; + + case OPT_PFC_NUM: + ret = app_parse_flow_conf(optarg); + if (ret) { + RTE_LOG(ERR, APP, "Invalid pipe configuration %s\n", + optarg); + return -1; } - if (str_is(optname, "bsz")) { - ret = app_parse_burst_conf(optarg); - if (ret) { - RTE_LOG(ERR, APP, "Invalid burst configuration %s\n", optarg); - return -1; - } - break; + break; + + case OPT_MNC_NUM: + app_main_core = (uint32_t)atoi(optarg); + break; + + case OPT_RSZ_NUM: + ret = app_parse_ring_conf(optarg); + if (ret) { + RTE_LOG(ERR, APP, "Invalid ring configuration %s\n", + optarg); + return -1; } - if (str_is(optname, "msz")) { - mp_size = atoi(optarg); - if (mp_size <= 0) { - RTE_LOG(ERR, APP, "Invalid mempool size %s\n", optarg); - return -1; - } - break; + break; + + case OPT_BSZ_NUM: + ret = app_parse_burst_conf(optarg); + if (ret) { + RTE_LOG(ERR, APP, "Invalid burst configuration %s\n", + optarg); + return -1; } - if (str_is(optname, "rth")) { - ret = app_parse_rth_conf(optarg); - if (ret) { - RTE_LOG(ERR, APP, "Invalid RX threshold configuration %s\n", optarg); - return -1; - } - break; + break; + + case OPT_MSZ_NUM: + mp_size = atoi(optarg); + if (mp_size <= 0) { + RTE_LOG(ERR, APP, "Invalid mempool size %s\n", + optarg); + return -1; } - if (str_is(optname, "tth")) { - ret = app_parse_tth_conf(optarg); - if (ret) { - RTE_LOG(ERR, APP, "Invalid TX threshold configuration %s\n", optarg); - return -1; - } - break; + break; + + case OPT_RTH_NUM: + ret = app_parse_rth_conf(optarg); + if (ret) { + RTE_LOG(ERR, APP, "Invalid RX threshold configuration %s\n", + optarg); + return -1; } - if (str_is(optname, "cfg")) { - cfg_profile = optarg; - break; + break; + + case OPT_TTH_NUM: + ret = app_parse_tth_conf(optarg); + if (ret) { + RTE_LOG(ERR, APP, "Invalid TX threshold configuration %s\n", + optarg); + return -1; } break; + case OPT_CFG_NUM: + cfg_profile = optarg; + break; + default: app_usage(prgname); return -1; From patchwork Wed Nov 11 08:15:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ibtisam Tariq X-Patchwork-Id: 83996 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 77A23A09D2; Wed, 11 Nov 2020 09:17:18 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 997035A8C; Wed, 11 Nov 2020 09:16:01 +0100 (CET) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by dpdk.org (Postfix) with ESMTP id 6486C5A8C for ; Wed, 11 Nov 2020 09:16:00 +0100 (CET) Received: by mail-wr1-f65.google.com with SMTP id o15so1641070wru.6 for ; Wed, 11 Nov 2020 00:16:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emumba-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=SlAv/2Iy/DTPUCpmnrZ3zcXz7WhobArP6u+5jrnsiGw=; b=KqqIzrAvs49MKKJwrU4qW77Ga+BxsCq+oVCFzIPfUTyGQ+/Np68bmC6tNkpR3C7JrR V9x/1I8BNOriJ3rpKqD6CrIEgYIfRwzBNzmcFlLCNfFwiwSVpuqGLJQlLgvhXTlx41B2 ynxoqRQE4RhJo8fwOme+hECAyFGCk0FnHa2LkBhKddSpfr9aX2XZU3JY9JPRy+e1M6WU tgzc6T8lIY305FvqHJJuCm4EHuDwFccdd/g3LrMoJhWcI7TXRQi2orDljIv997uCr7eN g6TMM7DCnrFgdUF5l5nZ+gGr0UzHJ3c6rttjI5AIPQM22gonOAvicBS8BSKRW5gxLNOH SF9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=SlAv/2Iy/DTPUCpmnrZ3zcXz7WhobArP6u+5jrnsiGw=; b=V3dNbRGLdMnnVEULs1Ia+OULAseY4J2P9byiU3wqB+A2JyuBQeZSGSHkeqMtMuWBKS uUEREXOLpjMseN6pRsckMdsD9mH6Poo8aivwR5PvQ8SzHg5bEpGk40NLD8AuG40bYK3k vZVVs7WgE5+UNBZRUqVX1PfSRUTLI09fJ1LWvEMOdhE2K92sCETpoaarhIybQPcd3Sja gFE8EsF1GBjTOaUb0TS0ADXP2trj9LammTxPypm1TTu1IButkQeJNejC9xKNBFFotWVK 8TwrssWwGxZJy9a9I2FtNurm+j+57s2mTqw/nYhByUxp/2XkULtPo7j4/Kd1KIRjAxUR 92kQ== X-Gm-Message-State: AOAM5303JoTxKhydCXMvT+F1ncKfJf75GlPmDA84i7x+nDqKt5BFH7Zc eZ0B1a+g6umws8ysMKiISUyJvQ== X-Google-Smtp-Source: ABdhPJybT7cYLnOHu/aojIao5VoWwoVevHUUU8n7f6pzB5qwge+r55RkwyBzxmw/LXQVFACLX2dYcw== X-Received: by 2002:adf:ce84:: with SMTP id r4mr27042791wrn.281.1605082558987; Wed, 11 Nov 2020 00:15:58 -0800 (PST) Received: from localhost.localdomain ([39.33.227.210]) by smtp.gmail.com with ESMTPSA id z3sm909539wrw.87.2020.11.11.00.15.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Nov 2020 00:15:58 -0800 (PST) From: Ibtisam Tariq To: maxime.coquelin@redhat.com, chenbo.xia@intel.com, cristian.dumitrescu@intel.com, jasvinder.singh@intel.com, john.mcnamara@intel.com, reshma.pattan@intel.com, konstantin.ananyev@intel.com, marko.kovacevic@intel.com Cc: dev@dpdk.org, Ibtisam Tariq , jiayu.hu@intel.com, huawei.xie@intel.com Date: Wed, 11 Nov 2020 08:15:06 +0000 Message-Id: <20201111081507.19913-6-ibtisam.tariq@emumba.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201111081507.19913-1-ibtisam.tariq@emumba.com> References: <20201111081507.19913-1-ibtisam.tariq@emumba.com> Subject: [dpdk-dev] [PATCH 6/7] examples/vhost: enhance getopt_long usage X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Instead of using getopt_long return value, strcmp was used to compare the input parameters with the struct option array. This patch get rid of all those strcmp by directly binding each longopt with an int enum. This is to improve readability and consistency in all examples. Bugzilla ID: 238 Cc: jiayu.hu@intel.com Cc: huawei.xie@intel.com Reported-by: David Marchand Signed-off-by: Ibtisam Tariq --- v2 * Remove extra indentations. * Remove extra block brackets in switch statement. * Change enum names to start with OPT_ and remove KEYWORD from enum names. v1 * enhance getopt_long usage --- examples/vhost/main.c | 273 ++++++++++++++++++++++-------------------- 1 file changed, 145 insertions(+), 128 deletions(-) diff --git a/examples/vhost/main.c b/examples/vhost/main.c index 59a1aff07..c517afe96 100644 --- a/examples/vhost/main.c +++ b/examples/vhost/main.c @@ -466,6 +466,33 @@ us_vhost_usage(const char *prgname) prgname); } +enum { +#define OPT_VM2VM "vm2vm" + OPT_VM2VM_NUM = 256, +#define OPT_RX_RETRY "rx-retry" + OPT_RX_RETRY_NUM, +#define OPT_RX_RETRY_DELAY "rx-retry-delay" + OPT_RX_RETRY_DELAY_NUM, +#define OPT_RX_RETRY_NUMB "rx-retry-num" + OPT_RX_RETRY_NUMB_NUM, +#define OPT_MERGEABLE "mergeable" + OPT_MERGEABLE_NUM, +#define OPT_STATS "stats" + OPT_STATS_NUM, +#define OPT_SOCKET_FILE "socket-file" + OPT_SOCKET_FILE_NUM, +#define OPT_TX_CSUM "tx-csum" + OPT_TX_CSUM_NUM, +#define OPT_TSO "tso" + OPT_TSO_NUM, +#define OPT_CLIENT "client" +#define OPT_BUILTIN_NET_DRIVER "builtin-net-driver" +#define OPT_DMA_TYPE "dma-type" + OPT_DMA_TYPE_NUM, +#define OPT_DMAS "dmas" + OPT_DMAS_NUM, +}; + /* * Parse the arguments given in the command line of the application. */ @@ -477,19 +504,31 @@ us_vhost_parse_args(int argc, char **argv) unsigned i; const char *prgname = argv[0]; static struct option long_option[] = { - {"vm2vm", required_argument, NULL, 0}, - {"rx-retry", required_argument, NULL, 0}, - {"rx-retry-delay", required_argument, NULL, 0}, - {"rx-retry-num", required_argument, NULL, 0}, - {"mergeable", required_argument, NULL, 0}, - {"stats", required_argument, NULL, 0}, - {"socket-file", required_argument, NULL, 0}, - {"tx-csum", required_argument, NULL, 0}, - {"tso", required_argument, NULL, 0}, - {"client", no_argument, &client_mode, 1}, - {"builtin-net-driver", no_argument, &builtin_net_driver, 1}, - {"dma-type", required_argument, NULL, 0}, - {"dmas", required_argument, NULL, 0}, + {OPT_VM2VM, required_argument, + NULL, OPT_VM2VM_NUM}, + {OPT_RX_RETRY, required_argument, + NULL, OPT_RX_RETRY_NUM}, + {OPT_RX_RETRY_DELAY, required_argument, + NULL, OPT_RX_RETRY_DELAY_NUM}, + {OPT_RX_RETRY_NUMB, required_argument, + NULL, OPT_RX_RETRY_NUMB_NUM}, + {OPT_MERGEABLE, required_argument, + NULL, OPT_MERGEABLE_NUM}, + {OPT_STATS, required_argument, + NULL, OPT_STATS_NUM}, + {OPT_SOCKET_FILE, required_argument, + NULL, OPT_SOCKET_FILE_NUM}, + {OPT_TX_CSUM, required_argument, + NULL, OPT_TX_CSUM_NUM}, + {OPT_TSO, required_argument, + NULL, OPT_TSO_NUM}, + {OPT_CLIENT, no_argument, &client_mode, 1}, + {OPT_BUILTIN_NET_DRIVER, no_argument, + &builtin_net_driver, 1}, + {OPT_DMA_TYPE, required_argument, + NULL, OPT_DMA_TYPE_NUM}, + {OPT_DMAS, required_argument, + NULL, OPT_DMAS_NUM}, {NULL, 0, 0, 0}, }; @@ -512,145 +551,123 @@ us_vhost_parse_args(int argc, char **argv) vmdq_conf_default.rx_adv_conf.vmdq_rx_conf.rx_mode = ETH_VMDQ_ACCEPT_BROADCAST | ETH_VMDQ_ACCEPT_MULTICAST; - break; - case 0: - /* Enable/disable vm2vm comms. */ - if (!strncmp(long_option[option_index].name, "vm2vm", - MAX_LONG_OPT_SZ)) { - ret = parse_num_opt(optarg, (VM2VM_LAST - 1)); - if (ret == -1) { - RTE_LOG(INFO, VHOST_CONFIG, - "Invalid argument for " - "vm2vm [0|1|2]\n"); - us_vhost_usage(prgname); - return -1; - } else { - vm2vm_mode = (vm2vm_type)ret; - } + case OPT_VM2VM_NUM: + ret = parse_num_opt(optarg, (VM2VM_LAST - 1)); + if (ret == -1) { + RTE_LOG(INFO, VHOST_CONFIG, + "Invalid argument for " + "vm2vm [0|1|2]\n"); + us_vhost_usage(prgname); + return -1; } + vm2vm_mode = (vm2vm_type)ret; + break; - /* Enable/disable retries on RX. */ - if (!strncmp(long_option[option_index].name, "rx-retry", MAX_LONG_OPT_SZ)) { - ret = parse_num_opt(optarg, 1); - if (ret == -1) { - RTE_LOG(INFO, VHOST_CONFIG, "Invalid argument for rx-retry [0|1]\n"); - us_vhost_usage(prgname); - return -1; - } else { - enable_retry = ret; - } + case OPT_RX_RETRY_NUM: + ret = parse_num_opt(optarg, 1); + if (ret == -1) { + RTE_LOG(INFO, VHOST_CONFIG, "Invalid argument for rx-retry [0|1]\n"); + us_vhost_usage(prgname); + return -1; } + enable_retry = ret; + break; - /* Enable/disable TX checksum offload. */ - if (!strncmp(long_option[option_index].name, "tx-csum", MAX_LONG_OPT_SZ)) { - ret = parse_num_opt(optarg, 1); - if (ret == -1) { - RTE_LOG(INFO, VHOST_CONFIG, "Invalid argument for tx-csum [0|1]\n"); - us_vhost_usage(prgname); - return -1; - } else - enable_tx_csum = ret; + case OPT_TX_CSUM_NUM: + ret = parse_num_opt(optarg, 1); + if (ret == -1) { + RTE_LOG(INFO, VHOST_CONFIG, "Invalid argument for tx-csum [0|1]\n"); + us_vhost_usage(prgname); + return -1; } + enable_tx_csum = ret; + break; - /* Enable/disable TSO offload. */ - if (!strncmp(long_option[option_index].name, "tso", MAX_LONG_OPT_SZ)) { - ret = parse_num_opt(optarg, 1); - if (ret == -1) { - RTE_LOG(INFO, VHOST_CONFIG, "Invalid argument for tso [0|1]\n"); - us_vhost_usage(prgname); - return -1; - } else - enable_tso = ret; + case OPT_TSO_NUM: + ret = parse_num_opt(optarg, 1); + if (ret == -1) { + RTE_LOG(INFO, VHOST_CONFIG, "Invalid argument for tso [0|1]\n"); + us_vhost_usage(prgname); + return -1; } + enable_tso = ret; + break; - /* Specify the retries delay time (in useconds) on RX. */ - if (!strncmp(long_option[option_index].name, "rx-retry-delay", MAX_LONG_OPT_SZ)) { - ret = parse_num_opt(optarg, INT32_MAX); - if (ret == -1) { - RTE_LOG(INFO, VHOST_CONFIG, "Invalid argument for rx-retry-delay [0-N]\n"); - us_vhost_usage(prgname); - return -1; - } else { - burst_rx_delay_time = ret; - } + case OPT_RX_RETRY_DELAY_NUM: + ret = parse_num_opt(optarg, INT32_MAX); + if (ret == -1) { + RTE_LOG(INFO, VHOST_CONFIG, "Invalid argument for rx-retry-delay [0-N]\n"); + us_vhost_usage(prgname); + return -1; } + burst_rx_delay_time = ret; + break; - /* Specify the retries number on RX. */ - if (!strncmp(long_option[option_index].name, "rx-retry-num", MAX_LONG_OPT_SZ)) { - ret = parse_num_opt(optarg, INT32_MAX); - if (ret == -1) { - RTE_LOG(INFO, VHOST_CONFIG, "Invalid argument for rx-retry-num [0-N]\n"); - us_vhost_usage(prgname); - return -1; - } else { - burst_rx_retry_num = ret; - } + case OPT_RX_RETRY_NUMB_NUM: + ret = parse_num_opt(optarg, INT32_MAX); + if (ret == -1) { + RTE_LOG(INFO, VHOST_CONFIG, "Invalid argument for rx-retry-num [0-N]\n"); + us_vhost_usage(prgname); + return -1; } + burst_rx_retry_num = ret; + break; - /* Enable/disable RX mergeable buffers. */ - if (!strncmp(long_option[option_index].name, "mergeable", MAX_LONG_OPT_SZ)) { - ret = parse_num_opt(optarg, 1); - if (ret == -1) { - RTE_LOG(INFO, VHOST_CONFIG, "Invalid argument for mergeable [0|1]\n"); - us_vhost_usage(prgname); - return -1; - } else { - mergeable = !!ret; - if (ret) { - vmdq_conf_default.rxmode.offloads |= - DEV_RX_OFFLOAD_JUMBO_FRAME; - vmdq_conf_default.rxmode.max_rx_pkt_len - = JUMBO_FRAME_MAX_SIZE; - } - } + case OPT_MERGEABLE_NUM: + ret = parse_num_opt(optarg, 1); + if (ret == -1) { + RTE_LOG(INFO, VHOST_CONFIG, "Invalid argument for mergeable [0|1]\n"); + us_vhost_usage(prgname); + return -1; } - - /* Enable/disable stats. */ - if (!strncmp(long_option[option_index].name, "stats", MAX_LONG_OPT_SZ)) { - ret = parse_num_opt(optarg, INT32_MAX); - if (ret == -1) { - RTE_LOG(INFO, VHOST_CONFIG, - "Invalid argument for stats [0..N]\n"); - us_vhost_usage(prgname); - return -1; - } else { - enable_stats = ret; - } + mergeable = !!ret; + if (ret) { + vmdq_conf_default.rxmode.offloads |= + DEV_RX_OFFLOAD_JUMBO_FRAME; + vmdq_conf_default.rxmode.max_rx_pkt_len + = JUMBO_FRAME_MAX_SIZE; } + break; - /* Set socket file path. */ - if (!strncmp(long_option[option_index].name, - "socket-file", MAX_LONG_OPT_SZ)) { - if (us_vhost_parse_socket_path(optarg) == -1) { - RTE_LOG(INFO, VHOST_CONFIG, - "Invalid argument for socket name (Max %d characters)\n", - PATH_MAX); - us_vhost_usage(prgname); - return -1; - } + case OPT_STATS_NUM: + ret = parse_num_opt(optarg, INT32_MAX); + if (ret == -1) { + RTE_LOG(INFO, VHOST_CONFIG, + "Invalid argument for stats [0..N]\n"); + us_vhost_usage(prgname); + return -1; } + enable_stats = ret; + break; - if (!strncmp(long_option[option_index].name, - "dma-type", MAX_LONG_OPT_SZ)) { - strcpy(dma_type, optarg); + /* Set socket file path. */ + case OPT_SOCKET_FILE_NUM: + if (us_vhost_parse_socket_path(optarg) == -1) { + RTE_LOG(INFO, VHOST_CONFIG, + "Invalid argument for socket name (Max %d characters)\n", + PATH_MAX); + us_vhost_usage(prgname); + return -1; } + break; - if (!strncmp(long_option[option_index].name, - "dmas", MAX_LONG_OPT_SZ)) { - if (open_dma(optarg) == -1) { - RTE_LOG(INFO, VHOST_CONFIG, - "Wrong DMA args\n"); - us_vhost_usage(prgname); - return -1; - } - async_vhost_driver = 1; - } + case OPT_DMA_TYPE_NUM: + strcpy(dma_type, optarg); + break; + case OPT_DMAS_NUM: + if (open_dma(optarg) == -1) { + RTE_LOG(INFO, VHOST_CONFIG, + "Wrong DMA args\n"); + us_vhost_usage(prgname); + return -1; + } + async_vhost_driver = 1; break; - /* Invalid option - print options. */ + /* Invalid option - print options. */ default: us_vhost_usage(prgname); return -1; From patchwork Wed Nov 11 08:15:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ibtisam Tariq X-Patchwork-Id: 83997 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id F019AA09D2; Wed, 11 Nov 2020 09:17:38 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1EE165B3A; Wed, 11 Nov 2020 09:16:07 +0100 (CET) Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by dpdk.org (Postfix) with ESMTP id E50785AB3 for ; Wed, 11 Nov 2020 09:16:04 +0100 (CET) Received: by mail-wr1-f67.google.com with SMTP id d12so1585038wrr.13 for ; Wed, 11 Nov 2020 00:16:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emumba-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=F4hIvNjOel+GquIQtnawbHV5oREb1Om8o4ct0BH2KXM=; b=jIULhxXQgaf1WD9NocWHH1lFmMqDVPu5RXhn8X9hUAOrXRrO9ZZZxnHlQeSQSVsKmE Q1XkxPv0YeZUewe5M7xj81a795tas8mHdqxOxigViDwT8OXCHk2QGgQeDoFBOkkqkPC8 JWF7gBci08JyHIPGFi3IJeF2T/SQjH5sj76vLF+INONniEIXzkUzC7UiltAwEbxtAr/E ig1xIX6erV6X/XUIO1EO7XGw7N2+vITjN6xjp62K5wYICowK1VMxlPN+8h/rs0MqXoH2 xkvEclriOIrd3uflzb7f+72KHQiZIj/BFhD4XI8hdcr/j4+w7q/90jcKnYAvOnvXK20U EGXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=F4hIvNjOel+GquIQtnawbHV5oREb1Om8o4ct0BH2KXM=; b=cphIjMYyyyszNFl4IiEmqC1fheA4gzeaXXPb80wsSvIfyhbYJ+v1b4fH21VXVU2c19 1caLhgEXx4gk4buD8UgWwhufYIJeh2gv15sfQyXxzXFppONppBhZq0u8YpZkiouqiOjE 8LFlwbCAxU6N9CvJqDlKzZoYU3p5gjQeUjhAB1brx2zBJXWE1ARjs52FT3/yv4DCSkt7 bcLRgzFnAwnEkApzM6WLrCfpHZK6+gnNPji8IPKSzg2fRsFS4+LzQMOYbIe3y/vjnj28 b/9fdv1fFancF+4LCRHPJSd0XCPu/mWtN7eqy77SlFm5mesjixkc68RcCWA0qJA6g/R0 Uhlw== X-Gm-Message-State: AOAM531ye0FXuhJrK8iu+4pUMOpKwFMDP3DgQ3u8YgdT8hqv2K51wDOH s2kM2lZzof4vrXBQjuITNpQaAw== X-Google-Smtp-Source: ABdhPJzq/iZ399dtjZYysZtoZOLXeazm1VN0kEzW9XSDsJDjSoCNJ1fT/WqjSsZieFORLQom6SPzIw== X-Received: by 2002:adf:c847:: with SMTP id e7mr28604628wrh.346.1605082563634; Wed, 11 Nov 2020 00:16:03 -0800 (PST) Received: from localhost.localdomain ([39.33.227.210]) by smtp.gmail.com with ESMTPSA id z3sm909539wrw.87.2020.11.11.00.16.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Nov 2020 00:16:03 -0800 (PST) From: Ibtisam Tariq To: maxime.coquelin@redhat.com, chenbo.xia@intel.com, cristian.dumitrescu@intel.com, jasvinder.singh@intel.com, john.mcnamara@intel.com, reshma.pattan@intel.com, konstantin.ananyev@intel.com, marko.kovacevic@intel.com Cc: dev@dpdk.org, Ibtisam Tariq , roy.fan.zhang@intel.com Date: Wed, 11 Nov 2020 08:15:07 +0000 Message-Id: <20201111081507.19913-7-ibtisam.tariq@emumba.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201111081507.19913-1-ibtisam.tariq@emumba.com> References: <20201111081507.19913-1-ibtisam.tariq@emumba.com> Subject: [dpdk-dev] [PATCH 7/7] examples/vhost_crypto: enhance getopt_long usage X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Instead of using getopt_long return value, strcmp was used to compare the input parameters with the struct option array. This patch get rid of all those strcmp by directly binding each longopt with an int enum. This is to improve readability and consistency in all examples. Bugzilla ID: 238 Cc: roy.fan.zhang@intel.com Reported-by: David Marchand Signed-off-by: Ibtisam Tariq --- v2 * Remove extra indentations. * Remove extra block brackets in switch statement. * Change enum names to start with OPT_ and remove KEYWORD from enum names. * Remove unused short options v1 * enhance getopt_long usage --- examples/vhost_crypto/main.c | 88 +++++++++++++++++++++--------------- 1 file changed, 51 insertions(+), 37 deletions(-) diff --git a/examples/vhost_crypto/main.c b/examples/vhost_crypto/main.c index 11ad49159..d731751eb 100644 --- a/examples/vhost_crypto/main.c +++ b/examples/vhost_crypto/main.c @@ -62,10 +62,16 @@ struct vhost_crypto_options { uint32_t guest_polling; } options; -#define CONFIG_KEYWORD "config" -#define SOCKET_FILE_KEYWORD "socket-file" -#define ZERO_COPY_KEYWORD "zero-copy" -#define POLLING_KEYWORD "guest-polling" +enum { +#define OPT_CONFIG "config" + OPT_CONFIG_NUM = 256, +#define OPT_SOCKET_FILE "socket-file" + OPT_SOCKET_FILE_NUM, +#define OPT_ZERO_COPY "zero-copy" + OPT_ZERO_COPY_NUM, +#define OPT_POLLING "guest-polling" + OPT_POLLING_NUM, +}; #define NB_SOCKET_FIELDS (2) @@ -198,8 +204,8 @@ vhost_crypto_usage(const char *prgname) " --%s (lcore,cdev_id,queue_id)[,(lcore,cdev_id,queue_id)]" " --%s: zero copy\n" " --%s: guest polling\n", - prgname, SOCKET_FILE_KEYWORD, CONFIG_KEYWORD, - ZERO_COPY_KEYWORD, POLLING_KEYWORD); + prgname, OPT_SOCKET_FILE, OPT_CONFIG, + OPT_ZERO_COPY, OPT_POLLING); } static int @@ -210,48 +216,56 @@ vhost_crypto_parse_args(int argc, char **argv) char **argvopt; int option_index; struct option lgopts[] = { - {SOCKET_FILE_KEYWORD, required_argument, 0, 0}, - {CONFIG_KEYWORD, required_argument, 0, 0}, - {ZERO_COPY_KEYWORD, no_argument, 0, 0}, - {POLLING_KEYWORD, no_argument, 0, 0}, - {NULL, 0, 0, 0} + {OPT_SOCKET_FILE, required_argument, + NULL, OPT_SOCKET_FILE_NUM}, + {OPT_CONFIG, required_argument, + NULL, OPT_CONFIG_NUM}, + {OPT_ZERO_COPY, no_argument, + NULL, OPT_ZERO_COPY_NUM}, + {OPT_POLLING, no_argument, + NULL, OPT_POLLING_NUM}, + {NULL, 0, 0, 0} }; argvopt = argv; - while ((opt = getopt_long(argc, argvopt, "s:", + while ((opt = getopt_long(argc, argvopt, "", lgopts, &option_index)) != EOF) { + if (opt == '?') { + vhost_crypto_usage(prgname); + return -1; + } + switch (opt) { - case 0: - if (strcmp(lgopts[option_index].name, - SOCKET_FILE_KEYWORD) == 0) { - ret = parse_socket_arg(optarg); - if (ret < 0) { - vhost_crypto_usage(prgname); - return ret; - } - } else if (strcmp(lgopts[option_index].name, - CONFIG_KEYWORD) == 0) { - ret = parse_config(optarg); - if (ret < 0) { - vhost_crypto_usage(prgname); - return ret; - } - } else if (strcmp(lgopts[option_index].name, - ZERO_COPY_KEYWORD) == 0) { - options.zero_copy = - RTE_VHOST_CRYPTO_ZERO_COPY_ENABLE; - } else if (strcmp(lgopts[option_index].name, - POLLING_KEYWORD) == 0) { - options.guest_polling = 1; - } else { + case OPT_SOCKET_FILE_NUM: + ret = parse_socket_arg(optarg); + if (ret < 0) { vhost_crypto_usage(prgname); - return -EINVAL; + return ret; + } + break; + + case OPT_CONFIG_NUM: + ret = parse_config(optarg); + if (ret < 0) { + vhost_crypto_usage(prgname); + return ret; } break; + + case OPT_ZERO_COPY_NUM: + options.zero_copy = + RTE_VHOST_CRYPTO_ZERO_COPY_ENABLE; + break; + + case OPT_POLLING_NUM: + options.guest_polling = 1; + break; + default: - return -1; + vhost_crypto_usage(prgname); + return -EINVAL; } }