]> git.proxmox.com Git - mirror_ovs.git/blame - tests/bfd.at
lib/odp-execute: Use dpif_packet_set_dp_hash() instead of ->dp_hash
[mirror_ovs.git] / tests / bfd.at
CommitLineData
015cf297
PR
1AT_BANNER([bfd])
2
3m4_define([BFD_CHECK], [
4AT_CHECK([ovs-appctl bfd/show $1 | sed -e '/Time:/d' | sed -e '/Discriminator/d' | sed -e '/Interval:/d'],[0],
5[dnl
6 Forwarding: $2
7 Detect Multiplier: 3
8 Concatenated Path Down: $3
9
10 Local Flags: $4
11 Local Session State: $5
12 Local Diagnostic: $6
13
14 Remote Flags: $7
15 Remote Session State: $8
16 Remote Diagnostic: $9
17])
18])
19
20m4_define([BFD_CHECK_TX], [
21AT_CHECK([ovs-appctl bfd/show $1 | sed -n '/TX Interval/p'],[0],
22[dnl
c1c4e8c7
AW
23 TX Interval: Approx $2
24 Local Minimum TX Interval: $3
25 Remote Minimum TX Interval: $4
015cf297
PR
26])
27])
28
29m4_define([BFD_CHECK_RX], [
30AT_CHECK([ovs-appctl bfd/show $1 | sed -n '/RX Interval/p'],[0],
31[dnl
32 RX Interval: Approx $2
c1c4e8c7
AW
33 Local Minimum RX Interval: $3
34 Remote Minimum RX Interval: $4
015cf297
PR
35])
36])
4905e2df
AW
37
38m4_define([BFD_VSCTL_LIST_IFACE], [
39AT_CHECK([ovs-vsctl list interface $1 | sed -n $2],[0],
40[dnl
41$3
42])
43])
44
015cf297 45AT_SETUP([bfd - basic config on different bridges])
015cf297
PR
46#Create 2 bridges connected by patch ports and enable BFD
47OVS_VSWITCHD_START(
48 [add-br br1 -- \
49 set bridge br1 datapath-type=dummy \
50 other-config:hwaddr=aa:55:aa:56:00:00 -- \
51 add-port br1 p1 -- set Interface p1 type=patch \
52 options:peer=p0 -- \
53 add-port br0 p0 -- set Interface p0 type=patch \
54 options:peer=p1 -- \
55 set Interface p0 bfd:enable=true -- \
56 set Interface p1 bfd:enable=true ])
43d66d3b 57ovs-appctl time/stop
8661af79 58ovs-appctl time/warp 4100 100
015cf297
PR
59
60#Verify that BFD has been enabled on both interfaces.
61BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
62BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
63
64AT_CHECK([ ovs-vsctl set interface p0 bfd:enable=false])
8661af79 65ovs-appctl time/warp 4100 100
015cf297
PR
66BFD_CHECK([p1], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
67
68AT_CHECK([ ovs-vsctl set interface p0 bfd:enable=true])
8661af79 69ovs-appctl time/warp 4100 100
015cf297
PR
70BFD_CHECK([p1], [true], [false], [none], [up], [Control Detection Time Expired], [none], [up], [No Diagnostic])
71BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [Control Detection Time Expired])
72
73ovs-vsctl del-br br0
74AT_CHECK([ovs-appctl bfd/show p0], [2],[ignore], [no such bfd object
75ovs-appctl: ovs-vswitchd: server returned an error
76])
77ovs-vsctl del-br br1
78#Check that the entries are gone.
79AT_CHECK([ovs-appctl bfd/show p1], [2],[ignore], [no such bfd object
80ovs-appctl: ovs-vswitchd: server returned an error
81])
82
83OVS_VSWITCHD_STOP
84AT_CLEANUP
85
86
87AT_SETUP([bfd - Verify tunnel down detection])
88#Create 3 bridges - br-bfd0, br-bfd1 and br-sw which is midway between the two. br2 is
89#connected to br-bfd0 and br-bfd1 through patch ports p0-2 and p1-2. Enable BFD on
90#interfaces in br-bfd0 and br-bfd1. When br-sw is dropping all packets, BFD should detect
91# that the tunnel is down, and come back up when br-sw is working fine.
92
015cf297
PR
93OVS_VSWITCHD_START(
94 [add-br br-bfd0 -- \
95 set bridge br-bfd0 datapath-type=dummy \
96 other-config:hwaddr=aa:55:aa:56:00:00 -- \
97 add-br br-bfd1 -- \
98 set bridge br-bfd1 datapath-type=dummy \
99 other-config:hwaddr=aa:55:aa:57:00:00 -- \
100 add-br br-sw -- \
101 set bridge br-sw datapath-type=dummy \
102 other-config:hwaddr=aa:55:aa:58:00:00 -- \
103 add-port br-sw p1-sw -- set Interface p1-sw type=patch \
125bf01d 104 options:peer=p1 ofport_request=2 -- \
015cf297 105 add-port br-sw p0-sw -- set Interface p0-sw type=patch \
125bf01d 106 options:peer=p0 ofport_request=1 -- \
015cf297
PR
107 add-port br-bfd1 p1 -- set Interface p1 type=patch \
108 options:peer=p1-sw bfd:enable=true -- \
109 add-port br-bfd0 p0 -- set Interface p0 type=patch \
110 options:peer=p0-sw bfd:enable=true --])
111
43d66d3b 112ovs-appctl time/stop
015cf297
PR
113
114#Create 2 bridges connected by patch ports and enable BFD
115
116AT_CHECK([ovs-ofctl add-flow br-sw 'priority=0,actions=NORMAL'])
117#Verify that BFD is enabled.
8661af79 118ovs-appctl time/warp 4100 100
015cf297
PR
119BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
120BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
121
122#Drop all packets in the br-sw bridge so that the tunnel is down.
123AT_CHECK([ ovs-ofctl add-flow br-sw 'priority=5,actions=drop' ])
8661af79 124ovs-appctl time/warp 4100 100
015cf297
PR
125BFD_CHECK([p1], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
126BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
127
128#Delete the added flow
129AT_CHECK([ovs-ofctl del-flows br-sw], [0])
130AT_CHECK([ovs-ofctl add-flow br-sw 'priority=0,actions=NORMAL'])
131#Verify that BFD is back up again.
8661af79 132ovs-appctl time/warp 4100 100
015cf297
PR
133
134BFD_CHECK([p1], [true], [false], [none], [up], [Control Detection Time Expired], [none], [up], [Control Detection Time Expired])
135BFD_CHECK([p0], [true], [false], [none], [up], [Control Detection Time Expired], [none], [up], [Control Detection Time Expired])
136
137#Now, Verify one-side tunnel down detection
138#When br-sw is dropping packets from one end, BFD should detect
139# that the tunnel is down, and come back up when br-sw is working fine.
140
141#Bring down the br-bfd1 - br-sw link. So BFD packets will be sent from p0,
142# but not received by p1. p0 will receive all BFD packets from p1.
143
144AT_CHECK([ ovs-ofctl add-flow br-sw 'in_port=1,priority=5,actions=drop'])
8661af79 145ovs-appctl time/warp 4100 100
015cf297
PR
146# Make sure p1 BFD state is down since it received no BFD packets.
147BFD_CHECK([p1], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
8661af79
GS
148ovs-appctl time/warp 4100 100
149
015cf297
PR
150# p0 will be in init state once it receives "down" BFD message from p1.
151BFD_CHECK([p0], [false], [false], [none], [init], [Neighbor Signaled Session Down], [none], [down], [Control Detection Time Expired])
152
153AT_CHECK([ovs-ofctl del-flows br-sw])
154AT_CHECK([ovs-ofctl add-flow br-sw 'priority=0,actions=NORMAL'])
155#Ensure that BFD is back up again.
156
8661af79 157ovs-appctl time/warp 1100 100
015cf297
PR
158#Bring down the br-bfd0 - br-sw link
159AT_CHECK([ ovs-ofctl add-flow br-sw 'in_port=2,priority=5,actions=drop'])
8661af79 160ovs-appctl time/warp 4100 100
015cf297 161BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
8661af79 162ovs-appctl time/warp 4100 100
015cf297
PR
163BFD_CHECK([p1], [false], [false], [none], [init], [Neighbor Signaled Session Down], [none], [down], [Control Detection Time Expired])
164OVS_VSWITCHD_STOP
165AT_CLEANUP
166
167
168AT_SETUP([bfd - concatenated path down])
169#Create 2 bridges connected by patch ports and enable BFD
015cf297 170OVS_VSWITCHD_START()
43d66d3b 171ovs-appctl time/stop
015cf297
PR
172AT_CHECK([ ovs-vsctl -- add-br br1 -- \
173 set bridge br1 datapath-type=dummy \
174 other-config:hwaddr=aa:55:aa:56:00:00 ])
015cf297
PR
175AT_CHECK([ ovs-vsctl -- add-port br1 p1 -- set Interface p1 type=patch \
176 options:peer=p0 ])
177AT_CHECK([ ovs-vsctl -- add-port br0 p0 -- set Interface p0 type=patch \
178 options:peer=p1 ])
179AT_CHECK([ ovs-vsctl -- set interface p0 bfd:enable=true ])
180AT_CHECK([ ovs-vsctl -- set interface p1 bfd:enable=true ])
8661af79 181ovs-appctl time/warp 4100 100
015cf297
PR
182
183#Verify that BFD has been enabled on both interfaces.
184BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
185BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
186
187#Set cpath_down to true on one interface, make sure the remote interface updates its values.
188AT_CHECK([ovs-vsctl set interface p0 bfd:cpath_down=true])
8661af79 189ovs-appctl time/warp 4100 100
015cf297
PR
190BFD_CHECK([p1], [false], [false], [none], [up], [No Diagnostic], [none], [up], [Concatenated Path Down])
191OVS_VSWITCHD_STOP
192AT_CLEANUP
193
194
195AT_SETUP([bfd - Edit the Min Tx/Rx values])
196#Create 2 bridges connected by patch ports and enable BFD
015cf297 197OVS_VSWITCHD_START()
43d66d3b 198ovs-appctl time/stop
015cf297
PR
199AT_CHECK([ ovs-vsctl -- add-br br1 -- \
200 set bridge br1 datapath-type=dummy ])
201AT_CHECK([ ovs-vsctl -- add-port br1 p1 -- set Interface p1 type=patch \
202 options:peer=p0 ])
203AT_CHECK([ ovs-vsctl -- add-port br0 p0 -- set Interface p0 type=patch \
204 options:peer=p1 ])
205AT_CHECK([ ovs-vsctl -- set interface p0 bfd:enable=true ])
206AT_CHECK([ ovs-vsctl -- set interface p1 bfd:enable=true ])
8661af79 207ovs-appctl time/warp 3100 100
015cf297
PR
208#Verify that BFD has been enabled on both interfaces.
209BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
210BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
211#Edit the min Tx value.
212AT_CHECK([ovs-vsctl set interface p0 bfd:min_tx=200])
8661af79 213ovs-appctl time/warp 2100 100
c1c4e8c7
AW
214BFD_CHECK_TX([p0], [1000ms], [200ms], [100ms])
215BFD_CHECK_TX([p1], [1000ms], [100ms], [200ms])
015cf297
PR
216
217#Edit the min Rx value.
218AT_CHECK([ovs-vsctl set interface p1 bfd:min_rx=300])
8661af79 219ovs-appctl time/warp 2100 100
c1c4e8c7
AW
220BFD_CHECK_RX([p1], [300ms], [300ms], [1000ms])
221BFD_CHECK_RX([p0], [1000ms], [1000ms], [300ms])
015cf297
PR
222
223OVS_VSWITCHD_STOP
224AT_CLEANUP
2d21cf72
AW
225
226AT_SETUP([bfd - check_tnl_key])
227OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=gre \
228 options:remote_ip=2.2.2.2 options:key=1 ofport_request=1 -- \
229 set interface p1 bfd:enable=true -- \
230 set bridge br0 fail-mode=standalone])
231
232# by default check_tnl_key is false. so we should process a bfd packet with tun_id=1.
5545e782 233AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'tunnel(tun_id=0x1,src=2.2.2.2,dst=2.2.2.1,tos=0x0,ttl=64,tp_src=0,tp_dst=0,flags(key)),in_port(1),skb_mark(0/0),eth(src=00:11:22:33:44:55,dst=00:23:20:00:00:01),eth_type(0x0800),ipv4(src=169.254.1.0/0.0.0.0,dst=169.254.1.1/0.0.0.0,proto=17/0xff,tos=0/0,ttl=255/0,frag=no/0xff),udp(src=49152/0,dst=3784/0xffff)' -generate], [0], [stdout])
2d21cf72
AW
234# check that the packet should be handled as BFD packet.
235AT_CHECK([tail -2 stdout], [0], [dnl
236This flow is handled by the userspace slow path because it:
237 - Consists of BFD packets.
238], [])
239
240# turn on the check_tnl_key.
241AT_CHECK([ovs-vsctl set interface p1 bfd:check_tnl_key=true])
5545e782 242AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'tunnel(tun_id=0x1,src=2.2.2.2,dst=2.2.2.1,tos=0x0,ttl=64,tp_src=0,tp_dst=0,flags(key)),in_port(1),skb_mark(0/0),eth(src=00:11:22:33:44:55,dst=00:23:20:00:00:01),eth_type(0x0800),ipv4(src=169.254.1.0/0.0.0.0,dst=169.254.1.1/0.0.0.0,proto=17/0xff,tos=0/0,ttl=255/0,frag=no/0xff),udp(src=49152/0,dst=3784/0xffff)' -generate], [0], [stdout])
2d21cf72
AW
243# check that the packet should be handled as normal packet.
244AT_CHECK([tail -1 stdout], [0],[dnl
245Datapath actions: 100
246], [])
247
248# set the tunnel key to 0.
249AT_CHECK([ovs-vsctl set interface p1 options:key=0])
5545e782 250AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'tunnel(tun_id=0x0,src=2.2.2.2,dst=2.2.2.1,tos=0x0,ttl=64,tp_src=0,tp_dst=0,flags(key)),in_port(1),skb_mark(0/0),eth(src=00:11:22:33:44:55,dst=00:23:20:00:00:01),eth_type(0x0800),ipv4(src=169.254.1.0/0.0.0.0,dst=169.254.1.1/0.0.0.0,proto=17/0xff,tos=0/0,ttl=255/0,frag=no/0xff),udp(src=49152/0,dst=3784/0xffff)' -generate], [0], [stdout])
2d21cf72
AW
251# check that the packet should be handled as BFD packet.
252AT_CHECK([tail -2 stdout], [0], [dnl
253This flow is handled by the userspace slow path because it:
254 - Consists of BFD packets.
255], [])
256
257OVS_VSWITCHD_STOP
258AT_CLEANUP
c1c4e8c7
AW
259
260# Tests below are for bfd decay features.
261AT_SETUP([bfd - bfd decay])
262OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy -- \
263 add-port br1 p1 -- set Interface p1 type=patch \
264 options:peer=p0 ofport_request=2 -- \
265 add-port br0 p0 -- set Interface p0 type=patch \
266 options:peer=p1 ofport_request=1 -- \
3688ce7a 267 set Interface p0 bfd:enable=true bfd:min_tx=300 bfd:min_rx=300 -- \
c1c4e8c7
AW
268 set Interface p1 bfd:enable=true bfd:min_tx=500 bfd:min_rx=500])
269
270ovs-appctl time/stop
c1c4e8c7 271
3688ce7a 272# wait for a while to stablize everything.
8661af79 273ovs-appctl time/warp 10000 500
3688ce7a
AW
274BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
275BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
276BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
277BFD_CHECK_RX([p0], [500ms], [300ms], [500ms])
c1c4e8c7
AW
278
279# Test-1 BFD decay: decay to decay_min_rx
3688ce7a 280AT_CHECK([ovs-vsctl set interface p0 bfd:decay_min_rx=3000])
c1c4e8c7 281# bfd:decay_min_rx is set to 3000ms after the local state of p0 goes up,
27e26e59 282# so for the first 2000ms, there should be no change.
8661af79 283ovs-appctl time/warp 2000 500
c1c4e8c7
AW
284BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
285BFD_CHECK_RX([p0], [500ms], [300ms], [500ms])
286
27e26e59 287# advance the clock by 5000ms.
8661af79 288ovs-appctl time/warp 5000 500
3688ce7a 289# now, min_rx should decay to 3000ms.
c1c4e8c7
AW
290BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
291BFD_CHECK_RX([p0], [3000ms], [3000ms], [500ms])
292
27e26e59 293# advance clock by 5000ms and check the the flags are all 'none'.
8661af79 294ovs-appctl time/warp 5000 500
c1c4e8c7 295BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
3688ce7a 296BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
c1c4e8c7
AW
297BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
298BFD_CHECK_RX([p0], [3000ms], [3000ms], [500ms])
299# End of Test-1 ###############################################################
300
301
27e26e59 302# Test-2 BFD decay: go back to min_rx when there is traffic
3688ce7a
AW
303# receive packet at 1/100ms rate for 5000ms.
304for i in `seq 0 49`
c1c4e8c7
AW
305do
306 ovs-appctl time/warp 100
307 AT_CHECK([ovs-ofctl packet-out br1 3 2 "90e2ba01475000101856b2e80806000108000604000100101856b2e80202020300000000000002020202"],
308 [0], [stdout], [])
309done
310# after a decay interval (3000ms), the p0 min_rx will go back to
27e26e59 311# min_rx.
c1c4e8c7
AW
312BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
313BFD_CHECK_RX([p0], [500ms], [300ms], [500ms])
314# End of Test-2 ###############################################################
315
316
27e26e59
AW
317# Test-3 BFD decay: set decay_min_rx to 1000ms.
318# this should firstly reset the min_rx and then re-decay to 1000ms.
319AT_CHECK([ovs-vsctl set Interface p0 bfd:decay_min_rx=1000])
320# advance the clock by 10000ms, decay should have happened.
8661af79 321ovs-appctl time/warp 10000 500
c1c4e8c7
AW
322BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
323BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
c1c4e8c7
AW
324BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
325BFD_CHECK_RX([p0], [1000ms], [1000ms], [500ms])
c1c4e8c7
AW
326# End of Test-3 ###############################################################
327
328
27e26e59
AW
329# Test-4 BFD decay: set decay_min_rx to 0 to disable bfd decay.
330AT_CHECK([ovs-vsctl set Interface p0 bfd:decay_min_rx=0])
331# advance the clock by 5000ms.
8661af79 332ovs-appctl time/warp 10000 500
27e26e59 333# min_rx is reset.
c1c4e8c7 334BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
27e26e59 335BFD_CHECK_RX([p0], [500ms], [300ms], [500ms])
881d47a9 336
c1c4e8c7
AW
337for i in `seq 0 20`
338do
339 ovs-appctl time/warp 500
340 BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
341 BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
342 BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
343 BFD_CHECK_RX([p0], [500ms], [300ms], [500ms])
344done
27e26e59 345# End of Test-4 ################################################################
c1c4e8c7
AW
346
347
27e26e59 348# Test-5 BFD decay: rmt_min_tx is greater than decay_min_rx
c1c4e8c7 349AT_CHECK([ovs-vsctl set Interface p0 bfd:decay_min_rx=3000 -- set interface p1 bfd:min_tx=5000])
27e26e59 350# advance the clock by 10000ms to stable everything.
8661af79 351ovs-appctl time/warp 10000 500
27e26e59
AW
352BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
353BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
354# p0 rx should show 5000ms even if it is in decay.
c1c4e8c7
AW
355BFD_CHECK_TX([p0], [500ms], [300ms], [5000ms])
356BFD_CHECK_RX([p0], [5000ms], [3000ms], [500ms])
357# then, there should be no change of status,
27e26e59 358for i in `seq 0 19`
c1c4e8c7
AW
359do
360 ovs-appctl time/warp 500
361 BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
362 BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
363 BFD_CHECK_TX([p0], [500ms], [300ms], [5000ms])
364 BFD_CHECK_RX([p0], [5000ms], [3000ms], [500ms])
365done
366# reset the p1's min_tx to 500ms.
367AT_CHECK([ovs-vsctl set Interface p1 bfd:min_tx=500])
27e26e59 368# advance the clock by 20000ms to stable everything.
3688ce7a 369# since p0 has been in decay, now the RX will show 3000ms.
8661af79 370ovs-appctl time/warp 20000 500
c1c4e8c7
AW
371BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
372BFD_CHECK_RX([p0], [3000ms], [3000ms], [500ms])
27e26e59 373# End of Test-5 ###############################################################
c1c4e8c7
AW
374
375
27e26e59 376# Test-6 BFD decay: state up->down->up.
c1c4e8c7
AW
377# turn bfd off on p1
378AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=false])
379
27e26e59 380# advance the clock by 15000ms to stable everything.
8661af79 381ovs-appctl time/warp 15000 1000
c1c4e8c7
AW
382BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
383BFD_CHECK_TX([p0], [1000ms], [1000ms], [0ms])
384BFD_CHECK_RX([p0], [300ms], [300ms], [1ms])
385
386# resume the bfd on p1. the bfd should not go to decay mode direclty.
387AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=true])
8661af79 388ovs-appctl time/warp 1500 500
c1c4e8c7
AW
389BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
390BFD_CHECK_RX([p0], [500ms], [300ms], [500ms])
391
3688ce7a 392# since the decay_min_rx is still 3000ms, so after 5000ms, p0 should have decayed.
8661af79 393ovs-appctl time/warp 5000 500
c1c4e8c7
AW
394BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
395BFD_CHECK_RX([p0], [3000ms], [3000ms], [500ms])
27e26e59 396# End of Test-6 ################################################################
c1c4e8c7
AW
397
398OVS_VSWITCHD_STOP
01d18a3a
AW
399AT_CLEANUP
400
401# Tests below are for bfd forwarding_if_rx feature.
309d9dac
AW
402
403# forwarding_if_rx Test1
404# Test1 tests the case when bfd is only enabled on one end of the link.
34c88624
AW
405# Under this situation, the forwarding flag should always be false, even
406# though there is data packet received, since there is no bfd control
407# packet received during the demand_rx_bfd interval.
309d9dac 408AT_SETUP([bfd - bfd forwarding_if_rx - bfd on one side])
01d18a3a
AW
409OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy -- \
410 add-port br1 p1 -- set Interface p1 type=patch \
411 options:peer=p0 ofport_request=2 -- \
412 add-port br0 p0 -- set Interface p0 type=patch \
413 options:peer=p1 ofport_request=1 -- \
414 set Interface p0 bfd:enable=true bfd:min_tx=500 bfd:min_rx=500 -- \
415 add-port br1 p2 -- set Interface p2 type=internal ofport_request=3])
416
417ovs-appctl time/stop
418# check the inital status.
419BFD_CHECK([p0], [false], [false], [none], [down], [No Diagnostic], [none], [down], [No Diagnostic])
420BFD_CHECK_TX([p0], [1000ms], [1000ms], [0ms])
421BFD_CHECK_RX([p0], [500ms], [500ms], [1ms])
422
423# enable forwarding_if_rx.
424AT_CHECK([ovs-vsctl set Interface p0 bfd:forwarding_if_rx=true], [0])
425
426# there should be no change of forwarding flag, since
427# there is no traffic.
428for i in `seq 0 3`
429do
430 ovs-appctl time/warp 500
431 BFD_CHECK([p0], [false], [false], [none], [down], [No Diagnostic], [none], [down], [No Diagnostic])
432done
433
3688ce7a
AW
434# receive packet at 1/100ms rate for 2000ms.
435for i in `seq 0 19`
01d18a3a
AW
436do
437 ovs-appctl time/warp 100
438 AT_CHECK([ovs-ofctl packet-out br1 3 2 "90e2ba01475000101856b2e80806000108000604000100101856b2e80202020300000000000002020202"],
439 [0], [stdout], [])
440done
34c88624 441# the forwarding flag should be false, due to the demand_rx_bfd.
01d18a3a 442BFD_CHECK([p0], [false], [false], [none], [down], [No Diagnostic], [none], [down], [No Diagnostic])
01d18a3a
AW
443
444AT_CHECK([ovs-vsctl del-br br1], [0], [ignore])
445AT_CLEANUP
446
309d9dac
AW
447
448# forwarding_if_rx Test2
449# Test2 is for testing that the enable of forwarding_if_rx will not
450# affect the normal bfd communication. bfd is enabled on both ends of
451# the link.
452AT_SETUP([bfd - bfd forwarding_if_rx - bfd on both sides])
01d18a3a
AW
453OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy -- \
454 add-port br1 p1 -- set Interface p1 type=patch \
455 options:peer=p0 ofport_request=2 -- \
456 add-port br0 p0 -- set Interface p0 type=patch \
457 options:peer=p1 ofport_request=1 -- \
458 set Interface p0 bfd:enable=true bfd:min_tx=500 bfd:min_rx=500 -- \
459 set Interface p1 bfd:enable=true bfd:min_tx=300 bfd:min_rx=300 -- \
460 add-port br1 p2 -- set Interface p2 type=internal ofport_request=3])
461
462ovs-appctl time/stop
463# advance the clock, to stablize the states.
8661af79 464ovs-appctl time/warp 5000 500
01d18a3a
AW
465
466# enable forwarding_if_rx.
467AT_CHECK([ovs-vsctl set Interface p0 bfd:forwarding_if_rx=true], [0])
468
469# there should be no change of the forwarding flag, since
470# the bfd on both ends is already up.
471for i in `seq 0 5`
472do
473 ovs-appctl time/warp 500
474 BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
475done
476
477# stop the bfd on one side.
478AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=false], [0])
479# for within 1500ms, the detection timer is not out.
480# there is no change to status.
481for i in `seq 0 1`
482do
483 ovs-appctl time/warp 500
484 BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
3688ce7a 485 for i in `seq 0 4`
01d18a3a
AW
486 do
487 AT_CHECK([ovs-ofctl packet-out br1 3 2 "90e2ba01475000101856b2e80806000108000604000100101856b2e80202020300000000000002020202"],
488 [0], [stdout], [])
489 done
490done
491
492# at 1500ms, the STATE should go DOWN, due to Control Detection Time Expired.
493# but forwarding flag should be still true.
494ovs-appctl time/warp 500
495BFD_CHECK([p0], [true], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
496
01d18a3a
AW
497# reset bfd forwarding_if_rx.
498AT_CHECK([ovs-vsctl set Interface p0 bfd:forwarding_if_rx=false], [0])
499# forwarding flag should turn to false since the STATE is DOWN.
500BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
01d18a3a
AW
501
502# re-enable bfd on the other end. the states should be up.
503AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=true bfd:min_tx=300 bfd:min_rx=300])
504# advance the clock, to stablize the states.
8661af79 505ovs-appctl time/warp 5000 500
01d18a3a
AW
506BFD_CHECK([p0], [true], [false], [none], [up], [Control Detection Time Expired], [none], [up], [No Diagnostic])
507BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [Control Detection Time Expired])
508BFD_CHECK_TX([p0], [500ms], [500ms], [300ms])
509BFD_CHECK_RX([p0], [500ms], [500ms], [300ms])
510
511AT_CHECK([ovs-vsctl del-br br1], [0], [ignore])
512AT_CLEANUP
513
309d9dac
AW
514# forwarding_if_rx Test3
515# Test3 is for testing that the enable of forwarding_if_rx will not
516# affect the bfd decay feature. bfd is enabled on both ends of the link.
517AT_SETUP([bfd - bfd forwarding_if_rx - with bfd decay])
01d18a3a
AW
518OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy -- \
519 add-port br1 p1 -- set Interface p1 type=patch \
520 options:peer=p0 ofport_request=2 -- \
521 add-port br0 p0 -- set Interface p0 type=patch \
522 options:peer=p1 ofport_request=1 -- \
523 set Interface p0 bfd:enable=true bfd:min_tx=300 bfd:min_rx=300 bfd:decay_min_rx=3000 -- \
524 set Interface p1 bfd:enable=true bfd:min_tx=500 bfd:min_rx=500])
525
526ovs-appctl time/stop
527# advance the clock, to stablize the states.
8661af79 528ovs-appctl time/warp 10000 500
01d18a3a
AW
529BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
530BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
531BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
532BFD_CHECK_RX([p0], [3000ms], [3000ms], [500ms])
533
534# enable forwarding_if_rx.
535AT_CHECK([ovs-vsctl set Interface p0 bfd:forwarding_if_rx=true], [0])
536
537# there should be no change of the forwarding flag, since
538# the bfd on both ends is already up.
539for i in `seq 0 9`
540do
541 ovs-appctl time/warp 500
542 BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
543done
544
3688ce7a 545# reconfigure the decay_min_rx to 1000ms.
01d18a3a 546AT_CHECK([ovs-vsctl set interface p0 bfd:decay_min_rx=1000])
01d18a3a 547
3688ce7a 548# wait for 5000ms to decay.
8661af79 549ovs-appctl time/warp 5000 500
309d9dac 550BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
01d18a3a
AW
551BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
552BFD_CHECK_RX([p0], [1000ms], [1000ms], [500ms])
553
554# stop the bfd on one side.
555AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=false], [0])
3688ce7a
AW
556
557# advance clock by 4000ms, while receiving packets.
558# the STATE should go DOWN, due to Control Detection Time Expired.
559# but forwarding flag should be still true.
560for i in `seq 0 7`
01d18a3a
AW
561do
562 ovs-appctl time/warp 500
01d18a3a
AW
563 AT_CHECK([ovs-ofctl packet-out br1 3 2 "90e2ba01475000101856b2e80806000108000604000100101856b2e80202020300000000000002020202"],
564 [0], [stdout], [])
565done
01d18a3a
AW
566BFD_CHECK([p0], [true], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
567
568# receive packet at 1/100ms rate for 1000ms.
569for i in `seq 0 9`
570do
571 AT_CHECK([ovs-ofctl packet-out br1 3 2 "90e2ba01475000101856b2e80806000108000604000100101856b2e80202020300000000000002020202"],
572 [0], [stdout], [])
573 ovs-appctl time/warp 100
574 # the forwarding flag should always be true during this time.
575 BFD_CHECK([p0], [true], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
576done
577
309d9dac 578# stop receiving for 5000ms.
8661af79 579ovs-appctl time/warp 5000 100
01d18a3a
AW
580BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
581
582# reset bfd forwarding_if_rx.
583AT_CHECK([ovs-vsctl set Interface p0 bfd:forwarding_if_rx=false])
01d18a3a 584BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
01d18a3a
AW
585# re-enable bfd forwarding_if_rx.
586AT_CHECK([ovs-vsctl set Interface p0 bfd:forwarding_if_rx=true])
01d18a3a 587BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
01d18a3a
AW
588
589# re-enable bfd on the other end. the states should be up.
590AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=true bfd:min_tx=300 bfd:min_rx=300])
591# advance the clock, to stablize the states.
8661af79 592ovs-appctl time/warp 10000 500
01d18a3a
AW
593BFD_CHECK([p0], [true], [false], [none], [up], [Control Detection Time Expired], [none], [up], [No Diagnostic])
594BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [Control Detection Time Expired])
595BFD_CHECK_TX([p0], [300ms], [300ms], [300ms])
596BFD_CHECK_RX([p0], [1000ms], [1000ms], [300ms])
597
598AT_CHECK([ovs-vsctl del-br br1], [0], [ignore])
4905e2df
AW
599AT_CLEANUP
600
34c88624
AW
601# forwarding_if_rx Test4
602# Test4 is for testing the demand_rx_bfd feature.
603# bfd is enabled on both ends of the link.
604AT_SETUP([bfd - bfd forwarding_if_rx - demand_rx_bfd])
605OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy -- \
606 add-port br1 p1 -- set Interface p1 type=patch \
607 options:peer=p0 ofport_request=2 -- \
608 add-port br0 p0 -- set Interface p0 type=patch \
609 options:peer=p1 ofport_request=1 -- \
610 set Interface p0 bfd:enable=true bfd:min_tx=300 bfd:min_rx=300 bfd:forwarding_if_rx=true -- \
611 set Interface p1 bfd:enable=true bfd:min_tx=500 bfd:min_rx=500])
612
613ovs-appctl time/stop
614# advance the clock, to stablize the states.
8661af79 615ovs-appctl time/warp 10000 500
34c88624
AW
616BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
617BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
618BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
619
620# disable the bfd on p1.
621AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=false], [0])
622
623# advance clock by 4000ms, while receiving packets.
624# the STATE should go DOWN, due to Control Detection Time Expired.
625# but forwarding flag should be still true.
626for i in `seq 0 7`
627do
628 ovs-appctl time/warp 500
629 AT_CHECK([ovs-ofctl packet-out br1 3 2 "90e2ba01475000101856b2e80806000108000604000100101856b2e80202020300000000000002020202"],
630 [0], [stdout], [])
631done
632BFD_CHECK([p0], [true], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
633
634# advance clock long enough to trigger the demand_bfd_rx interval
635# (100 * bfd->cfm_min_rx), forwarding flag should go down since there
636# is no bfd control packet received during the demand_rx_bfd.
637for i in `seq 0 120`
638do
639 ovs-appctl time/warp 300
640 AT_CHECK([ovs-ofctl packet-out br1 3 2 "90e2ba01475000101856b2e80806000108000604000100101856b2e80202020300000000000002020202"],
641 [0], [stdout], [])
642done
643BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
644
645# now enable the bfd on p1 again.
646AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=true], [0])
647# advance clock by 5000ms. and p1 and p0 should be all up.
8661af79 648ovs-appctl time/warp 5000 500
34c88624
AW
649BFD_CHECK([p0], [true], [false], [none], [up], [Control Detection Time Expired], [none], [up], [No Diagnostic])
650BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [Control Detection Time Expired])
651BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
652
653# disable the bfd on p1 again.
654AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=false], [0])
655# advance clock long enough to trigger the demand_rx_bfd,
656# forwarding flag should go down since there is no bfd control packet
657# received during the demand_rx_bfd.
658for i in `seq 0 120`
659do
660 ovs-appctl time/warp 300
661 AT_CHECK([ovs-ofctl packet-out br1 3 2 "90e2ba01475000101856b2e80806000108000604000100101856b2e80202020300000000000002020202"],
662 [0], [stdout], [])
663done
664BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
665
666AT_CHECK([ovs-vsctl del-br br1], [0], [ignore])
667AT_CLEANUP
668
4905e2df 669# test bfd:flap_count.
309d9dac
AW
670# This test contains three part:
671# part 1. tests the flap_count on normal bfd monitored link.
672# part 2. tests the flap_count when forwarding override is used.
673# part 3. tests the flap_count when forwarding_if_rx is enabled.
4905e2df
AW
674AT_SETUP([bfd - flap_count])
675#Create 2 bridges connected by patch ports and enable bfd
676OVS_VSWITCHD_START([add-br br1 -- \
677 set bridge br1 datapath-type=dummy \
678 other-config:hwaddr=aa:55:aa:56:00:00 -- \
679 add-port br1 p1 -- set Interface p1 type=patch \
680 options:peer=p0 ofport_request=2 -- \
681 add-port br0 p0 -- set Interface p0 type=patch \
682 options:peer=p1 ofport_request=1 -- \
683 set Interface p0 bfd:enable=true bfd:min_tx=100 bfd:min_rx=100 -- \
684 set Interface p1 bfd:enable=true bfd:min_tx=100 bfd:min_rx=100])
685
686ovs-appctl time/stop
687
688# Part-1 wait for a while to stablize bfd.
8661af79 689ovs-appctl time/warp 10100 100
4905e2df
AW
690BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
691BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
692BFD_CHECK_TX([p0], [100ms], [100ms], [100ms])
693BFD_CHECK_RX([p0], [100ms], [100ms], [100ms])
694# both p0 and p1 should have flap_count = "1". since down->up.
695BFD_VSCTL_LIST_IFACE([p0], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["1"])
696BFD_VSCTL_LIST_IFACE([p1], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["1"])
697
698# turn bfd on p1 off, should increment the bfd:flap_count on p0.
699AT_CHECK([ovs-vsctl set interface p1 bfd:enable=false])
8661af79 700ovs-appctl time/warp 5000 100
4905e2df
AW
701BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
702BFD_VSCTL_LIST_IFACE([p0], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["2"])
703AT_CHECK([ovs-vsctl list interface p1 | sed -n "s/^.*flap_count=\(.*\), forwarding.*$/\1/p"])
704
705# turn bfd on p1 on again, should increment the bfd:flap_count on p0.
706# p1 should still have flap_count = "1", since it is reset.
707AT_CHECK([ovs-vsctl set interface p1 bfd:enable=true])
8661af79 708ovs-appctl time/warp 5000 100
4905e2df
AW
709BFD_VSCTL_LIST_IFACE([p0], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["3"])
710BFD_VSCTL_LIST_IFACE([p1], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["1"])
711
712
713# Part-2 now turn on the forwarding_override.
714AT_CHECK([ovs-appctl bfd/set-forwarding p0 true], [0], [dnl
715OK
716])
717
718# turn bfd on p1 off, should not increment the bfd:flap_count on p0, since forwarding_override is on.
719AT_CHECK([ovs-vsctl set interface p1 bfd:enable=false])
8661af79 720ovs-appctl time/warp 5000 100
4905e2df
AW
721BFD_CHECK([p0], [true], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
722BFD_VSCTL_LIST_IFACE([p0], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["3"])
723AT_CHECK([ovs-vsctl list interface p1 | sed -n "s/^.*flap_count=\(.*\), forwarding.*$/\1/p"])
724
725# turn bfd on p1 on again, should not increment the bfd:flap_count on p0, since forwarding override is on.
726# p1 should still have flap_count = "1", since it is reset.
727AT_CHECK([ovs-vsctl set interface p1 bfd:enable=true])
8661af79 728ovs-appctl time/warp 5000 100
4905e2df
AW
729BFD_VSCTL_LIST_IFACE([p0], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["3"])
730BFD_VSCTL_LIST_IFACE([p1], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["1"])
731
732# turn the forwarding_override back to normal.
733AT_CHECK([ovs-appctl bfd/set-forwarding p0 normal], [0], [dnl
734OK
735])
736
737# turn bfd on p1 off and on, should increment the bfd:flap_count on p0.
738AT_CHECK([ovs-vsctl set interface p1 bfd:enable=false])
8661af79 739ovs-appctl time/warp 5000 100
4905e2df 740AT_CHECK([ovs-vsctl set interface p1 bfd:enable=true])
8661af79 741ovs-appctl time/warp 5000 100
4905e2df
AW
742BFD_VSCTL_LIST_IFACE([p0], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["5"])
743BFD_VSCTL_LIST_IFACE([p1], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["1"])
744
745# Part-3 now turn on forwarding_if_rx.
746AT_CHECK([ovs-vsctl set Interface p0 bfd:forwarding_if_rx=true], [0])
8661af79 747ovs-appctl time/warp 1100 100
4905e2df
AW
748# disable the bfd on p1.
749AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=false], [0])
750
751# advance clock by 4000ms, while receiving packets.
752# the STATE should go DOWN, due to Control Detection Time Expired.
753# but forwarding flag should be true.
754for i in `seq 0 39`
755do
756 ovs-appctl time/warp 100
757 AT_CHECK([ovs-ofctl packet-out br1 3 2 "90e2ba01475000101856b2e80806000108000604000100101856b2e80202020300000000000002020202"],
758 [0], [stdout], [])
759done
760BFD_CHECK([p0], [true], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
761# flap_count should remain unchanged.
762BFD_VSCTL_LIST_IFACE([p0], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["5"])
763
34c88624 764# stop the traffic for more than 100 * bfd->cfm_min_rx ms, the forwarding flag of p0 should turn false.
4905e2df 765# and there should be the increment of flap_count.
8661af79 766ovs-appctl time/warp 12100 100
4905e2df
AW
767BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
768BFD_VSCTL_LIST_IFACE([p0], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["6"])
769
770# advance clock by 4000ms, and resume the traffic.
771for i in `seq 0 39`
772do
773 ovs-appctl time/warp 100
774 AT_CHECK([ovs-ofctl packet-out br1 3 2 "90e2ba01475000101856b2e80806000108000604000100101856b2e80202020300000000000002020202"],
775 [0], [stdout], [])
776done
34c88624 777# forwarding should be false, since there is still no bfd control packet received.
4905e2df 778BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
34c88624 779BFD_VSCTL_LIST_IFACE([p0], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["6"])
4905e2df
AW
780
781# turn on the bfd on p1.
782AT_CHECK([ovs-vsctl set interface p1 bfd:enable=true])
8661af79 783ovs-appctl time/warp 5000 100
4905e2df 784# even though there is no data traffic, since p1 bfd is on again, should increment the flap_count.
34c88624 785BFD_VSCTL_LIST_IFACE([p0], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["7"])
4905e2df
AW
786BFD_VSCTL_LIST_IFACE([p1], ["s/^.*flap_count=\(.*\), forwarding.*$/\1/p"], ["1"])
787
788OVS_VSWITCHD_STOP
8661af79 789AT_CLEANUP