> 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.
>
Exactly, it still compares the enum value rather than boolean value.
> ---
> 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
>
>
LGTM, thx,
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev