From patchwork Fri Mar 23 05:50:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 36442 X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D62607D30; Fri, 23 Mar 2018 06:51:26 +0100 (CET) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0087.outbound.protection.outlook.com [104.47.40.87]) by dpdk.org (Postfix) with ESMTP id EE0A55F5B for ; Fri, 23 Mar 2018 06:51:25 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=7BzTJY4+98pDKYFqf0fGIXuGXlRSZYCzw0Stg2j4BY8=; b=SJ6gE5zMUfmYzckYjZgDJduko2rVFSZjKDf25X9rJljIKU/5cTBy6PIEcxhQqJNRHD741SA/RBxSOw77w35we0+r8D8SDh/5te+mVlzBg3y0OirbFdGy9Oi4dqd1GAfTlERc9hDMd6m25QUnq0q5i5bwknDvBOAWeS0asQtl6kA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by SN2PR0701MB1071.namprd07.prod.outlook.com (2a01:111:e400:341f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.609.10; Fri, 23 Mar 2018 05:51:19 +0000 From: Anoob Joseph To: Akhil Goyal , Declan Doherty , Radu Nicolau Cc: Anoob Joseph , Jerin Jacob , Narayana Prasad , dev@dpdk.org Date: Fri, 23 Mar 2018 11:20:51 +0530 Message-Id: <1521784251-14820-1-git-send-email-anoob.joseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: BM1PR0101CA0045.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::31) To SN2PR0701MB1071.namprd07.prod.outlook.com (2a01:111:e400:341f::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 40ed5780-af8c-417e-d705-08d590821b24 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:SN2PR0701MB1071; X-Microsoft-Exchange-Diagnostics: 1; SN2PR0701MB1071; 3:Kl7i2F/NE20eP2qp2eXBzOTJFVgHvHG+b8VVC6bVJfkmL9WYmbM4xfsncg7dM20xaQwF3HNSssuAhHy5sVRMQ/lUtTJk/SYSBCDA0sd8HwL4BypdwPzkTA8XLMd60FwzviY1eq9zM+w7FNedvohGs18p1MggFdz4FGxQl/L88iqqeck055PaSUfayndYykKOOD0BaqDrXp8uXf69IsE844XWvalVMDBkMgDpzPuq9HQ/q4ftrCSlRGwmrlz9snCJ; 25:2c4em9fj9f9OxILhzBkCfDjt3cEBFG64BiE1NhscOMLh8hPCIH0R+A0Tlt82BVBMIXDhS52oll8YJzuqF/1S7j4l+9q8ARJnwHyOFQ7EdWGmkmdJyWhz1e4hfytZaiOiFcKuR9DFcvlQ9xhdMTLBXtV/+ElOworpl1B8TdC2V7Klu9TlsSI9St30NcWWSTA6MR4qUS5P8qOH/puC+usW2w/qWkCoY7y4rQjdQi0ph4vbs9o52/5cf3c6vfP3+RWgdV7sy0pqu/T59hLs80NQV9YktUBz8P42wf5MKHq1Kq3b7VZery/HpfYG0en1rG6DawDbkNtBazPk8PtZGzN7rQ==; 31:z51pOM+JNiS0FkMqcU5pd0UEX07Yf9mlOvSpvNFOncmzFSpLqCnYjSyoKzajFdvxkuc62oAxb1pE4hyI2sIL3O9uKuVxchxeuzh+31WyRvGbDklxSDw16TQhqqGB/7ikl/byegJiAPE0nyRHnBPKHVSqRC8jrDOLlIL6wOkFguR8JWN0r7t6WuLjwp47LcssNM/dSB+Id2zMQmrx7CP60B3rMyD8QZTH4Vgi36SOdVA= X-MS-TrafficTypeDiagnostic: SN2PR0701MB1071: X-Microsoft-Exchange-Diagnostics: 1; SN2PR0701MB1071; 20:2gp3f9RP9syDBeGcv+cCtLyGqNPnV0gvciX1KVIOfhnuFQS/Ho9jMfHN3ZHTmqu0QDxmPYJ23Avv3X7qC6zq+f1MJdnGnaQlawX5vj6yBpa2qvEZvv6m29IGamwKGO7BRwNhVgLkxvANuSA5u+7JkCdTPdNzpk5Glih7Iq7VkiWCeXfoWExuYmP8c1yHQYVuXFPZUs82tsoJzfZAHAoH0P7RUzY4jfpsjJXn8RqZdQFgyDBBHF/90rFywSSvn98k+ITwz18N1uTTwTuO5IBzjSH6e0EV3cm27YaWivjCS3fe6zQ8M6frOd0/6e8mNeabCIY4hKGxyxD319ei0LiwiUkkLIv+6xCMq41FI2LInVWw3JXUGphNV58GXayTLINKOCMeCZ2Axi9KgH39C+s0M3rTAKdzL2cNNzebpLQTY8OgnA1vzJojVcFjDDSS21L25oXoiVVSfLTUKxbFm/9XV5ThJ/3mkRZIHpWIAngWDcSvNCmoqx+1hTq045+c4xiH5+KIla+W5NAhAMWxDgyXGI0GGJPn3xPDacvAtXXrZILEANqwxxIk+dNnTK5wHKODQnChJp2K5qLk+Zoui1BdJv+wwq+vLYZwIpI/QddP6kI=; 4:PPHad56vgAg/W5pmiA6sUL9tbgTFH1O7EssHbrud8U2bM16vdfGMpAvqGzRc4zrR2/FIoFbJQKeWmJZDknzIaFX52PQs3c3H6d0DLDqOSJ5T5XJi3FbadjpNARjANY6ccuqBWsUq9RNiuyW3AVW5RBDiqyFlobaeejGjABKA7eKR0TMV7UZJcUDwG9FMLkYGCYjUeqa9/6fTuBqrI2hPwTWv6IVx7vIwasp8MEWyaGMIHezdI5rcvumzaEsiX+igfSQH2+KP6MovgAk3DKKQaQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(3231221)(944501327)(52105095)(6041310)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:SN2PR0701MB1071; BCL:0; PCL:0; RULEID:; SRVR:SN2PR0701MB1071; X-Forefront-PRVS: 0620CADDF3 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(39380400002)(346002)(39860400002)(376002)(189003)(199004)(72206003)(5660300001)(55236004)(68736007)(6116002)(54906003)(8676002)(186003)(105586002)(16526019)(36756003)(7736002)(48376002)(305945005)(66066001)(6666003)(42882007)(81156014)(106356001)(47776003)(81166006)(50226002)(8936002)(26005)(50466002)(52116002)(97736004)(386003)(16586007)(6486002)(110136005)(53936002)(25786009)(51416003)(4326008)(2906002)(3846002)(6512007)(1857600001)(316002)(6506007)(8656006)(478600001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR0701MB1071; H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR0701MB1071; 23:rkJCKHdYNKvgUriVKmCDn4Zk2YP1VGhEO6QHHDo?= OayFf/hlgs+k7dgxEddUHjYN4RHyAyXqc8NBzr65kdUqCWOtwzdLDqKk5oTSGfcQ3gDjWbCQV0TAZoieoEhdpn39PSjtFh/1QC9QH4GDmiz+mbK4U4jcPnKbMBk/JMiiIk4vDShDpiKIG0Ltme5iJBBU39x+rFb0PuSnqezf+I10Z4U+uKRi1joMvUCmRx9mstiQaJ6mGiYCfSQ5JyKwamXah0WhldDnV/3Uf5OzvbDRZxB0+RyoeC7tCyriHPqXtm0wbyZsTlZtGKQ0O3V1Nq2Z9f70YyJEMIf3TRwNJcMYr7q6RG/+vKKsgIgQXvf/qH/disPFUIYg2SRIxfE0SwoeUuhgswdiQ+d562tInYZCSDgchFZP38jMsPMf7TQxGM4OPcp9GO8rvmV4kEgAxYdXpKwYW7cElq1QRg2u3N91wloAVQoY5Y3jqPx4bcamc8O2261sDMu7w7XQfuDB8ubs3/+WQCkOvcJlhdALG8FaD1JcGr14XDoKywFIkH4bzaiJBwr59kEk2Zwcc4+anuOYGjTtmK9AJbOXYfbx2+d3Tk6uYqF5HUFQuTGHESjpuzAVTzXZ9REMie+B3ueI1nJOCQsBNhWBNHWiqVx9U0E2r8UVDhz/g84Utuel7uWYBVQos0ABbHuLT41Lwanl+dXsTYtvfXKVBEvq//IxNR1L1Dx/1CAZQ1VNM91rcMJh6aQHYa3DAUaXp2a/7VMkYnKQAz/3vFV0GYA9Hd5iuDD646KPXxPZ9wBfVMCNUIv4ryjtZFn5W/WjUpngv2o9kMWzPlJUk6SP6AmoIiPIW1f3ywAplruQ+yGU2laKdJrthOxiEo4wZIjddnMML5VNucPSjr6vpjAhWtdWHMsydl4L7mggA8cl1VDYs3GhF34MhZKXXY5TrWQvED0zpLQufgPRTLmwb/wptyvwNQgXlRD4SxmDfD/QhGDCtZ+EOdUd9IR2/A7PYLiO/aDq7xhw0tgir7qL5j9L7JYih82pDdbiFLiJkago0L+LSwVcN/zrRvIz8cfye9GRS9SyYann2jP68SE+7VzA/0S7vkVK8lgIShCWb9/MWATou0APvSwwKnJhZ6OHtxG++ry1P7MNEdgy6gGqMoSsAGy+WyLX7/jtGKQ== X-Microsoft-Antispam-Message-Info: rVFzrxk9GJo2ReUeWqW/u3oyuUD/Z00B5KzVS9CWD88yZ4XXCuNAbgE9jhstwGyVKm0g1GweFynok58R3RXNFbWjZOrNGqh+gCEx8shvzGO15u2yaedPS+s9UKvmu03uo0PU8vK1CVSAs89RhoENoD98a1lWqvgFZmeQB/leEVAjAw3tRA9pw9aJk+gPppqn X-Microsoft-Exchange-Diagnostics: 1; SN2PR0701MB1071; 6:2YfweObIlVo/B+oQhRkdRswCUrcGdaDFj5N97dGrCbYtSVbJPFvoFqdvWjgrsMpid4I1iTONKOkzq6sxd/KZmsXX1xeoS7waVTm1b9uXPtK1flwWDMue9aNe5SAGeMHoIGQb9gMTAygny1rrueDkL22xgaTOXPBhPfUiWu/gYaLL0uWWshcDVAHDAcs+BmSKcaeFUMBpSfYagzFbixBxwytOfG2xBwLdfcSOminvVuj4twnDe1u/Fcny9GGmXJ0D5k0e3ErsVJxYxZhzE2AVOwGG/2cYxtZUQInQhi+HRkkC4amfcHecKT4AqmOESUX06MBgNJ6cM1fcB1Bkm2QQyrOLG2M8DfQfrllomtg0x63voYqmbCKRi2gHRyHpuZK98wu08+YW1QH4KJRU4tMsimLjiGWyB/j+XAiBhwFR48leLY1M3JnCy1Fg7d3vnlqOoBnQ8sELrCM8P7icf378Xg==; 5:kFzAoQCsN89xa4W5SAe0u8DDDC/KfWBhYsW7cKTYyOaK1Ud+CWXANbXxqGWx0jKXdD9CG8NAlmGda4Vqi77usV1iEFot8aZh/slyLi55M/oqskfD3HF6JKm1CGY3jQLjIAbPk+oB4AceCqZzFpMK0s69Ry2A/yzNOAYx1EiofBk=; 24:K7yQ9zf94INBGrWkNWe2/ldr5EQF0Nbk/0U+LkJmTCQr3bAicJafFxqDIc570mDuOHFeVi16NC3ZviBOaiGUWtjeSrg8JWlFr/GjT8f1OnQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN2PR0701MB1071; 7:AK+ZFz5SJXfkgP8xhxZqX/YbVzWMt9ML5cdtUG4fZV5a9mSPhtOTy0+mGMw0torTOLz5bMornAcBIrFWYDbdlog01mtk7xHxEfZarCeA6kPXUMUIyRRe/2jOcrWRu+zNjl6zbgqtT9BT3Ap4iEhVGZI5OQYtDn8a76ARf0cKr2yLaOGZEIkStj5obNN97uFgep4YekWMA7Pv71DGKuyjatMewWNR8IytFY69dvYZjo4BdBZR+NQEPWGpqn/12gwk X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Mar 2018 05:51:19.4902 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 40ed5780-af8c-417e-d705-08d590821b24 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR0701MB1071 Subject: [dpdk-dev] [PATCH] examples/ipsec-secgw: remove redundant string compare 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" 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 Acked-by: Radu Nicolau --- 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;