@@ -60,68 +60,65 @@ host_create()
6060 local host=$1 ; shift
6161
6262 simple_if_init $dev
63+ defer simple_if_fini $dev
64+
6365 mtu_set $dev 10000
66+ defer mtu_restore $dev
6467
6568 vlan_create $dev 10 v$dev $( ipaddr $host 10) /28
69+ defer vlan_destroy $dev 10
6670 ip link set dev $dev .10 type vlan egress 0:0
6771
6872 vlan_create $dev 11 v$dev $( ipaddr $host 11) /28
73+ defer vlan_destroy $dev 11
6974 ip link set dev $dev .11 type vlan egress 0:1
7075}
7176
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-
8277h1_create ()
8378{
8479 host_create $h1 1
8580}
8681
87- h1_destroy ()
88- {
89- host_destroy $h1
90- }
91-
9282h2_create ()
9383{
9484 host_create $h2 2
9585
9686 tc qdisc add dev $h2 clsact
87+ defer tc qdisc del dev $h2 clsact
88+
9789 tc filter add dev $h2 ingress pref 1010 prot 802.1q \
9890 flower $TCFLAGS vlan_id 10 action pass
9991 tc filter add dev $h2 ingress pref 1011 prot 802.1q \
10092 flower $TCFLAGS vlan_id 11 action pass
10193}
10294
103- h2_destroy ()
104- {
105- tc qdisc del dev $h2 clsact
106- host_destroy $h2
107- }
108-
10995switch_create ()
11096{
11197 local intf
11298 local vlan
11399
114100 ip link add dev br10 type bridge
101+ defer ip link del dev br10
102+
115103 ip link add dev br11 type bridge
104+ defer ip link del dev br11
116105
117106 for intf in $swp1 $swp2 ; do
118107 ip link set dev $intf up
108+ defer ip link set dev $intf down
109+
119110 mtu_set $intf 10000
111+ defer mtu_restore $intf
120112
121113 for vlan in 10 11; do
122114 vlan_create $intf $vlan
115+ defer vlan_destroy $intf $vlan
116+
123117 ip link set dev $intf .$vlan master br$vlan
118+ defer ip link set dev $intf .$vlan nomaster
119+
124120 ip link set dev $intf .$vlan up
121+ defer ip link set dev $intf .$vlan down
125122 done
126123 done
127124
@@ -130,34 +127,10 @@ switch_create()
130127 done
131128
132129 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
147131
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
161134}
162135
163136setup_prepare ()
@@ -177,23 +150,13 @@ setup_prepare()
177150 h2_mac=$( mac_get $h2 )
178151
179152 vrf_prepare
153+ defer vrf_cleanup
180154
181155 h1_create
182156 h2_create
183157 switch_create
184158}
185159
186- cleanup ()
187- {
188- pre_cleanup
189-
190- switch_destroy
191- h2_destroy
192- h1_destroy
193-
194- vrf_cleanup
195- }
196-
197160ping_ipv4 ()
198161{
199162 ping_test $h1 .10 $( ipaddr 2 10) " vlan 10"
@@ -207,18 +170,18 @@ tbf_get_counter()
207170 tc_rule_stats_get $h2 10$vlan ingress .bytes
208171}
209172
210- do_tbf_test ()
173+ __tbf_test ()
211174{
212175 local vlan=$1 ; shift
213176 local mbit=$1 ; shift
214177
215178 start_traffic $h1 .$vlan $( ipaddr 1 $vlan ) $( ipaddr 2 $vlan ) $h2_mac
179+ defer stop_traffic $!
216180 sleep 5 # Wait for the burst to dwindle
217181
218182 local t2=$( busywait_for_counter 1000 +1 tbf_get_counter $vlan )
219183 sleep 10
220184 local t3=$( tbf_get_counter $vlan )
221- stop_traffic
222185
223186 RET=0
224187
@@ -231,3 +194,9 @@ do_tbf_test()
231194
232195 log_test " TC $(( vlan - 10 )) : TBF rate ${mbit} Mbit"
233196}
197+
198+ do_tbf_test ()
199+ {
200+ in_defer_scope \
201+ __tbf_test " $@ "
202+ }
0 commit comments