From patchwork Fri Mar 24 10:05:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nobuhiro MIKI X-Patchwork-Id: 1760699 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::137; helo=smtp4.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=selector1 header.b=SiIrl1O4; dkim-atps=neutral Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PjdC353g3z1yYB for ; Fri, 24 Mar 2023 21:06:07 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 6686341F3E; Fri, 24 Mar 2023 10:06:03 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 6686341F3E Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key, unprotected) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=selector1 header.b=SiIrl1O4 X-Virus-Scanned: amavisd-new at osuosl.org 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 N08Pejfqo77J; Fri, 24 Mar 2023 10:06:01 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp4.osuosl.org (Postfix) with ESMTPS id 7EFA740627; Fri, 24 Mar 2023 10:06:00 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 7EFA740627 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 22B8EC008E; Fri, 24 Mar 2023 10:05:58 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 369D9C0032 for ; Fri, 24 Mar 2023 10:05:57 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id E9B6A4053D for ; Fri, 24 Mar 2023 10:05:56 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org E9B6A4053D X-Virus-Scanned: amavisd-new at osuosl.org 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 cOMVCzC5TLwV for ; Fri, 24 Mar 2023 10:05:55 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 5DEDA40491 Received: from corp-ob09.yahoo-corp.jp (corp-ob09.yahoo-corp.jp [182.22.125.216]) by smtp4.osuosl.org (Postfix) with ESMTPS id 5DEDA40491 for ; Fri, 24 Mar 2023 10:05:55 +0000 (UTC) Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01lp2168.outbound.protection.outlook.com [104.47.23.168]) by corp-ob09.yahoo-corp.jp (Postfix) with ESMTPS id 8FFF819FB183 for ; Fri, 24 Mar 2023 19:05:53 +0900 (JST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CQQRjJaVnAqmn2nsNSpEiAXMVSftMpEtHod61Z9XdMyrCUGHnrbmwyLij/KvG8nC49K9mY8Feg96hszPxLu9VDEg3vQTX4aRfDjSgbHj8JcKVgJZ9XcG3ChGh3Vlwb6jZJfIhN0KaO6V1oACIGxSoT5Sossur5nDcs9HecoA579IsIJFaHfiIiwJ9HFOdNQZWZHYegfXYfQLh1FpzUXnLZkP6JZY5y4aTN2DJufVC/cM6scoNiYInYgW3aojlUSvgiMQHOLi4k5z2bPdDP8af2pa9D2KrXGcgN1nae2a/Va1LVWvkcogjiSt0Z4xMi/aCOgSAOS4CyuQiAR8ThG2PA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qMkb/M6ftaVdWvxL9mX4+O1/2hiFKVFDPdLrFcEfKxw=; b=Ly6KdK7/oh2zcU4XWjdDfxUNIFv/rZXuUjJ+x7LnBkTRyD++KR5jeSX9vdNBj0JcN0ffNEC7P79gR80Nk+DmtRHENwD2x7V2DBjNZtNCTTciPJpS3F7FLzDtS42B4B1RlINj+A+FY4ApbOwITB9IA2EOShIy3w4nRLBWUiFXAkVfYGiUpXPEFTkTnujF/BT3QhWfTwJJGiWs4/XzB91J8/BGc3Xv1WVld+86VVHeLx/yOC/FsSF1VYXirSV6QDpWFSGl6Y5j92LUXPKsynibKx/6Tmv/FICwdbzW2Jdt+W0vAqix7o+SiC16ax16dgaaPjyeYad1edRetVQrcgJTsQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=yahoo-corp.jp; dmarc=pass action=none header.from=yahoo-corp.jp; dkim=pass header.d=yahoo-corp.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo-corp.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qMkb/M6ftaVdWvxL9mX4+O1/2hiFKVFDPdLrFcEfKxw=; b=SiIrl1O4ZaehLzEpTv6+nsUqhUu9dw7QjxVnWta/nT5sQ2mgn7ux6wdq0xxGfa0nUL4eTNwb0Pd0HdNslDgxil+1mtydCu2HkbgpkwRwo1IL1iIp3WPJ6DMU3S9S/WK8kiObkoXkbj2+wjjM1/gK9tFFWBGLCoaFfUd9Fcirjv0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=yahoo-corp.jp; Received: from TY2PR01MB4107.jpnprd01.prod.outlook.com (2603:1096:404:d8::23) by TYCPR01MB8376.jpnprd01.prod.outlook.com (2603:1096:400:150::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.38; Fri, 24 Mar 2023 10:05:52 +0000 Received: from TY2PR01MB4107.jpnprd01.prod.outlook.com ([fe80::61fe:e4c3:a819:6ce6]) by TY2PR01MB4107.jpnprd01.prod.outlook.com ([fe80::61fe:e4c3:a819:6ce6%7]) with mapi id 15.20.6178.038; Fri, 24 Mar 2023 10:05:52 +0000 From: Nobuhiro MIKI To: dev@openvswitch.org Date: Fri, 24 Mar 2023 19:05:35 +0900 Message-Id: <20230324100538.70290-3-nmiki@yahoo-corp.jp> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230324100538.70290-1-nmiki@yahoo-corp.jp> References: <20230324100538.70290-1-nmiki@yahoo-corp.jp> X-ClientProxiedBy: TYAPR01CA0125.jpnprd01.prod.outlook.com (2603:1096:404:2d::17) To TY2PR01MB4107.jpnprd01.prod.outlook.com (2603:1096:404:d8::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY2PR01MB4107:EE_|TYCPR01MB8376:EE_ X-MS-Office365-Filtering-Correlation-Id: f79526b3-641e-4ad2-bd40-08db2c4f59d1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /6cMny4tOs0Pe8ol95Yz1qjLLz9JrhUivBh6vgB9estJd+i+iAbxuQZ4KFxm+OlmqJeprYDIWXCzOEoGxmxM7wWg113wnfjC6H3EznawS7z6Jud/FesC5W/ebT2gdJpEU+sOCJdzAuFtQ4njf4Zn12KzDLEjZorfHolFCPS6HGlGPIY2x1NktbM2LWcbicHMvJPp5LIpOTyF3XBnYETVq3LDFoYtEHEs7lfUSOyo7sjkRu9QdBFbBZkBs0zGeEUy2JbEWWDvvPumAjewnl8rgzhxIU0nQ5CKmbBy4xUqjlFTkATIwBTbV/cFGlTcfPNrQXxwaDKlDtjiGmGc/RaoBmzrc64dowgaAbz7pLpfJSs65KRKRyMumBwagAK7RdhZNeUSJ/jzHkikApZyiICU2UzAM55BLp3dmf8N/p2F8ZfssbXsN4gMBH7sZV6UFn0Mmi8gqvXSfYX1pKVbKBgMkBj7aDJe5fr33HobYEns3H9CupLkrURn/Mlr4WM0kQfBQ0iGdL4kVYaT2i9seoNWZmuc55vkvGOPOehsDt31H2lxPmPDiZsehrZeUPuDpRkbLQH6k8xhJRmXrLMXAMRhwv8n40cnCPQ5RlBLNY/QhqwrsySTvypiCWt/g+jnifcgsxBXKX7ArJt0+yoPttwr9O8xCuGFk59SlerHs2xEUYgRqrJsY8tnjx3O73yPQQqAa7pGqTZb5usGlyDhZZVNTA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:TY2PR01MB4107.jpnprd01.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(39860400002)(346002)(136003)(366004)(396003)(376002)(451199018)(36756003)(66476007)(8676002)(4326008)(66556008)(66946007)(6916009)(5660300002)(82960400001)(316002)(6512007)(6666004)(26005)(1076003)(6506007)(8936002)(41300700001)(186003)(478600001)(2616005)(6486002)(83380400001)(107886003)(52116002)(86362001)(38100700002)(38350700002)(2906002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: El2UTd/yoFAw/9XuZ6IW/p/RY4IShFQq1rpuaVZRUou72L2SpYL9A9CJrgsX/NRrhj0gxAxBYNL9Th4h5ta0tAEP9mPZFymWu0eXzrrzRzg8MqZ1IKjuQFuadVmFbVzWrDTeSV3fKZ+xZQ3P6XkqCV5I8ejoQr1Z+XIKl5R6/y697aLvDQoKyvru69WZd1WsKJ/7VIK6l4QGKBjDfKiuJtshxnzjaifvSqJPN3T+7HLfbVrGJ6gX7y/kljttutoaPkpoYcS4dcKL5LE5jvcB4kwGgia52h35eb6/hGoJsBcCZol8SDeYYIf4toytWwZkbZt0UJ3mTbMq4cd59v5TkekJfXuNyh3PdhOpECrIqyqgVUEoEUkls9Rd1fYPT12zjZVcbFduCv8qVWdKsk/tAqTvGsOp/JKpmOUadTLXo5MT0CTLe3vHRW/KeNVbCKM1qNwh0sz96eKNUFLGDSZDkY1POFZ/Btql7Ka8ehaYKCe+jNgi9UfVtEuno9vn4rEoTz57ImpJN7ZkhHKOox2dNE76fyrbynQwm7CtlHoIEFHdT7hcRgpP+xKqEmJHwTLKQ526jxNtDZDrHVAGOZ31JsDjHzv/tytK4Qk8gz8ZnQV9EuT/TJ6rIVn9yVCE9Ia4TOUDuGAWxzYhP4cwc8Jsnc+9htfBHIpEylSRtI9nRxFXiED/kaE5gT1bGlorpsrxn9gYQJStbKJrQGstTKTISJfH/7sjWkynxVjMAJZe/H9myRanv4KC5DrDWFlFpWcN5aLZ4zWWiLUf2R1e5oXopejgnIH6GMr/jWYmq+hvvGgIz2s/8VxvVSoaGrRujcmDV7zRlBxH/64US679baeVVaYAnUrBbXi0iZRj50xpA8SLaJswRtdzPLZE44dRhr/h8dWIF9T57MkX3IzBXY7E9FJ0H1LwRXEi+Sp19yGzZuk7K3ThQNsodfGrieoW04NzR9sHV+jxY1jjE8uu2zZG5UDzimkKpLrexxuxTClN8rh1QvABBh0uBHaCUjGZf1VkM1UdBfrVU0ygh4xMM4Bah+sjK6LmqPNpJyDN+C8VezNOZWO+R4ya4SuZDt2teXROCc8z3oBzMrFpveQvWc9f3UnwDRQPLt21JXOy+jHHqYyQL2f6uqr/rnBeiYvMSSO+jK1CZQ4vzpfpSRG+b8UFKX+PpiSSRGU2Wl/fYD27er/GiuJat5cqO08JM1+jQaJbhRTTfVvu9W0XqFm6jFCuR5cy2VeAMwt4wkZWoUK1XCM60IjHPyeJkNnFhmq3dHoedStcFVCxoK/9FPpagRC/8pqawJmopk4gzA2DeQpdB8NOD4V6+J07AVaSxe6pJjG1OtKSV69M/LQTcXVcfKDEN/dSHX0YMCYuzseogtQr1pXED3nBYOJd2Ms6UOd4iSO8Bg5ydSRxVAz/MPTWpm60xHHF8JqGZY/cHdiJTyilkRpgnaNHVkSWYhSeSy/z/oGwYmDpTynh3Tb1h9P3mM0qYfdApaohTWlRq/dTWeNrPK06YzDCBYb3zTSYc3mCjhgussfpFmLjRO/NTgEOt37HZ5dgUEBVZdGtCt1ufYNxQoqCaWDiuHb6o5QUsGF5A5lN X-OriginatorOrg: yahoo-corp.jp X-MS-Exchange-CrossTenant-Network-Message-Id: f79526b3-641e-4ad2-bd40-08db2c4f59d1 X-MS-Exchange-CrossTenant-AuthSource: TY2PR01MB4107.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2023 10:05:52.5575 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a208d369-cd4e-4f87-b119-98eaf31df2c3 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /xvm+lFqhoHOTyY7d92USzvvnX/d7NQc5vJC1qfXbMw55D3ls9WVHdL/llZCmeLjJlOx+oLdziu5uPdmG7LYGw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB8376 Subject: [ovs-dev] [PATCH v10 2/5] tnl-ports: Support multiple nw_protos. 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: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" In some tunnels, inner packet needs to support both IPv4 and IPv6. Therefore, this patch improves to allow two protocols to be tied together in one tunneling. Signed-off-by: Nobuhiro MIKI --- lib/tnl-ports.c | 83 ++++++++++++++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 32 deletions(-) diff --git a/lib/tnl-ports.c b/lib/tnl-ports.c index 050eafa6b8c3..3948bc10e6b0 100644 --- a/lib/tnl-ports.c +++ b/lib/tnl-ports.c @@ -161,40 +161,31 @@ map_insert_ipdev__(struct ip_device *ip_dev, char dev_name[], } } -static uint8_t -tnl_type_to_nw_proto(const char type[]) +static void +tnl_type_to_nw_proto(const char type[], uint8_t nw_protos[2]) { - if (!strcmp(type, "geneve")) { - return IPPROTO_UDP; + nw_protos[0] = nw_protos[1] = 0; + + if (!strcmp(type, "geneve") || !strcmp(type, "vxlan") || + !strcmp(type, "gtpu")) { + nw_protos[0] = IPPROTO_UDP; + } else if (!strcmp(type, "stt")) { + nw_protos[0] = IPPROTO_TCP; + } else if (!strcmp(type, "gre") || !strcmp(type, "erspan") || + !strcmp(type, "ip6erspan") || !strcmp(type, "ip6gre")) { + nw_protos[0] = IPPROTO_GRE; + } else if (!strcmp(type, "srv6")) { + nw_protos[0] = IPPROTO_IPIP; + nw_protos[1] = IPPROTO_IPV6; } - if (!strcmp(type, "stt")) { - return IPPROTO_TCP; - } - if (!strcmp(type, "gre") || !strcmp(type, "erspan") || - !strcmp(type, "ip6erspan") || !strcmp(type, "ip6gre")) { - return IPPROTO_GRE; - } - if (!strcmp(type, "vxlan")) { - return IPPROTO_UDP; - } - if (!strcmp(type, "gtpu")) { - return IPPROTO_UDP; - } - return 0; } -void -tnl_port_map_insert(odp_port_t port, ovs_be16 tp_port, - const char dev_name[], const char type[]) +static void +tnl_port_map_insert__(odp_port_t port, ovs_be16 tp_port, + const char dev_name[], uint8_t nw_proto) { struct tnl_port *p; struct ip_device *ip_dev; - uint8_t nw_proto; - - nw_proto = tnl_type_to_nw_proto(type); - if (!nw_proto) { - return; - } ovs_mutex_lock(&mutex); LIST_FOR_EACH(p, node, &port_list) { @@ -220,6 +211,22 @@ out: ovs_mutex_unlock(&mutex); } +void +tnl_port_map_insert(odp_port_t port, ovs_be16 tp_port, + const char dev_name[], const char type[]) +{ + uint8_t nw_protos[2]; + int i; + + tnl_type_to_nw_proto(type, nw_protos); + + for (i = 0; i < 2; i++) { + if (nw_protos[i]) { + tnl_port_map_insert__(port, tp_port, dev_name, nw_protos[i]); + } + } +} + static void tnl_port_unref(const struct cls_rule *cr) { @@ -256,14 +263,11 @@ ipdev_map_delete(struct ip_device *ip_dev, ovs_be16 tp_port, uint8_t nw_proto) } } -void -tnl_port_map_delete(odp_port_t port, const char type[]) +static void +tnl_port_map_delete__(odp_port_t port, uint8_t nw_proto) { struct tnl_port *p; struct ip_device *ip_dev; - uint8_t nw_proto; - - nw_proto = tnl_type_to_nw_proto(type); ovs_mutex_lock(&mutex); LIST_FOR_EACH_SAFE (p, node, &port_list) { @@ -280,6 +284,21 @@ tnl_port_map_delete(odp_port_t port, const char type[]) ovs_mutex_unlock(&mutex); } +void +tnl_port_map_delete(odp_port_t port, const char type[]) +{ + uint8_t nw_protos[2]; + int i; + + tnl_type_to_nw_proto(type, nw_protos); + + for (i = 0; i < 2; i++) { + if (nw_protos[i]) { + tnl_port_map_delete__(port, nw_protos[i]); + } + } +} + /* 'flow' is non-const to allow for temporary modifications during the lookup. * Any changes are restored before returning. */ odp_port_t