[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