1ffdc5149SIdo Schimmel#!/bin/bash 2ffdc5149SIdo Schimmel# SPDX-License-Identifier: GPL-2.0 3ffdc5149SIdo Schimmel# 4ffdc5149SIdo Schimmel# This test is for checking the FIB offload API. It makes use of netdevsim 5ffdc5149SIdo Schimmel# which registers a listener to the FIB notification chain. 6ffdc5149SIdo Schimmel 7ffdc5149SIdo Schimmellib_dir=$(dirname $0)/../../../net/forwarding 8ffdc5149SIdo Schimmel 9ffdc5149SIdo SchimmelALL_TESTS=" 10ffdc5149SIdo Schimmel ipv4_identical_routes 11ffdc5149SIdo Schimmel ipv4_tos 12ffdc5149SIdo Schimmel ipv4_metric 13ffdc5149SIdo Schimmel ipv4_replace 14ffdc5149SIdo Schimmel ipv4_delete 15ffdc5149SIdo Schimmel ipv4_plen 16ffdc5149SIdo Schimmel ipv4_replay 17ffdc5149SIdo Schimmel ipv4_flush 18ffdc5149SIdo Schimmel ipv4_error_path 19*40823f3eSIdo Schimmel ipv4_delete_fail 20ffdc5149SIdo Schimmel ipv6_add 21ffdc5149SIdo Schimmel ipv6_metric 22ffdc5149SIdo Schimmel ipv6_append_single 23ffdc5149SIdo Schimmel ipv6_replace_single 24ffdc5149SIdo Schimmel ipv6_metric_multipath 25ffdc5149SIdo Schimmel ipv6_append_multipath 26ffdc5149SIdo Schimmel ipv6_replace_multipath 27ffdc5149SIdo Schimmel ipv6_append_multipath_to_single 28ffdc5149SIdo Schimmel ipv6_delete_single 29ffdc5149SIdo Schimmel ipv6_delete_multipath 30ffdc5149SIdo Schimmel ipv6_replay_single 31ffdc5149SIdo Schimmel ipv6_replay_multipath 32ffdc5149SIdo Schimmel ipv6_error_path 33*40823f3eSIdo Schimmel ipv6_delete_fail 34ffdc5149SIdo Schimmel" 35ffdc5149SIdo SchimmelNETDEVSIM_PATH=/sys/bus/netdevsim/ 36ffdc5149SIdo SchimmelDEV_ADDR=1337 37ffdc5149SIdo SchimmelDEV=netdevsim${DEV_ADDR} 38ffdc5149SIdo SchimmelSYSFS_NET_DIR=/sys/bus/netdevsim/devices/$DEV/net/ 39*40823f3eSIdo SchimmelDEBUGFS_DIR=/sys/kernel/debug/netdevsim/$DEV/ 40ffdc5149SIdo SchimmelNUM_NETIFS=0 41ffdc5149SIdo Schimmelsource $lib_dir/lib.sh 42ffdc5149SIdo Schimmelsource $lib_dir/fib_offload_lib.sh 43ffdc5149SIdo Schimmel 440521a262SPetr MachataDEVLINK_DEV= 450521a262SPetr Machatasource $lib_dir/devlink_lib.sh 460521a262SPetr MachataDEVLINK_DEV=netdevsim/${DEV} 470521a262SPetr Machata 48ffdc5149SIdo Schimmelipv4_identical_routes() 49ffdc5149SIdo Schimmel{ 50ffdc5149SIdo Schimmel fib_ipv4_identical_routes_test "testns1" 51ffdc5149SIdo Schimmel} 52ffdc5149SIdo Schimmel 53ffdc5149SIdo Schimmelipv4_tos() 54ffdc5149SIdo Schimmel{ 55ffdc5149SIdo Schimmel fib_ipv4_tos_test "testns1" 56ffdc5149SIdo Schimmel} 57ffdc5149SIdo Schimmel 58ffdc5149SIdo Schimmelipv4_metric() 59ffdc5149SIdo Schimmel{ 60ffdc5149SIdo Schimmel fib_ipv4_metric_test "testns1" 61ffdc5149SIdo Schimmel} 62ffdc5149SIdo Schimmel 63ffdc5149SIdo Schimmelipv4_replace() 64ffdc5149SIdo Schimmel{ 65ffdc5149SIdo Schimmel fib_ipv4_replace_test "testns1" 66ffdc5149SIdo Schimmel} 67ffdc5149SIdo Schimmel 68ffdc5149SIdo Schimmelipv4_delete() 69ffdc5149SIdo Schimmel{ 70ffdc5149SIdo Schimmel fib_ipv4_delete_test "testns1" 71ffdc5149SIdo Schimmel} 72ffdc5149SIdo Schimmel 73ffdc5149SIdo Schimmelipv4_plen() 74ffdc5149SIdo Schimmel{ 75ffdc5149SIdo Schimmel fib_ipv4_plen_test "testns1" 76ffdc5149SIdo Schimmel} 77ffdc5149SIdo Schimmel 78ffdc5149SIdo Schimmelipv4_replay_metric() 79ffdc5149SIdo Schimmel{ 80ffdc5149SIdo Schimmel fib_ipv4_replay_metric_test "testns1" "$DEVLINK_DEV" 81ffdc5149SIdo Schimmel} 82ffdc5149SIdo Schimmel 83ffdc5149SIdo Schimmelipv4_replay_tos() 84ffdc5149SIdo Schimmel{ 85ffdc5149SIdo Schimmel fib_ipv4_replay_tos_test "testns1" "$DEVLINK_DEV" 86ffdc5149SIdo Schimmel} 87ffdc5149SIdo Schimmel 88ffdc5149SIdo Schimmelipv4_replay_plen() 89ffdc5149SIdo Schimmel{ 90ffdc5149SIdo Schimmel fib_ipv4_replay_plen_test "testns1" "$DEVLINK_DEV" 91ffdc5149SIdo Schimmel} 92ffdc5149SIdo Schimmel 93ffdc5149SIdo Schimmelipv4_replay() 94ffdc5149SIdo Schimmel{ 95ffdc5149SIdo Schimmel ipv4_replay_metric 96ffdc5149SIdo Schimmel ipv4_replay_tos 97ffdc5149SIdo Schimmel ipv4_replay_plen 98ffdc5149SIdo Schimmel} 99ffdc5149SIdo Schimmel 100ffdc5149SIdo Schimmelipv4_flush() 101ffdc5149SIdo Schimmel{ 102ffdc5149SIdo Schimmel fib_ipv4_flush_test "testns1" 103ffdc5149SIdo Schimmel} 104ffdc5149SIdo Schimmel 105ffdc5149SIdo Schimmelipv4_error_path_add() 106ffdc5149SIdo Schimmel{ 107ffdc5149SIdo Schimmel local lsb 108ffdc5149SIdo Schimmel 109ffdc5149SIdo Schimmel RET=0 110ffdc5149SIdo Schimmel 111ffdc5149SIdo Schimmel ip -n testns1 link add name dummy1 type dummy 112ffdc5149SIdo Schimmel ip -n testns1 link set dev dummy1 up 113ffdc5149SIdo Schimmel 114ffdc5149SIdo Schimmel devlink -N testns1 resource set $DEVLINK_DEV path IPv4/fib size 10 115ffdc5149SIdo Schimmel devlink -N testns1 dev reload $DEVLINK_DEV 116ffdc5149SIdo Schimmel 117ffdc5149SIdo Schimmel for lsb in $(seq 1 20); do 118ffdc5149SIdo Schimmel ip -n testns1 route add 192.0.2.${lsb}/32 dev dummy1 \ 119ffdc5149SIdo Schimmel &> /dev/null 120ffdc5149SIdo Schimmel done 121ffdc5149SIdo Schimmel 122ffdc5149SIdo Schimmel log_test "IPv4 error path - add" 123ffdc5149SIdo Schimmel 124ffdc5149SIdo Schimmel ip -n testns1 link del dev dummy1 125ffdc5149SIdo Schimmel} 126ffdc5149SIdo Schimmel 127ffdc5149SIdo Schimmelipv4_error_path_replay() 128ffdc5149SIdo Schimmel{ 129ffdc5149SIdo Schimmel local lsb 130ffdc5149SIdo Schimmel 131ffdc5149SIdo Schimmel RET=0 132ffdc5149SIdo Schimmel 133ffdc5149SIdo Schimmel ip -n testns1 link add name dummy1 type dummy 134ffdc5149SIdo Schimmel ip -n testns1 link set dev dummy1 up 135ffdc5149SIdo Schimmel 136ffdc5149SIdo Schimmel devlink -N testns1 resource set $DEVLINK_DEV path IPv4/fib size 100 137ffdc5149SIdo Schimmel devlink -N testns1 dev reload $DEVLINK_DEV 138ffdc5149SIdo Schimmel 139ffdc5149SIdo Schimmel for lsb in $(seq 1 20); do 140ffdc5149SIdo Schimmel ip -n testns1 route add 192.0.2.${lsb}/32 dev dummy1 141ffdc5149SIdo Schimmel done 142ffdc5149SIdo Schimmel 143ffdc5149SIdo Schimmel devlink -N testns1 resource set $DEVLINK_DEV path IPv4/fib size 10 144ffdc5149SIdo Schimmel devlink -N testns1 dev reload $DEVLINK_DEV &> /dev/null 145ffdc5149SIdo Schimmel 146ffdc5149SIdo Schimmel log_test "IPv4 error path - replay" 147ffdc5149SIdo Schimmel 148ffdc5149SIdo Schimmel ip -n testns1 link del dev dummy1 149ffdc5149SIdo Schimmel 150ffdc5149SIdo Schimmel # Successfully reload after deleting all the routes. 151ffdc5149SIdo Schimmel devlink -N testns1 resource set $DEVLINK_DEV path IPv4/fib size 100 152ffdc5149SIdo Schimmel devlink -N testns1 dev reload $DEVLINK_DEV 153ffdc5149SIdo Schimmel} 154ffdc5149SIdo Schimmel 155ffdc5149SIdo Schimmelipv4_error_path() 156ffdc5149SIdo Schimmel{ 157ffdc5149SIdo Schimmel # Test the different error paths of the notifiers by limiting the size 158ffdc5149SIdo Schimmel # of the "IPv4/fib" resource. 159ffdc5149SIdo Schimmel ipv4_error_path_add 160ffdc5149SIdo Schimmel ipv4_error_path_replay 161ffdc5149SIdo Schimmel} 162ffdc5149SIdo Schimmel 163*40823f3eSIdo Schimmelipv4_delete_fail() 164*40823f3eSIdo Schimmel{ 165*40823f3eSIdo Schimmel RET=0 166*40823f3eSIdo Schimmel 167*40823f3eSIdo Schimmel echo "y" > $DEBUGFS_DIR/fib/fail_route_delete 168*40823f3eSIdo Schimmel 169*40823f3eSIdo Schimmel ip -n testns1 link add name dummy1 type dummy 170*40823f3eSIdo Schimmel ip -n testns1 link set dev dummy1 up 171*40823f3eSIdo Schimmel 172*40823f3eSIdo Schimmel ip -n testns1 route add 192.0.2.0/24 dev dummy1 173*40823f3eSIdo Schimmel ip -n testns1 route del 192.0.2.0/24 dev dummy1 &> /dev/null 174*40823f3eSIdo Schimmel 175*40823f3eSIdo Schimmel # We should not be able to delete the netdev if we are leaking a 176*40823f3eSIdo Schimmel # reference. 177*40823f3eSIdo Schimmel ip -n testns1 link del dev dummy1 178*40823f3eSIdo Schimmel 179*40823f3eSIdo Schimmel log_test "IPv4 route delete failure" 180*40823f3eSIdo Schimmel 181*40823f3eSIdo Schimmel echo "n" > $DEBUGFS_DIR/fib/fail_route_delete 182*40823f3eSIdo Schimmel} 183*40823f3eSIdo Schimmel 184ffdc5149SIdo Schimmelipv6_add() 185ffdc5149SIdo Schimmel{ 186ffdc5149SIdo Schimmel fib_ipv6_add_test "testns1" 187ffdc5149SIdo Schimmel} 188ffdc5149SIdo Schimmel 189ffdc5149SIdo Schimmelipv6_metric() 190ffdc5149SIdo Schimmel{ 191ffdc5149SIdo Schimmel fib_ipv6_metric_test "testns1" 192ffdc5149SIdo Schimmel} 193ffdc5149SIdo Schimmel 194ffdc5149SIdo Schimmelipv6_append_single() 195ffdc5149SIdo Schimmel{ 196ffdc5149SIdo Schimmel fib_ipv6_append_single_test "testns1" 197ffdc5149SIdo Schimmel} 198ffdc5149SIdo Schimmel 199ffdc5149SIdo Schimmelipv6_replace_single() 200ffdc5149SIdo Schimmel{ 201ffdc5149SIdo Schimmel fib_ipv6_replace_single_test "testns1" 202ffdc5149SIdo Schimmel} 203ffdc5149SIdo Schimmel 204ffdc5149SIdo Schimmelipv6_metric_multipath() 205ffdc5149SIdo Schimmel{ 206ffdc5149SIdo Schimmel fib_ipv6_metric_multipath_test "testns1" 207ffdc5149SIdo Schimmel} 208ffdc5149SIdo Schimmel 209ffdc5149SIdo Schimmelipv6_append_multipath() 210ffdc5149SIdo Schimmel{ 211ffdc5149SIdo Schimmel fib_ipv6_append_multipath_test "testns1" 212ffdc5149SIdo Schimmel} 213ffdc5149SIdo Schimmel 214ffdc5149SIdo Schimmelipv6_replace_multipath() 215ffdc5149SIdo Schimmel{ 216ffdc5149SIdo Schimmel fib_ipv6_replace_multipath_test "testns1" 217ffdc5149SIdo Schimmel} 218ffdc5149SIdo Schimmel 219ffdc5149SIdo Schimmelipv6_append_multipath_to_single() 220ffdc5149SIdo Schimmel{ 221ffdc5149SIdo Schimmel fib_ipv6_append_multipath_to_single_test "testns1" 222ffdc5149SIdo Schimmel} 223ffdc5149SIdo Schimmel 224ffdc5149SIdo Schimmelipv6_delete_single() 225ffdc5149SIdo Schimmel{ 226ffdc5149SIdo Schimmel fib_ipv6_delete_single_test "testns1" 227ffdc5149SIdo Schimmel} 228ffdc5149SIdo Schimmel 229ffdc5149SIdo Schimmelipv6_delete_multipath() 230ffdc5149SIdo Schimmel{ 231ffdc5149SIdo Schimmel fib_ipv6_delete_multipath_test "testns1" 232ffdc5149SIdo Schimmel} 233ffdc5149SIdo Schimmel 234ffdc5149SIdo Schimmelipv6_replay_single() 235ffdc5149SIdo Schimmel{ 236ffdc5149SIdo Schimmel fib_ipv6_replay_single_test "testns1" "$DEVLINK_DEV" 237ffdc5149SIdo Schimmel} 238ffdc5149SIdo Schimmel 239ffdc5149SIdo Schimmelipv6_replay_multipath() 240ffdc5149SIdo Schimmel{ 241ffdc5149SIdo Schimmel fib_ipv6_replay_multipath_test "testns1" "$DEVLINK_DEV" 242ffdc5149SIdo Schimmel} 243ffdc5149SIdo Schimmel 244ffdc5149SIdo Schimmelipv6_error_path_add_single() 245ffdc5149SIdo Schimmel{ 246ffdc5149SIdo Schimmel local lsb 247ffdc5149SIdo Schimmel 248ffdc5149SIdo Schimmel RET=0 249ffdc5149SIdo Schimmel 250ffdc5149SIdo Schimmel ip -n testns1 link add name dummy1 type dummy 251ffdc5149SIdo Schimmel ip -n testns1 link set dev dummy1 up 252ffdc5149SIdo Schimmel 253ffdc5149SIdo Schimmel devlink -N testns1 resource set $DEVLINK_DEV path IPv6/fib size 10 254ffdc5149SIdo Schimmel devlink -N testns1 dev reload $DEVLINK_DEV 255ffdc5149SIdo Schimmel 256ffdc5149SIdo Schimmel for lsb in $(seq 1 20); do 257ffdc5149SIdo Schimmel ip -n testns1 route add 2001:db8:1::${lsb}/128 dev dummy1 \ 258ffdc5149SIdo Schimmel &> /dev/null 259ffdc5149SIdo Schimmel done 260ffdc5149SIdo Schimmel 261ffdc5149SIdo Schimmel log_test "IPv6 error path - add single" 262ffdc5149SIdo Schimmel 263ffdc5149SIdo Schimmel ip -n testns1 link del dev dummy1 264ffdc5149SIdo Schimmel} 265ffdc5149SIdo Schimmel 266ffdc5149SIdo Schimmelipv6_error_path_add_multipath() 267ffdc5149SIdo Schimmel{ 268ffdc5149SIdo Schimmel local lsb 269ffdc5149SIdo Schimmel 270ffdc5149SIdo Schimmel RET=0 271ffdc5149SIdo Schimmel 272ffdc5149SIdo Schimmel for i in $(seq 1 2); do 273ffdc5149SIdo Schimmel ip -n testns1 link add name dummy$i type dummy 274ffdc5149SIdo Schimmel ip -n testns1 link set dev dummy$i up 275ffdc5149SIdo Schimmel ip -n testns1 address add 2001:db8:$i::1/64 dev dummy$i 276ffdc5149SIdo Schimmel done 277ffdc5149SIdo Schimmel 278ffdc5149SIdo Schimmel devlink -N testns1 resource set $DEVLINK_DEV path IPv6/fib size 10 279ffdc5149SIdo Schimmel devlink -N testns1 dev reload $DEVLINK_DEV 280ffdc5149SIdo Schimmel 281ffdc5149SIdo Schimmel for lsb in $(seq 1 20); do 282ffdc5149SIdo Schimmel ip -n testns1 route add 2001:db8:10::${lsb}/128 \ 283ffdc5149SIdo Schimmel nexthop via 2001:db8:1::2 dev dummy1 \ 284ffdc5149SIdo Schimmel nexthop via 2001:db8:2::2 dev dummy2 &> /dev/null 285ffdc5149SIdo Schimmel done 286ffdc5149SIdo Schimmel 287ffdc5149SIdo Schimmel log_test "IPv6 error path - add multipath" 288ffdc5149SIdo Schimmel 289ffdc5149SIdo Schimmel for i in $(seq 1 2); do 290ffdc5149SIdo Schimmel ip -n testns1 link del dev dummy$i 291ffdc5149SIdo Schimmel done 292ffdc5149SIdo Schimmel} 293ffdc5149SIdo Schimmel 294ffdc5149SIdo Schimmelipv6_error_path_replay() 295ffdc5149SIdo Schimmel{ 296ffdc5149SIdo Schimmel local lsb 297ffdc5149SIdo Schimmel 298ffdc5149SIdo Schimmel RET=0 299ffdc5149SIdo Schimmel 300ffdc5149SIdo Schimmel ip -n testns1 link add name dummy1 type dummy 301ffdc5149SIdo Schimmel ip -n testns1 link set dev dummy1 up 302ffdc5149SIdo Schimmel 303ffdc5149SIdo Schimmel devlink -N testns1 resource set $DEVLINK_DEV path IPv6/fib size 100 304ffdc5149SIdo Schimmel devlink -N testns1 dev reload $DEVLINK_DEV 305ffdc5149SIdo Schimmel 306ffdc5149SIdo Schimmel for lsb in $(seq 1 20); do 307ffdc5149SIdo Schimmel ip -n testns1 route add 2001:db8:1::${lsb}/128 dev dummy1 308ffdc5149SIdo Schimmel done 309ffdc5149SIdo Schimmel 310ffdc5149SIdo Schimmel devlink -N testns1 resource set $DEVLINK_DEV path IPv6/fib size 10 311ffdc5149SIdo Schimmel devlink -N testns1 dev reload $DEVLINK_DEV &> /dev/null 312ffdc5149SIdo Schimmel 313ffdc5149SIdo Schimmel log_test "IPv6 error path - replay" 314ffdc5149SIdo Schimmel 315ffdc5149SIdo Schimmel ip -n testns1 link del dev dummy1 316ffdc5149SIdo Schimmel 317ffdc5149SIdo Schimmel # Successfully reload after deleting all the routes. 318ffdc5149SIdo Schimmel devlink -N testns1 resource set $DEVLINK_DEV path IPv6/fib size 100 319ffdc5149SIdo Schimmel devlink -N testns1 dev reload $DEVLINK_DEV 320ffdc5149SIdo Schimmel} 321ffdc5149SIdo Schimmel 322ffdc5149SIdo Schimmelipv6_error_path() 323ffdc5149SIdo Schimmel{ 324ffdc5149SIdo Schimmel # Test the different error paths of the notifiers by limiting the size 325ffdc5149SIdo Schimmel # of the "IPv6/fib" resource. 326ffdc5149SIdo Schimmel ipv6_error_path_add_single 327ffdc5149SIdo Schimmel ipv6_error_path_add_multipath 328ffdc5149SIdo Schimmel ipv6_error_path_replay 329ffdc5149SIdo Schimmel} 330ffdc5149SIdo Schimmel 331*40823f3eSIdo Schimmelipv6_delete_fail() 332*40823f3eSIdo Schimmel{ 333*40823f3eSIdo Schimmel RET=0 334*40823f3eSIdo Schimmel 335*40823f3eSIdo Schimmel echo "y" > $DEBUGFS_DIR/fib/fail_route_delete 336*40823f3eSIdo Schimmel 337*40823f3eSIdo Schimmel ip -n testns1 link add name dummy1 type dummy 338*40823f3eSIdo Schimmel ip -n testns1 link set dev dummy1 up 339*40823f3eSIdo Schimmel 340*40823f3eSIdo Schimmel ip -n testns1 route add 2001:db8:1::/64 dev dummy1 341*40823f3eSIdo Schimmel ip -n testns1 route del 2001:db8:1::/64 dev dummy1 &> /dev/null 342*40823f3eSIdo Schimmel 343*40823f3eSIdo Schimmel # We should not be able to delete the netdev if we are leaking a 344*40823f3eSIdo Schimmel # reference. 345*40823f3eSIdo Schimmel ip -n testns1 link del dev dummy1 346*40823f3eSIdo Schimmel 347*40823f3eSIdo Schimmel log_test "IPv6 route delete failure" 348*40823f3eSIdo Schimmel 349*40823f3eSIdo Schimmel echo "n" > $DEBUGFS_DIR/fib/fail_route_delete 350*40823f3eSIdo Schimmel} 351*40823f3eSIdo Schimmel 352d1a7a489SAmit Cohenfib_notify_on_flag_change_set() 353d1a7a489SAmit Cohen{ 354d1a7a489SAmit Cohen local notify=$1; shift 355d1a7a489SAmit Cohen 356d1a7a489SAmit Cohen ip netns exec testns1 sysctl -qw net.ipv4.fib_notify_on_flag_change=$notify 357d1a7a489SAmit Cohen ip netns exec testns1 sysctl -qw net.ipv6.fib_notify_on_flag_change=$notify 358d1a7a489SAmit Cohen 359d1a7a489SAmit Cohen log_info "Set fib_notify_on_flag_change to $notify" 360d1a7a489SAmit Cohen} 361d1a7a489SAmit Cohen 362ffdc5149SIdo Schimmelsetup_prepare() 363ffdc5149SIdo Schimmel{ 364ffdc5149SIdo Schimmel local netdev 365ffdc5149SIdo Schimmel 366ffdc5149SIdo Schimmel modprobe netdevsim &> /dev/null 367ffdc5149SIdo Schimmel 368ffdc5149SIdo Schimmel echo "$DEV_ADDR 1" > ${NETDEVSIM_PATH}/new_device 369ffdc5149SIdo Schimmel while [ ! -d $SYSFS_NET_DIR ] ; do :; done 370ffdc5149SIdo Schimmel 371ffdc5149SIdo Schimmel ip netns add testns1 372ffdc5149SIdo Schimmel if [ $? -ne 0 ]; then 373ffdc5149SIdo Schimmel echo "Failed to add netns \"testns1\"" 374ffdc5149SIdo Schimmel exit 1 375ffdc5149SIdo Schimmel fi 376ffdc5149SIdo Schimmel 377ffdc5149SIdo Schimmel devlink dev reload $DEVLINK_DEV netns testns1 378ffdc5149SIdo Schimmel if [ $? -ne 0 ]; then 379ffdc5149SIdo Schimmel echo "Failed to reload into netns \"testns1\"" 380ffdc5149SIdo Schimmel exit 1 381ffdc5149SIdo Schimmel fi 382ffdc5149SIdo Schimmel} 383ffdc5149SIdo Schimmel 384ffdc5149SIdo Schimmelcleanup() 385ffdc5149SIdo Schimmel{ 386ffdc5149SIdo Schimmel pre_cleanup 387ffdc5149SIdo Schimmel ip netns del testns1 388ffdc5149SIdo Schimmel echo "$DEV_ADDR" > ${NETDEVSIM_PATH}/del_device 389ffdc5149SIdo Schimmel modprobe -r netdevsim &> /dev/null 390ffdc5149SIdo Schimmel} 391ffdc5149SIdo Schimmel 392ffdc5149SIdo Schimmeltrap cleanup EXIT 393ffdc5149SIdo Schimmel 394ffdc5149SIdo Schimmelsetup_prepare 395ffdc5149SIdo Schimmel 396d1a7a489SAmit Cohenfib_notify_on_flag_change_set 1 397d1a7a489SAmit Cohentests_run 398d1a7a489SAmit Cohen 399d1a7a489SAmit Cohenfib_notify_on_flag_change_set 0 400ffdc5149SIdo Schimmeltests_run 401ffdc5149SIdo Schimmel 402ffdc5149SIdo Schimmelexit $EXIT_STATUS 403