1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00

Merge branch 'int-new' into nexthop-merged

This commit is contained in:
Jan Moskyto Matejka
2017-02-22 11:58:04 +01:00
39 changed files with 1284 additions and 455 deletions

View File

@@ -421,10 +421,9 @@ add_network(struct ospf_area *oa, net_addr *net, int metric, struct top_hash_ent
if (en == oa->rt)
{
/*
* Local stub networks does not have proper iface in en->nhi
* (because they all have common top_hash_entry en).
* We have to find iface responsible for that stub network.
* Configured stubnets does not have any iface. They will
* Local stub networks do not have proper iface in en->nhi (because they all
* have common top_hash_entry en). We have to find iface responsible for
* that stub network. Configured stubnets do not have any iface. They will
* be removed in rt_sync().
*/
@@ -1428,7 +1427,6 @@ ospf_ext_spf(struct ospf_proto *p)
struct top_hash_entry *en;
struct ospf_lsa_ext_local rt;
ort *nf1, *nf2;
orta nfa = {};
u32 br_metric;
struct ospf_area *atmp;
@@ -1436,6 +1434,8 @@ ospf_ext_spf(struct ospf_proto *p)
WALK_SLIST(en, p->lsal)
{
orta nfa = {};
/* 16.4. (1) */
if ((en->lsa_type != LSA_T_EXT) && (en->lsa_type != LSA_T_NSSA))
continue;
@@ -1577,6 +1577,7 @@ ospf_rt_reset(struct ospf_proto *p)
FIB_WALK(&p->rtf, ort, ri)
{
ri->area_net = 0;
ri->keep = 0;
reset_ri(ri);
}
FIB_WALK_END;
@@ -1939,9 +1940,12 @@ again1:
}
}
/* Remove configured stubnets */
if (!nf->n.nhs)
/* Remove configured stubnets but keep the entries */
if (nf->n.type && !nf->n.nhs)
{
reset_ri(nf);
nf->keep = 1;
}
if (nf->n.type) /* Add the route */
{
@@ -1981,7 +1985,7 @@ again1:
}
/* Remove unused rt entry, some special entries are persistent */
if (!nf->n.type && !nf->external_rte && !nf->area_net)
if (!nf->n.type && !nf->external_rte && !nf->area_net && !nf->keep)
{
if (nf->lsa_id)
idm_free(&p->idm, nf->lsa_id);