Sounds good, I'll merge this shortly. Ethan
On Wed, Jan 8, 2014 at 6:52 PM, Alex Wang <[email protected]> wrote: > Sorry, forgot to add the v2, > > One additional point, we cannot directly call "bfd_set_state(bfd, > bfd->state, bfd->diag)" since that will not work when we reset the > cpath_down. > > Thanks, > > > On Wed, Jan 8, 2014 at 6:51 PM, Alex Wang <[email protected]> wrote: >> >> Commit ccc09689 (bfd: Implement Bidirectional Forwarding Detection.) >> set the bfd local diagnostic to "Concatenated Path Down" in response >> to the set of cpath_down only when the current local diagnostic is >> "None". However, since the bfd local diagnostic is not reset when >> the bfd state is restored from last erroneous state, the set of >> cpath_down will not update the local diagnostic in that case. >> >> This commit fixes the bug by always checking for local diagnostic >> change when cpath_down is set or reset. >> >> Bug #22625 >> >> Signed-off-by: Alex Wang <[email protected]> >> --- >> lib/bfd.c | 6 ++---- >> 1 file changed, 2 insertions(+), 4 deletions(-) >> >> diff --git a/lib/bfd.c b/lib/bfd.c >> index b8574d5..1b35ee4 100644 >> --- a/lib/bfd.c >> +++ b/lib/bfd.c >> @@ -403,9 +403,7 @@ bfd_configure(struct bfd *bfd, const char *name, const >> struct smap *cfg, >> cpath_down = smap_get_bool(cfg, "cpath_down", false); >> if (bfd->cpath_down != cpath_down) { >> bfd->cpath_down = cpath_down; >> - if (bfd->diag == DIAG_NONE || bfd->diag == DIAG_CPATH_DOWN) { >> - bfd_set_state(bfd, bfd->state, DIAG_NONE); >> - } >> + bfd_set_state(bfd, bfd->state, DIAG_NONE); >> need_poll = true; >> } >> >> @@ -1022,7 +1020,7 @@ static void >> bfd_set_state(struct bfd *bfd, enum state state, enum diag diag) >> OVS_REQUIRES(mutex) >> { >> - if (diag == DIAG_NONE && bfd->cpath_down) { >> + if (bfd->cpath_down) { >> diag = DIAG_CPATH_DOWN; >> } >> >> -- >> 1.7.9.5 >> > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
