diff options
author | Ondrej Filip <feela@network.cz> | 2013-02-21 00:44:59 +0100 |
---|---|---|
committer | Ondrej Filip <feela@network.cz> | 2013-02-21 00:44:59 +0100 |
commit | 2bf59bf4d3e4fcaff489d3445134e5e2e2af9cf6 (patch) | |
tree | c6c29257c75250f534c70763645e88dfe1a8df2a | |
parent | 9d969be5f2d867704e82bd7d6c8049623d50708f (diff) |
Hotfix to solve an issue with delaying timers reported by Aleksey Chudov.
-rw-r--r-- | doc/bird.sgml | 4 | ||||
-rw-r--r-- | proto/rip/rip.c | 12 |
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 ); } |