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

OSPF partial reload never worked properly, running full reload always

This commit is contained in:
Maria Matejka 2024-05-10 16:14:54 +02:00
parent b5f803ce4a
commit 030044b2f6
3 changed files with 4 additions and 17 deletions

View File

@ -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;

View File

@ -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 */

View File

@ -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;
}
@ -2017,16 +2016,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)
{
@ -2126,13 +2120,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 */