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

Ben Pfaff blp at nicira.com
Thu Mar 7 00:25:27 UTC 2013


Thanks, I applied these to master.

On Wed, Mar 06, 2013 at 04:16:30PM -0800, Ethan Jackson wrote:
> 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
> >



More information about the dev mailing list