mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-11-09 12:48:43 +00:00
RIP partial reload never worked properly, running full reload always
This commit is contained in:
parent
9a520e364b
commit
915253be60
@ -969,9 +969,6 @@ rip_timer(timer *t)
|
|||||||
|
|
||||||
FIB_ITERATE_INIT(&fit, &p->rtable);
|
FIB_ITERATE_INIT(&fit, &p->rtable);
|
||||||
|
|
||||||
struct channel_import_request *cir = p->cir;
|
|
||||||
p->cir = NULL;
|
|
||||||
|
|
||||||
loop:
|
loop:
|
||||||
FIB_ITERATE_START(&p->rtable, &fit, struct rip_entry, en)
|
FIB_ITERATE_START(&p->rtable, &fit, struct rip_entry, en)
|
||||||
{
|
{
|
||||||
@ -993,7 +990,7 @@ rip_timer(timer *t)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Propagating eventual change */
|
/* 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
|
* We have to restart the iteration because there may be a cascade of
|
||||||
@ -1050,19 +1047,7 @@ rip_timer(timer *t)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while(cir)
|
tm_start(p->timer, MAX(next - now_, 100 MS));
|
||||||
{
|
|
||||||
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));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
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;
|
struct rip_proto *p = (struct rip_proto *) C->proto;
|
||||||
|
|
||||||
cir->next = p->cir;
|
/* Always reload full */
|
||||||
p->cir = cir;
|
if (cir)
|
||||||
|
CALL(cir->done, cir);
|
||||||
|
|
||||||
if (p->rt_reload)
|
if (p->rt_reload)
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -103,7 +103,6 @@ struct rip_proto
|
|||||||
|
|
||||||
struct tbf log_pkt_tbf; /* TBF for packet messages */
|
struct tbf log_pkt_tbf; /* TBF for packet messages */
|
||||||
struct tbf log_rte_tbf; /* TBF for RTE messages */
|
struct tbf log_rte_tbf; /* TBF for RTE messages */
|
||||||
struct channel_import_request *cir; /* Trie for partial reload */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rip_iface
|
struct rip_iface
|
||||||
|
Loading…
Reference in New Issue
Block a user