X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fcfm.c;h=a504714cf5540e89f69db34e113634504960e0d4;hb=58bd2941187c9df4717ab4f3c6fc3c78f3f25165;hp=5a547d0d885018e2ae298ab5b16e60a69d9e884e;hpb=c042664ff51c217c407899b889c10215ba9b3952;p=sliver-openvswitch.git diff --git a/lib/cfm.c b/lib/cfm.c index 5a547d0d8..a504714cf 100644 --- 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); } }