summaryrefslogtreecommitdiffstats
path: root/ospfd
diff options
context:
space:
mode:
authorMobashshera Rasool <mrasool@vmware.com>2021-08-16 13:27:45 +0200
committerMobashshera Rasool <mrasool@vmware.com>2021-08-17 11:15:42 +0200
commitd2e8400570e350e73fd54e257f704a5ad6878d6a (patch)
tree91004754c87e3beec996e6c9fdae4957011e8c10 /ospfd
parentMerge pull request #9265 from ton31337/fix/extcommunity_lb_route-map_persistent (diff)
downloadfrr-d2e8400570e350e73fd54e257f704a5ad6878d6a.tar.xz
frr-d2e8400570e350e73fd54e257f704a5ad6878d6a.zip
ospfd: Summarised External LSA is not flushed in one scenario
Fix CI Failure test_ospf_type5_summary_tc45_p0 Problem Statement: ================== Summarised LSA is not flushed in OSPFv2 in below scenario: 1. Configure summary-address in ospfv2 2. redistribute static and connected. 3. Check the LSAs are received on neighbor. 4. Now remove all OSPFv2 configs, so neighbor will still have the summarised LSA. 5. Configure router ospf with redistribute static and connected. 6. Check the DB, summarised LSA is present although the configuration is not present. 7. Now configure the summary-address and remove the configuration after sometime. 8. The summarised LSA will be still present. RCA: ================== When self originated LSA is received from the neighbor and that LSA is summarised one, the LSA is refreshed but a flag is not set due to which it was not able to remove it later. Fix: ================== Set the originated flag when refreshing summarised LSA. Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
Diffstat (limited to 'ospfd')
-rw-r--r--ospfd/ospf_flood.c2
-rw-r--r--ospfd/ospf_lsa.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/ospfd/ospf_flood.c b/ospfd/ospf_flood.c
index 7fddb65a8..8f9153d76 100644
--- a/ospfd/ospf_flood.c
+++ b/ospfd/ospf_flood.c
@@ -267,6 +267,8 @@ static void ospf_process_self_originated_lsa(struct ospf *ospf,
ospf_external_lsa_refresh(ospf, new, &ei_aggr,
LSA_REFRESH_FORCE, true);
+ SET_FLAG(aggr->flags,
+ OSPF_EXTERNAL_AGGRT_ORIGINATED);
} else
ospf_lsa_flush_as(ospf, new);
}
diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c
index 9ef2a6520..d209ae053 100644
--- a/ospfd/ospf_lsa.c
+++ b/ospfd/ospf_lsa.c
@@ -3631,6 +3631,8 @@ struct ospf_lsa *ospf_lsa_refresh(struct ospf *ospf, struct ospf_lsa *lsa)
ospf_external_lsa_refresh(ospf, lsa, &ei_aggr,
LSA_REFRESH_FORCE, true);
+ SET_FLAG(aggr->flags,
+ OSPF_EXTERNAL_AGGRT_ORIGINATED);
} else
ospf_lsa_flush_as(ospf, lsa);
}