From patchwork Sun Dec 31 16:15:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 854231 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="Y0YtFdfO"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3z8lp61rJMz9s84 for ; Mon, 1 Jan 2018 03:17:02 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751221AbdLaQQ6 (ORCPT ); Sun, 31 Dec 2017 11:16:58 -0500 Received: from mail-eopbgr30047.outbound.protection.outlook.com ([40.107.3.47]:24032 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751087AbdLaQQx (ORCPT ); Sun, 31 Dec 2017 11:16:53 -0500 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; bh=n0iSCbPRxWDh5QUrwirkHg7xDZ14hH6pGdTvvIPUxWo=; b=Y0YtFdfOKsYHkqewOPKbJGy0PG4IfAQstJ7pPMgiUOp99rB5lchxIkoI7Vy2VlWZak2MQsopZHTUEsw8DqMSFRBPp6Y/bXPeMYIL5vDIzwOX+8u485jTn8LOfdNrjQgqHTF9zcTwajI8QzE1+fiMyu37HLBXQOwe0vJLAg4E9lA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (193.47.165.251) by AM5PR0501MB2001.eurprd05.prod.outlook.com (2603:10a6:203:1a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.366.8; Sun, 31 Dec 2017 16:16:39 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, mlxsw@mellanox.com, Ido Schimmel Subject: [RFC PATCH net-next 17/19] selftests: fib_tests: Add test cases for IPv4/IPv6 FIB Date: Sun, 31 Dec 2017 18:15:11 +0200 Message-Id: <20171231161513.25785-18-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171231161513.25785-1-idosch@mellanox.com> References: <20171231161513.25785-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [193.47.165.251] X-ClientProxiedBy: AM5PR0502CA0020.eurprd05.prod.outlook.com (2603:10a6:203:91::30) To AM5PR0501MB2001.eurprd05.prod.outlook.com (2603:10a6:203:1a::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 386e7ff9-2c12-4bbe-fb27-08d55069e060 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(48565401081)(2017052603307)(7153060); SRVR:AM5PR0501MB2001; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2001; 3:5OyfNeFbv0cJpl9oZ7MGnMdLDXhvAqI8nhGtJI+E9xgtJoK7C+Vro3Txe85B02O3hx0AdwBgViCPlHwFygESlhd1gP57cznUCkhl89QVKK53teLXUYFBk+nCY3GmAJbtSLj8CTJ4LVqEU9xssTLv3Vjf1HmD2Xqi/lU6wi7IfgLCL/LzMs/4sevAoTLx2ZxRLqwioUFSwB3wa5wvMvuCSVpQPVjqtSjg3lNhMILrrIHZADsJbXhy9dcWVKCm92ta; 25:Y/nNkiTE1ovksDjGd2bnNDaQfSEgIePb0mWL2l8oOVLDeWXUWxWZLx9EL/YTMGJLu27EiXMemwH1DSyZPpf4OoJq5H4muhovVzKfG+RnsIP6bgyIANYKi06uRhNzAEjjeP7LOVBSxFoDvR0XGONUsxzezABwKw4zgdRLolYZKXRSXoL31GPnIXPj0phZLGzwOjjDaPO5TfjTB1CaSMFUPGHJQM8ovkWRP7jH1l9vFI2SHeiif5nDEl23QQsayoQvji9pg4RgyYovbNvnC3H7KY8vEL/k5I5rEFdlK17YlTZKmm+6QTOzLzB3IS4wxAWM7FaarbsUdlBCzx+bVMJTFg==; 31:bBcNY8QdehjM9ibx/1NkplqYjV5MN8UTodHgnaz8zfP9WjLAFBAJozY0jWqDSwNeZyJzNem/a9UGqZEwK8HzpEesiC2Z+3XyQEbVZUID2WpLKCH7hp2l1MHd4aYBIlkf1ZbuP/4isIHn6tsOt9taOXHtqM3R2TveafAUZMQuDYsAQLrvLdsjAZSFuZobovGWfBMwiAhg1f/bJfU0DiWTmkDEScu0l5HSok+7DKJM7Qo= X-MS-TrafficTypeDiagnostic: AM5PR0501MB2001: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2001; 20:dnnXwdlZmR5eMS4K3lg0fPSt8sbCbDaIRNGatdqdO0cNmhtnQne9Q2gOSxLYVguECJVztrza9nh3YagkYGUrt1Fi9ZjZC567BdYD3x4XusXaVBtjVCuDWNdKdFayLPsDiwKvOgR0v2uGzB0UuuPGGuamhtdcaxFIsy1nc7yrzUPXxV+8oKakqeTWERgRcfI6n7BkgRhV0MQIFU+AkENnrCZ76tJ90if9Tm+qkWjgWaPxMVW/20edBCFQbctj9DM/olIXwnZz2RmtXuK2pNZbDhKYidwaYF2y/w806s2IcU2CGHlhGaxCTHSkngK87E6d+yzNaaqjS9+FGE/dDMvrKI7Xagruna9lxOB24QG6ekAG7j5I3NvlOwqDLPHP5cLLb2ljOUvxpWYid6tGFDwwVCBGLrpF6ZHxOelwCa4mJEtBW1VC6BweYWaZnmhvM5CuXhlkqaTemiAANi8hApGvGZdeNAXS9kJONtmofxO2bLQYnyZy3ZfFjnT/2Hjdlz4j; 4:0V1XUPJCcfZm2GiRnx47K4s4y1i8vU5ukeOlFCGfxDkYbPj0vCN2/pnmPG+UIw3l9pmvTppfk0rQkaiQ0jenjfO8ZacwBV3Bj/FVvg9bIqeBrJKhFfUvy9utjmT8fT2M7CpSOjRHixEevtBNwz3o1CskajDmHNNTbCvK3cu5yZFIHzyXokPIEKRXVb6HXaY5NT3dj+lvAmvlZ0u51ggoqfdCZpHsltEhU7fWSQbvHOiS88TTD7PgDFnfbHUs31IGRygGSPE8t1gRWDf5NXtudw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(3231023)(944501075)(6055026)(6041268)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(6072148)(201708071742011); SRVR:AM5PR0501MB2001; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:AM5PR0501MB2001; X-Forefront-PRVS: 0538A71254 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(366004)(346002)(396003)(39860400002)(376002)(199004)(189003)(106356001)(86362001)(305945005)(6512007)(6486002)(1076002)(316002)(81156014)(2906002)(6116002)(3846002)(16526018)(16586007)(8676002)(5660300001)(47776003)(66066001)(25786009)(6916009)(2361001)(39060400002)(68736007)(105586002)(6666003)(36756003)(51416003)(97736004)(48376002)(8936002)(4326008)(52116002)(2351001)(7736002)(53936002)(478600001)(386003)(107886003)(50226002)(50466002)(2950100002)(53416004)(81166006)(76176011)(6506007)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0501MB2001; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2001; 23:UpIYxR54D+g4TFZ4NpiERP5r7XS9/qg1DzxEAmvhwvb1binC821KDkCkveuCDvQKLVylue7QOliUDLbfvoSFBOWVohf5LDXa+PoGwrQ+3XsTCrYwZVYD4/Sls+Xa0+5RBxMJOHhkfqctOyEs+cMn1ueNPb7JFWsu9U02ESC3wWcPrWQrrEIJAxtKJ9czV/1qA8Q75YX64UkWmrcpmiznuvmk0NRzCxnbwUWY87WFC8yYBjfxSdrvbVRc8rNQpzPuYGD3Iz3F7f2OUqv/f7bW1U6pxOEg/vbvIKRGq/elvcAfkboMYfEGqvCjVAL2VO7ugvpMYzL2HYpovAy68dg+vHx/4K5iCd+yZS2FSTUkS4J5e/ur9AVi3XqinLokV12UIgozTWqjCJvqHEph4XPrMgN9x3VkV3TQGhLj2F0AeqjTgrUNa9MzMfv2YdEG/UP2MsZYgkFfWBVkjIhHDPzHj7xNB0E9lnvxYEjbLypLNCZLr0F0sbOfdLHFsqKC4kST+x6rVLcFJ6+kAllQmEV585y5a3l6GWF7B5H1ZpOZp9CsEgLdjBWnX5SXXrvRtHyNFUirl3OKWWmQ5dR+hVILfGRyzXVmZiHsQoRB7B3MiBjlVzn6zDxaywM2l9OCEo4OGIoDP6V5GkbDXWUHERsOpujuu9N0MgmMBm4rGKE0TxcI5cH9CHvFwe8kQCW5QPpe+dR5vw5GO1NY8jZaNi4DxqK9Nut1Ui8r7NGY39lkYbgYS1ej8rc60UZLFu6zYdT0Pvkq0fsyzhDp8CdYWN7skyF3CxAxgBT2eFn7EqxOUyd57cQTWS0UvWKckeLXTY9XldRH3e5Mi156nXamolby6RojHA7GkLVsrSKYI/5oqssrjH5qHeJ/LxPpaKS+xb2rCexVKQZcvRGdJSmTci4EZya5Rk8ZWWj+LEPVqx8jRPuFcRoY85lCqizoKrXQ86ng5Ua0m27r0VYtNtchlSrUXAFzzwvOJzYUsluz4ggWcjMVt9g5suFb+4OOPeDuy9l5bR0t3RQGnl5KnArjv9tcOP1C8Y4WFIdlc8PQp4zMFBVpD3FIiJYrCsIWUJU5uXS/Gliv8HkjGubfweR4tWtktgoxP7EP+alsS7C7sA+nzkiTiK6LcoabLyUrbHV81BMjj6ZDig6ZDv/qrN1zWmc43+xopcRgeqrnM+CO/2aRmGRZ/4Qpdyw2tnKUeYBEkEn4xUbnpiCmwJeLckiQNQRwXw== X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2001; 6:GHhXTeR0vRQtoCLqzCJssOl0p9VkkK8AJzHBPiq54imKC9ErjAPfHQ/4vzqFT4WTsTTGqI9zx6sdHBL7pSYmec/SYRDxHyQtHulhhRSpIf1Yngd8eaz7tFGY1YTFQNR0ofgWFZ0mFelZckIhxnLeVo2yGa28oeOEo6xPxEEMDAeD/bx+EAIRvs0ojVZXHM/6gB+pCcaEQbUbQ3NYfMj1pbYcygjzpjPBFa9D65giwpJ5W11gW4IC2snqcbn7UXhFrvR38lK87nym9z6JA9ErL0uUJCH1mu5nDno9lbc2P8MROvknOWc4j8luIJhGAcAvU4qWjIkU5nV6oynjicGy+LD7QTV2oh5U1Z9ADtILSH0=; 5:bsYq52EQBciMtrJO7I0dcHtHmWp5IVon24m68l56GmXkuLYXMbHXwxYv9n+wza5yLlSnfJdNRBPr4dtu8oItS4U1wZNq1FEF2Rien8HEs20dXT0xPsHVlWT7ZVcgFYy470+/w+rNGWg3cVPCwXgDfx46zO1iVm0cftD3eFZDo8w=; 24:9Xy7IXRcm+u6LAndJVW3FCp1e8eKpo95Ebj9cj9YzRU0vjnVoTVc7lKwLlz5rRa6olqPn/PWxoIMWzSNPkc5apmHP/k8hmL5XJsY+8Dz+QI=; 7:sxbPuPcnUzJkDcVsXzfuo6B6RtFMoHlVS4W9hBNN2SkLpaoXoDfpTu9JVGxQJnXp/q+nkpKwulUCexMjJYoh7Gwrzgo89HsukrFaoXlUuE/bY+G3O0B2d58fDmQs0h+OE+G1qgaX/deqb/SmQxgrKdwz1xcYcmpCecUjmjkTHKYuidUH/6E580WIgelkLtcDKwGjqU7D6Y00kLh98lmW71oZ1MYJthoVSI86guSQcuZJH2BS01M8ulOGfMVWXDGq SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Dec 2017 16:16:39.4970 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 386e7ff9-2c12-4bbe-fb27-08d55069e060 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0501MB2001 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add test cases to check that IPv4 and IPv6 react the same when a netdev is being unregistered. Signed-off-by: Ido Schimmel --- tools/testing/selftests/net/Makefile | 1 + tools/testing/selftests/net/fib_tests.sh | 145 +++++++++++++++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100755 tools/testing/selftests/net/fib_tests.sh diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile index 500c74db746c..d7c30d366935 100644 --- a/tools/testing/selftests/net/Makefile +++ b/tools/testing/selftests/net/Makefile @@ -5,6 +5,7 @@ CFLAGS = -Wall -Wl,--no-as-needed -O2 -g CFLAGS += -I../../../../usr/include/ TEST_PROGS := run_netsocktests run_afpackettests test_bpf.sh netdevice.sh rtnetlink.sh +TEST_PROGS += fib_tests.sh TEST_GEN_FILES = socket TEST_GEN_FILES += psock_fanout psock_tpacket msg_zerocopy TEST_GEN_PROGS = reuseport_bpf reuseport_bpf_cpu reuseport_bpf_numa diff --git a/tools/testing/selftests/net/fib_tests.sh b/tools/testing/selftests/net/fib_tests.sh new file mode 100755 index 000000000000..c517a599047b --- /dev/null +++ b/tools/testing/selftests/net/fib_tests.sh @@ -0,0 +1,145 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +# This test is for checking IPv4 and IPv6 FIB behavior in response to +# different events. + +ret=0 + +check_err() +{ + if [ $ret -eq 0 ]; then + ret=$1 + fi +} + +check_fail() +{ + if [ $1 -eq 0 ]; then + ret=1 + fi +} + +netns_create() +{ + local testns=$1 + + ip netns add $testns + ip netns exec $testns ip link set dev lo up +} + +fib_unreg_unicast_test() +{ + ret=0 + + netns_create "testns" + + ip netns exec testns ip link add dummy0 type dummy + ip netns exec testns ip link set dev dummy0 up + + ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 + ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 + + ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null + check_err $? + + ip netns exec testns ip link del dev dummy0 + check_err $? + + ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null + check_fail $? + + ip netns del testns + + if [ $ret -ne 0 ]; then + echo "FAIL: unicast route test" + return 1 + fi + echo "PASS: unicast route test" +} + +fib_unreg_multipath_test() +{ + ret=0 + + netns_create "testns" + + ip netns exec testns ip link add dummy0 type dummy + ip netns exec testns ip link set dev dummy0 up + + ip netns exec testns ip link add dummy1 type dummy + ip netns exec testns ip link set dev dummy1 up + + ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 + ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 + + ip netns exec testns ip address add 192.0.2.1/24 dev dummy1 + ip netns exec testns ip -6 address add 2001:db8:2::1/64 dev dummy1 + + ip netns exec testns ip route add 203.0.113.0/24 \ + nexthop via 198.51.100.2 dev dummy0 \ + nexthop via 192.0.2.2 dev dummy1 + ip netns exec testns ip -6 route add 2001:db8:3::/64 \ + nexthop via 2001:db8:1::2 dev dummy0 \ + nexthop via 2001:db8:2::2 dev dummy1 + + ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null + check_err $? + + ip netns exec testns ip link del dev dummy0 + check_err $? + + ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null + check_fail $? + + ip netns exec testns ip link del dev dummy1 + + ip netns del testns + + if [ $ret -ne 0 ]; then + echo "FAIL: multipath route test" + return 1 + fi + echo "PASS: multipath route test" +} + +fib_unreg_test() +{ + echo "Running netdev unregister tests" + + fib_unreg_unicast_test + fib_unreg_multipath_test +} + +fib_test() +{ + fib_unreg_test +} + +if [ "$(id -u)" -ne 0 ];then + echo "SKIP: Need root privileges" + exit 0 +fi + +if [ ! -x "$(command -v ip)" ]; then + echo "SKIP: Could not run test without ip tool" + exit 0 +fi + +ip route help 2>&1 | grep -q fibmatch +if [ $? -ne 0 ]; then + echo "SKIP: iproute2 too old, missing fibmatch" + exit 0 +fi + +fib_test + +exit $ret