From: Ondrej Zajicek (work) Date: Thu, 12 Nov 2020 01:37:42 +0000 (+0100) Subject: BFD: Fix superfluous reconfiguration of sessions X-Git-Tag: v2.0.8~48 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=99ad208dd73d357156672a53f48b77dcf6515c30;p=thirdparty%2Fbird.git BFD: Fix superfluous reconfiguration of sessions --- diff --git a/proto/bfd/bfd.c b/proto/bfd/bfd.c index 417263ef6..a8814382c 100644 --- a/proto/bfd/bfd.c +++ b/proto/bfd/bfd.c @@ -607,12 +607,20 @@ bfd_free_iface(struct bfd_iface *ifa) static void bfd_reconfigure_iface(struct bfd_proto *p, struct bfd_iface *ifa, struct bfd_config *nc) { - struct bfd_iface_config *nic = bfd_find_iface_config(nc, ifa->iface); - ifa->changed = !!memcmp(nic, ifa->cf, sizeof(struct bfd_iface_config)); + struct bfd_iface_config *new = bfd_find_iface_config(nc, ifa->iface); + struct bfd_iface_config *old = ifa->cf; + + /* Check options that are handled in bfd_reconfigure_session() */ + ifa->changed = + (new->min_rx_int != old->min_rx_int) || + (new->min_tx_int != old->min_tx_int) || + (new->idle_tx_int != old->idle_tx_int) || + (new->multiplier != old->multiplier) || + (new->passive != old->passive); /* This should be probably changed to not access ifa->cf from the BFD thread */ birdloop_enter(p->loop); - ifa->cf = nic; + ifa->cf = new; birdloop_leave(p->loop); }