From patchwork Tue Jun 5 13:38:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 10448323 X-Patchwork-Delegate: idosch@idosch.org Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 5A7F7600CA for ; Tue, 5 Jun 2018 13:38:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4A46829020 for ; Tue, 5 Jun 2018 13:38:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3EEB329378; Tue, 5 Jun 2018 13:38:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, MAILING_LIST_MULTI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 5B12A29020 for ; Tue, 5 Jun 2018 13:38:27 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 410Xv54pk8zF1kV for ; Tue, 5 Jun 2018 23:38:25 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="kkm2lhCj"; dkim-atps=neutral X-Original-To: linux-mlxsw@lists.ozlabs.org Delivered-To: linux-mlxsw@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=mellanox.com (client-ip=40.107.5.73; helo=eur03-ve1-obe.outbound.protection.outlook.com; envelope-from=petrm@mellanox.com; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="kkm2lhCj"; dkim-atps=neutral Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50073.outbound.protection.outlook.com [40.107.5.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 410Xv04YlkzF1xh for ; Tue, 5 Jun 2018 23:38:20 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iTe+eUI07pOStUsdt8zQ9Tq7iVuJ5HPEpmyfjoybNRU=; b=kkm2lhCj0bkxHu2gWAJNRvLdm1/t43oLJ+Z57+DWesKcogHD3GIqtkmFJFqMfeCs8otnJpi1KaDNq1QXHoxsCZs2yXs3kXw2gGxgjfu/uEsorwAZojdS1so4K9IieWwFRlLfrIeXkoZITLJdQn6Xf+AIiNfDdHZpIKmbmJiJX6c= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=petrm@mellanox.com; Received: from t540p (78.45.160.211) by VI1PR05MB4190.eurprd05.prod.outlook.com (2603:10a6:803:4e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.820.11; Tue, 5 Jun 2018 13:38:12 +0000 From: Petr Machata To: Subject: [PATCH net-next mlxsw 6/6] selftests: forwarding: Test routed bridge interface In-Reply-To: References: Message-Id: <46d32eab34641e01423c16fda9421a9317db2804.1528204848.git.petrm@mellanox.com> Date: Tue, 05 Jun 2018 15:38:07 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) MIME-Version: 1.0 X-Originating-IP: [78.45.160.211] X-ClientProxiedBy: CWLP265CA0126.GBRP265.PROD.OUTLOOK.COM (2603:10a6:401:53::18) To VI1PR05MB4190.eurprd05.prod.outlook.com (2603:10a6:803:4e::16) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB4190; X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB4190; 3:X2JeO79EnY2Z4HnGa5bliWsAhJCXgEvBUcx6fDQaqwXiDKvThxpNZVtI9/7ZdElz5OLhO0KTaxzCFKKqRrOvA6aqI9zd9Jw/zp7zdlWM1qFsvPkMMYyZUpua42VxJLbQy7KIVA823uXwKimsrbCKvBAIO9BxlYlFa7LBANFXVj/A58cAvp4HFFfXMa78zGFBknhwqUXD0zSquOD0fj9nXjdoNUI5iCj9cZSZiJrtnbpbDW0Se6j4DkKYA45xfVyl; 25:j82jgaU6OWs7LWPfZ1bzZ3Z4w8pLxAtUHQF7/RLVSgV5+bNuTbwD3gqsfm4qLM1SCjH7/uTkYzwUewqr/8pjIvPIjtPY2pk/tTlejgwlG3zP/r0akX+7kcYIzuUj2tUF/sDuCS61BLtPFGfUN8LtOs1PmrqqwluhWw4Bpp1zGTpg5462W+wHpa2zX3lMKZUJnbpujbLgtULzvZbW1phDG6CHEtNgQDLKeF34MNU/07F/hSoTTVWDlxrTgkHU4MwbKuOnMrnCyiRB0xZEEwJZ57VlBbgbVNI0FO3CGaxQr7bkttItFJRQAsIYhkh2hUWi+/a2nTD+U6q1SHlYe8zioQ==; 31:Coh5eMEyUNUrvl/kc2XYXJ6pwxvLieWQkA4FZ3UyPCY/PWu6YAaRfcwnN02n+1RPRN/675fAf3amLxwrd7gnzRuiHvVM9glYtTvufkVukjoVxfVI13TwxKXF77RV/ZTFI5Xy5YenAmEs3JgNMzfttMTKRl7BM/adnG8GM/2f/8MNOEoPocvk0CIBRAndfvYelMtdkzNM2ttnWl0D8dhaq6G/6XCS6FkKQHDYYB+yTFg= X-MS-TrafficTypeDiagnostic: VI1PR05MB4190: X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB4190; 20:/QG5bmBgtCDKJ0/91vrT5V8PK5/MzMfHgdVU91R4QwbzCKAyZGqY9Ly0sJlDRf2AEROAivVMf0JKLR93FmeO7P6A8FIJRp0UEllhpxDcbqqRej9q0cIy9mEkud5+CdQwVPLzYU1lBgPol6aaVlB6v59RZDLRvODlkkUZel7uLzI+gXUe3HEAwsl07kD2cncl/vxmZYi6Vp5MZKq2KF0z78b1l6hT287qnGZRE8sGSD91oMlaeZY7RfaD62tyfHgO0M+hioI+/bfHhZPVxsTFt3TbJTQYxwyNq5qrQ/Ldw0Y/dXVzroQBFXJb8Mvn4MNMPaoH+WT3HQohB7mXKJflJ2X/Md+yD+/TmxxiqTbV4tz9LbvFJBHnR9w+EFMHej7QWov2SxR6CKoz4BMJwYUMzTq0OXCFwqd1pCQi9OEUDbbA6fwR8tlVKA8JjbcskOzgYrfLF6sboJNGqucdtdS2urFeSRC73IBIZDGbAWKy4oTjN+E9w9eK8SEFEhUU4Eu5; 4:JLc6es2rHWMg6yHPUDl1bU23GWVhrTUiIOFyZl5pNd46qiceJ4ps/BapCrXI5Wu5bUZ8iDG9UgOvn9I4SVTiuXw9mfCv25aDY53CrxGSQXFSxbOSWYDj/mFu4FWUtwvUnZItlE23ojHDR/b10kxZbFF0hRvVYaTf443BDPSsOchi/PA3jt225/++K1X37eVByNczocYgm50liIJZPJWdxpYAwQ2ysPKM2yvYQ+Y2rj6WMfzDowYe7xOTTi+ct9EhBnIEl63M/1DULN/YIIPFzw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:VI1PR05MB4190; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB4190; X-Forefront-PRVS: 0694C54398 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(346002)(39380400002)(396003)(376002)(199004)(189003)(37006003)(956004)(11346002)(26005)(106356001)(105586002)(2616005)(68736007)(478600001)(6116002)(97736004)(8936002)(52116002)(386003)(3846002)(6496006)(51416003)(76176011)(59450400001)(316002)(58126008)(476003)(446003)(2906002)(86362001)(16586007)(186003)(2351001)(16526019)(8676002)(81166006)(486006)(6666003)(6636002)(81156014)(6862004)(48376002)(5660300001)(36756003)(66066001)(47776003)(6486002)(53936002)(25786009)(118296001)(5890100001)(305945005)(50466002)(7736002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB4190; H:t540p; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR05MB4190; 23:9nu8/t738QXLMTD0ZlVNaIf+nD3B11QHmaUGvaeVC?= =?us-ascii?Q?Qvq+hKKNEs2PZTb4XKtrllL4pqbFOl8JDBLrbkBAAQ93LC3KvsHqGPTtaHYc?= =?us-ascii?Q?OBtTsXiBvn//sMXG7bGvTJtKZzcRmYGxekGPItyikFNOkh4l2K5uqyhgElzF?= =?us-ascii?Q?vrfIZXCp256OSFYA5QZM39uu5zL6hYBnvRbJPoFp6xPmbqAFZd+PqvVAJmpT?= =?us-ascii?Q?wjfA6KNQDW5Mpioyi1K8XS7xWxcwynh3xXvXWzYO5GcYqjQHIrKrWE1dd0PD?= =?us-ascii?Q?OnkytId4CZhxBA0Nz6SiKVNNiFlR+euLboynYUOlKZSup9UM9UfWNSe54jko?= =?us-ascii?Q?Ph6mCkBdkINHUcfiNNbS5k0TvN4zLYsz/N+2eQisv2isRSC9KCGwYVDTRynG?= =?us-ascii?Q?SuEeMxycoz77ZMxvuNHf+tsYWLeApn30Eb2CVwdyYT5zJtWjXGQbv4CmCRgD?= =?us-ascii?Q?nnZ9S2feLsIiMwkUSzENOdy8v5WdNPxz2Z//UfcbQg5L6gs0XN7+iNW6s1op?= =?us-ascii?Q?oeC8YgrnhgjHredt56PSak0IfvF15qeF/j66Gi8ow4hQtMlCAYWdSXTIVrmf?= =?us-ascii?Q?Tj7tvhlxatxnJWCOAbTRfj9R1PegjW7GLVpWJQvD/tlGV9nTk6fSRKIAli40?= =?us-ascii?Q?Tik34H/68w5ft4MR5Nh5BXBt79AMPeAfpieILmMfl50FCn0K/UJM/rGnygHV?= =?us-ascii?Q?WkGo1VOogo9H9ivr/A53+5DE8lJStZ5GA4xngPioKPsqsjvcki9z56A9V+SR?= =?us-ascii?Q?jsG3wAiZgbSlSh5SioWkh0u+73/2aP7BpfYzT3C72C2xNSIaxxdS/3mjZKHN?= =?us-ascii?Q?r5rPeiV1U5hkBAtBEFh1qP30siB34U4xtlzvQ0aAnUnLUGDyghNaB4CXHHnS?= =?us-ascii?Q?GG2n/ea2a3/Aoet7VJcyWwXTLfP76SZzI3YEk0JWKvtSw2aV0F3T3rmWQikT?= =?us-ascii?Q?AGGlukz0MpzeCZ0P25jbmehFy5hJB1g0jjiVREThLNoWgPsM1irqeK6i02wQ?= =?us-ascii?Q?vm6cZ9dDfli6l5AXwAi0IsT21S3uX1cAQniT3DkgjkTqKiz9CcM6+Y4QUUhN?= =?us-ascii?Q?VNjBZ5L7FtNfz00HA1ZipsjNC8Xnhwa/kIyPcpegtZWiwafmypLbTC0irEmx?= =?us-ascii?Q?f204pKt5jfBR2ms6ohl0gEzq8Fck1qEEsQJKti7fM/INppy7IDaxff2DTpHW?= =?us-ascii?Q?or2yJ0LpMXkUn25WYXOpTgZtYQ/SOelOCsXHuSmWt5Suwrlu1a5Dlhj5ducH?= =?us-ascii?Q?oWwI+bXf2WdPebUeCwAyKlBmsbHb+UpopM50sHb?= X-Microsoft-Antispam-Message-Info: GqDNVKlOF7oalRNHdAb3hZKThmy496F3dYj3Cvo13MSFTJi+PRaMLPQKL4hqsvf297CohjahRXdGle0VEsIilDAOndwW31GxRWjTzpR+fnBq9AgtYxFSwYH4WzLignI/cVTfPbYEOxZ/Detxm+y9uw2rqZgI3l4yJkLvMJFfRB4qgE0Jpfb4EmdT4DKHZouz X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB4190; 6:2Y2FBjWxuJbJdLb0GjnMQBuN1H69ZVfWSsy0NT1m2RI4xQITBu9suCju5x5+tv1+Y5lyczmAD86v3mHCCAuzi141XjyXaUixQPZmJv9dI1VM8/YWcyZ+CDQuZvTjoSLnSWl6Zqi9eEZnH+OSfJGf0brk5JlFbKT8LjaRYA4h8VSDJdaDNWfXSOF9sks4BL61aL5oKY6KVEWheh0F/IJ813aj+C+3CrYFkXOGuiiZV9MUPC4CUX18LZjjwFN8EyheGhrztDSxGGPRLpWs95YpxkhRjzLcewwRXQf6ECqcdWE3IGQ5dWHmt5WJJphxbLwc6o0/+Iymd3BuJIE6ym3dMW6cttij/rsB3LoP1D3a5CTTh+QuqZI03aJNQOxy8vW2f3SCi3gYRzV3maI07mGYdD+dkAga4AYXXsgly7ZJbiaK4UMl6gTwgXMouPNm1qpEo6K9g13xvZsmMPVhTMz4LQ==; 5:MwYIws8dn+Nak6obE0jTvGS38LsF7OtuccghpMiuCjXZTTKrGhvnC4wKSZgiB9JAK83mKiKLU4sY3/8TriYZ1pSRyEavlQo1XnMz5SUk0dtkuourSzoRW3Kgn9tAgmNZ2Zy38hKmsZ8tMzyKJJlSFFHrf9Z+nRtP5mGuBZMZe0M=; 24:PE7kXjD2J2PHqMJgZIJRsQQKNCSsClPHe9lIZQ9R80k/tVn/HriaZ7jaCp2wH/QE1NF8ybULb7DfhRL0cyC8J1WHaoN1wWWFrYd3icL1EmE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB4190; 7:tILJiRPw0w0TkYGutKedq5ZCRItbqkGvKgBCggl4h8Wm3O0gqcY/l5jjXX8w6h3uAk8seMN6wil/Enfdqlug5493yZExvd/NnZaOMHN4ljijSGDMOiGCtMy0LLUYgEsO/LWWjYceCTb6VtDiJmFYITGgiSYCz+CE69YqY1bTVwlN2Dj3FWyk1NQPQT/qmeYWrh09IteH/BCb5yh76EU/lsqLHG/qPquWIYKt1mEItAbwDUK6MXaigAiGT7/xepJM X-MS-Office365-Filtering-Correlation-Id: 6bb6f2b4-89b0-4cd6-67c4-08d5cae995a9 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2018 13:38:12.6922 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6bb6f2b4-89b0-4cd6-67c4-08d5cae995a9 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4190 X-BeenThere: linux-mlxsw@lists.ozlabs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: mlxsw driver development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-mlxsw-bounces+patchwork-linux-mlxsw=patchwork.kernel.org@lists.ozlabs.org X-Virus-Scanned: ClamAV using ClamSMTP Add test for cases where bridge itself acts as a router interface, with front panel port attached to the bridge in question. In the first test (router_bridge.sh), VLAN memberships are not configured in any way, and everything uses default PVID of 1. Thus traffic in $h1 and $h2 is untagged. This test ensures that the previous patches didn't break a currently working scenario. In the second test (router_bridge_vlan.sh), a VLAN 555 pvid untagged is added to the bridge CPU port, with that VLAN leaving the bridge tagged through its sole member port. The traffic is therefore expected to come out tagged at $h1. This tests the fix introduced in the previous patches. Signed-off-by: Petr Machata --- .../selftests/net/forwarding/router_bridge.sh | 113 +++++++++++++++++++ .../selftests/net/forwarding/router_bridge_vlan.sh | 119 +++++++++++++++++++++ 2 files changed, 232 insertions(+) create mode 100755 tools/testing/selftests/net/forwarding/router_bridge.sh create mode 100755 tools/testing/selftests/net/forwarding/router_bridge_vlan.sh diff --git a/tools/testing/selftests/net/forwarding/router_bridge.sh b/tools/testing/selftests/net/forwarding/router_bridge.sh new file mode 100755 index 0000000..ebc596a --- /dev/null +++ b/tools/testing/selftests/net/forwarding/router_bridge.sh @@ -0,0 +1,113 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +ALL_TESTS=" + ping_ipv4 + ping_ipv6 +" +NUM_NETIFS=4 +source lib.sh + +h1_create() +{ + simple_if_init $h1 192.0.2.1/28 2001:db8:1::1/64 + ip -4 route add 192.0.2.128/28 vrf v$h1 nexthop via 192.0.2.2 + ip -6 route add 2001:db8:2::/64 vrf v$h1 nexthop via 2001:db8:1::2 +} + +h1_destroy() +{ + ip -6 route del 2001:db8:2::/64 vrf v$h1 + ip -4 route del 192.0.2.128/28 vrf v$h1 + simple_if_fini $h1 192.0.2.1/28 2001:db8:1::1/64 +} + +h2_create() +{ + simple_if_init $h2 192.0.2.130/28 2001:db8:2::2/64 + ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.129 + ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::1 +} + +h2_destroy() +{ + ip -6 route del 2001:db8:1::/64 vrf v$h2 + ip -4 route del 192.0.2.0/28 vrf v$h2 + simple_if_fini $h2 192.0.2.130/28 2001:db8:2::2/64 +} + +router_create() +{ + ip link add name br1 type bridge vlan_filtering 1 + ip link set dev br1 up + + ip link set dev $swp1 master br1 + ip link set dev $swp1 up + __addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/64 + + ip link set dev $swp2 up + __addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/64 +} + +router_destroy() +{ + __addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/64 + ip link set dev $swp2 down + + __addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64 + ip link set dev $swp1 down + ip link set dev $swp1 nomaster + + ip link del dev br1 +} + +setup_prepare() +{ + h1=${NETIFS[p1]} + swp1=${NETIFS[p2]} + + swp2=${NETIFS[p3]} + h2=${NETIFS[p4]} + + vrf_prepare + + h1_create + h2_create + + router_create + + forwarding_enable +} + +cleanup() +{ + pre_cleanup + + forwarding_restore + + router_destroy + + h2_destroy + h1_destroy + + vrf_cleanup +} + +ping_ipv4() +{ + ping_test $h1 192.0.2.130 +} + +ping_ipv6() +{ + ping6_test $h1 2001:db8:2::2 +} + +trap cleanup EXIT + +setup_prepare +setup_wait + +tests_run + +exit $EXIT_STATUS diff --git a/tools/testing/selftests/net/forwarding/router_bridge_vlan.sh b/tools/testing/selftests/net/forwarding/router_bridge_vlan.sh new file mode 100755 index 0000000..b729bd0 --- /dev/null +++ b/tools/testing/selftests/net/forwarding/router_bridge_vlan.sh @@ -0,0 +1,119 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +ALL_TESTS=" + ping_ipv4 + ping_ipv6 +" +NUM_NETIFS=4 +source lib.sh + +h1_create() +{ + simple_if_init $h1 + vlan_create $h1 555 v$h1 192.0.2.1/28 2001:db8:1::1/64 + ip -4 route add 192.0.2.128/28 vrf v$h1 nexthop via 192.0.2.2 + ip -6 route add 2001:db8:2::/64 vrf v$h1 nexthop via 2001:db8:1::2 +} + +h1_destroy() +{ + ip -6 route del 2001:db8:2::/64 vrf v$h1 + ip -4 route del 192.0.2.128/28 vrf v$h1 + vlan_destroy $h1 555 + simple_if_fini $h1 +} + +h2_create() +{ + simple_if_init $h2 192.0.2.130/28 2001:db8:2::2/64 + ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.129 + ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::1 +} + +h2_destroy() +{ + ip -6 route del 2001:db8:1::/64 vrf v$h2 + ip -4 route del 192.0.2.0/28 vrf v$h2 + simple_if_fini $h2 192.0.2.130/28 +} + +router_create() +{ + ip link add name br1 type bridge vlan_filtering 1 + ip link set dev br1 up + + ip link set dev $swp1 master br1 + ip link set dev $swp1 up + + bridge vlan add dev br1 vid 555 self pvid untagged + bridge vlan add dev $swp1 vid 555 + + __addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/64 + + ip link set dev $swp2 up + __addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/64 +} + +router_destroy() +{ + __addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/64 + ip link set dev $swp2 down + + __addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64 + ip link set dev $swp1 down + ip link set dev $swp1 nomaster + + ip link del dev br1 +} + +setup_prepare() +{ + h1=${NETIFS[p1]} + swp1=${NETIFS[p2]} + + swp2=${NETIFS[p3]} + h2=${NETIFS[p4]} + + vrf_prepare + + h1_create + h2_create + + router_create + + forwarding_enable +} + +cleanup() +{ + pre_cleanup + + forwarding_restore + + router_destroy + + h2_destroy + h1_destroy + + vrf_cleanup +} + +ping_ipv4() +{ + ping_test $h1 192.0.2.130 +} + +ping_ipv6() +{ + ping6_test $h1 2001:db8:2::2 +} + +trap cleanup EXIT + +setup_prepare +setup_wait + +tests_run + +exit $EXIT_STATUS