@@ -60,68 +60,65 @@ host_create()
60
60
local host=$1 ; shift
61
61
62
62
simple_if_init $dev
63
+ defer simple_if_fini $dev
64
+
63
65
mtu_set $dev 10000
66
+ defer mtu_restore $dev
64
67
65
68
vlan_create $dev 10 v$dev $( ipaddr $host 10) /28
69
+ defer vlan_destroy $dev 10
66
70
ip link set dev $dev .10 type vlan egress 0:0
67
71
68
72
vlan_create $dev 11 v$dev $( ipaddr $host 11) /28
73
+ defer vlan_destroy $dev 11
69
74
ip link set dev $dev .11 type vlan egress 0:1
70
75
}
71
76
72
- host_destroy ()
73
- {
74
- local dev=$1 ; shift
75
-
76
- vlan_destroy $dev 11
77
- vlan_destroy $dev 10
78
- mtu_restore $dev
79
- simple_if_fini $dev
80
- }
81
-
82
77
h1_create ()
83
78
{
84
79
host_create $h1 1
85
80
}
86
81
87
- h1_destroy ()
88
- {
89
- host_destroy $h1
90
- }
91
-
92
82
h2_create ()
93
83
{
94
84
host_create $h2 2
95
85
96
86
tc qdisc add dev $h2 clsact
87
+ defer tc qdisc del dev $h2 clsact
88
+
97
89
tc filter add dev $h2 ingress pref 1010 prot 802.1q \
98
90
flower $TCFLAGS vlan_id 10 action pass
99
91
tc filter add dev $h2 ingress pref 1011 prot 802.1q \
100
92
flower $TCFLAGS vlan_id 11 action pass
101
93
}
102
94
103
- h2_destroy ()
104
- {
105
- tc qdisc del dev $h2 clsact
106
- host_destroy $h2
107
- }
108
-
109
95
switch_create ()
110
96
{
111
97
local intf
112
98
local vlan
113
99
114
100
ip link add dev br10 type bridge
101
+ defer ip link del dev br10
102
+
115
103
ip link add dev br11 type bridge
104
+ defer ip link del dev br11
116
105
117
106
for intf in $swp1 $swp2 ; do
118
107
ip link set dev $intf up
108
+ defer ip link set dev $intf down
109
+
119
110
mtu_set $intf 10000
111
+ defer mtu_restore $intf
120
112
121
113
for vlan in 10 11; do
122
114
vlan_create $intf $vlan
115
+ defer vlan_destroy $intf $vlan
116
+
123
117
ip link set dev $intf .$vlan master br$vlan
118
+ defer ip link set dev $intf .$vlan nomaster
119
+
124
120
ip link set dev $intf .$vlan up
121
+ defer ip link set dev $intf .$vlan down
125
122
done
126
123
done
127
124
@@ -130,34 +127,10 @@ switch_create()
130
127
done
131
128
132
129
ip link set dev br10 up
133
- ip link set dev br11 up
134
- }
135
-
136
- switch_destroy ()
137
- {
138
- local intf
139
- local vlan
140
-
141
- # A test may have been interrupted mid-run, with Qdisc installed. Delete
142
- # it here.
143
- tc qdisc del dev $swp2 root 2> /dev/null
144
-
145
- ip link set dev br11 down
146
- ip link set dev br10 down
130
+ defer ip link set dev br10 down
147
131
148
- for intf in $swp2 $swp1 ; do
149
- for vlan in 11 10; do
150
- ip link set dev $intf .$vlan down
151
- ip link set dev $intf .$vlan nomaster
152
- vlan_destroy $intf $vlan
153
- done
154
-
155
- mtu_restore $intf
156
- ip link set dev $intf down
157
- done
158
-
159
- ip link del dev br11
160
- ip link del dev br10
132
+ ip link set dev br11 up
133
+ defer ip link set dev br11 down
161
134
}
162
135
163
136
setup_prepare ()
@@ -177,23 +150,13 @@ setup_prepare()
177
150
h2_mac=$( mac_get $h2 )
178
151
179
152
vrf_prepare
153
+ defer vrf_cleanup
180
154
181
155
h1_create
182
156
h2_create
183
157
switch_create
184
158
}
185
159
186
- cleanup ()
187
- {
188
- pre_cleanup
189
-
190
- switch_destroy
191
- h2_destroy
192
- h1_destroy
193
-
194
- vrf_cleanup
195
- }
196
-
197
160
ping_ipv4 ()
198
161
{
199
162
ping_test $h1 .10 $( ipaddr 2 10) " vlan 10"
@@ -207,18 +170,18 @@ tbf_get_counter()
207
170
tc_rule_stats_get $h2 10$vlan ingress .bytes
208
171
}
209
172
210
- do_tbf_test ()
173
+ __tbf_test ()
211
174
{
212
175
local vlan=$1 ; shift
213
176
local mbit=$1 ; shift
214
177
215
178
start_traffic $h1 .$vlan $( ipaddr 1 $vlan ) $( ipaddr 2 $vlan ) $h2_mac
179
+ defer stop_traffic $!
216
180
sleep 5 # Wait for the burst to dwindle
217
181
218
182
local t2=$( busywait_for_counter 1000 +1 tbf_get_counter $vlan )
219
183
sleep 10
220
184
local t3=$( tbf_get_counter $vlan )
221
- stop_traffic
222
185
223
186
RET=0
224
187
@@ -231,3 +194,9 @@ do_tbf_test()
231
194
232
195
log_test " TC $(( vlan - 10 )) : TBF rate ${mbit} Mbit"
233
196
}
197
+
198
+ do_tbf_test ()
199
+ {
200
+ in_defer_scope \
201
+ __tbf_test " $@ "
202
+ }
0 commit comments