1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/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_process $mz_pid
}
trap cleanup EXIT
setup_prepare
setup_wait
tests_run
exit $EXIT_STATUS