From patchwork Wed Nov 20 04:05:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 148706 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A491C45D4C; Wed, 20 Nov 2024 05:05:41 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C001D42EE4; Wed, 20 Nov 2024 05:05:36 +0100 (CET) Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2077.outbound.protection.outlook.com [40.107.104.77]) by mails.dpdk.org (Postfix) with ESMTP id AA9B040144 for ; Wed, 20 Nov 2024 05:05:34 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DpNyRasYyFCTMeH+jkT1JWv+Qn7Lku4Dr0Z3EZgAbbJATDwjHYcXUzSAtRegoO7YlFqnDO2NjAfN2A7HZ0Qk7OAmqUj2+c7I7ApKjapzT/7sXhrEkRM8C0C8kJHFQM44F/k6ZJocg5kkKyVB07S0b2W58KKb8rZzjo53Vq/MKcqNglI0fHMQI+tKy73cWDmiDpao4W4I/1yJcWFPh/ircPHygxvw8CYHmKS7Twu3mpqZkogVAPpf6CJop6YgNOpRBfqwiyOSY90BzuR1z8qM1y6WsW7uNirK83gpPPI6DDmgwfvfk0zYLZes2vP7jsCl78gD6kJPnrjrGfZ11mUKkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JpC2q5kypUdOnrti1hUo/EUPMMT4gubII7Ysv8LdspI=; b=Saw5Er+EozLD1fzOqHhEZwNfaqqHSYs+CH8suD7tQ1/8c7fvmaMsAfgsZQhAp5Qu0estqeWeuqI9hv04Zy36v126iQ+I2oINSh6qTH6nd3PXocGDcl+0cNSKmqlrYUpiA2mK4OyvmAJrtgN/RVSbjZcuOpyzRkq3UYeLRJ1jN4DyQYx7m41hIyalp8XnGZNTyOCA5LBYFHID3wlVDSC4pWx6kbEWTZNNwqj95MeY+1LUikBIH7QA6XTgkiGChXFuyTFcdFMe65/tyKSpKGzwRDfanyazFchgJ/E2KZVlJA6cgVqZyoXzYhgXvZnPS/ILJUaQ/MGbetLVKbhx3fgKpw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JpC2q5kypUdOnrti1hUo/EUPMMT4gubII7Ysv8LdspI=; b=H6+ACr608xx0YBEs/DVq/mofT0BPCgZaonq08K7y8qYhkFuXxGfok5Y+2BZO9WMkj3FXBrZymKeGV6s1vRSzuMz36gRvmXUNYwMql8ig/X0xIev9oLEf4BSqwMlCwh5xvnzjzfejaHPkJ8IQhbvEY9qClA0LwVxd7Nyft3u563SyHeh8TFaabjC9l2oauc8WtfwD1llHGQ3wAiaclXydt2NeiKok5svXCKMPf1eDJxYl8IdmK11/BF2eKnc4ssdRmhmswQXrMF2jdvxhRezHMJR7+eQhlSSVA0fUg6Z6Lc5xlvjWk/ZwB5/Rd8q2QOI+tYkYjVazSfM/b2fftl1Dcw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) by PAWPR04MB9837.eurprd04.prod.outlook.com (2603:10a6:102:385::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8158.23; Wed, 20 Nov 2024 04:05:33 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::2e32:1a4a:7d29:195]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::2e32:1a4a:7d29:195%4]) with mapi id 15.20.8182.013; Wed, 20 Nov 2024 04:05:33 +0000 From: Gagandeep Singh To: dev@dpdk.org Subject: [v3 1/3] examples/l3fwd: support single route file Date: Wed, 20 Nov 2024 09:35:14 +0530 Message-Id: <20241120040516.2836371-2-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241120040516.2836371-1-g.singh@nxp.com> References: <20240806034120.3165295-1-g.singh@nxp.com> <20241120040516.2836371-1-g.singh@nxp.com> X-ClientProxiedBy: SI2P153CA0034.APCP153.PROD.OUTLOOK.COM (2603:1096:4:190::17) To AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR04MB8198:EE_|PAWPR04MB9837:EE_ X-MS-Office365-Filtering-Correlation-Id: 3cf82927-42ea-477e-97f0-08dd091894af X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|52116014|1800799024|366016|376014|38350700014; X-Microsoft-Antispam-Message-Info: SHWduKInGJUyNVCYe3K5CIaK3p488cSB24gv8Vl2P8tbBT97ywls5LVR9rjK0JwtBMxUXoUGHag1yOrD7iwQMXtdanAtHSNFUKXAcpGeu6JaQHJW0VM5VKpKfR0bBo/S5nlSTqYDWOCSNr4jZmRvuXHMP0R7tpH0VV110HuGHB50DD/4tpjweYxGgra0WJ5UcnQTatH5PC8luhYmxzGeyBTqmZEuNyMGwB3YeWUhd32vV95Fmrg2G+I3xrPDtU6+UeHAKorq/8r5uwDByNu3WA3JryIdFncoEchxxUC9l+HaKAo6iZfsLrrYlJ0LM3KUCdk98ndifJdDnKkKY0rmqoIvub9kvpzBciE0nrfbrVAsYhEMOn3ZMYOBdAc879+JmgYC6l2iFya3lUeXliGOtaU2oB39B7gcMsWBTRjijYmiDHNZiSClCNGv+PznTaOSemJV/KgTSw8ZdAd3I9GktKD7T85O/nbpsQ/TexCZ9YTTnnmpCPIcQOjchCmC3O9c0yZeax56ptIIt4XzzVtmHaBQ5JjbwwxupwYgpml6hcxKWRXVD5wPFyPRo17pt10qwcNNgQXVCHWcchCq5jO/ddBHU5KG4gomTgABnL2tgOMna71mOsOkQhqzxsExmORMvXHa2RIDE245Gtf9SgvtHiHntSidcnWjR1CEJHwRdyw+YFmHkC1ML+hfIWV5Fxkt5jPJ16tqWaCqLZ5GGqhVqs+AgaJM5IkrwtM+9wTSKkr4j7vQ4FjUxE2xF8xYpEbr32C+06GfpwHYRPYWdx8sUIC7sqqUY0GBK7mfATZqLGX3cbTdwLNrlT/eqQApiVvUSM7Kn81wypVeJGGHdyAh0D6m9NGfiWPEp11ppJ2RW7oWHz4hAe7+BbFliRJhGM0H4Ebs+BzCPMQHp5oipzGs8l8A9t0gD9Pf4a7+KZZyecF5+S87PAfDP2oMJ+Qhobe4Qcm6dVz9BPMLie78lWNgO3m0rDDzo/b5SGMpLfDA0M6Kf9AMCKDsByrML4taMOxv3qrvYPiofymcQFYtSMHfrRzMBseELKmdL06oMHpsMcSywzVdATPxWrXGoeim5uD7xpBBqQPqtQckUkYX3PGGBXVA9gy4QT5stFogrKE3PnsIyErbmKisoJaZJkxe6hRKgAn0oBFfo2TLJvgkv3ypn2SBTFbwPAKrwvHBSmVR64oQZa5/+lpZs03S77nzN06KCmuoE5vMJnAQyfAgNvIRondJSCaZ7XybiZyWFHVZ9xTy2thlULtTuoI8BB9aG85H0kL7J7z5BjiJ+GaPzyAhvsNAg5Ffmy5FXFi7A9YrN4WolU7iTYPyTJTXDps2jVSkBEhqPs5Y/jSvFycLxfYO+JHMkwoM2L/tWIczsziR9CA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(52116014)(1800799024)(366016)(376014)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IVtARDIwYjPt3TcHP+kbj27gLVv8wsCegYM5NeQGhZ6EF67C1y0r2wXtDvgDsb9Ph8dgwLPkHuW0ZF8pFEW8WFfka+MeVFvLObqycqFP7ywFCrBvgiw0VHG3ZyU8pymqikeCzhgqb9sBGDwdjJSu0Pyg1L7qxM/8STNWR5tdRfSaohxU+bWSuKpqMQU01xlBKJPTkuBmnQCUI3ObUyDw446k4AMRsLyWlU+aKhvMErBzCO6V2Aj6ppEgy4GwteILZTFwXMpnQc3N4/QnA87zLwDc6tExkISCeIbSk1DgNSBKCF5BrRDXxqnD9jBUVMELPa4ewu+OJQ0yiZezzWS/rWYnn0OnwG6wP6puWQUNDOCbO9GX6/RoPUMoKaUnK4IHejdLVsubONk8v5lxvxprWCL9mJEFIdVOBbI8w1Cbg/VRXecYpXq6Cqi2vBK2t+pTvAIssXP/L09wjNhZJYmmAVtQ3Nhfmc16uAhbVFhw0dSjwuij5G0dXEenuS863Lnn17YJMyYKLzMPu/wmyIcppIvLTCBcs7Say75iR8TgUqQvmnrqgcXpHuf8ZuskaG0my1lLbLXxuHHLHQfD2OnhaYobVmUFDch+Nus9/HTBdgX5ZX+2iQlQMRo3WgU2Y8CHdIIf/Yo/vWPWk/GOM+Vl0a2RzrGWbGC2g4OAaVtix3hz16tO3uqgNRrr7MKH6F9sS+/hW4O6E33sfBwmuAiT72bqVE57e8aiL2hSAJJk+4WKINerBSZcj6P7QdBx/IT9cKddrXVuYO6Xs1yzH+WxDEGQinl62H8wOjL8qHnu6qUjhbUQesjkKaVvNhe8VyxTiFFA4F0Ov2/fP83skgvPQC/iEigyfRvUP8me60z4NZT06U1CrTQL2r5izeGmNHaCf2fy4mrq5XXAaJgTygAdRgQKcgGjBr+FQTZW4WuEO+XioiCrXRpZH5GNemwZ84Gj6YiK1fGzyDGxFxk6a1lXDypJtTDnd+2xq8+NHCC2JJ79BTQlDumePhjl3VdlNT4CgEXvkGqel04YyyaOrJ8DSQqnBJ1xzmcdSkrF8ht6gBb53qEpEOGxJC2yZfrSB3DjNfDY+K9yhdMHTFOA1X3LSuNDqvHveuAo6kZbYP1ahvKpBT1YA8ErhQupGRrFk0R3zuzLd7oq6zQndU+/XGvB0USt/gptzCQNsCSgrmcYJf/7iGIkKE3z1hsYOatm8RiI7ahdC6GEa+/JuboDXtCPfcfnyeUYKGyXb1eJPF3hKJvWPJc1aBGciwBRqGkoWe43qmF8kxeGcMckGN0fhxDkTzy0sWDJRSFTGOQDS3dLBJZfST2gzVJtjhWzSZMDmLGwRXQsmriDEXWx8Fh2nuCdSCWjpi5zTAt2HVRUO5duNghzWKmZMvpLAvLxSQtTbjaNil3ZmcnnKGSOV7Vz7CjwT/Z79MFaSA+2nZBE6dBtlaGTTJmZAz6yPyqHarWmk0Si1K5Xyyz36OCh48ODiLSmQaJx9Id5XQ2zqtcFBcjvu0/w0GjisJSv3Qjd8UfgSMww3Jb3u5Zgbu1AJi4NN8W9CaSnrSXdAq1TyGiPvnqF9eI= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3cf82927-42ea-477e-97f0-08dd091894af X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Nov 2024 04:05:33.6459 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: c7q/jHropsaqAQzF4mkNLT/xwnGv4bW1cFxPeSNHwmRlbJ1PDDKibpH8q6TrNpOz X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR04MB9837 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org IPv6 rules file needs to be specified together with IPv4 rules file to configure user given rules. But if user want to give only IPv4 or only IPv6 rules, application returns error: "Missing 1 or more rule files" With this patch application can accept only IPv4, only IPv6 or both IP rules. Signed-off-by: Gagandeep Singh --- examples/l3fwd/em_route_parse.c | 18 ++++++++++-------- examples/l3fwd/lpm_route_parse.c | 17 ++++++++++------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/examples/l3fwd/em_route_parse.c b/examples/l3fwd/em_route_parse.c index 6c16832e94..da23356dd6 100644 --- a/examples/l3fwd/em_route_parse.c +++ b/examples/l3fwd/em_route_parse.c @@ -249,8 +249,7 @@ void read_config_files_em(void) { /* ipv4 check */ - if (parm_config.rule_ipv4_name != NULL && - parm_config.rule_ipv6_name != NULL) { + if (parm_config.rule_ipv4_name != NULL) { /* ipv4 check */ route_num_v4 = em_add_rules(parm_config.rule_ipv4_name, &em_route_base_v4, &em_parse_v4_rule); @@ -258,7 +257,14 @@ read_config_files_em(void) em_free_routes(); rte_exit(EXIT_FAILURE, "Failed to add EM IPv4 rules\n"); } - + } else { + RTE_LOG(INFO, L3FWD, "Missing IPv4 rule file, using default instead\n"); + if (em_add_default_v4_rules() < 0) { + em_free_routes(); + rte_exit(EXIT_FAILURE, "Failed to add default IPv4 rules\n"); + } + } + if (parm_config.rule_ipv6_name != NULL) { /* ipv6 check */ route_num_v6 = em_add_rules(parm_config.rule_ipv6_name, &em_route_base_v6, &em_parse_v6_rule); @@ -267,11 +273,7 @@ read_config_files_em(void) rte_exit(EXIT_FAILURE, "Failed to add EM IPv6 rules\n"); } } else { - RTE_LOG(INFO, L3FWD, "Missing 1 or more rule files, using default instead\n"); - if (em_add_default_v4_rules() < 0) { - em_free_routes(); - rte_exit(EXIT_FAILURE, "Failed to add default IPv4 rules\n"); - } + RTE_LOG(INFO, L3FWD, "Missing IPv6 rule file, using default instead\n"); if (em_add_default_v6_rules() < 0) { em_free_routes(); rte_exit(EXIT_FAILURE, "Failed to add default IPv6 rules\n"); diff --git a/examples/l3fwd/lpm_route_parse.c b/examples/l3fwd/lpm_route_parse.c index 9c179dc065..2df1b3e925 100644 --- a/examples/l3fwd/lpm_route_parse.c +++ b/examples/l3fwd/lpm_route_parse.c @@ -270,8 +270,7 @@ lpm_free_routes(void) void read_config_files_lpm(void) { - if (parm_config.rule_ipv4_name != NULL && - parm_config.rule_ipv6_name != NULL) { + if (parm_config.rule_ipv4_name != NULL) { /* ipv4 check */ route_num_v4 = lpm_add_rules(parm_config.rule_ipv4_name, &route_base_v4, &lpm_parse_v4_rule); @@ -279,7 +278,15 @@ read_config_files_lpm(void) lpm_free_routes(); rte_exit(EXIT_FAILURE, "Failed to add IPv4 rules\n"); } + } else { + RTE_LOG(INFO, L3FWD, "Missing IPv4 rule file, using default instead\n"); + if (lpm_add_default_v4_rules() < 0) { + lpm_free_routes(); + rte_exit(EXIT_FAILURE, "Failed to add default IPv4 rules\n"); + } + } + if (parm_config.rule_ipv6_name != NULL) { /* ipv6 check */ route_num_v6 = lpm_add_rules(parm_config.rule_ipv6_name, &route_base_v6, &lpm_parse_v6_rule); @@ -288,11 +295,7 @@ read_config_files_lpm(void) rte_exit(EXIT_FAILURE, "Failed to add IPv6 rules\n"); } } else { - RTE_LOG(INFO, L3FWD, "Missing 1 or more rule files, using default instead\n"); - if (lpm_add_default_v4_rules() < 0) { - lpm_free_routes(); - rte_exit(EXIT_FAILURE, "Failed to add default IPv4 rules\n"); - } + RTE_LOG(INFO, L3FWD, "Missing IPv6 rule file, using default instead\n"); if (lpm_add_default_v6_rules() < 0) { lpm_free_routes(); rte_exit(EXIT_FAILURE, "Failed to add default IPv6 rules\n"); From patchwork Wed Nov 20 04:05:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 148707 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EE9CB45D4C; Wed, 20 Nov 2024 05:05:53 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8F31342F01; Wed, 20 Nov 2024 05:05:48 +0100 (CET) Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2044.outbound.protection.outlook.com [40.107.105.44]) by mails.dpdk.org (Postfix) with ESMTP id 3C1C342F07; Wed, 20 Nov 2024 05:05:46 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hbOmvIim6AJ03ELVOUDbKa4B08mBgGmAidbvv6+TVtc6br7Xpd4j8XNuWo8qGEgWHYMR1aMz/6SaOJCvaMjqsMjEotDAAsw82feo5tIEXRCbriyRJu1B8P/jYMe4JBoYNfWskuKUg1wrCmf6hi9DyRpZs27DlNixQps4yzvrgkOdzp66/eOy7mqp/lMwr2W7bsY0hcATIeojzHZkasCaGsp9FpXXElRYPI3kgGemGwU3BgqTpCRWbn898RioRVb6UqTtUWUNEfeoUJXkUtTVvJoAM56YyorwVL0DbI9yMEbLJsh0nJG/WFtDG0VCc9GWgof8aIZjv11Z5rQ78PQ3oQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=H1LjjufZAzYEEq9d9yuSdG6vfkk4D6sTcwhrexHNVbA=; b=mKsKv/ClQD0txbZA8k0lX9kxRKeuSqf+5FJKH2i+XF/63tLCAmbNGSts5Gcw65R0LEfNwBQaBsRpemhxvgVDD8xbe8v25pmlL9zf+dODAXZtypcBeRU8BSDfWA7vclKPxIWHMV8BaQx3/gg9iuCiRId9/SO/emoazjPz+e9vX6JHZ2lyGfk/N3Emjwxrp70FQ2epzDd7yjdrl3FdRE10M9kEDT1hnSy+CfL3oiaHGMLZxHceFoIZJuqfoWEcZQITwyydYdfypB557mKGWeXrhaaPloKg3grn6lAjBIdunJXPeRQ+yDxFGso8FJfmRmGfjqDkkkDdndH88TyDt1epVw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H1LjjufZAzYEEq9d9yuSdG6vfkk4D6sTcwhrexHNVbA=; b=TtvriFNWA+l+939cCHiCkSaP4M0eALGc3UKcbM2KuSzU9ZZ2ZPlMu+CIPpMThCb634B8ZvhROo+FDSCb8tYo32si7ltu7jUAQg2rGW8A6+CKxgNW7p+1o7yupXiHN9aP4rbkhDXUxVK8PrF/TKbLmXXkwiTWSRRfusRzGnh0xljtl2aJEWa5DRsnUnXnY0AxxAYjF265qdqC6BVKawzm2IGPlVmjChyHmSVaWbJ2j1yZbEvLcXwyZhLnyZJzxwjS3L5zyKex4mhtgL92cajBnbakWtFlnmdOdBZLep9U+vnvJaRad45P/Zd8yqp94CngGjYZxIPKw1nYwujf8K2aAA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) by PAWPR04MB9837.eurprd04.prod.outlook.com (2603:10a6:102:385::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8158.23; Wed, 20 Nov 2024 04:05:44 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::2e32:1a4a:7d29:195]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::2e32:1a4a:7d29:195%4]) with mapi id 15.20.8182.013; Wed, 20 Nov 2024 04:05:44 +0000 From: Gagandeep Singh To: dev@dpdk.org, Konstantin Ananyev , Sean Morrissey Cc: stable@dpdk.org Subject: [v3 2/3] examples/l3fwd: fix return value on rules add Date: Wed, 20 Nov 2024 09:35:15 +0530 Message-Id: <20241120040516.2836371-3-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241120040516.2836371-1-g.singh@nxp.com> References: <20240806034120.3165295-1-g.singh@nxp.com> <20241120040516.2836371-1-g.singh@nxp.com> X-ClientProxiedBy: SI2P153CA0034.APCP153.PROD.OUTLOOK.COM (2603:1096:4:190::17) To AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR04MB8198:EE_|PAWPR04MB9837:EE_ X-MS-Office365-Filtering-Correlation-Id: 4c988ae4-6672-4813-2808-08dd09189b59 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|52116014|1800799024|366016|376014|38350700014; X-Microsoft-Antispam-Message-Info: 5GfKJBJ2OBmk/Xsx1N9IT5Y69qmJhStsXYa4m+nRHoxl/BPUnIEl3VGEoFU+WtKO3C67DMCiEZWK9KqLVle5uhzNUFYErrNEdwZ66UoaH+wfdZN/1G01xFTyydWXjww0iDuTD0Ae8Ssf/7AwAPo40YmhqK5ZbO7SoxtSaGpnd3hCpSf95YIoZB3r1hYGi+Sux7xtigfv98hncVBV7qEGZXsDkyppf0iWI49Z0d7kUQdhRCB13VciCFgpflCpuGtTpK/PkOdONmhR91fV43KjCEJHafFnoMBheO5m6w+XWAlR74JGqjdVU19EotB5KV+s//bEx329ish6RT0nPEzIyYLE9Bi8MYp0qcOXz5JtCMncGKIc7vV78dLiF3zLiW7p+ZPkwclJR9VvsKou+QLjO+D4x5Fe2Y5YNr1zNvJ6lyKSBv5g940rDIR2U7RzQWhFXlKkNav0V7KXHrInjNHWKzOsaEMUwpa1oatZshORhL7WxezekIs8A9A2UR9bCjIDoedTS4NbPnJXTLKWU/E/GVIz7d3PEd/vOWnXfW7oCtWt69H1lBQEgKDI9hWyRKGamVOakIJBnS10QpJ/BmTnIFZYGdB0QWJjfDYXE3XFgf7oIaUVhkiEDkVpUv3ETDkpFxhVRsEsoO0fa08EqPG7alIIlEZS+cHAx+EwGv1x+LpL8SHMql2JL5ojmPG0qOVAhjxBQGaLaGOzycF8MHz5P/UulZN4wGKxbdwzzUpoJg2OwSgT+oKa0QaSLX/+vVt0ZJR/kyiBK+8eXGzGlTM8b1Zv5LArSIw2wADeEymfKfSDyIgrmYGOpXSQUQkvk54oE96bygZDd1KjT64uZxIjLRRUEjiFq6secnQURFH2bHM6J6EgLaSa1zAKJ7dZf7J0GJvwvNIh0fHamo57LWcf494b/hp5oQ9YgNzjfYmaa1s2fJQpnvzm00wh+RBJi6Z3yphgAE+cFKS8PEipdePyM8B5XmY3iw6VGAmyb7sw+4tcRYE1Zbq/0Hqgk6O4G39Ok7cyAuohzIDsfnxkQNlhzL/vqPXuF8BbBTOg6To4liR3eI9Vwzp7nGTuvkjCW0980dBMLg8w/4SnnkNv+kwbSEHq+EH3nNGBiO21FsE+lCec6F/xGPNHocKWuBsUmK9tFgo9l6vF+OEyIQuGlSQ8XLIHgOmyt3F9x2diQZbGVw1+Rj/FvXPDx0mM1/FiyuyPSYPp5Drcm9cuRTLaL6bfuvfrz048JampLQLTWDXlgAnxa5CNNRe7dMUs4l3GMHB9DG/cA92Psd1TvxvQ0bc5iglTiGNTVJ5t5tFo1IjXCpiiqFt1No4OuWiCvSV+tDXxjvdSWw8jZr1zSaScJgQ1ZwutbwIC5XEWdPwDSh6FLiY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(52116014)(1800799024)(366016)(376014)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ajjcGjRa9a3bVgHQKIgeWixX/SPkIwRKFVbN9YYjaxDxk6wC8ypv8vmoD9OqJnBEK04lrFP0g8y6PXN+UEaYfcDaFnJo1Ntztv34v5fMKgb39I98v6xs1/vLUAXUeKN7zv3/Dfd+1qaxuoJ7sSazq6N5WTj+Fg7ORXKmDJfzaN/n0HUMYCgYPNwHI6Es4+hsYg7GbbR6WaVvCWEj1UVWzcFt7Brcpeck7DhMWdm5eXppe2YlaSGjeqNGTl/y7mUDuI10w4Bqp47hlwMXK3CbZzTvtpuRvWtVM0pFY57evQ03VixhlmJ7VZAMjO9vGrCaiu794rw9zoXS2rVN4qdQKCRtngIcqC6ODHUOLfWFw5ABC2jMB7N3KjHmseO72l4AHPNtG9TVMH4NjVffISxFPLZBsCp0QRkvtGgh7Q02RyhIdvE4Oj5IKtOSVq5OLPd14ydZTWeJC20kkyEG+LVeJXtK6gW+P032eUF3uR2W7VV/4ZqLgLIOOyX4km9WBrBIuH4qtwVYMMjE/bRMlJmjNqnRqpXZBjYDmFBb6zmwgEKkLgZZaMe1PU7kQmM79N99fzp7/PoD2rgQzmcaQJ3NAKK8mvf/fdblsbfCgaipIv1KPseHrNHi0hT2PQFg8/ZXVwYDXOsQ6/BjikjedSM9+oehXhMvDWOHW2PAEhzhRrxhfklsbw152LPs8hSAD7SCJ9yszNiqkHPatMQ2SAI4P77xJmgvO7JLlub+ULhSaBSqHM2TP+wpBgZ9zlOnEXGUM1ufBL0eKW+cHOxp+wT4HRaYyi4Fi9k9OhGiJHXslEUzTmL3EYWpBRixZwh5KslyVku8kZdWIApfEzwDud9ONvvIkYTZUlmb3lto6ge3js7wHi1cQ4+VNvMOaz7P2FNdWe/PEmbaZ2vX4KL/Kog9G3kM7/F/9b8zPR0d/0OBLhC8DlpSoedZ3X1mLCwR3yq0YWUvJGH+UF694jjQTYJOdP+0rSwgabG6gt3GTCVGzbO1FjX3MKDcqQd+mTDRrmhTjaZfCse9hl1uuQ1l0G+fvAd9uOrUb7HjcAUZ46d+WNGS7T494TBeqSlTCSsyqQPH3cJls6w3n1LfLtzjotOgyD7OIJXqieWNJPPRZOmCFSlZwP64YSLCgHEZCNiQHLSTT/wZWcS84iQvy0AsjQOYBFRnCtgPEQfTSEUz4RXbMbMokARM3WRFKDc0gcbJgx8sDaPCVWl3whJev0/HwwObXWU2DrvzY7Nz5daqKJLRDh6Rf4PahcbXFtIgk0CTUnnnM2VKwdC4fcDklcwRwLbVSKU1Q+ET9Tdqp5fjWO1xZ7Px+vc9QEXlXd6NHXZOeq/Hrpe5RIoWQpjfEkLYANFQ6kSMPtW1etLR6mIbStRPi7kzhGVa3b83QLU9+H35tl8NzgEXnsyMvsP8Y2twTkR+cNKBPJi5omKfIG5yUZ42AhS0A9jH1oCfBqeqmHpxyXW+zkklci+wVBX188gAPJatEcY0Fn3HGi6jbC96//oK95qcb8jG67FP/FfNzxUzpVEwVvtTiMZQsOfqItILynkvB7+IYSmMH381Yx2y/xyDWeU= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c988ae4-6672-4813-2808-08dd09189b59 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Nov 2024 04:05:44.8414 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5qYaqr7rurSPrPrR3CpU9vPX/OiQv6wzwYbl9lKOb65Jhr26MqlTyvBzAi6XIWIN X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR04MB9837 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org fix return value on adding the EM or LPM rules. Fixes: e7e6dd643092 ("examples/l3fwd: support config file for EM") Fixes: 52def963fc1c ("examples/l3fwd: support config file for LPM/FIB") Cc: sean.morrissey@intel.com Cc: stable@dpdk.org Signed-off-by: Gagandeep Singh --- examples/l3fwd/em_route_parse.c | 11 ++++++----- examples/l3fwd/lpm_route_parse.c | 11 ++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/examples/l3fwd/em_route_parse.c b/examples/l3fwd/em_route_parse.c index da23356dd6..8b534de5f1 100644 --- a/examples/l3fwd/em_route_parse.c +++ b/examples/l3fwd/em_route_parse.c @@ -119,7 +119,7 @@ em_add_rules(const char *rule_path, char buff[LINE_MAX]; FILE *fh; unsigned int i = 0, rule_size = sizeof(*next); - int val; + int val, rc; *proute_base = NULL; fh = fopen(rule_path, "rb"); @@ -172,13 +172,14 @@ em_add_rules(const char *rule_path, return -EINVAL; } - if (parser(buff + 1, next) != 0) { + rc = parser(buff + 1, next); + if (rc != 0) { RTE_LOG(ERR, L3FWD, - "%s Line %u: parse rules error\n", - rule_path, i); + "%s Line %u: parse rules error code = %d\n", + rule_path, i, rc); fclose(fh); free(route_rules); - return -EINVAL; + return rc; } route_cnt++; diff --git a/examples/l3fwd/lpm_route_parse.c b/examples/l3fwd/lpm_route_parse.c index 2df1b3e925..09f6b1951b 100644 --- a/examples/l3fwd/lpm_route_parse.c +++ b/examples/l3fwd/lpm_route_parse.c @@ -183,7 +183,7 @@ lpm_add_rules(const char *rule_path, char buff[LINE_MAX]; FILE *fh; unsigned int i = 0, rule_size = sizeof(*next); - int val; + int val, rc; *proute_base = NULL; fh = fopen(rule_path, "rb"); @@ -236,13 +236,14 @@ lpm_add_rules(const char *rule_path, return -EINVAL; } - if (parser(buff + 1, next) != 0) { + rc = parser(buff + 1, next); + if (rc != 0) { RTE_LOG(ERR, L3FWD, - "%s Line %u: parse rules error\n", - rule_path, i); + "%s Line %u: parse rules error code = %d\n", + rule_path, i, rc); fclose(fh); free(route_rules); - return -EINVAL; + return rc; } route_cnt++; From patchwork Wed Nov 20 04:05:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 148708 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 764D845D4C; Wed, 20 Nov 2024 05:05:59 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E571842F29; Wed, 20 Nov 2024 05:05:50 +0100 (CET) Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2041.outbound.protection.outlook.com [40.107.104.41]) by mails.dpdk.org (Postfix) with ESMTP id 3D65F42EF3 for ; Wed, 20 Nov 2024 05:05:48 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NohQmQ1eF85M+sQ3Ek6UIa+uILnZviQTNq8Wpu/FczxoaQwaUdvdOxEzPgYqXk3KeowV03C2ta+NR34WQ9fV67jNy4v6eRnfT6SrTigOONJF3z4WBTvFWEXsnragzksiiMVVoJAzu+MQVN1wHhArDiQSg539O6eClUYKTQYa/HsB3cemEqlZMM3hPoToejQLcPSMnQwrZK55eodGQzZgVgj5UOeDan44zHMKmG10dRLXIN10e9L4KIPK2nRZGEtW+BQHQqCow3evn13Ftlt6eL5/NbyhHBLQ3aezti6mFDcTKUeSKrk5FKHFNCFMoIG5PECj3v106D1mxz7N5E/A7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GsD2dvLSLsMq03o8YVRIX6YhMoRjWKACzstwKK2b9s4=; b=hiL42t3xYUMoWmG36C34hCu/UZU8gYpAedIwSO9wUAB/Hp1FMYHxdrKw/pKPageZTzWqgX2pZ0Hfk8TE72O7H0hMQa9RN7Ta5r74BjEx5R0gwTCvUoxlzgJfEm0vW70Gks8OnWqGVww+RvXYDmE46naN87wkA5cnJUc88NDw5Ivzyz77ZDyB4UzLrPiIsvDhYTyDKKEIDO0VLazAUM3QTs18Y1n4xXxQcY8HEsScdzgHTLtfM/3mdOCvx8BEV+8BfUfGpumX52Na9BTfGvvLRebRGSj2LHJMM3u5CQLRPOuiH4RGR7U9+rlywuefdHF7od1wrzmDsbJGxo7QSQs3hQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GsD2dvLSLsMq03o8YVRIX6YhMoRjWKACzstwKK2b9s4=; b=nlgvkfyAa6D25I9kFyKPwW11HVMM8t96jtOGdUOELFQm4YIzpg/ci85dPXs926YwiXkIkBG6aMJYjPxA0jiPkWwQ1WbNzn7nzVL+EeU4rLc5ahUNA7EglReWy6/JjErRVfkHjFEcGYV6zqWvZkqnuWI0zRYlkQquZMRePyIQcsNZXSPltcALo5aBcgMZl9at2j6IxpLFyBK/wyWPTXyvwLYaO2Ekud+BLxEgrNz0PYw+NIvU0NB90haDAOyhQ7P2fuug2jUixvfYo7OUfU4QJ33W6DCrVXvsq21VBeIef/P0OfrsEEIC6H7kDfsV1olCANmouhT0zsQYLZvYzM1Aew== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) by PAWPR04MB9837.eurprd04.prod.outlook.com (2603:10a6:102:385::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8158.23; Wed, 20 Nov 2024 04:05:47 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::2e32:1a4a:7d29:195]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::2e32:1a4a:7d29:195%4]) with mapi id 15.20.8182.013; Wed, 20 Nov 2024 04:05:47 +0000 From: Gagandeep Singh To: dev@dpdk.org Subject: [v3 3/3] examples/l3fwd: enhance valid ports checking Date: Wed, 20 Nov 2024 09:35:16 +0530 Message-Id: <20241120040516.2836371-4-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241120040516.2836371-1-g.singh@nxp.com> References: <20240806034120.3165295-1-g.singh@nxp.com> <20241120040516.2836371-1-g.singh@nxp.com> X-ClientProxiedBy: SI2P153CA0034.APCP153.PROD.OUTLOOK.COM (2603:1096:4:190::17) To AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR04MB8198:EE_|PAWPR04MB9837:EE_ X-MS-Office365-Filtering-Correlation-Id: 734171df-705d-489e-f205-08dd09189c26 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|52116014|1800799024|366016|376014|38350700014; X-Microsoft-Antispam-Message-Info: 1CPPdVtUMtbO3hOMBeFC21Fr7KUhr+Wbc8W8l7VY5zTIX7/3LukpAqNSeTVdf53piquGuMtg4H02HFvt2AMm4UTmaxZmUFgcLjp1RoJNiTUrE2kfNtG1IJFHG+l+BB19UKOA2lv+LEYJS3Szsg9qcMpOnd9e4yIFX1EBz3rbNcmeV7DhVF74ZVe784oWGBr3LdHmNVs1ggQh/BlyUc6q0ZmjsqX4SHzmKdxFhuflKyZmANN3UhHeq4njObPigvfDQQ/FEiXkNitJsg5HbPfoP0MWE8uxsIYdTZOihQFZiEZc28xuT9TAmKw0tO4vt0dbY7HpxonOdqmuZ502Xv7gHFfcZSWXNvFbuAwZHU60ATXzI/rVlglNP4HwleBAXEoFiHlBnZiZwLSnl/sS68wlLGrAiAY7xgmvTu8VMCrzCex/QdKQoNDkr07zmXlPgRvwrpsx/ptc1ga7q/l6t/Tqr5Tl08O2xjwu1ZdlrGI+y1soajGlypRzwO1fyyfKZIm+yGb+kZTx6SjSHLV2Pzqaue6EvD2SsZ5fHOZt67c1PxRgyWQdUGVjVZKFLDLkI/CXdOH1ZUeh/yvSZeXoW+QY+3F2+ZnJ9BxU71dbKCINu6iBF1SsqZkiLa/7PGwzndqQXG6fZ/QCI8nWYcgfLHs6wsdTKLKM1PIcMoVYnNul85LN3/bpqRrLcliAZXgPrPoRb0ZGM+LyYsAm6GPWNArHIs2euep0p+7CBoVz51CMADMKKztNlxGmqg50buC8n4EKUhBvZ0DWIKVzzY9RDBSQ9jRvuV4R9K4hX+3Q8xS4wWwfRlJXE/3mD44JXox+p9kvgn9M5XlQMx2o6At0NGUCV4CKoub/zZPT2F/hwjGvg84NM23jo+7aIur1LwYCjbDHN70gzXbyd9R6GpSU/bV5BXFDDXVP9aTGY/P7Jg4/bbIDyTKAwBzgcg7j7iddSUWskgMw1uyXBfvV7WSjneDHfqQ0DAkyO9Vx9fwD8d0yXTZpZTywSbbfM9F68au0wxOYWf5R3AGyy+YTzZyS1TqF6WrtnoOMl9UQa2nGbTyxavCiefBEklIPagKC/GuEB/PJjb5Dx+XymX0Omzlmfq6QnVIDeVTNqcVED0VF0xVrKYbi09Bkt2lad6ZeebIOZo9PKRjMmCwnxpSIcQ3Bnn6lIovj9bx0BEvC2r/EqqxGSBW+y6TkhNcvKPViT6iw02HZQNq6SA5zscuK1BsMoKanaEb/HNPvLUlm6s4kbUc3RhvYl8cLD4OlCuf6teO7dB+cqwCcR53iXaoVze4Oqm7rVthceEAQgybR8ePcIKq5YMQUEI8n5JCo/oN6j2FDSnSeP+BFhki86nEFs75/fLijG0CRIlBXnDphX5UKgpr5WA0= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(52116014)(1800799024)(366016)(376014)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0cmvLSVHS8ocs8QtRF8IE4hIO2bCNMByFCpfrUhk6zs1i6NN01+NsmT7UigFVgunWtxmYNhHv9Fo1PjY34Tkyk1gMO5CiSrAo5Gpq0UYo/w/G6yRd6UuU2SuqJeX7vpW+oR0zbJeP/6xwueNDVlh4sbBKQT0Kz9iIg3CHmFgM2hwnM8NInYoVTJ3pkmvqHQ0yzpjedK8UZUEwJ1e6aBoRwDJipLFiO4YY0o4gwNdlXFGCWv6DSQm7ZOaaVd9g3uO+qEl4pTsg8Ajjk0pONhS0T/4PqzsOiQNnxxZDSL3QYEAN9NP9hIhBIt//GcpeR5HjicvwBlsXqv0Nfi8Ae3jBEkIHIy+OXT4PJ33+C53BvNG2o0zoGsIC1XMl+XuEkD3Sd4R8EiI+eVQrezhARdQY3705ZigwmAYe6Y+YfAjyApgUKAhStarP0k2XodxtzVTZ85skGK9Gj1k6vPipw1COqS1dJLJCe3Qf940Ai63p0GMsJSnREL17TtJ7HuTwYf1VQhQsM4LVnmKrcpLSbDSrtiNCIG0GgY7ZuiYCwYi8wHsaCE68XiY51XYlf7Ge9nz2m0P49JtUW01A2XxBiWaQUadj0gcCqe6uRXGj7HZPgDN6qxQP1wq07vI8ezygYTXn/SOZXrbx98NkeCJSQEMQSB5emHv2O+TMpTNA4TyUxjlOm/2qbLBvGZoerCii54kcqxDY6vdPrJr9OBWNnR41+AbuSQYp9IedxOlt7xfAqjF0AZWjPaJo20hmn+VrDxfC/rfAlQovN8qUOkkBz+AVO34oJB9leKUZ4Nq2GR6sZWy+YG1OgPALQ5t8HwmNnFCgwe7fngXyX9OaIYIemb8fXTALur/ZuLw9ZavyswKTu1A4XQ8pmD4A8CkNhxRICV/oN8NevJuXa02Hf0XKWZx7rSqqQdGX1cugg9x0VRy2oyK8VOzN/D/VoSd4I9EvHNqu2Htj9lPpusqH9/K0RJs/lchd3j9paHuudGStXpXvQIl7DX9fQurePY+w9AK/qRao5Hlw0PoJZtzyv7/R/sF4cvMV1L+i0sqSaSTAc24J66YbVRYkgZ5W4IGyFGNwxnRFzE5qFbD40l123/PHAIB/BoKyrr53T80nYsfLOjiOdK012g3zUEgzP4Yv50L0JNGXOcTz0KPuvCuP4cLmC/8aVSo6KAGY44+Pyzeay9ZlyD7NxWc8QF02KMvdGXckQDRWDzyadms+Ht6LyR8fM8ljoFQnIeF0PV5TrMZfmUeP6gfACJS6jfEz47Y5s+DMdr5tdcB9JVWFkBO+VDkvUP5cf2+ecgO2rzq49xdmrZ5FtMgLING5vAlQjwebdxllRZ68uzqDEnXtmXeK41s6N624ZrRRP+iMN7oPgtuN3uh7WuU87eiL1GstiVTEePgeZV9jFGzcuRCpFo15p1TA+wbAB+2LaoRDsqx6W4zQAzvSnrw+rNQSczp7S+ztO6FLt1zyuX5tBXSW78MhsjSGeP9xYsYDjEGUsLk7GoRi/6RAN90bWfbHWbr9/2JnGBR4pQopyzpSY5ydOqr9hL5NlTG16sEuq1NAQwC3Mu8Q9uoFnY= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 734171df-705d-489e-f205-08dd09189c26 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Nov 2024 04:05:46.9393 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Z9rMH2IJ74yJOCzbPMjyFPepGci3UBNzsU5wtnMYAM2r/mc8U85IlhBrJqPT4uzW X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR04MB9837 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The current port ID validation logic in the routes add code has two issues: - It can pass if port ID in route is 31+. - It silently skips rules with disabled or invalid port IDs This patch is: - Improving the enabled port IDs check logic. - Introducing a user option, "exit_on_failure", to control the behavior when attempting to add rules for disabled or invalid port IDs (either exit or skip) - Creating a port ID validation function for use across various setup functions Signed-off-by: Gagandeep Singh --- examples/l3fwd/em_route_parse.c | 4 +-- examples/l3fwd/l3fwd.h | 16 +++++++++ examples/l3fwd/l3fwd_em.c | 22 +++++++++---- examples/l3fwd/l3fwd_fib.c | 26 ++++++++++----- examples/l3fwd/l3fwd_lpm.c | 26 ++++++++++----- examples/l3fwd/l3fwd_route.h | 2 ++ examples/l3fwd/main.c | 58 ++++++++++++++++++++++++++++----- 7 files changed, 121 insertions(+), 33 deletions(-) diff --git a/examples/l3fwd/em_route_parse.c b/examples/l3fwd/em_route_parse.c index 8b534de5f1..b80442d7b8 100644 --- a/examples/l3fwd/em_route_parse.c +++ b/examples/l3fwd/em_route_parse.c @@ -10,8 +10,8 @@ #include "l3fwd.h" #include "l3fwd_route.h" -static struct em_rule *em_route_base_v4; -static struct em_rule *em_route_base_v6; +struct em_rule *em_route_base_v4; +struct em_rule *em_route_base_v6; enum { CB_FLD_DST_ADDR, diff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h index 0cce3406ee..bcbaf4d143 100644 --- a/examples/l3fwd/l3fwd.h +++ b/examples/l3fwd/l3fwd.h @@ -57,6 +57,15 @@ #define L3FWD_HASH_ENTRIES (1024*1024*1) #endif +/* Select Longest-Prefix, Exact match, Forwarding Information Base or Access Control. */ +enum L3FWD_LOOKUP_MODE { + L3FWD_LOOKUP_DEFAULT, + L3FWD_LOOKUP_LPM, + L3FWD_LOOKUP_EM, + L3FWD_LOOKUP_FIB, + L3FWD_LOOKUP_ACL +}; + struct parm_cfg { const char *rule_ipv4_name; const char *rule_ipv6_name; @@ -102,6 +111,9 @@ extern struct rte_ether_addr ports_eth_addr[RTE_MAX_ETHPORTS]; /* mask of enabled ports */ extern uint32_t enabled_port_mask; +/* Skip or exit on invalid route */ +extern bool exit_on_failure; + /* Used only in exact match mode. */ extern int ipv6; /**< ipv6 is false by default. */ extern uint32_t hash_entry_number; @@ -222,6 +234,10 @@ init_mem(uint16_t portid, unsigned int nb_mbuf); int config_port_max_pkt_len(struct rte_eth_conf *conf, struct rte_eth_dev_info *dev_info); +int +l3fwd_validate_routes_port(enum L3FWD_LOOKUP_MODE mode, uint32_t i, + bool is_ipv4); + /* Function pointers for ACL, LPM, EM or FIB functionality. */ void setup_acl(const int socketid); diff --git a/examples/l3fwd/l3fwd_em.c b/examples/l3fwd/l3fwd_em.c index da9c45e3a4..9b482c3c4e 100644 --- a/examples/l3fwd/l3fwd_em.c +++ b/examples/l3fwd/l3fwd_em.c @@ -384,9 +384,14 @@ populate_ipv4_flow_into_table(const struct rte_hash *h) struct in_addr src; struct in_addr dst; - if ((1 << em_route_base_v4[i].if_out & - enabled_port_mask) == 0) - continue; + ret = l3fwd_validate_routes_port(L3FWD_LOOKUP_EM, i, true); + if (ret) { + if (exit_on_failure) + rte_exit(EXIT_FAILURE, "IDX: %d: Port ID %d in IPv4 rule is not" + " enabled\n", i, em_route_base_v4[i].if_out); + else + continue; + } entry = &em_route_base_v4[i]; convert_ipv4_5tuple(&(entry->v4_key), &newkey); @@ -436,9 +441,14 @@ populate_ipv6_flow_into_table(const struct rte_hash *h) struct em_rule *entry; union ipv6_5tuple_host newkey; - if ((1 << em_route_base_v6[i].if_out & - enabled_port_mask) == 0) - continue; + ret = l3fwd_validate_routes_port(L3FWD_LOOKUP_EM, i, false); + if (ret) { + if (exit_on_failure) + rte_exit(EXIT_FAILURE, "IDX %d: Port ID %d given in IPv6 rule is not" + " enabled\n", i, em_route_base_v6[i].if_out); + else + continue; + } entry = &em_route_base_v6[i]; convert_ipv6_5tuple(&(entry->v6_key), &newkey); diff --git a/examples/l3fwd/l3fwd_fib.c b/examples/l3fwd/l3fwd_fib.c index 82f1739df7..fa399d8c25 100644 --- a/examples/l3fwd/l3fwd_fib.c +++ b/examples/l3fwd/l3fwd_fib.c @@ -667,10 +667,15 @@ setup_fib(const int socketid) for (i = 0; i < route_num_v4; i++) { struct in_addr in; - /* Skip unused ports. */ - if ((1 << route_base_v4[i].if_out & - enabled_port_mask) == 0) - continue; + /* Check for valid ports */ + ret = l3fwd_validate_routes_port(L3FWD_LOOKUP_FIB, i, true); + if (ret) { + if (exit_on_failure) + rte_exit(EXIT_FAILURE, "IDX %d: Port ID %d in IPv4 rule is not" + " enabled\n", i, route_base_v4[i].if_out); + else + continue; + } ret = rte_eth_dev_info_get(route_base_v4[i].if_out, &dev_info); if (ret < 0) @@ -725,10 +730,15 @@ setup_fib(const int socketid) /* Populate the fib IPv6 table. */ for (i = 0; i < route_num_v6; i++) { - /* Skip unused ports. */ - if ((1 << route_base_v6[i].if_out & - enabled_port_mask) == 0) - continue; + /* Check for valid ports. */ + ret = l3fwd_validate_routes_port(L3FWD_LOOKUP_FIB, i, false); + if (ret) { + if (exit_on_failure) + rte_exit(EXIT_FAILURE, "IDX %d: Port ID %d given in IPv6 rule is not" + " enabled\n", i, route_base_v6[i].if_out); + else + continue; + } ret = rte_eth_dev_info_get(route_base_v6[i].if_out, &dev_info); if (ret < 0) diff --git a/examples/l3fwd/l3fwd_lpm.c b/examples/l3fwd/l3fwd_lpm.c index fec0aeb79c..e3bf2007db 100644 --- a/examples/l3fwd/l3fwd_lpm.c +++ b/examples/l3fwd/l3fwd_lpm.c @@ -583,10 +583,15 @@ setup_lpm(const int socketid) for (i = 0; i < route_num_v4; i++) { struct in_addr in; - /* skip unused ports */ - if ((1 << route_base_v4[i].if_out & - enabled_port_mask) == 0) - continue; + /* Check for valid ports */ + ret = l3fwd_validate_routes_port(L3FWD_LOOKUP_LPM, i, true); + if (ret) { + if (exit_on_failure) + rte_exit(EXIT_FAILURE, "IDX: %d: Port ID %d in IPv4 rule is not" + " enabled\n", i, route_base_v4[i].if_out); + else + continue; + } ret = rte_eth_dev_info_get(route_base_v4[i].if_out, &dev_info); if (ret < 0) @@ -630,10 +635,15 @@ setup_lpm(const int socketid) /* populate the LPM table */ for (i = 0; i < route_num_v6; i++) { - /* skip unused ports */ - if ((1 << route_base_v6[i].if_out & - enabled_port_mask) == 0) - continue; + /* Check for valid ports */ + ret = l3fwd_validate_routes_port(L3FWD_LOOKUP_LPM, i, false); + if (ret) { + if (exit_on_failure) + rte_exit(EXIT_FAILURE, "IDX %d Port ID %d given in IPv6 rule is not" + " enabled\n", i, route_base_v6[i].if_out); + else + continue; + } ret = rte_eth_dev_info_get(route_base_v6[i].if_out, &dev_info); if (ret < 0) diff --git a/examples/l3fwd/l3fwd_route.h b/examples/l3fwd/l3fwd_route.h index 62263c3540..98254deeeb 100644 --- a/examples/l3fwd/l3fwd_route.h +++ b/examples/l3fwd/l3fwd_route.h @@ -81,6 +81,8 @@ struct em_rule { extern struct lpm_route_rule *route_base_v4; extern struct lpm_route_rule *route_base_v6; +extern struct em_rule *em_route_base_v4; +extern struct em_rule *em_route_base_v6; extern int route_num_v4; extern int route_num_v6; diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index 994b7dd8e5..b3b5be4076 100644 --- a/examples/l3fwd/main.c +++ b/examples/l3fwd/main.c @@ -63,14 +63,6 @@ uint32_t mb_mempool_cache_size = MEMPOOL_CACHE_SIZE; /**< Ports set in promiscuous mode off by default. */ static int promiscuous_on; -/* Select Longest-Prefix, Exact match, Forwarding Information Base or Access Control. */ -enum L3FWD_LOOKUP_MODE { - L3FWD_LOOKUP_DEFAULT, - L3FWD_LOOKUP_LPM, - L3FWD_LOOKUP_EM, - L3FWD_LOOKUP_FIB, - L3FWD_LOOKUP_ACL -}; static enum L3FWD_LOOKUP_MODE lookup_mode; /* Global variables. */ @@ -92,7 +84,8 @@ xmm_t val_eth[RTE_MAX_ETHPORTS]; /* mask of enabled ports */ uint32_t enabled_port_mask; - +bool exit_on_failure; /**< Skip the route rule with invalid or */ + /**< disabled port ID */ /* Used only in exact match mode. */ int ipv6; /**< ipv6 is false by default. */ @@ -271,6 +264,43 @@ l3fwd_set_alg(const char *optarg) parm_config.alg = parse_acl_alg(optarg); } +/* This function will work only after read_config_files step */ +int +l3fwd_validate_routes_port(enum L3FWD_LOOKUP_MODE mode, uint32_t i, + bool is_ipv4) +{ + uint32_t max_port_count = (sizeof(enabled_port_mask) * CHAR_BIT); + + if (mode == L3FWD_LOOKUP_LPM || + mode == L3FWD_LOOKUP_FIB) { + if (is_ipv4) { + if (route_base_v4[i].if_out >= max_port_count || + ((1 << route_base_v4[i].if_out & + enabled_port_mask) == 0)) + return -1; + } else { + if (route_base_v6[i].if_out >= max_port_count || + ((1 << route_base_v6[i].if_out & + enabled_port_mask) == 0)) + return -1; + } + } else if (mode == L3FWD_LOOKUP_EM) { + if (is_ipv4) { + if (em_route_base_v4[i].if_out >= max_port_count || + ((1 << em_route_base_v4[i].if_out & + enabled_port_mask) == 0)) + return -1; + } else { + if (em_route_base_v6[i].if_out >= max_port_count || + ((1 << em_route_base_v6[i].if_out & + enabled_port_mask) == 0)) + return -1; + } + } + + return 0; +} + /* * Setup lookup methods for forwarding. * Currently exact-match, longest-prefix-match and forwarding information @@ -408,6 +438,7 @@ print_usage(const char *prgname) " [--parse-ptype]" " [--per-port-pool]" " [--mode]" + " [--exit-on-failure]" #ifdef RTE_LIB_EVENTDEV " [--eventq-sched]" " [--event-vector [--event-vector-size SIZE] [--event-vector-tmo NS]]" @@ -438,6 +469,8 @@ print_usage(const char *prgname) " --per-port-pool: Use separate buffer pool per port\n" " --mode: Packet transfer mode for I/O, poll or eventdev\n" " Default mode = poll\n" + " --exit-on-failure: Exit on invalid/disabled port ID given in route rule\n" + " Default action is skip the rule\n" #ifdef RTE_LIB_EVENTDEV " --eventq-sched: Event queue synchronization method\n" " ordered, atomic or parallel.\n" @@ -758,6 +791,7 @@ static const char short_options[] = #define CMD_LINE_OPT_RELAX_RX_OFFLOAD "relax-rx-offload" #define CMD_LINE_OPT_PER_PORT_POOL "per-port-pool" #define CMD_LINE_OPT_MODE "mode" +#define CMD_LINE_OPT_EXIT_ON_FAILURE "exit-on-failure" #define CMD_LINE_OPT_EVENTQ_SYNC "eventq-sched" #define CMD_LINE_OPT_EVENT_ETH_RX_QUEUES "event-eth-rxqs" #define CMD_LINE_OPT_LOOKUP "lookup" @@ -800,6 +834,7 @@ enum { CMD_LINE_OPT_VECTOR_TMO_NS_NUM, CMD_LINE_OPT_PKT_BURST_NUM, CMD_LINE_OPT_MB_CACHE_SIZE_NUM, + CMD_LINE_OPT_EXIT_ON_FAILURE_NUM }; static const struct option lgopts[] = { @@ -816,6 +851,7 @@ static const struct option lgopts[] = { {CMD_LINE_OPT_DISABLE_RSS, 0, 0, CMD_LINE_OPT_DISABLE_RSS_NUM}, {CMD_LINE_OPT_PER_PORT_POOL, 0, 0, CMD_LINE_OPT_PARSE_PER_PORT_POOL}, {CMD_LINE_OPT_MODE, 1, 0, CMD_LINE_OPT_MODE_NUM}, + {CMD_LINE_OPT_EXIT_ON_FAILURE, 0, 0, CMD_LINE_OPT_EXIT_ON_FAILURE_NUM}, {CMD_LINE_OPT_EVENTQ_SYNC, 1, 0, CMD_LINE_OPT_EVENTQ_SYNC_NUM}, {CMD_LINE_OPT_EVENT_ETH_RX_QUEUES, 1, 0, CMD_LINE_OPT_EVENT_ETH_RX_QUEUES_NUM}, @@ -968,6 +1004,10 @@ parse_args(int argc, char **argv) parse_mode(optarg); break; + case CMD_LINE_OPT_EXIT_ON_FAILURE_NUM: + exit_on_failure = true; + break; + #ifdef RTE_LIB_EVENTDEV case CMD_LINE_OPT_EVENTQ_SYNC_NUM: parse_eventq_sched(optarg);