From patchwork Thu Oct 29 12:53:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ibtisam Tariq X-Patchwork-Id: 82769 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 B5C42A04B5; Thu, 29 Oct 2020 13:55:55 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7C4B4CB96; Thu, 29 Oct 2020 13:53:59 +0100 (CET) Received: from mail-ed1-f68.google.com (mail-ed1-f68.google.com [209.85.208.68]) by dpdk.org (Postfix) with ESMTP id 33E46CB56 for ; Thu, 29 Oct 2020 13:53:58 +0100 (CET) Received: by mail-ed1-f68.google.com with SMTP id dg9so2864904edb.12 for ; Thu, 29 Oct 2020 05:53:58 -0700 (PDT) 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=1uDQqEDj12FGjfFLhWqY7mUHJCOn+q/keM9wT3A+eqU=; b=vbQ1I8fTJ4WOIK7fyccyb//UF4aIJDZGcy0i/1bmlEK33ysI+SsBtyjFxA4r7epATk BviwpCAU8A4cctT31+C5+D3vzTgsEan2Ozk+uUY2GEbUuow/Vo0rUquYf+PgYLV7gqmB SE3xaNlBiZiAfsxnxvkfGsUFJmWPt5D36d+wWG74sqY5q7SK9pBvzau7f6eE8ow9GiMW 5Y5uQbnTTptRXyjqnBrfDYcA+syfvSK1Tw7hx0ZVHxFohKKtuFOe3arLncEQL1TlA2X+ /0dj8ZWERcGX1HRrsRD+ab+I8hJ1T3XIq8ibPL6EJ0SO2KZOm/DNXHTH9WrKeu6y08Ty C/yw== 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=1uDQqEDj12FGjfFLhWqY7mUHJCOn+q/keM9wT3A+eqU=; b=cpQ1fnjV5U9nEGGzKeRlytPsInH/06OFAX9kkGv6QilITfCa20XYwvc+Ph9xUlCfDL hl+TjeK1M4Ktw3xckK3TGGgOu4WwzmpjDPZzzcil8wlktl3TWceVarHaVpZU8n5k2BvI nZwiC0DxGbpzgvdARA7nXHAnBUOqybsN8H3g9X6dq1pCNdbFTHpGiJuDIFJoNGCwCnxv tCtoJDCaYiwTva+GqSa4F5Z2GDomwdQbIxx2Rlnbo2mHHiT7o9bWtsfY61L8h2Q9nW7k RURXh2vxbXZcd4y4j+24iJXM9gnuunP/JdJPqe6beVrYRVTz9ygjjlbYQs24rHKUko/U 1UCQ== X-Gm-Message-State: AOAM533yTqDqdDb10ut2IDdrIFW3UuMNCVzTevBFhoRMPhjUSTUK944d jbKGwlqAOkUUcp5pdltvVozOOTQUdLq22uJN X-Google-Smtp-Source: ABdhPJxXRIJwAUwlA84RrfsnRC39r5nq+D3SPvop0oYvBsaJi88ihWyF/mdD/asFlIn+3WohVeOBpA== X-Received: by 2002:a50:a683:: with SMTP id e3mr3802727edc.33.1603976035841; Thu, 29 Oct 2020 05:53:55 -0700 (PDT) Received: from localhost.localdomain ([39.33.228.207]) by smtp.gmail.com with ESMTPSA id q19sm1487951ejz.90.2020.10.29.05.53.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Oct 2020 05:53:55 -0700 (PDT) From: Ibtisam Tariq To: marko.kovacevic@intel.com, konstantin.ananyev@intel.com, reshma.pattan@intel.com, john.mcnamara@intel.com, cristian.dumitrescu@intel.com, jasvinder.singh@intel.com, chenbo.xia@intel.com, maxime.coquelin@redhat.com, xiaoyun.li@intel.com Cc: dev@dpdk.org, Ibtisam Tariq Date: Thu, 29 Oct 2020 12:53:33 +0000 Message-Id: <20201029125339.30916-2-ibtisam.tariq@emumba.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201029125339.30916-1-ibtisam.tariq@emumba.com> References: <20201029125339.30916-1-ibtisam.tariq@emumba.com> Subject: [dpdk-dev] [PATCH 2/8] 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. Bugzilla ID: 238 Fixes: 361b2e9559 ("acl: new sample l3fwd-acl") Cc: konstantin.ananyev@intel.com Reported-by: David Marchand Signed-off-by: Ibtisam Tariq --- examples/l3fwd-acl/main.c | 189 +++++++++++++++++++------------------- 1 file changed, 97 insertions(+), 92 deletions(-) diff --git a/examples/l3fwd-acl/main.c b/examples/l3fwd-acl/main.c index 961594f5f..5c8de1fc0 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 ('#') + +enum{ #define OPTION_CONFIG "config" + OPTION_CONFIG_NUM = 256, #define OPTION_NONUMA "no-numa" + OPTION_NONUMA_NUM, #define OPTION_ENBJMO "enable-jumbo" + OPTION_ENBJMO_NUM, #define OPTION_RULE_IPV4 "rule_ipv4" + OPTION_RULE_IPV4_NUM, #define OPTION_RULE_IPV6 "rule_ipv6" + OPTION_RULE_IPV6_NUM, #define OPTION_ALG "alg" + OPTION_ALG_NUM, #define OPTION_ETH_DEST "eth-dest" + OPTION_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__) @@ -1747,13 +1758,13 @@ 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}, + {OPTION_CONFIG, 1, NULL, OPTION_CONFIG_NUM}, + {OPTION_NONUMA, 0, NULL, OPTION_NONUMA_NUM}, + {OPTION_ENBJMO, 0, NULL, OPTION_ENBJMO_NUM}, + {OPTION_RULE_IPV4, 1, NULL, OPTION_RULE_IPV4_NUM}, + {OPTION_RULE_IPV6, 1, NULL, OPTION_RULE_IPV6_NUM}, + {OPTION_ALG, 1, NULL, OPTION_ALG_NUM}, + {OPTION_ETH_DEST, 1, NULL, OPTION_ETH_DEST_NUM}, {NULL, 0, 0, 0} }; @@ -1778,98 +1789,92 @@ parse_args(int argc, char **argv) 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); - } - - 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 OPTION_CONFIG_NUM: + { + ret = parse_config(optarg); + if (ret) { + printf("invalid config\n"); + print_usage(prgname); + return -1; } - - 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); + break; + } + case OPTION_NONUMA_NUM: + { + printf("numa is disabled\n"); + numa_on = 0; + break; + } + case OPTION_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; } - - 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; - } + printf("set jumbo frame max packet length " + "to %u\n", + (unsigned int) + port_conf.rxmode.max_rx_pkt_len); + break; + } + case OPTION_RULE_IPV4_NUM: + { + parm_config.rule_ipv4_name = optarg; + break; + } + case OPTION_RULE_IPV6_NUM: + { + parm_config.rule_ipv6_name = optarg; + break; + } + case OPTION_ALG_NUM: + { + parm_config.alg = parse_acl_alg(optarg); + if (parm_config.alg == + RTE_ACL_CLASSIFY_DEFAULT) { + printf("unknown %s value:\"%s\"\n", + OPTION_ALG, optarg); + print_usage(prgname); + return -1; } - break; - + } + case OPTION_ETH_DEST_NUM: + { + 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; + } + break; + } default: print_usage(prgname); return -1;