]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Hotfix to solve an issue with delaying timers reported by Aleksey Chudov.
authorOndrej Filip <feela@network.cz>
Wed, 20 Feb 2013 23:44:59 +0000 (00:44 +0100)
committerOndrej Filip <feela@network.cz>
Wed, 20 Feb 2013 23:44:59 +0000 (00:44 +0100)
doc/bird.sgml
proto/rip/rip.c

index 1baa1528e3cfb77d7d4eb5ae32ea36103b78935a..893d3bfaba03feabe044134462cec12747770758 100644 (file)
@@ -2734,7 +2734,7 @@ other than equally configured BIRD. I have warned you.
        <tag>period <M>number</M>
          </tag>specifies the number of seconds between periodic updates. Default is 30 seconds. A lower
          number will mean faster convergence but bigger network
-         load. Do not use values lower than 10.
+         load. Do not use values lower than 12.
 
        <tag>timeout time <M>number</M>
          </tag>specifies how old route has to be to be considered unreachable. Default is 4*<cf/period/.
@@ -2764,7 +2764,7 @@ other than equally configured BIRD. I have warned you.
 protocol rip MyRIP_test {
         debug all;
         port 1520;
-        period 10;
+        period 12;
         garbage time 60;
         interface "eth0" { metric 3; mode multicast; };
        interface "eth*" { metric 2; mode broadcast; };
index 281296a50a0450a762380fca5f1aea26396a6844..4b303305e531a1c09867438e46141e6d23e75eab 100644 (file)
@@ -596,8 +596,12 @@ rip_start(struct proto *p)
   init_list( &P->interfaces );
   P->timer = tm_new( p->pool );
   P->timer->data = p;
-  P->timer->randomize = 5;
-  P->timer->recurrent = (P_CF->period / 6)+1; 
+  P->timer->randomize = 2;
+  P->timer->recurrent = (P_CF->period / 6) - 1; 
+  if (P_CF->period < 12) {
+    log(L_WARN "Period %d is too low. So I am using 12 which is the lowest possible value.", P_CF->period);
+    P->timer->recurrent = 1;
+  }
   P->timer->hook = rip_timer;
   tm_start( P->timer, 5 );
   rif = new_iface(p, NULL, 0, NULL);   /* Initialize dummy interface */
@@ -956,9 +960,11 @@ rip_rte_insert(net *net UNUSED, rte *rte)
 static void
 rip_rte_remove(net *net UNUSED, rte *rte)
 {
-  // struct proto *p = rte->attrs->proto;
+#ifdef LOCAL_DEBUG
+  struct proto *p = rte->attrs->proto;
   CHK_MAGIC;
   DBG( "rip_rte_remove: %p\n", rte );
+#endif
   rem_node( &rte->u.rip.garbage );
 }