Read this commit message. Bugfix to fail failover.

Fast failover works.  Look at test/Test0.ml, which creates this trivial policy

port 2 -> port 1
port 3 -> port 1
port 1 -> port 2 `failover` port 3

build and run ./Test0.byte

$ make && ./Test0.byte

Start mininet with a 1-switch, 3-host topology:

$ sudo mn --topo=single,3 --controller=remote --switch=user --arp --mac

Start terminals on all three machines:

mininet> xterm h1 h2 h3

On h2 and h3, enable responses to broadcast pings:

h2 # echo 0 | tee /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

h3 # echo 0 | tee /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

On h1, start a broadcast ping:

h1 # ping -b 255.255.255.255

You'll see responses from 10.0.0.2, which is host 2, connected to port 2.
You should not see any responses from 10.0.0.3!

Back in Mininet, kill the link to host 2:

mininet> link s1 h2 down

You'll see that the ping is now getting responses from 10.0.0.3 instead.

If you bring the link back up, however, there is no change. It keeps
receiving from host 3.
rudimentary error handling