From patchwork Thu Sep 2 10:18:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roi Dayan X-Patchwork-Id: 1523591 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=A2QSXyd3; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::138; helo=smtp1.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4H0cN20HZ5z9sCD for ; Thu, 2 Sep 2021 20:18:57 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 67B3380ED1; Thu, 2 Sep 2021 10:18:55 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id irO1o0ewg91O; Thu, 2 Sep 2021 10:18:51 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id 3E02082ACA; Thu, 2 Sep 2021 10:18:47 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id EE84CC001B; Thu, 2 Sep 2021 10:18:46 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id BFCE2C001B for ; Thu, 2 Sep 2021 10:18:45 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 684B8404E0 for ; Thu, 2 Sep 2021 10:18:45 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp4.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=nvidia.com Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9kUPwalGPaPf for ; Thu, 2 Sep 2021 10:18:40 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2074.outbound.protection.outlook.com [40.107.92.74]) by smtp4.osuosl.org (Postfix) with ESMTPS id 7B2B340285 for ; Thu, 2 Sep 2021 10:18:40 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U9HSpPxQh9ukuZklg8h/c32chL2DNlbVU249sjMybMYQx7Kd9izmNfxbVIfY6wTj5S1+085VQLa3MFqVw0//Gfb84LBIeoEORsyJiEkjHsltfgrame5fXTT7LVfYn/bANSSLIk5PxpjUK2rAZUjV0cCbcdfxN11Q5Hk9RAMIKxYVdKPawGSiR7iMR9BUIY1BY6ZQV9UbO+sdeFDCHLBWrRr/C6Q5KCkqWPxpof1nGojKHF5JQ1ZHRfAj7lfnTtCbodcnXaa7IFvJp67fkGyQmO5Ra1Tft1lVpVKgYUzD7oMGGRsPUihFfTuqhevo/tfSlieAjoDG+RK6KPPec4KyAA== 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; bh=CmDABi5FcorcIfDx0jwt3CEQZ674RvKhKYcUEHXnBlc=; b=RkSzpdDUpM8C+H67sNw1UPVeAVof7a+2oo5Luo0hn7pewXFrxHb8TKURRpE3oBGpr1SwB8OQu+UNb5R+43UUekXcGVaKO1VQqOO/maV+KR6+6kbFA8Qu+Yo6RpJ46ErP/mWjSNRabQjHpjx2YWLr9zLBj/1V1FIox6G0pkLR8Stmxrz7BU2x3L7Ywoz+5/JeYKck9zbxFhQwCuUTowhZu8czi4o0Gs4UiUefS9a0Dq001L2N8z5g983sJvO6eUWvBsh+mT/aSTIOdDEqLsUOBmuaN7p09uw+Zg/Byg2rBLgDUshm73YZ6h489R7Hv7s1CMQ+dr5Ok+bhTfqWdcB5UA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.35) smtp.rcpttodomain=ovn.org smtp.mailfrom=nvidia.com; dmarc=pass (p=quarantine sp=none pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CmDABi5FcorcIfDx0jwt3CEQZ674RvKhKYcUEHXnBlc=; b=A2QSXyd3AfyPVDRk422RPkeWb7fHSXYQYLoBv/K0SK1IQ3s5c8S44zZsZJgwHxJBTsP8R0Wmb4YqBT1QLjCMDq2maRS70zMnI4tZ6Z3o3R32j/+kMMHODg8YVlAi6liEYSK6fMiEGd+Rn/Tn4eYPTxxITyUi5EIadG5GlBrOaEi9284PAKX3kRBAg5ay005OrtPa0ssFURkDHIZ/RaIGxMyZnB5sbKFQmGw5LoPmV99dcQ6UQOTBIFOlPHVM4y2MaL698hXFRR88Nh7+NczGUxy4HohSdfFihW+wOO3rIBv27soxbs7UU+AvMWHgB6Qz2XYJnZYDIudZ400FEsAl9A== Received: from MW4PR03CA0258.namprd03.prod.outlook.com (2603:10b6:303:b4::23) by CH2PR12MB3766.namprd12.prod.outlook.com (2603:10b6:610:16::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.21; Thu, 2 Sep 2021 10:18:36 +0000 Received: from CO1NAM11FT013.eop-nam11.prod.protection.outlook.com (2603:10b6:303:b4:cafe::2e) by MW4PR03CA0258.outlook.office365.com (2603:10b6:303:b4::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Thu, 2 Sep 2021 10:18:36 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.35) smtp.mailfrom=nvidia.com; ovn.org; dkim=none (message not signed) header.d=none;ovn.org; dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.112.35 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.35; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.35) by CO1NAM11FT013.mail.protection.outlook.com (10.13.174.227) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4478.19 via Frontend Transport; Thu, 2 Sep 2021 10:18:36 +0000 Received: from HQMAIL109.nvidia.com (172.20.187.15) by HQMAIL111.nvidia.com (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 2 Sep 2021 10:18:32 +0000 Received: from dev-r-vrt-138.mtr.labs.mlnx (172.20.187.5) by mail.nvidia.com (172.20.187.15) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 2 Sep 2021 03:18:31 -0700 To: , Ilya Maximets Date: Thu, 2 Sep 2021 13:18:19 +0300 Message-ID: <20210902101823.3403153-3-roid@nvidia.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210902101823.3403153-1-roid@nvidia.com> References: <20210902101823.3403153-1-roid@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f84472d0-60a1-4838-29e4-08d96dfb0692 X-MS-TrafficTypeDiagnostic: CH2PR12MB3766: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:64; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YDiIcoSFbeZ19rNjJJbFieT+wNQnQ3QlgESZkaCOUm2M69GSXQPD1BTh6UDbHeXz9TJ1nU8BqIPdVkVtPImt1FMnG003PodnWa73aN6zuXAR5P0B2cVdd++8tsbiyKbYMzoFm6pSAgr2No9+jsNJX/A/XUF2UQfwLu58y/q/JyYebPCZ1nl4Ty4/EwlfHtdv8d84NAG393sfDL0uf7Cg3FO7ZsxsgHP3xMK+NBIJ4WkNFiG0Yrs/RUQpswSf7I2LH6RhbkZ70VQFv6jj/u2aajdcYXojvHTcWxSQqueY/fGN2E17WEku4SdmfUNuCuit4/kX6VHyLgbTUNq0DjmXvkyvA1AG4ru3mupZQqMnvWsA+DmuqM9S39aT6ycd1BV8/66oPRXxyX4lHpKT6wQ9TiqGXNJVHVhNFywnWJZUHyf/6GYc0qJhWwQ8J0Rg8kYMPLP2QhcPsVSHUbBjKw7/v5Nmw6BRbGhB7ALiCFlzY5MZBRIuc3TZpRp6oO9bO2TGWJXilyFeojOxcF8XZVrivZP6Tc2fsYs+OlIa0ND1jP3AhdoInWd7EfDCWlDO9/VlqHBDnLl3HtBggOyiZXeyglls15nZ1zCJ8mTlEyxS8eBP1tBdt1em55jaxQuTWTY2hHBNzYS7GpmoIoPuMe2Flp/PNRgSCbT7lMZswZKgHWGJEIlP6G9sIh0YG/jDENvFhwkU4FwPVEgyosc+E9amXg== X-Forefront-Antispam-Report: CIP:216.228.112.35; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid04.nvidia.com; CAT:NONE; SFS:(4636009)(36840700001)(46966006)(86362001)(47076005)(26005)(110136005)(2616005)(36756003)(186003)(426003)(1076003)(336012)(36906005)(6666004)(4326008)(54906003)(70586007)(8676002)(36860700001)(107886003)(356005)(508600001)(2906002)(5660300002)(83380400001)(316002)(82310400003)(7636003)(70206006)(8936002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Sep 2021 10:18:36.3017 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f84472d0-60a1-4838-29e4-08d96dfb0692 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.35]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT013.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB3766 Cc: Jianbo Liu Subject: [ovs-dev] [PATCH 2/6] tc: Add support parsing tc police action X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Roi Dayan via dev From: Roi Dayan Reply-To: Roi Dayan Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" From: Jianbo Liu Add function to parse police action from netlink message. Signed-off-by: Jianbo Liu Reviewed-by: Roi Dayan --- lib/tc.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ lib/tc.h | 4 ++++ 2 files changed, 52 insertions(+) diff --git a/lib/tc.c b/lib/tc.c index 38a1dfc0ebc8..b351f0e1e65f 100644 --- a/lib/tc.c +++ b/lib/tc.c @@ -1341,6 +1341,54 @@ nl_parse_act_gact(struct nlattr *options, struct tc_flower *flower) return 0; } +static const struct nl_policy police_policy[] = { + [TCA_POLICE_TBF] = { .type = NL_A_UNSPEC, + .min_len = sizeof(struct tc_police), + .optional = false, }, + [TCA_POLICE_RATE] = { .type = NL_A_UNSPEC, + .min_len = 1024, + .optional = true, }, + [TCA_POLICE_PEAKRATE] = { .type = NL_A_UNSPEC, + .min_len = 1024, + .optional = true, }, + [TCA_POLICE_AVRATE] = { .type = NL_A_U32, + .optional = true, }, + [TCA_POLICE_RESULT] = { .type = NL_A_U32, + .optional = true, }, + [TCA_POLICE_TM] = { .type = NL_A_UNSPEC, + .min_len = sizeof(struct tcf_t), + .optional = true, }, +}; + +static int +nl_parse_act_police(const struct nlattr *options, struct tc_flower *flower) +{ + struct nlattr *police_attrs[ARRAY_SIZE(police_policy)] = {}; + struct tc_action *action; + const struct tc_police *police; + struct nlattr *police_tm; + const struct tcf_t *tm; + + if (!nl_parse_nested(options, police_policy, police_attrs, + ARRAY_SIZE(police_policy))) { + VLOG_ERR_RL(&error_rl, "failed to parse police action options"); + return EPROTO; + } + + police = nl_attr_get(police_attrs[TCA_POLICE_TBF]); + action = &flower->actions[flower->action_count++]; + action->type = TC_ACT_POLICE; + action->police.index = police->index; + + police_tm = police_attrs[TCA_POLICE_TM]; + if (police_tm) { + tm = nl_attr_get_unspec(police_tm, sizeof *tm); + nl_parse_tcf(tm, flower); + } + + return 0; +} + static const struct nl_policy mirred_policy[] = { [TCA_MIRRED_PARMS] = { .type = NL_A_UNSPEC, .min_len = sizeof(struct tc_mirred), diff --git a/lib/tc.h b/lib/tc.h index a147ca461dc5..85ae5a8908ea 100644 --- a/lib/tc.h +++ b/lib/tc.h @@ -174,6 +174,7 @@ enum tc_action_type { TC_ACT_MPLS_SET, TC_ACT_GOTO, TC_ACT_CT, + TC_ACT_POLICE, }; enum nat_type { @@ -256,6 +257,9 @@ struct tc_action { bool force; bool commit; } ct; + struct { + uint32_t index; + } police; }; enum tc_action_type type;