From patchwork Wed Feb 22 10:29:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nobuhiro MIKI X-Patchwork-Id: 1746163 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=140.211.166.138; helo=smtp1.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=default header.b=ovE+fBlD; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=nbN5C7bJ; dkim-atps=neutral Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (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 4PMC8t3K5fz23j7 for ; Wed, 22 Feb 2023 21:30:22 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 73E4881AEF; Wed, 22 Feb 2023 10:30:19 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 73E4881AEF Authentication-Results: smtp1.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=default header.b=ovE+fBlD; dkim=fail reason="signature verification failed" (1024-bit key) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=nbN5C7bJ 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 RqdT8dZ5e99L; Wed, 22 Feb 2023 10:30:18 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id 17EFA81926; Wed, 22 Feb 2023 10:30:17 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 17EFA81926 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id CAE06C007F; Wed, 22 Feb 2023 10:30:14 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 7D5E3C0033 for ; Wed, 22 Feb 2023 10:30:12 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 519DB60FA4 for ; Wed, 22 Feb 2023 10:30:12 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 519DB60FA4 Authentication-Results: smtp3.osuosl.org; dkim=pass (1024-bit key) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=default header.b=ovE+fBlD; dkim=pass (1024-bit key) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=nbN5C7bJ X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PSQ72QYnoGOJ for ; Wed, 22 Feb 2023 10:30:11 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 8F48C60FA1 Received: from corp-ob10.yahoo-corp.jp (corp-ob10.yahoo-corp.jp [182.22.125.210]) by smtp3.osuosl.org (Postfix) with ESMTPS id 8F48C60FA1 for ; Wed, 22 Feb 2023 10:30:10 +0000 (UTC) Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01lp2170.outbound.protection.outlook.com [104.47.23.170]) by corp-ob10.yahoo-corp.jp (Postfix) with ESMTPS id C5F2B19FB184; Wed, 22 Feb 2023 19:30:07 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo-corp.jp; s=default; t=1677061807; bh=wUU1QXH5YYi26GE2NpNk1c7N+fBec1+ub4gYjdc4Dsg=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ovE+fBlDJNYfOw/pHa8CMIYvcTAQ/yoicQr5syupNfoO6/z9pJC4sHfIUNBKjAlZN Ka9aO3sne4ac/LOi9eNfI6EIS7UgIzr0J5MYXwvLnypLgntzvFmcDnzcRPKYmrxq6D RtLItYnZ5jLb4MqrKrjhlSHLEms5ozYaWywMnk1Q= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oVM3kc4448qn0kthWIOgx4+bAcBxDjh5qBv9Qy2jf+/hExARhXSx3yMKIhgIsHyHZ0ZO/MBcTGu0wN+4Tl1uvwypNKkmMVTKShnqpPb0RSaqBs+JsZD30NOlu1o1XAUXEgQbl9Bv/yE8MC3/ImwXEXIMQsKFhutfWmL5qpBWzWWS5O4RCsJotgi3HuwREatA6jFsVyd23vuWfG93Sb/T/FgKkpqRlcyfO5FJUQhC2dEuV+QY6O86/QsfoW0dv+589Y6pRafjssqwR93solKuzWTE68OZsAy7ZXdVLeJvutOp5aBZOM9qbKBdXep/AbuqH9hLperhIMnQkED8zyTLrg== 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=wUU1QXH5YYi26GE2NpNk1c7N+fBec1+ub4gYjdc4Dsg=; b=DMxOXbvvNzYLYPdIarfjnv5HF/ZvnobMZ8XCbchYVA7HUuOWvC4p2iUJ+4iIKhFb1D1juh/pGw7YxQE5nxHs/uQr5hzeG/sYOUBIO3w38D6vJQXlPRLIh4oUyU1W4XApuwBdO5Qgx1xihgex6i3fSfqwysOeNz2KpYiKa8s3+3yqyZIeLuBkLxdwtpuYy2G7iA35CsvHT2qDiOzr40L2uWp4LDb8uIej6eiz1RhR4msbLoqZH0nau9ctgHkD7P3LpIY5LrWUBkENC7tJ7FvoZIN7EVkugs4SidzFPJYNR8ym5uEvXQK6LSdJPHqaip8LcvBI1pUs+FCUlP02gfDmdQ== 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=yjcorp.onmicrosoft.com; s=selector1-yjcorp-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wUU1QXH5YYi26GE2NpNk1c7N+fBec1+ub4gYjdc4Dsg=; b=nbN5C7bJ0fOtUYAS9v4vDlqtWWG41XK8dxx8XS52iQLhhm53X5OHKU9xfG7pHK9mqrOU+Scy8CHGk9QDrm7S+rZ7k79GDRKT8p/FAzSoOcmNXlFA7HnaJHHZWqttDZT9EuwZ6j8zt//STy9Rl26nRVJGzCAfDlHQm5Db8olHrc4= 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 TYWPR01MB10917.jpnprd01.prod.outlook.com (2603:1096:400:38f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.18; Wed, 22 Feb 2023 10:30:06 +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.6111.021; Wed, 22 Feb 2023 10:30:05 +0000 From: Nobuhiro MIKI To: dev@openvswitch.org Date: Wed, 22 Feb 2023 19:29:48 +0900 Message-Id: <20230222102952.55787-2-nmiki@yahoo-corp.jp> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230222102952.55787-1-nmiki@yahoo-corp.jp> References: <20230222102952.55787-1-nmiki@yahoo-corp.jp> X-ClientProxiedBy: TYCP286CA0079.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b3::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_|TYWPR01MB10917:EE_ X-MS-Office365-Filtering-Correlation-Id: 9a89c881-5683-408a-a7e4-08db14bfc3b7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3KpMpTy7bIDyUqNIjaS42EM6SA6e19CJBqCA3/txEkVJU7tnUFxheLynev35WM5X+mRzhM5cNLjFusGfgzQfk2DVSTtZoq0iGydQvBCSpzgt+0VgOFXVpSW98wl+SyU8cR1Q3tzp4PmHPVO7niUCDlv76/z1WgbebKqqY0T0pq6IlsRQLZ5pGNwQ+MR8zRHy47PiNzzSY0VSn+almDQTi410lf0w9OYZxVNm/0siMfK6rtYAJWQ2L0Uc+6owWrajDEMRhpHk8I/54xp/dy9vdP8ThAvu32axfShhAIBXi9a1ruCqlyuGWbP/Dn0BrLkDlbVKoNtIdii0eZq4ZoHQPSV6Yd7bmtzqNhZM9IzlXFqBW6K1YUUx0gdDDJJ0nYfCW6Dm04NzZgugWCsQiC4MB5+clUMxMGMhUwZej18Vw0rIoT4KsCkYCzaBXXTldPIu4cTrs+cQNQ4cl80LVHW7s5KCMhAd9tudyXbe323H0BwjzrbdR4hwqkYORqZ+II+yljC327+XPKHoJBaTdMEC9tuPCDEOsCsqByenZzp6oICDcb86ZIUk23bdN6SkF7VUTCxX2XurEMauyUSsjWn96Ui+KqC9hT95G1Bt7lvwSRc6k+5ujNXpgo9UmePZGhIQDRk3SbO4p+zw1uNiBb0ivE8QpMXjPclYMUg3FRXV0pA/6pHFAaCFGsbaasq/ABf/Wv0c5X3OFZUzRRdKKyqstQ== 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)(376002)(366004)(39860400002)(396003)(136003)(346002)(451199018)(186003)(26005)(6486002)(66476007)(6916009)(4326008)(66556008)(66946007)(8676002)(5660300002)(36756003)(83380400001)(8936002)(52116002)(6666004)(2616005)(6512007)(1076003)(6506007)(478600001)(41300700001)(54906003)(316002)(86362001)(38350700002)(38100700002)(82960400001)(2906002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: AbCpd6WHZA96FwLesYpyF8YMcE6doM9/Cfu6hTDYecyj5lCZclhRL54199I4+Y973eOz/4rhlSLfjxA4Vj7KmxCcJuoiyugFxH0F+4NIDJcsuXs9RqxugK9m3LZIoMKbZPR6PNi/sl/mBZp+B7bcwNH78JDEvRPt+zVoqNw74tWlYNuokYN+hzduE7H9zz3gC+kgbLOMu2aToFguA/LFKzGvXBaRkjkcs9wNX7d7GMc9/VZGlp5sXT4NNaUf+2dCRrYbXleYGs86H1bPIszBbNNjTnl/7IUCpsTdcSLAUBhalUR6FOhKo6wZ/FVbJgHTv5h454Ss+frIk1LE3IDw/2lLqSgYrgTtgzYRiUZRGmlYfcc6btZY+R/EU+X3QMF3V08g2llX13qdvntwzxt3Z0aII+vuzbfHuGv7eY0lvmap5PQEhWEVSz2xzhnOLWbKc1s98lMCtqK85uz+GGDmgOCSHRbe/CI/qBPy1x3o3FcK7G5HWYpu+7++yYA7I35HLDBNhentW6JRMdx9Hofp2Dd7fQlVVNQlpihxvVcBiw4PppiAB3kTSZvjfcihZeQajhkbcPSzA5/iJsiUMTQX29hojfkjQo1yUgJyROd+peZKWWEZ1VK6dXmJ9tDmzepG9jX6e9dQoBkPXcMF4mk58F4iPwv8L/iDKTslm4oU2xbvtgFSqxlfMlOROwI/Sg8kCvDGZWmbkNRWuiO4p9I8bT9dr9DDLl73N4bInvYgfpv5la6uJs98HLWzNvPmOdpcMfJbc0lmvOyObLk23ysxXEvhK8gP9IDXezdGn0qNNqLs3wl9EDfbYJZGHvq+qEXwEBzaTR0doylK6kxdpzTnuBQagpit1v10YwztzNDzSrb4xyc21NORSSfoUZMtzQKHYI9BJJNWN167R7BAg7USu7LGlvKiaw/ylYYMUviyUYJi4o4ylsw7l0h8MyP/TMBesg2P7YQYzsbiBsz+ouG705B63LIXstBIBfJT4rEUDlsb2uuRXtln6Hgcp4Iaeg1gHxjMKS+JRY6PL7plaZcXxySiEXCiAUHAmjw/8HSA7cPzqNqEawbdCHTUdRWqm7MWxouSxhxAGdOtxR3ejRXNqudw1QiNPnkv4x/rkbXpiZdgM+OIfnxDax5+Vh4J6kchNmQkJOuasZekHyJk9zqfEOPy6+xeLwawJouEh/SGHf5fVVw1dsS7qE//zvSHMm39++Vo/RX9W2mFHTL27WuGTuAdZJAdruOtTBshPzpsuhYfCC3C2AvpTG2pqMJkLRGMkCDo3aaL4eRqVK/MuaYywrLxbEKnFllnQUPnEWKbu886vkFEdMNUO0A4FmF7KNj51d7yp3wX/b4B275hvD7TvRaX28QUavmqKucAhYolQUCI5T2cO6yRLJ6+n273/XBi8ffOckDsEN//wFaK++oK2zZPDOov4SGA52HAh/Nhpt3VQXxUcTYI3i179LzlbhnyD0nxWLthXKqi4WE3E5kC67+WC6t8EfX7jb69Azy6NKSZAOBENn/o0LIs9Y6nT945UGo6DXDleonKo9TDwg9m8psqyZbGtn/ywR4XCpV+9wK/0NMLanmLSx+uNGLIAaqS X-OriginatorOrg: yahoo-corp.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 9a89c881-5683-408a-a7e4-08db14bfc3b7 X-MS-Exchange-CrossTenant-AuthSource: TY2PR01MB4107.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2023 10:30:05.9365 (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: mR6CqSf8GEgdcQ3aQNuEIpuniLUPWm+mn1Vbo8B980GODZgSgxuTLxUcFzqpX7ke5FcvfZkAuWLihNz/j24EKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB10917 Cc: Simon Horman Subject: [ovs-dev] [PATCH v5 1/5] netdev-dummy: Support multiple IP addresses. 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" This is useful in test cases where multiple IPv4/IPv6 addresses are assigned together. Reviewed-by: Simon Horman Signed-off-by: Nobuhiro MIKI Acked-by: Eelco Chaudron --- lib/netdev-dummy.c | 67 +++++++++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c index 5d59c9c0312b..7d3d2aa23ba1 100644 --- a/lib/netdev-dummy.c +++ b/lib/netdev-dummy.c @@ -136,8 +136,7 @@ struct netdev_dummy { struct pcap_file *tx_pcap, *rxq_pcap OVS_GUARDED; - struct in_addr address, netmask; - struct in6_addr ipv6, ipv6_mask; + struct ovs_list addrs; struct ovs_list rxes OVS_GUARDED; /* List of child "netdev_rxq_dummy"s. */ struct hmap offloaded_flows OVS_GUARDED; @@ -161,6 +160,12 @@ struct netdev_rxq_dummy { struct seq *seq; /* Reports newly queued packets. */ }; +struct netdev_addr_dummy { + struct in6_addr address; + struct in6_addr netmask; + struct ovs_list node; /* In netdev_dummy's "addrs" list. */ +}; + static unixctl_cb_func netdev_dummy_set_admin_state; static int netdev_dummy_construct(struct netdev *); static void netdev_dummy_queue_packet(struct netdev_dummy *, @@ -169,6 +174,7 @@ static void netdev_dummy_queue_packet(struct netdev_dummy *, static void dummy_packet_stream_close(struct dummy_packet_stream *); static void pkt_list_delete(struct ovs_list *); +static void addr_list_delete(struct ovs_list *); static bool is_dummy_class(const struct netdev_class *class) @@ -720,6 +726,7 @@ netdev_dummy_construct(struct netdev *netdev_) dummy_packet_conn_init(&netdev->conn); ovs_list_init(&netdev->rxes); + ovs_list_init(&netdev->addrs); hmap_init(&netdev->offloaded_flows); ovs_mutex_unlock(&netdev->mutex); @@ -756,6 +763,7 @@ netdev_dummy_destruct(struct netdev *netdev_) free(off_flow); } hmap_destroy(&netdev->offloaded_flows); + addr_list_delete(&netdev->addrs); ovs_mutex_unlock(&netdev->mutex); ovs_mutex_destroy(&netdev->mutex); @@ -803,32 +811,26 @@ netdev_dummy_get_addr_list(const struct netdev *netdev_, struct in6_addr **paddr struct netdev_dummy *netdev = netdev_dummy_cast(netdev_); int cnt = 0, i = 0, err = 0; struct in6_addr *addr, *mask; + struct netdev_addr_dummy *addr_dummy; ovs_mutex_lock(&netdev->mutex); - if (netdev->address.s_addr != INADDR_ANY) { + LIST_FOR_EACH (addr_dummy, node, &netdev->addrs) { cnt++; } - if (ipv6_addr_is_set(&netdev->ipv6)) { - cnt++; - } if (!cnt) { err = EADDRNOTAVAIL; goto out; } addr = xmalloc(sizeof *addr * cnt); mask = xmalloc(sizeof *mask * cnt); - if (netdev->address.s_addr != INADDR_ANY) { - in6_addr_set_mapped_ipv4(&addr[i], netdev->address.s_addr); - in6_addr_set_mapped_ipv4(&mask[i], netdev->netmask.s_addr); + + LIST_FOR_EACH (addr_dummy, node, &netdev->addrs) { + memcpy(&addr[i], &addr_dummy->address, sizeof *addr); + memcpy(&mask[i], &addr_dummy->netmask, sizeof *mask); i++; } - if (ipv6_addr_is_set(&netdev->ipv6)) { - memcpy(&addr[i], &netdev->ipv6, sizeof *addr); - memcpy(&mask[i], &netdev->ipv6_mask, sizeof *mask); - i++; - } if (paddr) { *paddr = addr; *pmask = mask; @@ -844,14 +846,16 @@ out: } static int -netdev_dummy_set_in4(struct netdev *netdev_, struct in_addr address, +netdev_dummy_add_in4(struct netdev *netdev_, struct in_addr address, struct in_addr netmask) { struct netdev_dummy *netdev = netdev_dummy_cast(netdev_); + struct netdev_addr_dummy *addr_dummy = xmalloc(sizeof *addr_dummy); ovs_mutex_lock(&netdev->mutex); - netdev->address = address; - netdev->netmask = netmask; + in6_addr_set_mapped_ipv4(&addr_dummy->address, address.s_addr); + in6_addr_set_mapped_ipv4(&addr_dummy->netmask, netmask.s_addr); + ovs_list_push_back(&netdev->addrs, &addr_dummy->node); netdev_change_seq_changed(netdev_); ovs_mutex_unlock(&netdev->mutex); @@ -859,14 +863,16 @@ netdev_dummy_set_in4(struct netdev *netdev_, struct in_addr address, } static int -netdev_dummy_set_in6(struct netdev *netdev_, struct in6_addr *in6, +netdev_dummy_add_in6(struct netdev *netdev_, struct in6_addr *in6, struct in6_addr *mask) { struct netdev_dummy *netdev = netdev_dummy_cast(netdev_); + struct netdev_addr_dummy *addr_dummy = xmalloc(sizeof *addr_dummy); ovs_mutex_lock(&netdev->mutex); - netdev->ipv6 = *in6; - netdev->ipv6_mask = *mask; + addr_dummy->address = *in6; + addr_dummy->netmask = *mask; + ovs_list_push_back(&netdev->addrs, &addr_dummy->node); netdev_change_seq_changed(netdev_); ovs_mutex_unlock(&netdev->mutex); @@ -1178,7 +1184,10 @@ netdev_dummy_send(struct netdev *netdev, int qid, dummy_packet_conn_send(&dev->conn, buffer, size); /* Reply to ARP requests for 'dev''s assigned IP address. */ - if (dev->address.s_addr) { + struct netdev_addr_dummy *addr_dummy; + LIST_FOR_EACH (addr_dummy, node, &dev->addrs) { + ovs_be32 address = in6_addr_get_mapped_ipv4(&addr_dummy->address); + struct dp_packet dp; struct flow flow; @@ -1186,11 +1195,12 @@ netdev_dummy_send(struct netdev *netdev, int qid, flow_extract(&dp, &flow); if (flow.dl_type == htons(ETH_TYPE_ARP) && flow.nw_proto == ARP_OP_REQUEST - && flow.nw_dst == dev->address.s_addr) { + && flow.nw_dst == address) { struct dp_packet *reply = dp_packet_new(0); compose_arp(reply, ARP_OP_REPLY, dev->hwaddr, flow.dl_src, false, flow.nw_dst, flow.nw_src); netdev_dummy_queue_packet(dev, reply, NULL, 0); + break; } } @@ -1677,6 +1687,15 @@ pkt_list_delete(struct ovs_list *l) } } +static void +addr_list_delete(struct ovs_list *l) { + struct netdev_addr_dummy *addr_dummy; + + LIST_FOR_EACH_POP (addr_dummy, node, l) { + free(addr_dummy); + } +} + static struct dp_packet * eth_from_packet(const char *s) { @@ -2009,7 +2028,7 @@ netdev_dummy_ip4addr(struct unixctl_conn *conn, int argc OVS_UNUSED, error = ip_parse_masked(argv[2], &ip.s_addr, &mask.s_addr); if (!error) { - netdev_dummy_set_in4(netdev, ip, mask); + netdev_dummy_add_in4(netdev, ip, mask); unixctl_command_reply(conn, "OK"); } else { unixctl_command_reply_error(conn, error); @@ -2038,7 +2057,7 @@ netdev_dummy_ip6addr(struct unixctl_conn *conn, int argc OVS_UNUSED, struct in6_addr mask; mask = ipv6_create_mask(plen); - netdev_dummy_set_in6(netdev, &ip6, &mask); + netdev_dummy_add_in6(netdev, &ip6, &mask); unixctl_command_reply(conn, "OK"); } else { unixctl_command_reply_error(conn, error); From patchwork Wed Feb 22 10:29:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nobuhiro MIKI X-Patchwork-Id: 1746165 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::133; helo=smtp2.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=default header.b=XMvS8kTT; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=YFCHkvwc; dkim-atps=neutral Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) (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 4PMC8z0yHHz23j7 for ; Wed, 22 Feb 2023 21:30:27 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 498164108D; Wed, 22 Feb 2023 10:30:23 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 498164108D Authentication-Results: smtp2.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=default header.b=XMvS8kTT; dkim=fail reason="signature verification failed" (1024-bit key) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=YFCHkvwc X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id iypxlSIbXvgw; Wed, 22 Feb 2023 10:30:21 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id C8836414F8; Wed, 22 Feb 2023 10:30:19 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org C8836414F8 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 6CFE2C0088; Wed, 22 Feb 2023 10:30:16 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 9B5F0C0077 for ; Wed, 22 Feb 2023 10:30:12 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 42B4241030 for ; Wed, 22 Feb 2023 10:30:12 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 42B4241030 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id t9bK9zq52S-w for ; Wed, 22 Feb 2023 10:30:11 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org E2AF54100E Received: from corp-ob10.yahoo-corp.jp (corp-ob10.yahoo-corp.jp [182.22.125.210]) by smtp2.osuosl.org (Postfix) with ESMTPS id E2AF54100E for ; Wed, 22 Feb 2023 10:30:10 +0000 (UTC) Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01lp2170.outbound.protection.outlook.com [104.47.23.170]) by corp-ob10.yahoo-corp.jp (Postfix) with ESMTPS id DDB1119FB186; Wed, 22 Feb 2023 19:30:07 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo-corp.jp; s=default; t=1677061807; bh=DemxFKl+tSBrpjDbHZltB3uvE9KokzqKqX47YgWJIKE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=XMvS8kTTuC4Xi/5599PkleFf58BqyG/Snq9NpQzCe5WvsKLNAYSpJSA+0RaHPsg9V 9SoD1Sf+g9rv1+XVyB6oDtLxMg1SNW1AUxEzmg6E9a0lOM4Xz2bDayghkaPwBZ+0Qv OCfnljH2q2mdDvEG4K2q2PMBzgRITCas6iAjZyn0= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EyO5P4xOmGPdl6PQ08bkZ+9LYMVhGay8NVnvQ3SgYwk1OKBNqD4zYYOPLTSn4zqFC2l4pYhLEBaZJluLz46nU0GlR2R4CREjSPyEtiMiBZOFZo6wRibUyEH56MPI5ntqoxwmzK5BiDUwuRQiEubNY+TL0WX+zWO7I9l6S2rFREeW3K8Su8fWDhQ0nu2cKpHMB17GjBCMkg+6XwCdQ+DVEwSh/JHgADNUf4+D8WbbuVoF6r86jzixjgidLaXdMiYZqZ9VWJhqvv3E9nH76qCnduJgv2FX09TMje1WQ8KG8AzuoQlhDIYozzXbOma2m1iqJEH9k48PySaD+ot8fvBrlQ== 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=DemxFKl+tSBrpjDbHZltB3uvE9KokzqKqX47YgWJIKE=; b=Wk93//3jK2KLC8vdjmhGwIZjm7W4QVdNY8nA3hrspoeOLhlppCIQv4Tc1R2rnhB43hxbvRDKAXkswayehowMcr4eIHIMyFM0W8RR3cvrSWCzVs//9VG9B8eWA1pFkaU05Uz8rxS83GgtGK7qtfL5X5n4eWs12ZUL1j60gb4BwyYRrWaA7x6VWxTlUcyuunwqzFnJlOiTe5XRoX9rba6iRSTQMJwH9bOmfc/FYQIWseDnnMbajNt0T2YZaoE4gdV13KlCLNyJaVF7UiVxFvw8TlG2ROC7wjHS0LhQjB5a4GyTsFezoWuw9Ml72d5/SlMM0sl1HYd0UPUyM/Ht2RfFOA== 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=yjcorp.onmicrosoft.com; s=selector1-yjcorp-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DemxFKl+tSBrpjDbHZltB3uvE9KokzqKqX47YgWJIKE=; b=YFCHkvwcKZMgZgST0gTOz9kU0ZqIJguvanDADyJ/RXPNs8+vTUSAf/rEolL476/Yf7XQlUUu7A5Zz9jQnp+Hdo4hF2KMXfCsP5h7UKgDMJGrTWryqW8aembTjKEtA7JuBVI07j5Bqw97Ee+GgEndv3IROtVS0fY1I9xUImAEjT4= 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 TYWPR01MB10917.jpnprd01.prod.outlook.com (2603:1096:400:38f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.18; Wed, 22 Feb 2023 10:30:06 +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.6111.021; Wed, 22 Feb 2023 10:30:06 +0000 From: Nobuhiro MIKI To: dev@openvswitch.org Date: Wed, 22 Feb 2023 19:29:49 +0900 Message-Id: <20230222102952.55787-3-nmiki@yahoo-corp.jp> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230222102952.55787-1-nmiki@yahoo-corp.jp> References: <20230222102952.55787-1-nmiki@yahoo-corp.jp> X-ClientProxiedBy: TYCP286CA0079.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b3::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_|TYWPR01MB10917:EE_ X-MS-Office365-Filtering-Correlation-Id: ce408e63-577d-4854-8f8c-08db14bfc401 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SyHUC/u1X7t8bm6HQINUwRderOdFLI67YCmcAZIduLIec7g+vwoW3t9mY2rs2gUVvzO4A/3Z0UlGANf0frwz5PfPeacBJRrNwjCO/F32SXjXuCXGlivBB20OZvP3JonXvc9nOnYf1tSWGTOPNssNhWmcqhlN8Td+bDdZvA09pnDUVojcba2WfR6QumNibxefdERSPpIP3t963RB7ZPfiiBlJQtxcva1KHTOxcnE1HrJG8Dvuc2iez1jZwWINbmu4NxKrgB9SKm2TLVKpS+Ug++Zu5k5usd7Rm+XQQNOpR4H9DvJlcJF9pCcfnOiN0eLCYRzBLocCVq+kR4phkpXXRQ8LhQdfOZCEvFpJuQZd+ecsSoXoYcQbQ6x0uUfF2gwHL3jpgildKmrYvHtttmRb4EMG7EAZR+09PZjLXkvyQpVr6lCCNETi2HT8T5JcnaTc83w0VwbpOV86J/mo2iR44TsKX5S4bewQji2ZiWoJuFvyJteYdKddsMKcuKiydjhRrNiswcdTs1qIysuv5+42tB87hIQ8UirJ23KdHboMHfMwDGYkZIQhShyhJ/jLH/70AxEU1wK5xnbbqS45nMtAXwq3SINL3unQeBfifivAGfnu+/IbTPIBkkynQDxKPJOVn10tgQmYPb8W/8gG19CZcQ== 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)(376002)(366004)(39860400002)(396003)(136003)(346002)(451199018)(186003)(26005)(6486002)(84970400001)(66476007)(6916009)(4326008)(66556008)(66946007)(8676002)(5660300002)(36756003)(83380400001)(8936002)(52116002)(6666004)(2616005)(6512007)(1076003)(6506007)(478600001)(66574015)(41300700001)(54906003)(316002)(86362001)(38350700002)(38100700002)(82960400001)(2906002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: I6qoYQm7lu6UQi3oZ0krpJFQYmXr9Csq1my1tDO37XICOjeGaoVxGGWeJecNgrxvPHK8Y18sS/V2mcaxe2m28r+3ClRj8nC07CohPbLFmdbNTZmDD59B/Y4515ANth1bjwwYeHPpmyA+swFM4tr5bnWGnDf0j5dPm4m9ZZ5IPu9KYn0bcjrfePJVDt0BPoXiWv4S/+Nfs8A12ATd0kyPC+heNI5LD5Lg3HasyaLSuQnws1p+mNKaUpEBWcEOVgpXKcngxG1ZamBVWUeZtRTpM4Kg7SCoSpdlpNIrH0Cqzk/TLexvcxon3517mHPLmX7Ss2HUcxZxCPPxjGu1ZqXgalr9hqGFxbz0GcIfCbtkouHtKByaM07cHeZlpERTp7VY7zjgj5SQtHmbx8GVFr9U4g/gFuqCStNQV3RwBYz3M1eDAOK7KpVjW6kAyzmiZWxM2tkXY0Y/4qidxL7veNyA6uy7EY/fz8MOkSwg6LSNfIiJQooSOI+oEKDiQBfASBhQ5rtQEwtdpxKfgqn4gry5D1pjsbtFzOHRtfW1ZJ077ma3ksBS370gkSuQoUArNPzUb25e7KyW0PoA7LANC6S+FAIrLY/h6X+qsUhneXeh6HETM8X2B7o0/LeHyqC6zO43edtSuUr+/zNir3yxRU4cVrXtLRlTOxNXD8UpwRZL6GSYWjiy5mmObovsVEy3BQYb4wqHADmNnZ1V/YP4bE+fY7kioj3OuD0qVL3cOPyd+0aZggxhtdNpaVhgVrYyR/Evq0gzuShpqrH7gMBcoWcYQMETC9XzracSTJVCpmKnilii5PzSTvapmC/LFH/YOgjJ33OdV87RHTXaQDdNjGLFip4ahHthc0ix7v1mkJgK06oRgdXeYsxlRyL58dg/7fcWJcCX4/mP2M7Iuz6cpKzS+fOIrr4PCCxNsMj1y0vN+KMFusofrToYXE+b86Ny89TE/rAxCHwtaKfp5FWrmGbjaoWu78eGscI2u2tkDI8HOD/g+k0jcDn60A5ERBBoDH76Rmv5GsG7RRD78odvoUMHFeLyfmcXXUQvbqPGgQQnKeYMOE7msD7XeD2AqqkrMGZ0vFv2A6slPZeTXi1boySLFHD4Njfq8F27DeWwctryDS09zw1KSuGqAbJbvdpmOhioOWm1bv0DCo6/adGgMAc52QiuUU0qSlMnpkZ8b5rHZxIgfF9htCZEy/1xU/2xwfN216VGEttaT2L5DjtHHyzpa85mK78xxIB4UCrwuA2hrUEp6LLyR7Mp2bYzJTlf4w/pJp0A0/t7dxe2sBIvkpJiKReCozX0P/R/RYm9/LitzX2vzOACQw3C9I6Zqo7RSSc7uZJMSp2FkxJf3jhA11P/Cwt7Qqwjo6kJzps5mWN6RC8xv0x09qTgraPC3t0JHVkHO0y7N7o5u/5cP6v/pjQCfAMC1jHzL/LgsbGEYI+P80zCkMgGRiAJ3ebwyj2Cqlsbpu1yO+9OY8wPm6O/p4zQ2nv5UKqHO4OS7vT8K/dPs8IkaoN7sGwIRX568G6m7XAv2FapkZDOr1JZkMqJymjlt1lw9uYHkhjU/8+Ws5DH2TBeh8+C8MSg0k1NGjpIk1GD X-OriginatorOrg: yahoo-corp.jp X-MS-Exchange-CrossTenant-Network-Message-Id: ce408e63-577d-4854-8f8c-08db14bfc401 X-MS-Exchange-CrossTenant-AuthSource: TY2PR01MB4107.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2023 10:30:06.5146 (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: gfYrR6FE4Ezr2U23QFb8K1JufK3PPOcy3LEElsi5+SEzgrcpiUu48+nNNw/3JsWCnSCVOG9rVWy+K2sQxsUCeA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB10917 Cc: Simon Horman Subject: [ovs-dev] [PATCH v5 2/5] ovs-router: Cleanup parser for ovs/route/add command. 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" This patch cleans up the parser to accept pkt_mark and gw in any order. pkt_mark and gw are normally expected to be specified exactly once. However, as with other tools, if specified multiple times, the last specification is used. Also, pkt_mark and gw have separate prefix strings so they can be parsed in any order. Reviewed-by: Simon Horman Signed-off-by: Nobuhiro MIKI Acked-by: Eelco Chaudron --- lib/ovs-router.c | 50 ++++++++++++++++++++++++--------------------- tests/ovs-router.at | 27 ++++++++++++++++++++---- 2 files changed, 50 insertions(+), 27 deletions(-) diff --git a/lib/ovs-router.c b/lib/ovs-router.c index 5d0fbd503e9e..6c5faf46ea15 100644 --- a/lib/ovs-router.c +++ b/lib/ovs-router.c @@ -345,41 +345,45 @@ ovs_router_add(struct unixctl_conn *conn, int argc, struct in6_addr ip6; uint32_t mark = 0; unsigned int plen; + ovs_be32 gw = 0; + bool is_ipv6; ovs_be32 ip; int err; + int i; if (scan_ipv4_route(argv[1], &ip, &plen)) { - ovs_be32 gw = 0; - - if (argc > 3) { - if (!ovs_scan(argv[3], "pkt_mark=%"SCNi32, &mark) && - !ip_parse(argv[3], &gw)) { - unixctl_command_reply_error(conn, "Invalid pkt_mark or gateway"); - return; - } - } in6_addr_set_mapped_ipv4(&ip6, ip); - if (gw) { - in6_addr_set_mapped_ipv4(&gw6, gw); - } plen += 96; + is_ipv6 = false; } else if (scan_ipv6_route(argv[1], &ip6, &plen)) { - if (argc > 3) { - if (!ovs_scan(argv[3], "pkt_mark=%"SCNi32, &mark) && - !ipv6_parse(argv[3], &gw6)) { - unixctl_command_reply_error(conn, "Invalid pkt_mark or IPv6 gateway"); - return; - } - } + is_ipv6 = true; } else { unixctl_command_reply_error(conn, "Invalid parameters"); return; } - if (argc > 4) { - if (!ovs_scan(argv[4], "pkt_mark=%"SCNi32, &mark)) { - unixctl_command_reply_error(conn, "Invalid pkt_mark"); - return; + + /* Parse optional parameters. */ + for (i = 3; i < argc; i++) { + if (ovs_scan(argv[i], "pkt_mark=%"SCNi32, &mark)) { + continue; } + + if (is_ipv6) { + if (ipv6_parse(argv[i], &gw6)) { + continue; + } + } else { + if (ip_parse(argv[i], &gw)) { + continue; + } + } + + unixctl_command_reply_error(conn, "Invalid parameters"); + return; + } + + if (gw) { + in6_addr_set_mapped_ipv4(&gw6, gw); } err = ovs_router_insert__(mark, plen + 32, false, &ip6, plen, argv[2], &gw6); diff --git a/tests/ovs-router.at b/tests/ovs-router.at index 6dacc2954bc6..96fb6e188eef 100644 --- a/tests/ovs-router.at +++ b/tests/ovs-router.at @@ -1,14 +1,33 @@ AT_BANNER([ovs-router]) -AT_SETUP([appctl - route/add with gateway]) +AT_SETUP([appctl - route/add with gateway and pkt_mark]) AT_KEYWORDS([ovs_router]) -OVS_VSWITCHD_START([add-port br0 p2 -- set Interface p2 type=gre \ - options:local_ip=2.2.2.2 options:remote_ip=1.1.1.1 \ - -- add-port br0 p1 -- set interface p1 type=dummy]) +OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=dummy]) AT_CHECK([ovs-appctl netdev-dummy/ip4addr br0 2.2.2.2/24], [0], [OK ]) +AT_CHECK([ovs-appctl ovs/route/add 2.2.2.3/32 br0 pkt_mark=1], [0], [OK +]) AT_CHECK([ovs-appctl ovs/route/add 1.1.1.0/24 br0 2.2.2.10], [0], [OK ]) +AT_CHECK([ovs-appctl ovs/route/add 1.1.2.0/24 br0 2.2.2.10 pkt_mark=2], [0], [OK +]) +AT_CHECK([ovs-appctl ovs/route/add 1.1.3.0/24 br0 pkt_mark=3], [2], [], [dnl +Error while inserting route. +ovs-appctl: ovs-vswitchd: server returned an error +]) +AT_CHECK([ovs-appctl ovs/route/add 1.1.foo.bar/24 br0 2.2.2.10], [2], [], [dnl +Invalid parameters +ovs-appctl: ovs-vswitchd: server returned an error +]) +AT_CHECK([ovs-appctl ovs/route/add 2.2.2.4/24 br0 pkt_mark=baz], [2], [], [dnl +Invalid parameters +ovs-appctl: ovs-vswitchd: server returned an error +]) +AT_CHECK([ovs-appctl ovs/route/show | grep User | sort], [0], [dnl +User: 1.1.1.0/24 dev br0 GW 2.2.2.10 SRC 2.2.2.2 +User: 1.1.2.0/24 MARK 2 dev br0 GW 2.2.2.10 SRC 2.2.2.2 +User: 2.2.2.3/32 MARK 1 dev br0 SRC 2.2.2.2 +]) OVS_VSWITCHD_STOP AT_CLEANUP From patchwork Wed Feb 22 10:29:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nobuhiro MIKI X-Patchwork-Id: 1746162 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=140.211.166.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=default header.b=epnVcH3M; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=I3Q4JhJe; dkim-atps=neutral Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.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 4PMC8q41yNz23j7 for ; Wed, 22 Feb 2023 21:30:19 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 6EF5741882; Wed, 22 Feb 2023 10:30:16 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 6EF5741882 Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=default header.b=epnVcH3M; dkim=fail reason="signature verification failed" (1024-bit key) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=I3Q4JhJe 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 3DRDy4sm6FNf; Wed, 22 Feb 2023 10:30:15 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id 3E6CF41849; Wed, 22 Feb 2023 10:30:14 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 3E6CF41849 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 06FC3C0033; Wed, 22 Feb 2023 10:30:14 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 5E23FC002B for ; Wed, 22 Feb 2023 10:30:12 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 345FF8187F for ; Wed, 22 Feb 2023 10:30:12 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 345FF8187F Authentication-Results: smtp1.osuosl.org; dkim=pass (1024-bit key) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=default header.b=epnVcH3M; dkim=pass (1024-bit key) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=I3Q4JhJe 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 aPIPmJLceWO0 for ; Wed, 22 Feb 2023 10:30:10 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 9619A818D0 Received: from corp-ob10.yahoo-corp.jp (corp-ob10.yahoo-corp.jp [182.22.125.210]) by smtp1.osuosl.org (Postfix) with ESMTPS id 9619A818D0 for ; Wed, 22 Feb 2023 10:30:10 +0000 (UTC) Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01lp2170.outbound.protection.outlook.com [104.47.23.170]) by corp-ob10.yahoo-corp.jp (Postfix) with ESMTPS id 01C5C19FB187 for ; Wed, 22 Feb 2023 19:30:08 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo-corp.jp; s=default; t=1677061808; bh=gEaY60nAgFq0RsRTwDiWggyxEQX1ZbSLEbMi30W2gnA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=epnVcH3M/mhXLKbX8IZqi2aWeu/1R5PbczSG+BotFjlFMgbOHq2rlDx5Zi+sYYYlP c7wNFIN8XDJSSyYihG/SLV8u11D3JBeBwfGOBhjaxT3dKseMnKm+dCBB/OPHMth8VX eKLwfWbBm8LrnAgfr9FAvhA5SoOw7Akxo9BjRqzc= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ixq6V/IxLZo7ofC+szI1zROzEguMH9Jid4ZNq6kUBGWFhYLbV97P1wPTAuYr5exiSwFLIeuU3lMZiv6iZGaUeH77BwDZKpacM/EtsHFl8dfQyqsxQTVclgz2zvKd982M7To3+yvKjBTp068if8xO8MzRF4MmNDSqvPNYIHMQhAMybdbOB6xonNTd8iQp3yvOTsm0kqTecWyzkEUoH3uJ/r4+ZDz/n9CW6CzkM3qJVBQJd18JvSUO4AtTU+0yNlPXPN8NC5GCtDMyQIeZZqIARz5LHw7dtuFrW75Rdy6vOYHg2YniCD4uMJMlU22inPIo27iIN0U0NxvSgRgM4WwqIQ== 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=gEaY60nAgFq0RsRTwDiWggyxEQX1ZbSLEbMi30W2gnA=; b=YfRK15JJEVPYpy7JX5aFignxVw/QuemNM7oEM+SJ0hOEelI71Kyddx/T6Bduwc/t0Pa7AJK0JN1BXGkZFhD3l0Mgr8N5Ae9byAF4ArRl9DJqML4b65U6HRSrXlTx01KIcHfivp4PrviRLIdqnARDlMzeYs4v0efXkCD4gk/CG17bgujxrrWjk8Dm8fmtkWRtj/rqdlD7lAEsRpPhVfPpoHoVeZN6gEoDPDhvklEQuHip2FZl6kpyORW4siRThPhH7Nn5OoMuZTIBTfFhWZleo5lonMVZDxik/kUaj+tlmRS0cz/8iPctbUyIldiQ3cs5cYx6W6xtYX3p7XObF7strw== 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=yjcorp.onmicrosoft.com; s=selector1-yjcorp-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gEaY60nAgFq0RsRTwDiWggyxEQX1ZbSLEbMi30W2gnA=; b=I3Q4JhJeEh4EUtdxWYqZjtlJdI2oeAIsL+Z4kT3Vd50KCbZmD/T/SgfEPnTCS9HUk/OYUIcDFH3kPZmYr/gse+48IlubHTVxo/hnXNnmcOKGnn6nnfuu3LEVCyuPhi+JbKB/9k4VMEQyvoxOYMTemM/DGIL4btFvZDUcNBEzdos= 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 TYWPR01MB10917.jpnprd01.prod.outlook.com (2603:1096:400:38f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.18; Wed, 22 Feb 2023 10:30:07 +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.6111.021; Wed, 22 Feb 2023 10:30:07 +0000 From: Nobuhiro MIKI To: dev@openvswitch.org Date: Wed, 22 Feb 2023 19:29:50 +0900 Message-Id: <20230222102952.55787-4-nmiki@yahoo-corp.jp> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230222102952.55787-1-nmiki@yahoo-corp.jp> References: <20230222102952.55787-1-nmiki@yahoo-corp.jp> X-ClientProxiedBy: TYCP286CA0079.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b3::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_|TYWPR01MB10917:EE_ X-MS-Office365-Filtering-Correlation-Id: c50cb228-005c-4510-3bda-08db14bfc450 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: APchBs6hnbmBkrP2umgvXGUjyxmqHlQglc6u5yXkCXBqOXoA9Zdbe6QSWPkNm3rQTAZznEtxUmMBtEb7ZXgJ4DL9OChRaim3kq3OSEVEENYK1Az0oeCn4kwe/8Aqk4N7EJs+tB+sOVr3L/WpSA67UN8jn5rXsHvJ7rxz9b2IPCnNWxfpE7RCJFR25qio817i3oTJgiPsC+tIZ2P878gskQN+EsdOxOHUlvxYw45uYRAWTnIA9ur3JWvFu6g+tZ0Z5t7bgRu3QNRimH4c3cSYIb6dV1zNzZV3+ffO+SELUAe56nZLBew1Aaiuph3Weg8rPsIXRc8aI638CvRS4fwvphivTZ+rzEB0Dz6QwndtjhW6tDtRuOt0I7R9ek/HZkH6i1BqMFrkQ44a04RTRcssWsoNw2fty20pJs17RNXL9QZMsHIaSmhf5sRG/bDJFGFrN3qEkqsFNy+0vXeQ00rTxK+UaPFCTt+/XOLUezZo6LacZCCAiXegi8gscoA6wO+QHlIqCKWaf9mKAURc5cfHdu2Fr/NM0yitDSpaVoGUA88bM4yDLo3QAQ6dl5+qc6QZP0+/OGOYPlsHLkXJtV3NP1CQ3W7llDmYzR3LRZ0UZ2xOAYkny7hwTxKOdzMMmMrfVVFjhH/9ebm14pHGdt32UDmgtqd90betzJ0pBeT9jMKs/kjiW5TMibb5NDxsavwxP5oq01dxLmW71AlaFuuiCQ== 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)(376002)(366004)(39860400002)(396003)(136003)(346002)(451199018)(186003)(26005)(6486002)(66476007)(6916009)(4326008)(66556008)(66946007)(8676002)(5660300002)(36756003)(83380400001)(8936002)(52116002)(6666004)(2616005)(6512007)(1076003)(107886003)(6506007)(478600001)(41300700001)(316002)(86362001)(38350700002)(38100700002)(82960400001)(2906002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3Q/5GssQYRf7int0Ylxt7Pb6S3ziR+RdgDWV5XD0JDaLudQH37TDTXmsbViFhjL6f+fWJ7hxO9Hy3YjkmjeVNpqZA5jXKXcW3MYe6Gf0EolXTDKqGpxMO/qVIGfGh1RZ03sdXzVTDPoCof5pb2K2Qz99f7SHYNERH5QjEx32sLJMtazPqO3NVv4PydTg3tYSW3i8vZTMIf320lWSHkTU1B3KglaqX445luqb9mmgAGVeqkKF6WYhOtUcsvgydhdOEq5OcNvjwClXZ5MRPM4WwC8b7KxAlfW0wGyD9zqfsAMJ0zZJh57sAZEASXULrQziToTCDusVxsveWdC+Zpn1OFrcpXEaO1JcAfmSA3ejYEwt3DRq0xfFCOLGh6LplsilrGINoqeftYWejysL/WAM8pE3B/yTMvbWIBMdeeTq+2Cox2eZitJnr8psVyc5sU4XK3SsZUWq13GlE7RqHa5C+M5xI/cv9iidh4nQqJUeM98hzPDrAFlFtkryxatx1queNnpckeBLn4JzS88E3dM33RjdAVlR8S9XS7b6pLfhG7NQJB/ZcLZObgv46iey8iCdjPZr2BrEhBTLlhLzMCbcFLJF9kLP7fDErrd6cTP3jD9FeR1u4nusQEufODHeVUlQ9JyQhINCGtlfUzmtWzlGf6/W9p6SRCjLX3A6x99V55RbmpepnvUZ6cc4GVZoL+BrSaxNMa3UTndX1S/+kzj66G0/5RVcvw3gfcEDOqA/S1olsiUkxDVwGYzud3UkaGVgtEGD2GfCwIFMu2ZF2dQ9U2A8SCLRRH9llWpmZOIAZ4S2fo72+ZWMpjpzmQelzZEQhEpw71pnXEvNoZw4As9sYlmY4dWH1bDuTxlC2vZPrD9HwfsjrU7X2+5eM61AGh3Fa6L5A9aRFGCPfxnPoAXwaUqOy1V533hDxyO987jBeSv83tZkOvOmjiN3eTQqC/yglxzr05o06V1/dfwmsObArjinA3gv++MANaJ4d8QKEY06Xw+sr6JbDy8lCxdnBQLFoAsB9Oi38uA2ibcr2gb7XRSL1kJ+2lXBXTE6gNl0+m/vb0Pw18M9spUBXyIQXj+vdOcWpVheIdhZt5QMDJ4wyrfsa82Z7xvC2w8BO+qaXKK/jBveI9CyXgI5I2NOIRgw4sogxsxgjqnArHFkjGiNQ5rMaxToxqS5vIBrNYfExX5fKhAW6hLx2cFyJU7NoQ1YlnJSnQY/8FIBiSM+6r/HMcdAwjKDDlVxjYsx3GAp6CMnecYx0ekaVvyvpEJdweJGDVKENFvTjS6Z2GNNcPYd3yes2hAhi5yMTjECP2Uj1rfjd+aUL68RrkuLyrzOPiqAxuCzdD1T69cWJk21jYZ270/38w9zaxFetnCbzU4M+VYFJNdb3jTC6vY8TrsHbkeHenNoVEMH9WUPuXIfOfsImt0Wcdd8AjHYf292lE5RhT+lhUt1/38PWUF5YB04YUvolinpW0kNGOq52/A+JJJ/ZX2QwB5wl6X5MfFd2z8y/NPyb+Mb+axtb7rbU0xS2Tr97Rq9sLVb5lG0sdXB60yRIPRWEVek1olAE41rQoS6gBJD7WJyMaSc7YCT2YCv+z6N X-OriginatorOrg: yahoo-corp.jp X-MS-Exchange-CrossTenant-Network-Message-Id: c50cb228-005c-4510-3bda-08db14bfc450 X-MS-Exchange-CrossTenant-AuthSource: TY2PR01MB4107.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2023 10:30:06.9833 (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: cCIXZGTocHXeatydG/9a1HWoT6JX1BkmYV93GV4+s2OcDUAZ+ULFV7W+qBOOrOvaifsNMTyzDrlDbtqq/Me4FA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB10917 Subject: [ovs-dev] [PATCH v5 3/5] ofproto: Fix mam page for tunnel related commands. 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" These commands already support both IPv4 and IPv6. Signed-off-by: Nobuhiro MIKI Reviewed-by: Simon Horman --- ofproto/ofproto-tnl-unixctl.man | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ofproto/ofproto-tnl-unixctl.man b/ofproto/ofproto-tnl-unixctl.man index 13a465119a90..0c0a392820fb 100644 --- a/ofproto/ofproto-tnl-unixctl.man +++ b/ofproto/ofproto-tnl-unixctl.man @@ -1,8 +1,8 @@ .SS "OPENVSWITCH TUNNELING COMMANDS" These commands query and modify OVS tunnel components. . -.IP "\fBovs/route/add ipv4_address/plen output_bridge [GW]\fR" -Adds ipv4_address/plen route to vswitchd routing table. output_bridge +.IP "\fBovs/route/add ip/plen output_bridge [GW]\fR" +Adds ip/plen route to vswitchd routing table. output_bridge needs to be OVS bridge name. This command is useful if OVS cached routes does not look right. . @@ -10,8 +10,8 @@ routes does not look right. Print all routes in OVS routing table, This includes routes cached from system routing table and user configured routes. . -.IP "\fBovs/route/del ipv4_address/plen\fR" -Delete ipv4_address/plen route from OVS routing table. +.IP "\fBovs/route/del ip/plen\fR" +Delete ip/plen route from OVS routing table. . .IP "\fBtnl/neigh/show\fR" .IP "\fBtnl/arp/show\fR" From patchwork Wed Feb 22 10:29:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Nobuhiro MIKI X-Patchwork-Id: 1746167 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::138; helo=smtp1.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=default header.b=hwnaTCqH; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=VYCuvOwa; dkim-atps=neutral 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 ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PMC925xhRz240n for ; Wed, 22 Feb 2023 21:30:30 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 5CB5081FD4; Wed, 22 Feb 2023 10:30:28 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 5CB5081FD4 Authentication-Results: smtp1.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=default header.b=hwnaTCqH; dkim=fail reason="signature verification failed" (1024-bit key) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=VYCuvOwa 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 O4XKdeSGG6fF; Wed, 22 Feb 2023 10:30:24 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id 79A5781B10; Wed, 22 Feb 2023 10:30:23 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 79A5781B10 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 2F602C008E; Wed, 22 Feb 2023 10:30:18 +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 37FACC0033 for ; Wed, 22 Feb 2023 10:30:13 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 11E17414CE for ; Wed, 22 Feb 2023 10:30:13 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 11E17414CE Authentication-Results: smtp4.osuosl.org; dkim=pass (1024-bit key) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=default header.b=hwnaTCqH; dkim=pass (1024-bit key) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=VYCuvOwa 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 G2dfdh1ICx0x for ; Wed, 22 Feb 2023 10:30:11 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org DDCA241849 Received: from corp-ob09.yahoo-corp.jp (corp-ob09.yahoo-corp.jp [182.22.125.216]) by smtp4.osuosl.org (Postfix) with ESMTPS id DDCA241849 for ; Wed, 22 Feb 2023 10:30:10 +0000 (UTC) Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01lp2177.outbound.protection.outlook.com [104.47.23.177]) by corp-ob09.yahoo-corp.jp (Postfix) with ESMTPS id DC13C19FB186 for ; Wed, 22 Feb 2023 19:30:08 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo-corp.jp; s=default; t=1677061808; bh=ygd/snomSyFf2YoMk39h88olGwkMYY8nhVpqomGe/9o=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=hwnaTCqHXQdfric7Qc7hLy62UpLzji5tsTf6tr2Mvj+YhL6ZSZcTZ51cNf9b157GJ vK0DeHrvr33V4uQpIbwATczPTUl1Hsyq7cVJQuRYk0+OlM1EDJ6j95a9kIFKIXQILG //OURudqkqcmhMCJyTIPRsHyOeW1WETdRaWed0uE= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ePYPAvdy8/CcHAgdcqm/wAJAwvJ9R1M0n+u3HLgr9iAMK7z9MsdBMXQxYXaeuEfb24f4h2WaePIl6MLC7UcZAEfn0TiEu3EVDB5KWYLRFzI+cKBsptVRHnoqdKGbkTB871EORQwil2E5HRw++qL8Np6v+tTAHvwdMB+AnLW0F72gDYfoB+EzJ8vvPhB+V0zJ9kaiI7n3FD8jZPWHfdWOH7NkCeccZPClPePVfgfVKRqMrP2vcUMdCUCvfugPxE08M8qt5xQ5UOJ5ur8My3xjtRgTnmjVqtUoTAPRJOhy+fFfrO5JlEJh+C4fDgBBXzbv7uza6XB4B9NqPvlGPQITCA== 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=ygd/snomSyFf2YoMk39h88olGwkMYY8nhVpqomGe/9o=; b=EH0mjRuEc2aC4qK7D6s0WFH+DpuJAS4seRigKznGYQoPq0oed2rX/ugp42nrwb3cHCPQnCMp8HSVtaHTwLNW41gfCfkl0ZWzEmfsmnh2m2/16t7iTFNyxN25ej2xdxgWAEdr0M5oGdcyPFLH6gQbURfclARRLk3iWnuT7g2z/WR7pgIthrZ++gImAYfkMBKkK8ND+BMXOGR8yTF7QTzoXnZ6/hvKBRGRvBMkO28z2GfcnWRQZidaNOmw9MLfrGomNtvQTLioiMskBNgZXIcOts45fmg4NWWKvgnjsmZxEcjEdobtrb0xMDNDfKNJm+GWjsoIBvlPXCImY0njOzWTlQ== 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=yjcorp.onmicrosoft.com; s=selector1-yjcorp-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ygd/snomSyFf2YoMk39h88olGwkMYY8nhVpqomGe/9o=; b=VYCuvOwacJbJXxD0F91TDAGDfiPekdYA9IeVykLMb+lhfmMkcKt8iFOuW/WLGLITfGUHW0IS8Gn20ihmoXuUmskylt07HRi3OdibOphcOyRNiswxBriskRdLv18USg4KxM8xAr4S+Ky38tdlK7HiLl9Nefdzp1ogFjkhd/qX4DQ= 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 TYWPR01MB10917.jpnprd01.prod.outlook.com (2603:1096:400:38f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.18; Wed, 22 Feb 2023 10:30:07 +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.6111.021; Wed, 22 Feb 2023 10:30:07 +0000 From: Nobuhiro MIKI To: dev@openvswitch.org Date: Wed, 22 Feb 2023 19:29:51 +0900 Message-Id: <20230222102952.55787-5-nmiki@yahoo-corp.jp> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230222102952.55787-1-nmiki@yahoo-corp.jp> References: <20230222102952.55787-1-nmiki@yahoo-corp.jp> X-ClientProxiedBy: TYCP286CA0079.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b3::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_|TYWPR01MB10917:EE_ X-MS-Office365-Filtering-Correlation-Id: dc7c3b1e-383f-445b-85ec-08db14bfc49c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7efI2uj6o+Htcq03N82GuqjSOcwr0Rvr9cyZQGaSks2whNFJn6Ze+5+RJ+Ex4k+USvSdCK4r81Am6n0O02Ol0zOa/Iag/WXyKOxt/uwhR8WRyRdia36cORWN+IW8f7463A9JZlfLM91uRLHICbxKMtVcqCFauG+vyFLNBuNll1hbon+r1Pyritg9ra4Lt8OmTfkZJXeJm2V2Fup069wXC461D/YY388YgmdP1F2oRGsxFm7qxPSyk6D/9B5Hl0vmtOrUWDa40AlfYMbBNKWBlqxMMRVaEemP4T5UxTN+p9TVwcYeCCnCkpVlXweoBaFfrPerqBQE7RwYujIJWYU4ByRh0z8zNPrtQbk4fUhjrty63kG+3nzAwX6vIhHhoJufYU1v5xoKseA4TLnjZDAfXPoLqbkF5DNBj+W9O2S1iPeQLy5MUH5uwTsaupK7c2kllQSDeZiJ/dc4/D1AQUB/5cRRM2D6BCXsrQ6wWwnfh6tm5ch3zwjIIXqwyOOcndbsbWLx9jpBP85RkdwgBujUQGMS1groDx6wGmcoj+6jzp39vxzpXttGpAoeoLkdmAm5q+ET1yHEajqSw9eAuN11PbjbwKyfRJCbLXDAXu1TpDgQ2BVIERH6CguVoWNxwopQI7QoXEc/CVl+bu/+NVYyUyK0R+usoaEnck3CoGxKZeCy0EDPYQUuULgpa3RwQxzsT7q5bBR2K0lp5R+jpuzlOA== 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)(376002)(366004)(39860400002)(396003)(136003)(346002)(451199018)(186003)(26005)(6486002)(66899018)(66476007)(6916009)(4326008)(66556008)(66946007)(8676002)(5660300002)(36756003)(83380400001)(8936002)(52116002)(6666004)(2616005)(6512007)(1076003)(107886003)(6506007)(478600001)(66574015)(41300700001)(316002)(86362001)(38350700002)(38100700002)(82960400001)(30864003)(2906002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?5C/Wxhx723Z06ERJ04+XzHJ2N+sN?= =?utf-8?q?2wpaXczrq8PI7xwHV3JHm5YXWQpsKnADDeIk5dMuJpQfxMGONLR/bzpg2o4FC++XW?= =?utf-8?q?F/aXe7J6XDjaCOc4L3aYVihC5DaZe/av0E+KjM8yOCGDILf0tGEZKhI8IcYF3k443?= =?utf-8?q?kdF2uUzQy5StncryDyHRzgaXGPGjHrEHHukjtobbR1Opjl7p9Ubert45JMteNRO7X?= =?utf-8?q?Ey1JyzrjYgMax4S4OuLIF2daDWheSvTH5h9SVFhBxD/1Vaf5Azu//5Q/fkGgOlXXV?= =?utf-8?q?XImuBahxRJlhrjJUoq5te2JMD5wpczrWs7FmCfJ6+IaONCL39x9AjXy4Rw6AgFgyC?= =?utf-8?q?iB4BIxcITbbvJiDDQmYK9uDvFnot68ISxP7AoG71oaF0vEPSUKri6GXKuSExzu3nS?= =?utf-8?q?GA8TgU0RjfG9SvbPB6ft+OYqqCmkEKNvqZmFKqDg0eaXYmZIeoSoW3xxISs0bhwea?= =?utf-8?q?K53ChUcN282Xsn9Ftstc6luf2IoqksWn7zKIcWEPLn0bkEJXIY21FKWwY3IiLaX9z?= =?utf-8?q?RUth2KCC4CgRP0pmTljlWk0LO21KzSYFDtp6El5admsXs3vr9nE7u5pMwymulr6/l?= =?utf-8?q?mqSuZIlldPyQUAH1Kz59MlzKwLHP5fM+iBkA8hf+tSXHiCoytmr9OlKBVzyAtPZtl?= =?utf-8?q?4i/9AzmGhDUIDL1bYkNcmzaBpL/Lt3TOQAMuWIyTfEiE3ZudA2ms3kPMH193vOmbC?= =?utf-8?q?MCGX/xD2Y7lhl0+QcZ0Q+Es3dTbWrKDicx5azugNjCm6BXNsHkwatAbStKomGqd6d?= =?utf-8?q?KPva+c3IctzU8GDxX1AFPPMRrhz77PvZkLoFicbKVggCoE7/A1O9VUXrPv7wXC6dl?= =?utf-8?q?t6MJaVxZoiX7itHwQSkAPQFw5ZJma+bRrEtheIXBxaI3V6tXPjYpKYg6mtsc3W3d3?= =?utf-8?q?dIfDjuZwDaGietkTms/ITRWN39OjspGdWXd2GggDR3vGupq0dBc7kCuh2YJen21sV?= =?utf-8?q?VubtinccX64rRRcV0f+ENmM9/3w+pkz4FPgprWNOFuoJZkexMwRdGhyskogAluvEu?= =?utf-8?q?NNRPp5QrGPTjhqGSnmUymCY+4snGC0hg9xhoBqyqvvv5TUZz4TDOGEexK2fKoDgB7?= =?utf-8?q?Vv5BgvpEl2ERsdk9DFpSaLdiBnDQOlRmzO3VVggW1bcqh87UjdK0fk2sCjSIxXofb?= =?utf-8?q?7IELJNy7Xu6ZjgzptE2eAcAoV442WMqdTG/vVP5d7ENwkcE4W+peDVsPdKznddsbi?= =?utf-8?q?UgQS9USnUYJ2GWyHe2dc9MXiaHgFBixuql/bDQFMeXWQwM48NgJMRnvzGGjb1TcY4?= =?utf-8?q?G33AdjrEbUbYvOADFBU8B5Za+K3Ju5RW6LolPpDKPy+MqVKTw5QP+B0KSVups1Oka?= =?utf-8?q?aue3+q74odb6NzwSsSnNzau8JnIcZTEGbDHfcYICs9sq9/UJpQZPwPRAlguBdTdK4?= =?utf-8?q?9GPtIIS0t1HsHCAL+ywD66Nz1k/cH3Gr85WT0cdlYjqqTjW9iUJa03waLCzo+Ux03?= =?utf-8?q?qRSiMsmgIPQkdXlipShgVGbrLraMHOYh6ynfk4VIY8POP9Dt0I1e4VOmR8TQwRlpL?= =?utf-8?q?ljxBFwB8Gq4x?= X-OriginatorOrg: yahoo-corp.jp X-MS-Exchange-CrossTenant-Network-Message-Id: dc7c3b1e-383f-445b-85ec-08db14bfc49c X-MS-Exchange-CrossTenant-AuthSource: TY2PR01MB4107.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2023 10:30:07.7176 (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: KmaxFje9aA1MHvTsHJ+hK0EZwvJB2+axYzb3zetXN2YTLk9ayh+Os2YjVGj6hhD+gDjaZAtkqVbx1JkBJRycJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB10917 Subject: [ovs-dev] [PATCH v5 4/5] ovs-router: Introduce src option in ovs/route/add command. 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" When adding a route with ovs/route/add command, the source address in "ovs_router_entry" structure is always the FIRST address that the interface has. See "ovs_router_get_netdev_source_address" function for more information. If an interface has multiple ipv4 and/or ipv6 addresses, there are use cases where the user wants to control the source address. This patch therefore addresses this issue by adding a src parameter. Note that same constraints also exist when caching routes from Kernel FIB with Netlink, but are not dealt with in this patch. Signed-off-by: Nobuhiro MIKI Reviewed-by: Simon Horman Acked-by: Eelco Chaudron --- NEWS | 3 ++ lib/ovs-router.c | 83 +++++++++++++++++++++++++++++---- ofproto/ofproto-tnl-unixctl.man | 5 +- tests/ovs-router.at | 78 +++++++++++++++++++++++++++++++ 4 files changed, 158 insertions(+), 11 deletions(-) diff --git a/NEWS b/NEWS index 85b34962145e..d062ca4fac1a 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,9 @@ Post-v3.1.0 in order to create OVSDB sockets with access mode of 0770. - QoS: * Added new configuration option 'jitter' for a linux-netem QoS type. + - ovs-appctl: + * Add support for selecting the source address with the + “ovs-appctl ovs/route/add" command. v3.1.0 - 16 Feb 2023 diff --git a/lib/ovs-router.c b/lib/ovs-router.c index 6c5faf46ea15..dca1a406cb44 100644 --- a/lib/ovs-router.c +++ b/lib/ovs-router.c @@ -164,6 +164,46 @@ static void rt_init_match(struct match *match, uint32_t mark, match->flow.pkt_mark = mark; } +static int +verify_prefsrc(const struct in6_addr *ip6_dst, + const char output_bridge[], + struct in6_addr *prefsrc) +{ + struct in6_addr *mask, *addr6; + struct netdev *dev; + int err, n_in6, i; + + err = netdev_open(output_bridge, NULL, &dev); + if (err) { + return err; + } + + err = netdev_get_addr_list(dev, &addr6, &mask, &n_in6); + if (err) { + goto out; + } + + for (i = 0; i < n_in6; i++) { + struct in6_addr a1, a2; + a1 = ipv6_addr_bitand(ip6_dst, &mask[i]); + a2 = ipv6_addr_bitand(prefsrc, &mask[i]); + + /* Check that the intarface has "prefsrc" and + * it is same broadcast domain with "ip6_dst". */ + if (IN6_ARE_ADDR_EQUAL(prefsrc, &addr6[i]) && + IN6_ARE_ADDR_EQUAL(&a1, &a2)) { + goto out; + } + } + err = ENOENT; + +out: + free(addr6); + free(mask); + netdev_close(dev); + return err; +} + int ovs_router_get_netdev_source_address(const struct in6_addr *ip6_dst, const char output_bridge[], @@ -217,8 +257,12 @@ static int ovs_router_insert__(uint32_t mark, uint8_t priority, bool local, const struct in6_addr *ip6_dst, uint8_t plen, const char output_bridge[], - const struct in6_addr *gw) + const struct in6_addr *gw, + const struct in6_addr *ip6_src) { + int (*f)(const struct in6_addr *ip6_dst, + const char output_bridge[], + struct in6_addr *prefsrc); const struct cls_rule *cr; struct ovs_router_entry *p; struct match match; @@ -236,11 +280,17 @@ ovs_router_insert__(uint32_t mark, uint8_t priority, bool local, p->plen = plen; p->local = local; p->priority = priority; - err = ovs_router_get_netdev_source_address(ip6_dst, output_bridge, - &p->src_addr); + + if (ipv6_addr_is_set(ip6_src)) { + p->src_addr = *ip6_src; + f = verify_prefsrc; + } else { + f = ovs_router_get_netdev_source_address; + } + + err = f(ip6_dst, output_bridge, &p->src_addr); if (err && ipv6_addr_is_set(gw)) { - err = ovs_router_get_netdev_source_address(gw, output_bridge, - &p->src_addr); + err = f(gw, output_bridge, &p->src_addr); } if (err) { struct ds ds = DS_EMPTY_INITIALIZER; @@ -274,7 +324,8 @@ ovs_router_insert(uint32_t mark, const struct in6_addr *ip_dst, uint8_t plen, { if (use_system_routing_table) { uint8_t priority = local ? plen + 64 : plen; - ovs_router_insert__(mark, priority, local, ip_dst, plen, output_bridge, gw); + ovs_router_insert__(mark, priority, local, ip_dst, plen, + output_bridge, gw, &in6addr_any); } } @@ -341,10 +392,13 @@ static void ovs_router_add(struct unixctl_conn *conn, int argc, const char *argv[], void *aux OVS_UNUSED) { + struct in6_addr src6 = in6addr_any; struct in6_addr gw6 = in6addr_any; + char src6_s[IPV6_SCAN_LEN + 1]; struct in6_addr ip6; uint32_t mark = 0; unsigned int plen; + ovs_be32 src = 0; ovs_be32 gw = 0; bool is_ipv6; ovs_be32 ip; @@ -369,10 +423,17 @@ ovs_router_add(struct unixctl_conn *conn, int argc, } if (is_ipv6) { + if (ovs_scan(argv[i], "src="IPV6_SCAN_FMT, src6_s) && + ipv6_parse(src6_s, &src6)) { + continue; + } if (ipv6_parse(argv[i], &gw6)) { continue; } } else { + if (ovs_scan(argv[i], "src="IP_SCAN_FMT, IP_SCAN_ARGS(&src))) { + continue; + } if (ip_parse(argv[i], &gw)) { continue; } @@ -385,8 +446,12 @@ ovs_router_add(struct unixctl_conn *conn, int argc, if (gw) { in6_addr_set_mapped_ipv4(&gw6, gw); } + if (src) { + in6_addr_set_mapped_ipv4(&src6, src); + } - err = ovs_router_insert__(mark, plen + 32, false, &ip6, plen, argv[2], &gw6); + err = ovs_router_insert__(mark, plen + 32, false, &ip6, plen, argv[2], + &gw6, &src6); if (err) { unixctl_command_reply_error(conn, "Error while inserting route."); } else { @@ -537,8 +602,8 @@ ovs_router_init(void) classifier_init(&cls, NULL); unixctl_command_register("ovs/route/add", "ip_addr/prefix_len out_br_name [gw] " - "[pkt_mark=mark]", - 2, 4, ovs_router_add, NULL); + "[pkt_mark=mark] [src=src_ip_addr]", + 2, 5, ovs_router_add, NULL); unixctl_command_register("ovs/route/show", "", 0, 0, ovs_router_show, NULL); unixctl_command_register("ovs/route/del", "ip_addr/prefix_len " diff --git a/ofproto/ofproto-tnl-unixctl.man b/ofproto/ofproto-tnl-unixctl.man index 0c0a392820fb..86f5e759a2d4 100644 --- a/ofproto/ofproto-tnl-unixctl.man +++ b/ofproto/ofproto-tnl-unixctl.man @@ -1,8 +1,9 @@ .SS "OPENVSWITCH TUNNELING COMMANDS" These commands query and modify OVS tunnel components. . -.IP "\fBovs/route/add ip/plen output_bridge [GW]\fR" -Adds ip/plen route to vswitchd routing table. output_bridge +.IP "\fBovs/route/add \fIip\fB/\fIplen\fB \fIoutput_bridge\fB \ +[\fIgateway\fB] [pkt_mark=\fImark\fB] [src=\fIsrc_ip\fB]\fR" +Adds \fIip\fR/\fIplen\fR route to vswitchd routing table. \fIoutput_bridge\fR needs to be OVS bridge name. This command is useful if OVS cached routes does not look right. . diff --git a/tests/ovs-router.at b/tests/ovs-router.at index 96fb6e188eef..a3083a67fb8d 100644 --- a/tests/ovs-router.at +++ b/tests/ovs-router.at @@ -31,6 +31,84 @@ User: 2.2.2.3/32 MARK 1 dev br0 SRC 2.2.2.2 OVS_VSWITCHD_STOP AT_CLEANUP +AT_SETUP([appctl - route/add with src - ipv4]) +AT_KEYWORDS([ovs_router]) +OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=dummy]) +AT_CHECK([ovs-appctl netdev-dummy/ip4addr br0 192.168.9.2/24], [0], [OK +]) +AT_CHECK([ovs-appctl netdev-dummy/ip4addr br0 192.168.9.3/24], [0], [OK +]) +AT_CHECK([ovs-appctl ovs/route/add 192.168.9.11/32 br0 src=192.168.9.3], [0], [OK +]) +AT_CHECK([ovs-appctl ovs/route/add 192.168.10.12/32 br0 192.168.9.1 src=192.168.9.3], [0], [OK +]) +AT_CHECK([ovs-appctl ovs/route/add 192.168.10.13/32 br0 192.168.9.1 pkt_mark=13 src=192.168.9.3], [0], [OK +]) +AT_CHECK([ovs-appctl ovs/route/add 192.168.10.14/32 br0 192.168.9.1 pkt_mark=14 src=192.168.9.2], [0], [OK +]) +AT_CHECK([ovs-appctl ovs/route/add 192.168.10.15/32 br0 192.168.9.1 src=foo.bar.9.200], [2], [], [dnl +Invalid parameters +ovs-appctl: ovs-vswitchd: server returned an error +]) +AT_CHECK([ovs-appctl ovs/route/add 192.168.10.16/32 br0 192.168.9.1 src=192.168.9.200], [2], [], [dnl +Error while inserting route. +ovs-appctl: ovs-vswitchd: server returned an error +]) +AT_CHECK([ovs-appctl ovs/route/add 192.168.10.17/32 br0 192.168.11.1 src=192.168.9.3], [2], [], [dnl +Error while inserting route. +ovs-appctl: ovs-vswitchd: server returned an error +]) +AT_CHECK([ovs-appctl ovs/route/add 192.168.10.18/32 br0 src=192.168.9.3], [2], [], [dnl +Error while inserting route. +ovs-appctl: ovs-vswitchd: server returned an error +]) +AT_CHECK([ovs-appctl ovs/route/show | grep User | grep 192.168.10 | sort], [0], [dnl +User: 192.168.10.12/32 dev br0 GW 192.168.9.1 SRC 192.168.9.3 +User: 192.168.10.13/32 MARK 13 dev br0 GW 192.168.9.1 SRC 192.168.9.3 +User: 192.168.10.14/32 MARK 14 dev br0 GW 192.168.9.1 SRC 192.168.9.2 +]) +OVS_VSWITCHD_STOP +AT_CLEANUP + +AT_SETUP([appctl - route/add with src - ipv6]) +AT_KEYWORDS([ovs_router]) +OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=dummy]) +AT_CHECK([ovs-appctl netdev-dummy/ip6addr br0 2001:db8:cafe::2/64], [0], [OK +]) +AT_CHECK([ovs-appctl netdev-dummy/ip6addr br0 2001:db8:cafe::3/64], [0], [OK +]) +AT_CHECK([ovs-appctl ovs/route/add 2001:db8:cafe::11/128 br0 src=2001:db8:cafe::3], [0], [OK +]) +AT_CHECK([ovs-appctl ovs/route/add 2001:db8:beef::12/128 br0 2001:db8:cafe::1 src=2001:db8:cafe::3], [0], [OK +]) +AT_CHECK([ovs-appctl ovs/route/add 2001:db8:beef::13/128 br0 2001:db8:cafe::1 pkt_mark=13 src=2001:db8:cafe::3], [0], [OK +]) +AT_CHECK([ovs-appctl ovs/route/add 2001:db8:beef::14/128 br0 2001:db8:cafe::1 pkt_mark=14 src=2001:db8:cafe::2], [0], [OK +]) +AT_CHECK([ovs-appctl ovs/route/add 2001:db8:beef::15/128 br0 2001:db8:cafe::1 src=foo:bar:2001:db8:cafe], [2], [], [dnl +Invalid parameters +ovs-appctl: ovs-vswitchd: server returned an error +]) +AT_CHECK([ovs-appctl ovs/route/add 2001:db8:beef::16/128 br0 2001:db8:cafe::1 src=2001:db8:cafe::200], [2], [], [dnl +Error while inserting route. +ovs-appctl: ovs-vswitchd: server returned an error +]) +AT_CHECK([ovs-appctl ovs/route/add 2001:db8:beef::17/128 br0 2001:db8:face::1 src=2001:db8:cafe::3], [2], [], [dnl +Error while inserting route. +ovs-appctl: ovs-vswitchd: server returned an error +]) +AT_CHECK([ovs-appctl ovs/route/add 2001:db8:beef::18/128 br0 src=2001:db8:cafe::3], [2], [], [dnl +Error while inserting route. +ovs-appctl: ovs-vswitchd: server returned an error +]) +AT_CHECK([ovs-appctl ovs/route/show | grep User | grep 2001:db8:beef | sort], [0], [dnl +User: 2001:db8:beef::12/128 dev br0 GW 2001:db8:cafe::1 SRC 2001:db8:cafe::3 +User: 2001:db8:beef::13/128 MARK 13 dev br0 GW 2001:db8:cafe::1 SRC 2001:db8:cafe::3 +User: 2001:db8:beef::14/128 MARK 14 dev br0 GW 2001:db8:cafe::1 SRC 2001:db8:cafe::2 +]) +OVS_VSWITCHD_STOP +AT_CLEANUP + AT_SETUP([appctl - route/lookup]) AT_KEYWORDS([ovs_router]) OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=dummy]) From patchwork Wed Feb 22 10:29:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nobuhiro MIKI X-Patchwork-Id: 1746166 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::133; helo=smtp2.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=default header.b=ugpwxN8s; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=MGZVpX6d; dkim-atps=neutral Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) (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 4PMC921RcFz23j7 for ; Wed, 22 Feb 2023 21:30:30 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id A4703415C3; Wed, 22 Feb 2023 10:30:26 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org A4703415C3 Authentication-Results: smtp2.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=default header.b=ugpwxN8s; dkim=fail reason="signature verification failed" (1024-bit key) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=MGZVpX6d X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id S8KjwmCHMokl; Wed, 22 Feb 2023 10:30:23 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id 8639841596; Wed, 22 Feb 2023 10:30:21 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 8639841596 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 88FE1C008A; Wed, 22 Feb 2023 10:30:17 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 32E4DC002B for ; Wed, 22 Feb 2023 10:30:13 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 174A860EAA for ; Wed, 22 Feb 2023 10:30:13 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 174A860EAA Authentication-Results: smtp3.osuosl.org; dkim=pass (1024-bit key) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=default header.b=ugpwxN8s; dkim=pass (1024-bit key) header.d=yjcorp.onmicrosoft.com header.i=@yjcorp.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-yjcorp-onmicrosoft-com header.b=MGZVpX6d X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fiOg7C23ODpp for ; Wed, 22 Feb 2023 10:30:11 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 96D8A60FAD Received: from corp-ob10.yahoo-corp.jp (corp-ob10.yahoo-corp.jp [182.22.125.210]) by smtp3.osuosl.org (Postfix) with ESMTPS id 96D8A60FAD for ; Wed, 22 Feb 2023 10:30:11 +0000 (UTC) Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01lp2175.outbound.protection.outlook.com [104.47.23.175]) by corp-ob10.yahoo-corp.jp (Postfix) with ESMTPS id D318A19FB188; Wed, 22 Feb 2023 19:30:09 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo-corp.jp; s=default; t=1677061809; bh=ELpeqb0pijBLmGihIwDbb8j5PvEzcNTik4p2QVH5rhI=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ugpwxN8sQPgzIxt4FxJUODZIt6oUYFmxahNFMy7ll5tbNW9+l0mTR+/stmgri3Bzv 7pwIjq4JULLQzTwBjmu5eMhJLc9Xn4o56O9n1E21BMmgTwRBk9MLjki/eeB73d2jqh tvmk2i8tOprT+ygmS66bjlzvGjGuwNfG1r7+b/vM= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iZ+V53EeAHDF6iUmfzzPnsIfFbrutXMunEV8wktflIA3mDQmQtk0nilE7L0zisK/OBBp64nO/w8WeksCdTtT1xJlSdNqPPPmVjf6BNR+U40+gV6QhQNrNBl5GaOcYo0hyqtZ69mzi9/1k8Ip+VaIepRa4jhfGqTM+3vFto5Q78ItYWOUSaNwIde786DPbQkcJ6HzFd4vEt/MnDNiuDzy5r0O8FKWsxXXsTwQYmVJGijgryK9jsc0fq6e63y/H15Jn6ADj92SBGriEk22en9My/9z8RjJf5S3v3+SXt3c9lvKgVtT8ZRtV3yLdAbMhoZmEWL5aul8dDCyv6fnO4XlkA== 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=ELpeqb0pijBLmGihIwDbb8j5PvEzcNTik4p2QVH5rhI=; b=byGbO1AT4cRzg33TYYubnmT/l5n4EsOBiYgzgnQgh5UudV5yrNxh8BSPtbcm98zRD9XCThjti6AGwOLtxGqUth2BaLPp5yQf9IKwpzlpHb6phGdpWnekpT/sCOKd6ooVvBFpNSY1XTcmVYnKaJvMEOlby7WgiB1/pBQRmFnNoxow6oohRtF+mI9TvX+VoBP7pwQjET4/DveFsGh/dTNCtCokqV5zfOVy15lVVUPslGgzNNESmx4LzCEOR3wRecdyuH0JNVem/c+QfXjOUWf/PxfgbKL/9SJk52ecPiJvevPrUUQoQ3y5XD0/515D/7e3g6EvDrfD0IqGIAvKKW0CQQ== 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=yjcorp.onmicrosoft.com; s=selector1-yjcorp-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ELpeqb0pijBLmGihIwDbb8j5PvEzcNTik4p2QVH5rhI=; b=MGZVpX6dcc8+SR1li9WfErJpyOKGZlPGJn42TAxYg9sSXHABdMrK4qikMRgyF16G6q37lFpdjAkjcQO7poKCkGRBxBDt7Sq4e+EHerObwsRnCGUr7QyfV4wrvFk3y/llGw6CPdLonz8Smy5X4jkxCqvDbcEjxk7kscdz0Bkhk08= 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 TYWPR01MB10917.jpnprd01.prod.outlook.com (2603:1096:400:38f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.18; Wed, 22 Feb 2023 10:30:08 +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.6111.021; Wed, 22 Feb 2023 10:30:08 +0000 From: Nobuhiro MIKI To: dev@openvswitch.org Date: Wed, 22 Feb 2023 19:29:52 +0900 Message-Id: <20230222102952.55787-6-nmiki@yahoo-corp.jp> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230222102952.55787-1-nmiki@yahoo-corp.jp> References: <20230222102952.55787-1-nmiki@yahoo-corp.jp> X-ClientProxiedBy: TYCP286CA0079.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b3::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_|TYWPR01MB10917:EE_ X-MS-Office365-Filtering-Correlation-Id: d4b54ea6-30c7-4352-7c20-08db14bfc537 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KUANFxUQ9F6EeSIithE1e5PPS8PsHvgLpUJcVsMu0LjyOTCy7wOWh7kfXM/VX1oBO0Iw5zYZCZMRp+8nxzVGuYJr/GrjWAtawhExoVtlqrkJIjEUMyBFIDZNX7xIGYKPm0qcDfgwTurAe65ah9vhITVWkf31wT8YVdNI6ywNh4c6O2QnDwvkYfiIKBiqkWwWQuYbZpCDf8Luua8SwhEL2nWEjEJ4ENWxh8ec7fB8CltgQv5CGHphZxzx1n4ypJx9FPhEfeuAmve4k6h56XKzDXv7120T8AGIrcNaYm0sP/MWzOfxB5wIX3nN/xfHhhNyNbrLFUgbqKMnVsMoYgMWHAfKbTvUo7+9MT5bj1eFtj2XXQAqZa9aBaAsmj69FJhpBKu33tZTea8k1c097ZBMMfTUJmdUUJiLqISIHp3BT7ER3gSQMAp0oqVN5X417aqiJvoc55LTtyPHJpu/TVWERH1zsgysesVaZL+VNAnto8uwKVGL3kYmGDmF2cDIi4lF+FngHwnCs28VGOOMCkLUn5GzPU0atevl6FtPNEtzgRtLLU7R7Oqen0UegoAGF7Ba750OeFWMaNTWIayIoFMm162pnKgAc+3tEFdbr/JLtM7eBX4TwISFuPugsq6NPlMZy9SKSNpx1NM6RVFNlNwXoX/rG7vbaXswMo0eZV7rAieZ6yzb4Fnpn8M/FHizeSIAn6heFdhMpmeJ03MYyaW2Nw== 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)(376002)(366004)(39860400002)(396003)(136003)(346002)(451199018)(186003)(26005)(6486002)(66476007)(6916009)(4326008)(66556008)(66946007)(8676002)(5660300002)(36756003)(83380400001)(8936002)(52116002)(6666004)(2616005)(6512007)(1076003)(6506007)(478600001)(66574015)(41300700001)(54906003)(316002)(86362001)(38350700002)(38100700002)(82960400001)(2906002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: K5ZXXmWkSxuRJbhptLs9Hv88IzGYSWtle5Fb0c75eh8l+2bxJY7ULkb4EiRyYI5hETeuAIwBO2NqLhEG06rzYh3DaCQstJqvH9Oa5xeSRrjyPU7DuDBsuRdkIzpB+1yk58XuWxegAmiYzJp4fVny3/cfpziuzM37sYJWY+r8KMeqzufqpElP4yg+EM3q+BAHB8NrFb3xoeDAUrvG0rQzkgGg6mY3yVs2E/3uJBkYidLQWTMJdh0AWORIYQ4qknqfiU5+ZgRIDG/osZaZhSBmKKnRrHnZ5W+IBqygNpMvj+mbNhiqvRDIV7PUaqIqcBhhNbhJsnTRrjn1AurPl7Y8tXGlmROSuRLdjz6kNYBoxLYmclDfMIPFbgt72SiWmrr0xTXXbEYPuxk+GZ9gHJEc+t4OqmnOtglH27PsnESgQ7M+cdxTMFYtvZjkLr0qJMKi4RVQr+qoRy15EsViqhP8q01P4rlXuWMS3lGEIAFyC+jtW/xSmV8afVW2+PLEis1t6mh6NJNve5DHVEnwfqoLdIz0SVI/VsIbD+tqDgGNbC83bDy1CWr45rHvRfwgRZ70Y5ASnND9mj+pid8lAAfA4vEy0Da7mC5qpnyJmX3GXOLxw3O0ddNq046asGdlpLH31ZLaKezQsjmOvJe2PBr5GewO9W8bQzMxEDgdvkPEaAP+owCskOGA9+lacvifB9TZorvn1IIZSMoOk8BrWj2u87dOFZCQU3LrFOJluUjZL5X6gMq1iO9TlZKVitYqPItRoOss6fKzkKgIbhZ3CXgvs2/FwJDtAy5OFGK6oqK6mgCWcFybAZr7zJIhy5R4MVKIdGzMmyBCSnrksOs7rT6ldUVLLMIPvM52vsmUS+eOw49okEwPGop8HnX9q9+hp86goRnLUwC2aqv1gqjI8/Dt+UbqCjZLo26jEC2wErh7zER60M5k3FWL9YHwJ/HyiPgAnv95h3g6Sso5t5CD3jF4YpSvJg+dy1KCKegAxgRzO1wELtkEmqYRiIGW8nGIiSY1dCaVix7e+5uDM2r5L8HrgQcWe6u0YdpWL8L/NcP3ciIaPJ8PLPcOPH9kZeirZ440kIP1T2ysvrYES6UN7xcJIGqvtxsuma3Op8lz7ytBP5NQERqxnxy347CvETU2y9Ggv19bT9RHWpTwlZh83XbifFDdGM6C52lKBOQ6KfpsDHgeALuJZNvgP6X1lohsPOtxjfoROnnZRIevK3ZUU/gR/iQVzyUk2Cbs30zP6PFm2Mo7GhayAKBf1cag+/NK1rdxCn1AgPwlwPxXfCbRmoU6NYXfwrUkcwnT4EOp9iPmSOpArF0ZJeZK1JphJJOmgosqzrGTAyKCEg5wZbM9Rx+uan52WOehsWj0sfR5kGIMnDWXRPpKHTvdY5zU6qNaCj+vktRMl0nRPjwBd2rm6xo2aYB8gE33k5oUs0+E8yZEihrKzw05IK8FCh91ElCE62zI9r5StnQxu6CNgg7sSEYsVlLOGRuvA0Rz0DJN4mAhjklzzdGMKiURUS1OD9N3oAQffrrX9/bzmvI+OdV9wRmDyEu159v/Nq+/pigJEnod8sP/+3GvERchDDYhmjIlgSeQ X-OriginatorOrg: yahoo-corp.jp X-MS-Exchange-CrossTenant-Network-Message-Id: d4b54ea6-30c7-4352-7c20-08db14bfc537 X-MS-Exchange-CrossTenant-AuthSource: TY2PR01MB4107.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2023 10:30:08.6707 (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: EgUUzClLCoc4R9+Alqt6vx+8+EpUgTtCFhveJOSPLfuKQTw6LqJ6rWF+rqeZVNrHF0TJmMK8AhZJb2OrJoSArA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB10917 Cc: Simon Horman Subject: [ovs-dev] [PATCH v5 5/5] route-table: Retrieving the preferred source address from Netlink. 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" We can use the "ip route add ... src ..." command to set the preferred source address for each entry in the kernel FIB. OVS has a mechanism to cache the FIB, but the preferred source address is ignored and calculated with its own logic. This patch resolves the difference between kernel FIB and OVS route table cache by retrieving the RTA_PREFSRC attribute of Netlink messages. Reviewed-by: Simon Horman Signed-off-by: Nobuhiro MIKI Acked-by: Eelco Chaudron --- lib/ovs-router.c | 6 +++--- lib/ovs-router.h | 3 ++- lib/route-table.c | 16 +++++++++++++++- tests/system-route.at | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 5 deletions(-) diff --git a/lib/ovs-router.c b/lib/ovs-router.c index dca1a406cb44..71e713068310 100644 --- a/lib/ovs-router.c +++ b/lib/ovs-router.c @@ -319,13 +319,13 @@ ovs_router_insert__(uint32_t mark, uint8_t priority, bool local, void ovs_router_insert(uint32_t mark, const struct in6_addr *ip_dst, uint8_t plen, - bool local, const char output_bridge[], - const struct in6_addr *gw) + bool local, const char output_bridge[], + const struct in6_addr *gw, const struct in6_addr *prefsrc) { if (use_system_routing_table) { uint8_t priority = local ? plen + 64 : plen; ovs_router_insert__(mark, priority, local, ip_dst, plen, - output_bridge, gw, &in6addr_any); + output_bridge, gw, prefsrc); } } diff --git a/lib/ovs-router.h b/lib/ovs-router.h index d8ce3c00ded5..eb4ff85d9e63 100644 --- a/lib/ovs-router.h +++ b/lib/ovs-router.h @@ -32,7 +32,8 @@ bool ovs_router_lookup(uint32_t mark, const struct in6_addr *ip_dst, void ovs_router_init(void); void ovs_router_insert(uint32_t mark, const struct in6_addr *ip_dst, uint8_t plen, bool local, - const char output_bridge[], const struct in6_addr *gw); + const char output_bridge[], const struct in6_addr *gw, + const struct in6_addr *prefsrc); void ovs_router_flush(void); void ovs_router_disable_system_routing_table(void); diff --git a/lib/route-table.c b/lib/route-table.c index ac82cf262f86..9927dcc1854b 100644 --- a/lib/route-table.c +++ b/lib/route-table.c @@ -51,6 +51,7 @@ struct route_data { /* Extracted from Netlink attributes. */ struct in6_addr rta_dst; /* 0 if missing. */ + struct in6_addr rta_prefsrc; /* 0 if missing. */ struct in6_addr rta_gw; char ifname[IFNAMSIZ]; /* Interface name. */ uint32_t mark; @@ -201,6 +202,7 @@ route_table_parse(struct ofpbuf *buf, struct route_table_msg *change) [RTA_OIF] = { .type = NL_A_U32, .optional = true }, [RTA_GATEWAY] = { .type = NL_A_U32, .optional = true }, [RTA_MARK] = { .type = NL_A_U32, .optional = true }, + [RTA_PREFSRC] = { .type = NL_A_U32, .optional = true }, }; static const struct nl_policy policy6[] = { @@ -208,6 +210,7 @@ route_table_parse(struct ofpbuf *buf, struct route_table_msg *change) [RTA_OIF] = { .type = NL_A_U32, .optional = true }, [RTA_MARK] = { .type = NL_A_U32, .optional = true }, [RTA_GATEWAY] = { .type = NL_A_IPV6, .optional = true }, + [RTA_PREFSRC] = { .type = NL_A_IPV6, .optional = true }, }; struct nlattr *attrs[ARRAY_SIZE(policy)]; @@ -274,6 +277,16 @@ route_table_parse(struct ofpbuf *buf, struct route_table_msg *change) } else if (ipv4) { in6_addr_set_mapped_ipv4(&change->rd.rta_dst, 0); } + if (attrs[RTA_PREFSRC]) { + if (ipv4) { + ovs_be32 prefsrc; + prefsrc = nl_attr_get_be32(attrs[RTA_PREFSRC]); + in6_addr_set_mapped_ipv4(&change->rd.rta_prefsrc, prefsrc); + } else { + change->rd.rta_prefsrc = + nl_attr_get_in6_addr(attrs[RTA_PREFSRC]); + } + } if (attrs[RTA_GATEWAY]) { if (ipv4) { ovs_be32 gw; @@ -309,7 +322,8 @@ route_table_handle_msg(const struct route_table_msg *change) const struct route_data *rd = &change->rd; ovs_router_insert(rd->mark, &rd->rta_dst, rd->rtm_dst_len, - rd->local, rd->ifname, &rd->rta_gw); + rd->local, rd->ifname, &rd->rta_gw, + &rd->rta_prefsrc); } } diff --git a/tests/system-route.at b/tests/system-route.at index 270956d13f6f..114aaebc77f3 100644 --- a/tests/system-route.at +++ b/tests/system-route.at @@ -25,3 +25,42 @@ OVS_WAIT_UNTIL([test `ovs-appctl ovs/route/show | grep -c 'p1-route'` -eq 0 ]) OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP + +AT_SETUP([ovs-route - add system route with src - ipv4]) +AT_KEYWORDS([route]) +OVS_TRAFFIC_VSWITCHD_START() +AT_CHECK([ip link set br0 up]) + +AT_CHECK([ip addr add 192.168.9.2/24 dev br0], [0], [stdout]) +AT_CHECK([ip addr add 192.168.9.3/24 dev br0], [0], [stdout]) + +AT_CHECK([ip route add 192.168.10.12/32 dev br0 via 192.168.9.1 src 192.168.9.2], [0], [stdout]) +AT_CHECK([ip route add 192.168.10.13/32 dev br0 via 192.168.9.1 src 192.168.9.3], [0], [stdout]) + +OVS_WAIT_UNTIL_EQUAL([ovs-appctl ovs/route/show | grep -E '192.168.10.1[[23]]/32' | sort], [dnl +Cached: 192.168.10.12/32 dev br0 GW 192.168.9.1 SRC 192.168.9.2 +Cached: 192.168.10.13/32 dev br0 GW 192.168.9.1 SRC 192.168.9.3]) + +OVS_TRAFFIC_VSWITCHD_STOP +AT_CLEANUP + +AT_SETUP([ovs-route - add system route with src - ipv6]) +AT_KEYWORDS([route]) +OVS_TRAFFIC_VSWITCHD_START() +AT_CHECK([ip link set br0 up]) + +AT_CHECK([ip -6 addr add fc00:db8:cafe::2/64 dev br0], [0], [stdout]) +AT_CHECK([ip -6 addr add fc00:db8:cafe::3/64 dev br0], [0], [stdout]) + +dnl If we try to add a route immediately after assigning ipv6 addresses, +dnl iproute2 would give us "Invalid source address" error, +dnl so wait a while to succeed. +OVS_WAIT_UNTIL([ip -6 route add fc00:db8:beef::12/128 via fc00:db8:cafe::1 dev br0 src fc00:db8:cafe::3]) +OVS_WAIT_UNTIL([ip -6 route add fc00:db8:beef::13/128 via fc00:db8:cafe::1 dev br0 src fc00:db8:cafe::2]) + +OVS_WAIT_UNTIL_EQUAL([ovs-appctl ovs/route/show | grep -E 'fc00:db8:beef::1[[23]]/128' | sort], [dnl +Cached: fc00:db8:beef::12/128 dev br0 GW fc00:db8:cafe::1 SRC fc00:db8:cafe::3 +Cached: fc00:db8:beef::13/128 dev br0 GW fc00:db8:cafe::1 SRC fc00:db8:cafe::2]) + +OVS_TRAFFIC_VSWITCHD_STOP +AT_CLEANUP