mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-02 14:40:53 +00:00
ospf6d: fix flushing of all LSAs when NSSA is unconfigured
Once NSSA is unconfigured on an area, all self-originated Type-7 LSAs need to be flushed. The existing code was iterating over the LSDB in the wrong way, causing ospf6_nssa_flush_area() to flush LSAs of all types. Use the ALL_LSDB_TYPED_ADVRTR macro to perform the intended iteration correctly. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
bb257321b2
commit
ccfffce4a0
@ -1130,18 +1130,17 @@ static void ospf6_nssa_flush_area(struct ospf6_area *area)
|
||||
uint16_t type;
|
||||
struct ospf6_lsa *lsa = NULL, *type5 = NULL;
|
||||
struct ospf6 *ospf6 = area->ospf6;
|
||||
const struct route_node *rt = NULL;
|
||||
|
||||
if (IS_OSPF6_DEBUG_NSSA)
|
||||
zlog_debug("%s: area %s", __func__, area->name);
|
||||
|
||||
/* Flush the NSSA LSA */
|
||||
type = htons(OSPF6_LSTYPE_TYPE_7);
|
||||
rt = ospf6_lsdb_head(area->lsdb_self, 0, type, ospf6->router_id, &lsa);
|
||||
while (lsa) {
|
||||
for (ALL_LSDB_TYPED_ADVRTR(area->lsdb, type, ospf6->router_id, lsa)) {
|
||||
lsa->header->age = htons(OSPF_LSA_MAXAGE);
|
||||
SET_FLAG(lsa->flag, OSPF6_LSA_FLUSH);
|
||||
ospf6_flood(NULL, lsa);
|
||||
|
||||
/* Flush the translated LSA */
|
||||
if (ospf6_check_and_set_router_abr(ospf6)) {
|
||||
type = htons(OSPF6_LSTYPE_AS_EXTERNAL);
|
||||
@ -1155,7 +1154,6 @@ static void ospf6_nssa_flush_area(struct ospf6_area *area)
|
||||
ospf6_flood(NULL, type5);
|
||||
}
|
||||
}
|
||||
lsa = ospf6_lsdb_next(rt, lsa);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user