| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #!/bin/bash
- # SPDX-License-Identifier: GPL-2.0
- #
- # Test generic devlink-trap functionality over mlxsw. These tests are not
- # specific to a single trap, but do not check the devlink-trap common
- # infrastructure either.
- lib_dir=$(dirname $0)/../../../net/forwarding
- ALL_TESTS="
- dev_del_test
- "
- NUM_NETIFS=4
- source $lib_dir/tc_common.sh
- source $lib_dir/lib.sh
- source $lib_dir/devlink_lib.sh
- h1_create()
- {
- simple_if_init $h1
- }
- h1_destroy()
- {
- simple_if_fini $h1
- }
- h2_create()
- {
- simple_if_init $h2
- }
- h2_destroy()
- {
- simple_if_fini $h2
- }
- switch_create()
- {
- ip link add dev br0 type bridge vlan_filtering 1 mcast_snooping 0
- ip link set dev $swp1 master br0
- ip link set dev $swp2 master br0
- ip link set dev br0 up
- ip link set dev $swp1 up
- ip link set dev $swp2 up
- }
- switch_destroy()
- {
- ip link set dev $swp2 down
- ip link set dev $swp1 down
- ip link del dev br0
- }
- setup_prepare()
- {
- h1=${NETIFS[p1]}
- swp1=${NETIFS[p2]}
- swp2=${NETIFS[p3]}
- h2=${NETIFS[p4]}
- vrf_prepare
- h1_create
- h2_create
- switch_create
- }
- cleanup()
- {
- pre_cleanup
- switch_destroy
- h2_destroy
- h1_destroy
- vrf_cleanup
- }
- dev_del_test()
- {
- local trap_name="source_mac_is_multicast"
- local smac=01:02:03:04:05:06
- local num_iter=5
- local mz_pid
- local i
- $MZ $h1 -c 0 -p 100 -a $smac -b bcast -t ip -q &
- mz_pid=$!
- # The purpose of this test is to make sure we correctly dismantle a
- # port while packets are trapped from it. This is done by reloading the
- # the driver while the 'ingress_smac_mc_drop' trap is triggered.
- RET=0
- for i in $(seq 1 $num_iter); do
- log_info "Iteration $i / $num_iter"
- devlink_trap_action_set $trap_name "trap"
- sleep 1
- devlink_reload
- # Allow netdevices to be re-created following the reload
- sleep 20
- cleanup
- setup_prepare
- setup_wait
- done
- log_test "Device delete"
- kill $mz_pid && wait $mz_pid &> /dev/null
- }
- trap cleanup EXIT
- setup_prepare
- setup_wait
- tests_run
- exit $EXIT_STATUS
|