mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-11-08 12:18:42 +00:00
OSPF partial reload never worked properly, running full reload always
This commit is contained in:
parent
cd9d799abd
commit
43d48ff9fe
@ -436,8 +436,9 @@ static int
|
||||
ospf_reload_routes(struct channel *C, struct channel_import_request *cir)
|
||||
{
|
||||
struct ospf_proto *p = (struct ospf_proto *) C->proto;
|
||||
cir->next = p->cir;
|
||||
p->cir = cir;
|
||||
|
||||
if (cir)
|
||||
CALL(cir->done, cir);
|
||||
|
||||
if (p->calcrt == 2)
|
||||
return 1;
|
||||
|
@ -219,7 +219,6 @@ struct ospf_proto
|
||||
slist lsal; /* List of all LSA's */
|
||||
int calcrt; /* Routing table calculation scheduled?
|
||||
0=no, 1=normal, 2=forced reload */
|
||||
struct channel_import_request *cir; /* Struct with trie for partial reload */
|
||||
list iface_list; /* List of OSPF interfaces (struct ospf_iface) */
|
||||
list area_list; /* List of OSPF areas (struct ospf_area) */
|
||||
int areano; /* Number of area I belong to */
|
||||
|
@ -1696,8 +1696,7 @@ ospf_rt_spf(struct ospf_proto *p)
|
||||
rt_sync(p);
|
||||
lp_flush(p->nhpool);
|
||||
|
||||
if (p->cir == NULL) /* If there is no more cir waiting for reload */
|
||||
p->calcrt = 0;
|
||||
p->calcrt = 0;
|
||||
}
|
||||
|
||||
|
||||
@ -2022,16 +2021,11 @@ rt_sync(struct ospf_proto *p)
|
||||
|
||||
OSPF_TRACE(D_EVENTS, "Starting routing table synchronization");
|
||||
|
||||
struct channel_import_request *cir = p->cir;
|
||||
p->cir = NULL;
|
||||
|
||||
DBG("Now syncing my rt table with nest's\n");
|
||||
FIB_ITERATE_INIT(&fit, fib);
|
||||
again1:
|
||||
FIB_ITERATE_START(fib, &fit, ort, nf)
|
||||
{
|
||||
if (cir && !channel_import_request_prefilter(cir, nf->fn.addr))
|
||||
continue;
|
||||
/* Sanity check of next-hop addresses, failure should not happen */
|
||||
if (nf->n.type && nf->n.nhs)
|
||||
{
|
||||
@ -2131,13 +2125,6 @@ again1:
|
||||
}
|
||||
FIB_ITERATE_END;
|
||||
|
||||
while(cir)
|
||||
{
|
||||
struct channel_import_request *next = cir->next;
|
||||
cir->done(cir);
|
||||
cir = next;
|
||||
}
|
||||
|
||||
WALK_LIST(oa, p->area_list)
|
||||
{
|
||||
/* Cleanup ASBR hash tables */
|
||||
|
Loading…
Reference in New Issue
Block a user