From patchwork Sun Dec 31 16:15:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 854230 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="sLC1QKB+"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3z8lp369mbz9s84 for ; Mon, 1 Jan 2018 03:16:59 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751213AbdLaQQ5 (ORCPT ); Sun, 31 Dec 2017 11:16:57 -0500 Received: from mail-he1eur01on0064.outbound.protection.outlook.com ([104.47.0.64]:7424 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751204AbdLaQQy (ORCPT ); Sun, 31 Dec 2017 11:16:54 -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=fNcJYAA0kAdXUMcL5/FE/UFwk3ZLBs48GFwTwa9kP/s=; b=sLC1QKB+QD3+fuossu3lI0rJ19emPfRWgs+kXh+ZdAj8SBzQVA/7Boz2Fx7MgI5Xdr18Dlw2s5Fn6oOw1kEI5LbsH5e59MPYOHakFxGtNvhwY5vckE5jkR8R7IPWjgRoB/zo8U6q25MBj4FEUqLHtQZ9dQkHr5v/pJbgjYV+Ufo= 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:41 +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 18/19] selftests: fib_tests: Add test cases for netdev down Date: Sun, 31 Dec 2017 18:15:12 +0200 Message-Id: <20171231161513.25785-19-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: ffdb0aa9-77fc-46f2-90f0-08d55069e137 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:ozDJJgErHK21lRnd2LfUDab9sPfRyqJor3Pq8GiOAP55kbYSenJnmhbaIgoHXu/FEYWZnzdx3kOG0UffkZbYnEqYLuC9rVcysmVFbi3mSFMYDlpFjpe4OJ5EhUwd4Mga49g4EeIJukIDIDFeHpiURr8ODYUfFKphtDGp7afuf0Cg7nYLuhS+JKRK+uq8qWwN7OnsuK6ab7kKFFqwe0+rt9srk3wNeSxqV5LkFULkLmaqMRHN+SJxJwvbx/TIs8+l; 25:5woukVivCnYJU/Tvr7FlPIOCASCfW+jRnGATHtnELOtBqXUC5rSp0aB6Jb/VNQbAGHmntt6c9IC9OyU/LFupWmMxfRxhX7/0mPAhZ1ueJS+SxQG+P0ab3IOCDFcIPGOIAhPoqRLGrIKUdr2OmrnJZzRHN8fsgVjhJzce9/ivelMX9sSctO15eQUE8cx38EohUmz/03GOPPO8VPjiTMUq18eFU0XGmZy69Y0whvTmw/UV1b5sXFGpnwG7XXrOjYPrNmNIKbBKk6JtFwUUsbZRHp0mENyvMK9TtMVW4srQfVZk4YPIqxgwCSH+geS9yTo4smEloN2ieg1i1XR0Ewiz0g==; 31:VdyjJQ6zfOaoNqFUWu2tPZ+/LN6AmWe7/jJV4xaPXslkBWg+uKdJlFwq5ei34K76DNXw3795sejfflM5aSBN9hkIXkOpbAMo6H45TBznUIZoX62sPSc5OmZHCNkM9gbz9aEq8p/XzF0t/Ke41M+/TaU996//Dqo1fs1tlhE8McqrLtr0t10cu3aHkPPFNXLfraLXebQ/5T374gj72HAQnYBUpTetNjkuWg1Wi1xTlME= X-MS-TrafficTypeDiagnostic: AM5PR0501MB2001: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2001; 20:0/fuqJeJLZf4+Ac+mGI3DLIB/UL10TQkVcNesVr4gbam4UVBMdxSXRrLBPvze7X/lpURkahOKmzOGKMhfmsG7+KT+KEWmc/8ioUUZ1PisrJwB+0kJRhy5YgwZnI9MIhtCjyao8M6iiPRqrb/PDQBgH55httlOQ8QPJkuOjBMJvIlxgO2DeUyaur7XW1h4nPqw8XbeAXOQ4l2+Jk7iNikiCYTszP6lrhMJ8dzaunJlEFbC380MWzvfwh3EULPPLna3YPZ5mebKkK0vhnF46QWcDYwWpLgtML37WgMU7hB/MKt0jKaTZJtah6Kr71hCvLGiGVMnlav5gE/OKBF7BoTn4Xqb8IA+wwzOd5zEEF7bG4tq54LV81UOwFjxu/qehojxoqegcFm0nNky2m8e8m3RZsH+064lEDlFQqWXEL/fCqRNqZjrNfol5Vv/CLlTDYUzsn+Y+Z4LUcp8lVMxjIvRkae0X87/S55KApVNExhXlzyTlkhKY9wZcIA9tA2rM+w; 4:mRPqr6vj10RVKFMdrkhnp8n9UGO2fqbYRIG0d9wgaLipsRkcfZETmw4HKAXMeDupHiwyH0Yfnde7OVcSHE7TfMkXGCqA4mgNReoBejm+Otq47rwJ98yf3uaGAVhTzPpaM67IL9snTJ4Q0evmQhUH3M4U1nnWmuM6l5uUjo7dfrnm77kiiMdt+6wnoZKicLhZEfyrQJtP0rvmw2bBdgG0Hgb4nnoyoDQaGl3d4TWKnueTaLNFD0Fg/XVw5EqDOv5MxEeFowannPnjz+D+w4LZXQ== 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:xNAGC2mCgsvxeZwmNV1vAcPWnC1r7poXavXKfO9P0U8LRr7uC0dOenCTs5hU7CwaagffvjS7+DAd5VhxbGBoMrY1QUMZIkaOijDk4bG9iQeR+4LB6Ayy4EXjMtKXeF9Ht2YRiTYXp7tMT9B2PlS1PIO+FH46gGwJC7fFiCQBNxNe2PxxEuDDiw5Kyk3M80HgJnzcafh+uJra8/Sw/9iTOHwDbbzBKT+ZlfqiVG2G5q7GRZTSr0bJNosbxZ3TjMByLGGhvZXyNcgXKmg3fX8emGKePMg8QSzauBCULQ/g42lfo8Jil+P4H280JpNUV752JvbtRacJBZuT8mEKyH+HZvyhfSzTV02u1e8lcxRRzvs1MleL0reTegDKqKClYp6C0GrktihwHQVkPCjj0ouoRvglZWGHGKH5/MX7ezR0Qcw3OJUDeS0BueAY1qTOCuYX0W5Gl0wFZh4U1+QDYtlwC2MrPZjXFME319x0G+wDlV0sE6vFYGB2UP57FQrCErSxlH0v8PxKdor82u2K0dTEtV5EuzD9CKOzbk0XevUyJIU2BJ9Iw064mLTgbI4gcInElVD8CZb2zH4SKbEmd7I7JTzd29kTIobT/SSF2uTnQqnLcgl5ucwGMGKevOYwPPRCtz2tL49yZ4reTj1pvLNw/Mea14LSZQdCmHWGausXSERGB9v5dITocje2svl8QnBbiF0n6z/eGyeYPLhs0/EZc2Scgk617dzpDSsliZFYR1wD82wG9QhRLnxml1RUyWGAqu5AYPaVG8MenC0TscT+zf1FIwRbd0SHTHQ059KHSeHmKytErVowTTvDyIB0pM02zX1r4gdZoVA3VcABHj9frdUr83THP7F7NZ+hQn6WhgaoZs0bu8+K1rllw2l/wzWRzPk2ggxDGmFCv1tI9FgdtofjjGLGGh20aLyDT3Q05Uc2OXa32ABPNoOcHC/+SZ+0ypMqkMUsUp6ny4TTXk6FyREGHdV1I7BwaHydLdnid7FgfzS2rWEk8X/FOAfb4zA4bL4rjXL8mJ8Xa9pIK1EDEQC9Y6NfxfA2r2JyojEGeVxpn+E7Fv8HDxsKAcj+mDnvGQ8D/YZcgPCFUE+UHpWTOJKQmmS0OpxqXNC4oG7rMJuowssdemmCtuGxWfGKC4moDoz2saxu3NstH5ysezttiNM6SMZS3G4EqNwvA4adA2DQZHQt0L6YDrFxRkjhwXH6nUFCa9TnMCGuoa6QIAPQDw== X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2001; 6:ACdBI4IOkY+oK+4xszXsNyEsAp8h6g3DjyP6B3Eb1cI8sGovjU5UWeepoorMNw9JQr8C0T9GpT3/eTwzd03JHOBh5Xf7wJEp1Xv3i48GGbtTNWfdcafvzYDMj7rXfBvXWMhck3GU5c7rgYOqstKVeyOD5v+soCQx2xHDSOgqUe6ejO87hz4PdxM0O0tS9FmILMguqTrDne1cLRoHLhwiDf8pCvFht5GVimJIEZQwLacc+wBV9Qy9c+cyUoOQeMVKC1BC6mYr7n7LgC8IKIdIMfmkBysLu08TxnUR2zLswuTwv/bvdMAuDwuvA7+7SeYO2qgMjzqagl0NG+u0bAnlvrPBWCyvgeL/V4PLD5BPmlI=; 5:vTqKpNY2EkohG2H1Z/Xk4x1g292jHCAMRnVe83+C+397TQbS2zQ3QmnXvBnsMfXCIfpEexS85ShCOveQYGXvqOe4/ygeZusVLsM4QxUqzsNAE3uN3AOMGljB+KeUfAlq29A06I5UysV2YteF5/yfhI/amwY9odDEaUXZoSfR3JI=; 24:DMtrS6vt/tMKy2SfpgBT/C1oCHVXpsZcxVRrJyBdYWjyea4SGqzTKqPr8jjINW3ngT43EmSDhnezRvR+NR4xnCvSBdMr6o5Pze6F553jaU0=; 7:dwuXYRV/PPZVGc0BMFrqoyVNQS+2ql8vBfu+VUusS6LMWVSxfHPLujUSVCHb5QysJ+riVVhF88iNkDnyOl+vG8J0EA7KESlSh6Yc45bWiDo6NZ2tmSKo1VxkHCKw4kBVJm1JZH9IwSIXk2OghagbiMA1bDaxaqyjkbClAKsSlgoKbgNQKvkFi1PvrM5V175nlk5HUq4O5WvNje2/+uZm2svlwYY6x1aF7sOqtViutW0YYSx5Q8szxeYjRINhHtrB SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Dec 2017 16:16:41.3877 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ffdb0aa9-77fc-46f2-90f0-08d55069e137 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 Check that IPv4 and IPv6 react the same when a netdev is being put administratively down. Signed-off-by: Ido Schimmel --- tools/testing/selftests/net/fib_tests.sh | 141 +++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) diff --git a/tools/testing/selftests/net/fib_tests.sh b/tools/testing/selftests/net/fib_tests.sh index c517a599047b..b245bac956d1 100755 --- a/tools/testing/selftests/net/fib_tests.sh +++ b/tools/testing/selftests/net/fib_tests.sh @@ -119,9 +119,150 @@ fib_unreg_test() fib_unreg_multipath_test } +fib_down_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 set dev dummy0 down + 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 exec testns ip link del dev dummy0 + + ip netns del testns + + if [ $ret -ne 0 ]; then + echo "FAIL: unicast route test" + return 1 + fi + echo "PASS: unicast route test" +} + +fib_down_multipath_test_do() +{ + local down_dev=$1 + local up_dev=$2 + + ip netns exec testns ip route get fibmatch 203.0.113.1 \ + oif $down_dev &> /dev/null + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 \ + oif $down_dev &> /dev/null + check_fail $? + + ip netns exec testns ip route get fibmatch 203.0.113.1 \ + oif $up_dev &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 \ + oif $up_dev &> /dev/null + check_err $? + + ip netns exec testns ip route get fibmatch 203.0.113.1 | \ + grep $down_dev | grep -q "dead linkdown" + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 | \ + grep $down_dev | grep -q "dead linkdown" + check_err $? + + ip netns exec testns ip route get fibmatch 203.0.113.1 | \ + grep $up_dev | grep -q "dead linkdown" + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 | \ + grep $up_dev | grep -q "dead linkdown" + check_fail $? +} + +fib_down_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 set dev dummy0 down + check_err $? + + fib_down_multipath_test_do "dummy0" "dummy1" + + ip netns exec testns ip link set dev dummy0 up + check_err $? + ip netns exec testns ip link set dev dummy1 down + check_err $? + + fib_down_multipath_test_do "dummy1" "dummy0" + + ip netns exec testns ip link set dev dummy0 down + 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 exec testns ip link del dev dummy0 + + ip netns del testns + + if [ $ret -ne 0 ]; then + echo "FAIL: multipath route test" + return 1 + fi + echo "PASS: multipath route test" +} + +fib_down_test() +{ + echo "Running netdev down tests" + + fib_down_unicast_test + fib_down_multipath_test +} + fib_test() { fib_unreg_test + fib_down_test } if [ "$(id -u)" -ne 0 ];then