summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Filip <feela@network.cz>2013-02-21 00:44:59 +0100
committerOndrej Filip <feela@network.cz>2013-02-21 00:44:59 +0100
commit2bf59bf4d3e4fcaff489d3445134e5e2e2af9cf6 (patch)
treec6c29257c75250f534c70763645e88dfe1a8df2a
parent9d969be5f2d867704e82bd7d6c8049623d50708f (diff)
Hotfix to solve an issue with delaying timers reported by Aleksey Chudov.
-rw-r--r--doc/bird.sgml4
-rw-r--r--proto/rip/rip.c12
2 files changed, 11 insertions, 5 deletions
diff --git a/doc/bird.sgml b/doc/bird.sgml
index 1baa1528..893d3bfa 100644
--- a/doc/bird.sgml
+++ b/doc/bird.sgml
@@ -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; };
diff --git a/proto/rip/rip.c b/proto/rip/rip.c
index 281296a5..4b303305 100644
--- a/proto/rip/rip.c
+++ b/proto/rip/rip.c
@@ -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 );
}