0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-09-19 11:55:21 +00:00

RIP partial reload never worked properly, running full reload always

This commit is contained in:
Maria Matejka 2024-05-10 16:32:08 +02:00
parent 9a520e364b
commit 915253be60
2 changed files with 5 additions and 20 deletions

View File

@ -969,9 +969,6 @@ rip_timer(timer *t)
FIB_ITERATE_INIT(&fit, &p->rtable);
struct channel_import_request *cir = p->cir;
p->cir = NULL;
loop:
FIB_ITERATE_START(&p->rtable, &fit, struct rip_entry, en)
{
@ -993,7 +990,7 @@ rip_timer(timer *t)
}
/* Propagating eventual change */
if ((changed || p->rt_reload) && (cir == NULL || channel_import_request_prefilter(cir, en->n.addr)))
if (changed || p->rt_reload)
{
/*
* We have to restart the iteration because there may be a cascade of
@ -1050,19 +1047,7 @@ rip_timer(timer *t)
}
}
while(cir)
{
struct channel_import_request *next_cir = cir->next;
cir->done(cir);
cir = next_cir;
}
if (p->cir)
{
p->rt_reload = 1;
rip_kick_timer(p);
}
else
tm_start(p->timer, MAX(next - now_, 100 MS));
tm_start(p->timer, MAX(next - now_, 100 MS));
}
static inline void
@ -1168,8 +1153,9 @@ rip_reload_routes(struct channel *C, struct channel_import_request *cir)
{
struct rip_proto *p = (struct rip_proto *) C->proto;
cir->next = p->cir;
p->cir = cir;
/* Always reload full */
if (cir)
CALL(cir->done, cir);
if (p->rt_reload)
return 1;

View File

@ -103,7 +103,6 @@ struct rip_proto
struct tbf log_pkt_tbf; /* TBF for packet messages */
struct tbf log_rte_tbf; /* TBF for RTE messages */
struct channel_import_request *cir; /* Trie for partial reload */
};
struct rip_iface