Commit 99ad208d authored by Ondrej Zajicek (work)'s avatar Ondrej Zajicek (work)
Browse files

BFD: Fix superfluous reconfiguration of sessions

parent 9d3fc306
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -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);
}