This can be a bug, when we configure bfd:min_rx and bfd:decay_min_rx together. (at the time we are in decay)
On Tue, Aug 13, 2013 at 4:51 PM, Alex Wang <al...@nicira.com> wrote: > Currently, when there are multiple bfd configuration changes, > the bfd_poll() will only update one change at a time with the > other side. This commit moves the call to bfd_poll() at the > end of configuration processing function, so that bfd_poll() > will update all configuration changes together. > > Signed-off-by: Alex Wang <al...@nicira.com> > --- > lib/bfd.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/lib/bfd.c b/lib/bfd.c > index 7c7c0b7..de85c7f 100644 > --- a/lib/bfd.c > +++ b/lib/bfd.c > @@ -261,7 +261,7 @@ bfd_configure(struct bfd *bfd, const char *name, const > struct smap *cfg) > static atomic_uint16_t udp_src = ATOMIC_VAR_INIT(0); > > long long int min_tx, min_rx; > - bool cpath_down; > + bool cpath_down, need_poll = false; > const char *hwaddr; > uint8_t ea[ETH_ADDR_LEN]; > > @@ -315,7 +315,7 @@ bfd_configure(struct bfd *bfd, const char *name, const > struct smap *cfg) > || (!bfd_in_poll(bfd) && bfd->cfg_min_tx < bfd->min_tx)) { > bfd->min_tx = bfd->cfg_min_tx; > } > - bfd_poll(bfd); > + need_poll = true; > } > > min_rx = smap_get_int(cfg, "min_rx", 1000); > @@ -326,7 +326,7 @@ bfd_configure(struct bfd *bfd, const char *name, const > struct smap *cfg) > || (!bfd_in_poll(bfd) && bfd->cfg_min_rx > bfd->min_rx)) { > bfd->min_rx = bfd->cfg_min_rx; > } > - bfd_poll(bfd); > + need_poll = true; > } > > cpath_down = smap_get_bool(cfg, "cpath_down", false); > @@ -335,7 +335,7 @@ bfd_configure(struct bfd *bfd, const char *name, const > struct smap *cfg) > if (bfd->diag == DIAG_NONE || bfd->diag == DIAG_CPATH_DOWN) { > bfd_set_state(bfd, bfd->state, DIAG_NONE); > } > - bfd_poll(bfd); > + need_poll = true; > } > > hwaddr = smap_get(cfg, "bfd_dst_mac"); > @@ -347,6 +347,9 @@ bfd_configure(struct bfd *bfd, const char *name, const > struct smap *cfg) > bfd->eth_dst_set = false; > } > > + if (need_poll) { > + bfd_poll(bfd); > + } > ovs_mutex_unlock(&mutex); > return bfd; > } > -- > 1.7.9.5 > >
_______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev