tests: Add ovs-openflowd to programs that need valgrind wrappers.
[openvswitch] / lib / cfm.c
index 5a547d0d885018e2ae298ab5b16e60a69d9e884e..a504714cf5540e89f69db34e113634504960e0d4 100644 (file)
--- a/lib/cfm.c
+++ b/lib/cfm.c
@@ -174,11 +174,14 @@ cfm_run(struct cfm *cfm)
     if (timer_expired(&cfmi->fault_timer)) {
         bool fault;
         struct remote_mp *rmp;
+        long long int interval;
 
-        fault = now < cfmi->x_recv_time + cfm_fault_interval(cfmi);
+        interval = cfm_fault_interval(cfmi);
+        fault = now < cfmi->x_recv_time + interval;
 
         HMAP_FOR_EACH (rmp, node, &cfm->remote_mps) {
-            if (timer_expired_at(&cfmi->fault_timer, rmp->recv_time)) {
+            if (rmp->recv_time < timer_enabled_at(&cfmi->fault_timer, interval)
+                || timer_expired_at(&cfmi->fault_timer, rmp->recv_time)) {
                 rmp->fault = true;
             }
 
@@ -188,7 +191,7 @@ cfm_run(struct cfm *cfm)
         }
 
         cfm->fault = fault;
-        timer_set_duration(&cfmi->fault_timer, cfm_fault_interval(cfmi));
+        timer_set_duration(&cfmi->fault_timer, interval);
     }
 }