mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-14 16:29:32 +00:00
ospf6d: be careful to not refresh translated Type-5 LSAs twice
The ABR task already takes care of refreshing translated Type-5 LSAs that correspond to self-originated Type-7 LSAs. There's no need to do that in ospf_external_lsa_install() as well. The ospfd NSSA code takes the same precaution. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
5f2fe4bb77
commit
9e49d1aca2
@ -266,10 +266,14 @@ void ospf6_decrement_retrans_count(struct ospf6_lsa *lsa)
|
|||||||
/* RFC2328 section 13.2 Installing LSAs in the database */
|
/* RFC2328 section 13.2 Installing LSAs in the database */
|
||||||
void ospf6_install_lsa(struct ospf6_lsa *lsa)
|
void ospf6_install_lsa(struct ospf6_lsa *lsa)
|
||||||
{
|
{
|
||||||
|
struct ospf6 *ospf6;
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
struct ospf6_lsa *old;
|
struct ospf6_lsa *old;
|
||||||
struct ospf6_area *area = NULL;
|
struct ospf6_area *area = NULL;
|
||||||
|
|
||||||
|
ospf6 = ospf6_get_by_lsdb(lsa);
|
||||||
|
assert(ospf6);
|
||||||
|
|
||||||
/* Remove the old instance from all neighbors' Link state
|
/* Remove the old instance from all neighbors' Link state
|
||||||
retransmission list (RFC2328 13.2 last paragraph) */
|
retransmission list (RFC2328 13.2 last paragraph) */
|
||||||
old = ospf6_lsdb_lookup(lsa->header->type, lsa->header->id,
|
old = ospf6_lsdb_lookup(lsa->header->type, lsa->header->id,
|
||||||
@ -330,20 +334,14 @@ void ospf6_install_lsa(struct ospf6_lsa *lsa)
|
|||||||
&& !CHECK_FLAG(lsa->flag, OSPF6_LSA_DUPLICATE)) {
|
&& !CHECK_FLAG(lsa->flag, OSPF6_LSA_DUPLICATE)) {
|
||||||
|
|
||||||
/* check if it is new lsa ? or existing lsa got modified ?*/
|
/* check if it is new lsa ? or existing lsa got modified ?*/
|
||||||
if (!old || OSPF6_LSA_IS_CHANGED(old, lsa)) {
|
if (!old || OSPF6_LSA_IS_CHANGED(old, lsa))
|
||||||
struct ospf6 *ospf6;
|
|
||||||
|
|
||||||
ospf6 = ospf6_get_by_lsdb(lsa);
|
|
||||||
|
|
||||||
assert(ospf6);
|
|
||||||
|
|
||||||
ospf6_helper_handle_topo_chg(ospf6, lsa);
|
ospf6_helper_handle_topo_chg(ospf6, lsa);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ospf6_lsdb_add(lsa, lsa->lsdb);
|
ospf6_lsdb_add(lsa, lsa->lsdb);
|
||||||
|
|
||||||
if (ntohs(lsa->header->type) == OSPF6_LSTYPE_TYPE_7) {
|
if (ntohs(lsa->header->type) == OSPF6_LSTYPE_TYPE_7
|
||||||
|
&& lsa->header->adv_router != ospf6->router_id) {
|
||||||
area = OSPF6_AREA(lsa->lsdb->data);
|
area = OSPF6_AREA(lsa->lsdb->data);
|
||||||
ospf6_translated_nssa_refresh(area, lsa, NULL);
|
ospf6_translated_nssa_refresh(area, lsa, NULL);
|
||||||
ospf6_schedule_abr_task(area->ospf6);
|
ospf6_schedule_abr_task(area->ospf6);
|
||||||
|
Loading…
Reference in New Issue
Block a user