[ovs-dev] [PATCH 2/2] bridge: Fix interpretation of 'health' member of struct ofproto_cfm_status.

Ethan Jackson ethan at nicira.com
Thu Mar 7 00:16:30 UTC 2013


Acked-by: Ethan Jackson <ethan at nicira.com>



On Wed, Mar 6, 2013 at 2:53 PM, Ben Pfaff <blp at nicira.com> wrote:

> Commit 9a9e3786b3a8 (ofproto: Merge all the CFM query functions into one.)
> mistakenly interpreted struct ofproto_cfm_status as always being in the
> range [0,100].  It can in fact take the value -1 if the health status is
> not currently well-defined.
>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
>  ofproto/ofproto.h |    9 +++++++--
>  vswitchd/bridge.c |    6 +++++-
>  2 files changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/ofproto/ofproto.h b/ofproto/ofproto.h
> index 3ea56df..5960d7b 100644
> --- a/ofproto/ofproto.h
> +++ b/ofproto/ofproto.h
> @@ -362,8 +362,8 @@ void ofproto_free_ofproto_controller_info(struct shash
> *);
>
>  /* CFM status query. */
>  struct ofproto_cfm_status {
> -    enum cfm_fault_reason faults; /* 0 if not faulted. */
> -    int health;                   /* Health status in [0,100] range. */
> +    /* 0 if not faulted, otherwise a combination of one or more reasons.
> */
> +    enum cfm_fault_reason faults;
>
>      /* 0 if the remote CFM endpoint is operationally down,
>       * 1 if the remote CFM endpoint is operationally up,
> @@ -371,6 +371,11 @@ struct ofproto_cfm_status {
>       * mode. */
>      int remote_opstate;
>
> +    /* Ordinarily a "health status" in the range 0...100 inclusive, with 0
> +     * being worst and 100 being best, or -1 if the health status is not
> +     * well-defined. */
> +    int health;
> +
>      /* MPIDs of remote maintenance points whose CCMs have been received.
> */
>      const uint64_t *rmps;
>      size_t n_rmps;
> diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
> index 311753d..f7932c7 100644
> --- a/vswitchd/bridge.c
> +++ b/vswitchd/bridge.c
> @@ -1779,7 +1779,11 @@ iface_refresh_cfm_stats(struct iface *iface)
>          ovsrec_interface_set_cfm_remote_mpids(cfg,
>                                                (const int64_t
> *)status.rmps,
>                                                status.n_rmps);
> -        ovsrec_interface_set_cfm_health(cfg, &cfm_health, 1);
> +        if (cfm_health >= 0) {
> +            ovsrec_interface_set_cfm_health(cfg, &cfm_health, 1);
> +        } else {
> +            ovsrec_interface_set_cfm_health(cfg, NULL, 0);
> +        }
>      }
>  }
>
> --
> 1.7.2.5
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-dev/attachments/20130306/0c5e1353/attachment-0003.html>


More information about the dev mailing list