]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Settle timer - minor changes
authorVojtech Vilimek <vojtech.vilimek@nic.cz>
Tue, 26 Jul 2022 12:53:21 +0000 (14:53 +0200)
committerVojtech Vilimek <vojtech.vilimek@nic.cz>
Tue, 26 Jul 2022 12:53:21 +0000 (14:53 +0200)
lib/timer.c
lib/timer.h
nest/rt-table.c

index ec8dd3e350b481adaad4cb505a13b0f4eaf65844..a975a3ef7f58cef5f40f927c91ebaf3a46620714 100644 (file)
@@ -382,14 +382,18 @@ tm_format_real_time(char *x, size_t max, const char *fmt, btime t)
  *  Settle timer
  */
 
-static btime
+static inline btime
 settled_time(struct settle_timer *st)
 {
+  ASSUME(st->base_settle_time != 0);
+  if (st->base_settle_time + *(st->max_settle_time) <
+      st->last_change + *(st->min_settle_time))
+    log(L_INFO "settle_timer will be triggered by MAX SETTLE TIME");
   return MIN_(st->last_change + *(st->min_settle_time),
              st->base_settle_time + *(st->max_settle_time));
 }
 
-void
+inline void
 settle_timer_changed(struct settle_timer *st)
 {
   st->last_change = current_time();
@@ -398,7 +402,6 @@ settle_timer_changed(struct settle_timer *st)
 void
 settle_timer(timer *t)
 {
-  log(L_INFO "settle_timer()");
   struct settle_timer *st = (void *) t;
 
   if (!st->base_settle_time)
@@ -421,7 +424,6 @@ settle_timer(timer *t)
 struct settle_timer *
 stm_new_timer(pool *p, void *data, struct settle_timer_class *class)
 {
-  log(L_INFO "stm_new_timer() creating new timer");
   struct settle_timer *st;
   st = mb_allocz(p, sizeof(struct settle_timer));
   st->class = class;
@@ -438,7 +440,6 @@ stm_new_timer(pool *p, void *data, struct settle_timer_class *class)
 void
 kick_settle_timer(struct settle_timer *st)
 {
-  log(L_INFO "kick_settle_timer()");
   ASSUME(st != NULL);
 
   st->base_settle_time = current_time();
index 89663ec4a74a5c194ec44130accc818c6822219b..00950e08f4fe5437c94176e8080c9246ce0d8f8e 100644 (file)
@@ -145,5 +145,6 @@ struct settle_timer_class {
 
 struct settle_timer *stm_new_timer(pool *p, void *data, struct settle_timer_class *class);
 void kick_settle_timer(struct settle_timer *st);
+void settle_timer_changed(struct settle_timer *st);
 
 #endif
index 3d11c7dc817956a136a94b9e15d8a612907b3078..428628ebc1d917645a3ada9c4d4549c9f9cd1dba 100644 (file)
@@ -1365,7 +1365,7 @@ rte_recalculate(struct rt_import_hook *c, net *net, rte *new, struct rte_src *sr
     stats->withdraws_ignored++;
 
   if (old_ok || new_ok)
-    table->settle_timer->last_change = current_time();
+    settle_timer_changed(table->settle_timer);
 
   if (table->config->sorted)
     {
@@ -2346,7 +2346,8 @@ rt_setup(pool *pp, struct rtable_config *cf)
   t->prune_timer = tm_new_init(p, rt_prune_timer, t, 0, 0);
   t->settle_timer = stm_new_timer(p, t, &rt_settle_class);
 
-  t->settle_timer->last_change = t->gc_time = current_time();
+  settle_timer_changed(t->settle_timer);
+  t->gc_time = current_time();
 
   t->rl_pipe = (struct tbf) TBF_DEFAULT_LOG_LIMITS;