mirror of
				https://gitlab.labs.nic.cz/labs/bird.git
				synced 2024-05-11 16:54:54 +00:00 
			
		
		
		
	BFD: Fix superfluous reconfiguration of sessions
This commit is contained in:
		@@ -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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user