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 E455AA09E0; Fri, 13 Nov 2020 13:29:16 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C956DC88E; Fri, 13 Nov 2020 13:27:07 +0100 (CET) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 32851C8A6 for ; Fri, 13 Nov 2020 13:27:05 +0100 (CET) IronPort-SDR: MErVTEXVQwTdkawjxePvXPgDnc1ZUQoRcQ3iBfV5VENTgqN+CEOWEWyvfq76kY5kq0IDEkkLp9 9PqbLpqxrHYA== X-IronPort-AV: E=McAfee;i="6000,8403,9803"; a="167885649" X-IronPort-AV: E=Sophos;i="5.77,475,1596524400"; d="scan'208";a="167885649" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Nov 2020 04:27:02 -0800 IronPort-SDR: jyD38C/FFOytmbdzzoqtNv/7dKGTDMzIRRDwD8rB2O9zHipCv9JhO2Rv6Y+Q3BI97kMLDyDPTD SZ9zTRfyoXGg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,475,1596524400"; d="scan'208";a="355526046" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by orsmga008.jf.intel.com with ESMTP; 13 Nov 2020 04:27:01 -0800 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 13 Nov 2020 04:26:53 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Fri, 13 Nov 2020 04:26:53 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.103) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Fri, 13 Nov 2020 04:26:52 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MsYVzT5ssDSHeLFdHfe1PCbucGGwg5F33fBaxjVm81BAglHLmKmBu4v9nFF6KEYZ/F9CpKilxFIIozKC9/qoZ0aX1gGhAqREF+IfWuuX34XKYYNcvd6dGh7U31csyWxNRIqUD8UHbUYBv6QBWwhbV+7CgB3ZoMa4HYSQSpqWQBpWxn8hY00G+l3RTKE8ns+JSq+x1puCu4be+nvZGX/X87VdVDcz1Fbm45CgjNvSGkbcI0g9QI2C/I+7q/dyuZmfAyqDIVqcPR1DKfVPYfl/w1hRmDlHEgwOck13q1IrpaKwKKSAQn3XKy+R39PCq2K3TY2nd4kFhMYE/IJ+DB5B4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Au9I14C+bB5U3Q8jI3drrUMPJfFLGj4jNOTX50WTzfI=; b=AM6XRd5sCjYxW2FRhJ0caVQ8om+wi5yYRhG8rHZepGbrJe9kezLMzb23zj8D6EoSjYIxBahaHnklpumgDJyY75avv49pV0FNCGz9ksDWB22TUzr0WAd3gYa/0prjf2E35ig82sqx8HMR3tUz4frozjuw77/cWA4jSGO6svTr8TSF3DSoP91/ZyJVbMQmcYd42QZpNdoWqhOVzFRgsfUArW8/bFBf0G8EDqhDcY4Y8T2SAGa8OFuy8tir+oYB0xDdcrGQ4mM597XxHWweiypWFOR1onUc/Bg5F5Iub+l8pK+9T9C28enX3Y7vdcBL5lzwC2otIeLQIjvrp8w4By7eAQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Au9I14C+bB5U3Q8jI3drrUMPJfFLGj4jNOTX50WTzfI=; b=Gswo3gfY/YyXPlcjvPBjIHFMjomI289wAIKBg8DSe4VlQvvdmTdQbslk6MlKQFgn14cs/g1uA6kDr3F/liTaro2Eq8lJCPuM7UFx7DD65oPMu0Ed/jfs3lQzNe1TJbKQbR7DnYyd2UwcHsEEjEeUe1mKRiddzAZZUR6faOK0Akg= Received: from DM6PR11MB3308.namprd11.prod.outlook.com (2603:10b6:5:d::22) by DM6PR11MB4171.namprd11.prod.outlook.com (2603:10b6:5:191::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.18; Fri, 13 Nov 2020 12:26:51 +0000 Received: from DM6PR11MB3308.namprd11.prod.outlook.com ([fe80::fd2d:9bbb:599e:72dd]) by DM6PR11MB3308.namprd11.prod.outlook.com ([fe80::fd2d:9bbb:599e:72dd%6]) with mapi id 15.20.3541.021; Fri, 13 Nov 2020 12:26:51 +0000 From: "Ananyev, Konstantin" To: Ibtisam Tariq , "maxime.coquelin@redhat.com" , "Xia, Chenbo" , "Dumitrescu, Cristian" , "Singh, Jasvinder" , "Mcnamara, John" , "Pattan, Reshma" , "Kovacevic, Marko" CC: "dev@dpdk.org" Thread-Topic: [PATCH 2/7] examples/l3fwd-acl: enhance getopt_long usage Thread-Index: AQHWuALcBPAMnFKl6kqFXoor56f6vqnF/3Lw Date: Fri, 13 Nov 2020 12:26:51 +0000 Message-ID: References: <20201111081507.19913-1-ibtisam.tariq@emumba.com> <20201111081507.19913-2-ibtisam.tariq@emumba.com> In-Reply-To: <20201111081507.19913-2-ibtisam.tariq@emumba.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: emumba.com; dkim=none (message not signed) header.d=none;emumba.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [46.7.39.127] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b51419f1-8de7-44ae-c1b9-08d887cf663a x-ms-traffictypediagnostic: DM6PR11MB4171: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:800; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DGcq+RM3fCV6ob53eYLJ0tPiRmKGk8bXu+mFDnTzYo/18ec+bIvbo8b0VcYwC8geS4jxcFbpvIZPOeeT9PgTSTjEnB04PmgwafGErKyrvmZ06c/qULWs7F5eSzXt2jeYk6984Eeyrv+lbmM5ws6mO9JOH7+G4NEaxWhFc1BQlwfVZTRTtO3ABCHwVV+fcOsoyyFvwdkLZjIa8ko3dOtCnnJx8BeCb/kgBgrMf6l+SLWRZgUOyWeVDbryRhncRYymvUb4xy3zdB4N/DfUmuF2IubxA9+F19htLI84PT7ivdck4wfW7ZlyUkcKz5ahCto3CxK/NaZ6rSSkcajuw0OtVo5x1waMKGmdiiuJYcI+IoJ+DL+Zd7rR7Xbp64NzxHJD x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR11MB3308.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(346002)(366004)(39860400002)(376002)(136003)(4326008)(8936002)(66476007)(6506007)(66556008)(26005)(55016002)(71200400001)(186003)(83380400001)(921005)(316002)(86362001)(76116006)(64756008)(110136005)(33656002)(52536014)(8676002)(6636002)(7696005)(2906002)(66446008)(9686003)(66946007)(5660300002)(478600001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: V2W0bw1GR2jqYU7OGQpRLUHfyMxpHFT3ativRurxTBlsjhC8ydr6SUdbooPCxw9Sb9Ifocf6CJvpWqJeqVpZJT1LOamhID/t5Bf/MqsF4S0VmHkkGXPlwnZ8VgHTXviSVDcPqQGQEznQ6qGUWxnVtNfoMl8J+vrjNfuvb6KgkUpnnXxUCcNQn93p00jjpzvY5YjBOXN4GQuDLh6NUvGBTfvfulMMTeWJQMUSNAAyYTuSH+pTIqiJ/9uD1H7RQtZ6X6gMVCxuS4p8KEQtLgCHyQsAtsFPhzNtBD3ChuL7lTnP09DqCQhAvSRnAZMZ5U2kpxG1JZMsRGK++V/NyvOoOVK1UMkSLlNkhDpRCzYfLOUgNYI097oLFFEnMovbsMEu9ypLoB9yFEt5+ib6DzCF6+mJAPQBuWxVG5bYTzGKuqkTeRASms0mrSlzIKNIAavWgkcHlvmveEi5RckAnuiKNQI65HpnEvvqwEWKPnwc+d0IYqVzi4rpxA7oNdanKDmibPvBjiW4BnhE2TECT85DbMELW+8YAIJTjoUEVjY7M3hHSauYh7sB07crv4VjJTzlx8qI5PS6aA+GA2zXPZaVBXIv8jJjBefSppWZ8UE+SJUZVqeku0nvzz/tnXn1TWYm0RtoXlVq4kDrLhCLEun8Rg== Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB3308.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b51419f1-8de7-44ae-c1b9-08d887cf663a X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Nov 2020 12:26:51.4262 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: PKvq5EpqH4UiZVGdjqzXkUqTl/RROtrdTDJ2lNS5ekrQ/n9akiw7Bgm4eEBV8ka9rMApzwAPboOO3IijL17vjOesjmm4dqotS3iAjVi44NQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4171 X-OriginatorOrg: intel.com Subject: Re: [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" Hi,=20 >=20 > 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. >=20 > Bugzilla ID: 238 > Cc: konstantin.ananyev@intel.com >=20 > 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= . >=20 > v1 > * enhance getopt_long usage > --- > examples/l3fwd-acl/main.c | 219 +++++++++++++++++++------------------- > 1 file changed, 110 insertions(+), 109 deletions(-) >=20 > 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 por= t); > #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 =3D 256, It is probably better not to mix enum values with corresponding defines for string literals. Looks really weird and hard to read (at least to me). Apart from that - LGTM. > +#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)); > } >=20 > static int > @@ -1608,27 +1619,27 @@ print_usage(const char *prgname) >=20 > usage_acl_alg(alg, sizeof(alg)); > printf("%s [EAL options] -- -p PORTMASK -P" > - "--"OPTION_RULE_IPV4"=3DFILE" > - "--"OPTION_RULE_IPV6"=3DFILE" > - " [--"OPTION_CONFIG" (port,queue,lcore)[,(port,queue,lcore]]" > - " [--"OPTION_ENBJMO" [--max-pkt-len PKTLEN]]\n" > + "--"OPT_RULE_IPV4"=3DFILE" > + "--"OPT_RULE_IPV6"=3DFILE" > + " [--"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"=3DFILE: specify the ipv4 rules entries " > + " --"OPT_RULE_IPV4"=3DFILE: 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"=3DFILE: specify the ipv6 rules " > + " --"OPT_RULE_IPV6"=3DFILE: 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); > } >=20 > @@ -1747,14 +1758,14 @@ parse_args(int argc, char **argv) > int option_index; > char *prgname =3D argv[0]; > static struct option lgopts[] =3D { > - {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 } > }; >=20 > argvopt =3D argv; > @@ -1772,104 +1783,94 @@ parse_args(int argc, char **argv) > return -1; > } > break; > + > case 'P': > printf("Promiscuous mode selected\n"); > promiscuous_on =3D 1; > break; >=20 > /* long options */ > - case 0: > - if (!strncmp(lgopts[option_index].name, > - OPTION_CONFIG, > - sizeof(OPTION_CONFIG))) { > - ret =3D 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 =3D 0; > - } > - > - if (!strncmp(lgopts[option_index].name, > - OPTION_ENBJMO, sizeof(OPTION_ENBJMO))) { > - struct option lenopts =3D { > - "max-pkt-len", > - required_argument, > - 0, > - 0 > - }; > - > - printf("jumbo frame is enabled\n"); > - port_conf.rxmode.offloads |=3D > - DEV_RX_OFFLOAD_JUMBO_FRAME; > - port_conf.txmode.offloads |=3D > - DEV_TX_OFFLOAD_MULTI_SEGS; > - > - /* > - * if no max-pkt-len set, then use the > - * default value RTE_ETHER_MAX_LEN > - */ > - if (0 =3D=3D getopt_long(argc, argvopt, "", > - &lenopts, &option_index)) { > - ret =3D 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 =3D 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 =3D parse_config(optarg); > + if (ret) { > + printf("invalid config\n"); > + print_usage(prgname); > + return -1; > } > + break; >=20 > - if (!strncmp(lgopts[option_index].name, > - OPTION_RULE_IPV4, > - sizeof(OPTION_RULE_IPV4))) > - parm_config.rule_ipv4_name =3D optarg; > - > - if (!strncmp(lgopts[option_index].name, > - OPTION_RULE_IPV6, > - sizeof(OPTION_RULE_IPV6))) { > - parm_config.rule_ipv6_name =3D optarg; > - } > + case OPT_NONUMA_NUM: > + printf("numa is disabled\n"); > + numa_on =3D 0; > + break; >=20 > - if (!strncmp(lgopts[option_index].name, > - OPTION_ALG, sizeof(OPTION_ALG))) { > - parm_config.alg =3D parse_acl_alg(optarg); > - if (parm_config.alg =3D=3D > - RTE_ACL_CLASSIFY_DEFAULT) { > - printf("unknown %s value:\"%s\"\n", > - OPTION_ALG, optarg); > + case OPT_ENBJMO_NUM: > + { > + struct option lenopts =3D { > + "max-pkt-len", > + required_argument, > + 0, > + 0 > + }; > + > + printf("jumbo frame is enabled\n"); > + port_conf.rxmode.offloads |=3D > + DEV_RX_OFFLOAD_JUMBO_FRAME; > + port_conf.txmode.offloads |=3D > + DEV_TX_OFFLOAD_MULTI_SEGS; > + > + /* > + * if no max-pkt-len set, then use the > + * default value RTE_ETHER_MAX_LEN > + */ > + if (0 =3D=3D getopt_long(argc, argvopt, "", > + &lenopts, &option_index)) { > + ret =3D 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 =3D 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 =3D optarg; > + break; >=20 > - if (!strncmp(lgopts[option_index].name, OPTION_ETH_DEST, > - sizeof(OPTION_ETH_DEST))) { > - const char *serr =3D parse_eth_dest(optarg); > - if (serr !=3D 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 =3D optarg; > + break; >=20 > + case OPT_ALG_NUM: > + parm_config.alg =3D parse_acl_alg(optarg); > + if (parm_config.alg =3D=3D > + RTE_ACL_CLASSIFY_DEFAULT) { > + printf("unknown %s value:\"%s\"\n", > + OPT_ALG, optarg); > + print_usage(prgname); > + return -1; > + } > break; >=20 > + case OPT_ETH_DEST_NUM: > + { > + const char *serr =3D parse_eth_dest(optarg); > + if (serr !=3D 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; > -- > 2.17.1