From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6C17CA04E7; Mon, 2 Nov 2020 09:33:13 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BDC9D9AEB; Mon, 2 Nov 2020 09:33:11 +0100 (CET) Received: from mail-lf1-f68.google.com (mail-lf1-f68.google.com [209.85.167.68]) by dpdk.org (Postfix) with ESMTP id 5EB1572F0 for ; Mon, 2 Nov 2020 09:33:10 +0100 (CET) Received: by mail-lf1-f68.google.com with SMTP id 126so16304800lfi.8 for ; Mon, 02 Nov 2020 00:33:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emumba-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=JTjxK3Xd+ALJjxedmGPZQlprRDKxHBEdpoQ2Psra0R4=; b=z2HJj1GzDuYpWROieCCSJgGRmAtDgoydesDze6zRTyb/zZ+BaSKXpSQBocLUKiRWRY yZaGlEW/45CmvVRCtGGRuGdnzIGFdgMwjJqxvEAsDem+2ZHnkvOkA0Bq+Dg8mtVzpgri BtXlBq4faDUHA+TiBEpQjb0WKkT9fo9lulmKD/AW7GtB5pet0pDcqGk20mIEyGztnI+G 3mVCys6xbhqS145YUh8Te2uuGbCiKJViPtB8F44oPjdDNLisSF8DhB0HqQBq5M0qJMMv WmFlXQ2rpHNNt6GJcSXJCW3slak0kwimIao4UYQJ6JBjdjcI6yx9wvyOjprvCI7WZpzr R25A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=JTjxK3Xd+ALJjxedmGPZQlprRDKxHBEdpoQ2Psra0R4=; b=RSGGRMf7MN5WcNSskFTy3GjvcBzoEQGKJlDayV7a4HRGBNorGb8y9P3LoGKxHApITW lUABWAzfWRMpS8GpE65Ul0k0RiImzlKfX1spc3+ScNa1tDdS4AszIzr3Oq+vAfUCAO5c vCFk+psw2mDG5d46ibjdGc1s9ilpqa9Pc+maQKeGGaxYZZyDvtgtzOk32abJZ4K7Dj1b aCVGbSl6e8DN7/mBkCzr9eX3464bZWMbONs/qce5b55s9b0edQotQE+7G09ElOqygJk2 FWXzm3Fy2qY2Ik2Xp7yxGy+Ea0wrEwTvepxDbPDU1ZTzHsGe/+uAbNErf7KKuZtF/kTa oLAw== X-Gm-Message-State: AOAM531vd7mOYmoFjf+JRXBZc7QkqKP+mYs2qtLL+ZmMKRkYHbiWAOS0 wyhzIh1B+HGRZbtTCFgbgOnkTKLgql0XNhQ27vLkCA== X-Google-Smtp-Source: ABdhPJyd7JZzEh1sYQCoE3PqC8WMhVmlTvqdV4gIEkA1E5/4QgEJWd2RloCUQVuvSfrbGLeNRBH6MoEEbmm4Nal/w2Y= X-Received: by 2002:ac2:5edb:: with SMTP id d27mr5035124lfq.404.1604305988740; Mon, 02 Nov 2020 00:33:08 -0800 (PST) MIME-Version: 1.0 References: <20201029125339.30916-1-ibtisam.tariq@emumba.com> In-Reply-To: From: Ibtisam Tariq Date: Mon, 2 Nov 2020 13:32:57 +0500 Message-ID: To: David Marchand Cc: "Kovacevic, Marko" , "Ananyev, Konstantin" , "Pattan, Reshma" , "Mcnamara, John" , Cristian Dumitrescu , "Singh, Jasvinder" , "Xia, Chenbo" , Maxime Coquelin , Xiaoyun Li , dev Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH 1/8] 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" Hi David, Thank you for reviewing the patch. I will submit the v2 of the patchset with new updates. On Fri, Oct 30, 2020 at 3:07 AM David Marchand wrote: > Hello Ibtisam, > > On Thu, Oct 29, 2020 at 1:55 PM Ibtisam Tariq > wrote: > > > > 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. > > > > Bugzilla ID: 238 > > Fixes: 3d0fad56b74 ("examples/fips_validation: add crypto FIPS > application"} > > I consider this bz as an enhancement, for better readability / > consistency in the project code. > This is not a bugfix, and I would not flag the patches with a Fixes: tag. > > > > Cc: marko.kovacevic@intel.com > > > > Reported-by: David Marchand > > Signed-off-by: Ibtisam Tariq > > --- > > examples/fips_validation/main.c | 241 +++++++++++++++++++------------- > > 1 file changed, 143 insertions(+), 98 deletions(-) > > > > diff --git a/examples/fips_validation/main.c > b/examples/fips_validation/main.c > > index 07532c956..5fb76b421 100644 > > --- a/examples/fips_validation/main.c > > +++ b/examples/fips_validation/main.c > > @@ -15,17 +15,31 @@ > > #include "fips_validation.h" > > #include "fips_dev_self_test.h" > > > > +enum{ > > Missing space. > > > The _KEYWORD suffix gives no info and can be dropped in all those > defines / enums. > > > #define REQ_FILE_PATH_KEYWORD "req-file" > > + /* first long only option value must be >= 256, so that we won't > > + * conflict with short options > > + */ > > This comment is copied from the EAL header, but there is no mapping to > a short option in this example. > You can drop it. > > > + REQ_FILE_PATH_KEYWORD_NUM = 256, > > #define RSP_FILE_PATH_KEYWORD "rsp-file" > > + RSP_FILE_PATH_KEYWORD_NUM, > > #define MBUF_DATAROOM_KEYWORD "mbuf-dataroom" > > + MBUF_DATAROOM_KEYWORD_NUM, > > #define FOLDER_KEYWORD "path-is-folder" > > + FOLDER_KEYWORD_NUM, > > #define CRYPTODEV_KEYWORD "cryptodev" > > + CRYPTODEV_KEYWORD_NUM, > > #define CRYPTODEV_ID_KEYWORD "cryptodev-id" > > + CRYPTODEV_ID_KEYWORD_NUM, > > #define CRYPTODEV_ST_KEYWORD "self-test" > > + CRYPTODEV_ST_KEYWORD_NUM, > > #define CRYPTODEV_BK_ID_KEYWORD "broken-test-id" > > + CRYPTODEV_BK_ID_KEYWORD_NUM, > > #define CRYPTODEV_BK_DIR_KEY "broken-test-dir" > > + CRYPTODEV_BK_DIR_KEY_NUM, > > > Those next two defines have nothing to do with getopt options and they > are only used once. > You can directly replace them as their fixed string later in the > parsing code, and drop the defines. > > > > #define CRYPTODEV_ENC_KEYWORD "enc" > > #define CRYPTODEV_DEC_KEYWORD "dec" > > +}; > > > > struct fips_test_vector vec; > > struct fips_test_interim_info info; > > @@ -226,15 +240,24 @@ 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}, > > Single indent is enough. > > > > + {REQ_FILE_PATH_KEYWORD, required_argument, > > + NULL, REQ_FILE_PATH_KEYWORD_NUM}, > > + {RSP_FILE_PATH_KEYWORD, required_argument, > > + NULL, RSP_FILE_PATH_KEYWORD_NUM}, > > + {FOLDER_KEYWORD, no_argument, > > + NULL, FOLDER_KEYWORD_NUM}, > > + {MBUF_DATAROOM_KEYWORD, required_argument, > > + NULL, MBUF_DATAROOM_KEYWORD_NUM}, > > + {CRYPTODEV_KEYWORD, required_argument, > > + NULL, CRYPTODEV_KEYWORD_NUM}, > > + {CRYPTODEV_ID_KEYWORD, required_argument, > > + NULL, CRYPTODEV_ID_KEYWORD_NUM}, > > + {CRYPTODEV_ST_KEYWORD, no_argument, > > + NULL, CRYPTODEV_ST_KEYWORD_NUM}, > > + {CRYPTODEV_BK_ID_KEYWORD, required_argument, > > + NULL, > CRYPTODEV_BK_ID_KEYWORD_NUM}, > > + {CRYPTODEV_BK_DIR_KEY, required_argument, > > + NULL, CRYPTODEV_BK_DIR_KEY_NUM}, > > {NULL, 0, 0, 0} > > }; > > > > @@ -251,105 +274,127 @@ cryptodev_fips_validate_parse_args(int argc, > char **argv) > > while ((opt = getopt_long(argc, argvopt, "s:", > > 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 REQ_FILE_PATH_KEYWORD_NUM: > > + { > > Unless you need a temp variable, there is no need for a block for each > case: statement. > Simply: > case REQ_FILE_PATH_NUM: > env.req_path = optarg; > break; > > > + env.req_path = optarg; > > + break; > > + } > > + case RSP_FILE_PATH_KEYWORD_NUM: > > + { > > + env.rsp_path = optarg; > > + break; > > + } > > + case FOLDER_KEYWORD_NUM: > > + { > > + env.is_path_folder = 1; > > + break; > > + } > > + case CRYPTODEV_KEYWORD_NUM: > > + { > > + ret = parse_cryptodev_arg(optarg); > > + if (ret < 0) { > > + cryptodev_fips_validate_usage(prgname); > > + return -EINVAL; > > + } > > > > - 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; > > - } > > + break; > > + } > > + case CRYPTODEV_ID_KEYWORD_NUM: > > + { > > + ret = parse_cryptodev_id_arg(optarg); > > + if (ret < 0) { > > + cryptodev_fips_validate_usage(prgname); > > + return -EINVAL; > > + } > > + break; > > + } > > + case CRYPTODEV_ST_KEYWORD_NUM: > > + { > > + env.self_test = 1; > > + break; > > + } > > + case CRYPTODEV_BK_ID_KEYWORD_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 (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; > > - } > > + 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 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 (data_room_size == 0 || > > - data_room_size > > UINT16_MAX) { > > - > cryptodev_fips_validate_usage(prgname); > > - return -EINVAL; > > - } > > + 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; > > + } > > + break; > > + } > > + case MBUF_DATAROOM_KEYWORD_NUM: > > + { > > + uint32_t data_room_size; > > Here, I don't think we need a temp storage. > If the value is invalid, the parsing and then init will fail. > You can directly pass &env.mbuf_data_room to parser_read_uint32 and > check its value. > > > > > > - env.mbuf_data_room = data_room_size; > > - } else { > > + if (parser_read_uint32(&data_room_size, > > + optarg) < 0) { > > cryptodev_fips_validate_usage(prgname); > > return -EINVAL; > > } > > + > > + if (data_room_size == 0 || > > + data_room_size > UINT16_MAX) { > > + cryptodev_fips_validate_usage(prgname); > > + return -EINVAL; > > + } > > + > > + env.mbuf_data_room = data_room_size; > > + > > break; > > + } > > default: > > - return -1; > > + { > > + cryptodev_fips_validate_usage(prgname); > > + return -EINVAL; > > + } > > } > > } > > > > -- > > 2.17.1 > > > > I did not look too much at the rest of the series, but I guess most of > those comments apply to other patches. > > > -- > David Marchand > > -- - Ibtisam