Previously, the flap count logic for CFM was dependent on the state of the logging facility. This patch ensures flaps are always counted when there is a transition between non-fault and fault (and vice versa).
Found by inspection. Signed-off-by: Joe Stringer <[email protected]> --- v2: Don't modify cfm->fault logic After digging in a little further, I think that the only trouble was the above issue. With bools backed by ints in C, the other issue I was concerned about does not exist. The "old_cfm_fault != cfm->fault" logic checks if there has been a change in fault condition, and the existing flap check detects the flap transitions correctly. --- lib/cfm.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/cfm.c b/lib/cfm.c index d256a5f..9c65b34 100644 --- a/lib/cfm.c +++ b/lib/cfm.c @@ -480,16 +480,18 @@ cfm_run(struct cfm *cfm) OVS_EXCLUDED(mutex) cfm->fault |= CFM_FAULT_RECV; } - if (old_cfm_fault != cfm->fault && !VLOG_DROP_INFO(&rl)) { - struct ds ds = DS_EMPTY_INITIALIZER; - - ds_put_cstr(&ds, "from ["); - ds_put_cfm_fault(&ds, old_cfm_fault); - ds_put_cstr(&ds, "] to ["); - ds_put_cfm_fault(&ds, cfm->fault); - ds_put_char(&ds, ']'); - VLOG_INFO("%s: CFM faults changed %s.", cfm->name, ds_cstr(&ds)); - ds_destroy(&ds); + if (old_cfm_fault != cfm->fault) { + if (!VLOG_DROP_INFO(&rl)) { + struct ds ds = DS_EMPTY_INITIALIZER; + + ds_put_cstr(&ds, "from ["); + ds_put_cfm_fault(&ds, old_cfm_fault); + ds_put_cstr(&ds, "] to ["); + ds_put_cfm_fault(&ds, cfm->fault); + ds_put_char(&ds, ']'); + VLOG_INFO("%s: CFM faults changed %s.", cfm->name, ds_cstr(&ds)); + ds_destroy(&ds); + } /* If there is a flap, increments the counter. */ if (old_cfm_fault == false || cfm->fault == false) { -- 1.7.9.5 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
