]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
KRT: Fixes route reload
authorOndrej Zajicek <santiago@crfreenet.org>
Sat, 25 Apr 2015 19:41:43 +0000 (21:41 +0200)
committerOndrej Zajicek <santiago@crfreenet.org>
Sat, 25 Apr 2015 19:41:43 +0000 (21:41 +0200)
Did not really worked

sysdep/unix/krt.c
sysdep/unix/krt.h

index 7cec28c8dfae2946555331f11609e6cf42ae09b1..efdf4bdd2361dbee5025b46f2280c34eeafdb81d 100644 (file)
@@ -451,7 +451,7 @@ again:
       *pbest = best->next;
       best->next = n->routes;
       n->routes = best;
-      if (best != old_best || !(n->n.flags & KRF_INSTALLED))
+      if (best != old_best || !(n->n.flags & KRF_INSTALLED) || p->reload)
        {
          DBG("%I/%d: announcing (metric=%d)\n", n->n.prefix, n->n.pxlen, best->u.krt.metric);
          krt_learn_announce_update(p, best);
@@ -461,6 +461,8 @@ again:
        DBG("%I/%d: uptodate (metric=%d)\n", n->n.prefix, n->n.pxlen, best->u.krt.metric);
     }
   FIB_ITERATE_END(f);
+
+  p->reload = 0;
 }
 
 static void
@@ -1031,7 +1033,10 @@ krt_reload_routes(struct proto *P)
   /* Although we keep learned routes in krt_table, we rather schedule a scan */
 
   if (KRT_CF->learn)
+  {
+    p->reload = 1;
     krt_scan_timer_kick(p);
+  }
 
   return 1;
 }
index 2cd23165612989d674568f0342045331fec10b81..f0fd6261d91f53ac3eef5ecf03fb93ab0f798507 100644 (file)
@@ -66,6 +66,7 @@ struct krt_proto {
   node krt_node;               /* Node in krt_proto_list */
   byte ready;                  /* Initial feed has been finished */
   byte initialized;            /* First scan has been finished */
+  byte reload;                 /* Next scan is doing reload */
 };
 
 extern pool *krt_pool;