]> git.puffer.fish Git - mirror/frr.git/commitdiff
ospfd: Summarised External LSA is not flushed in one scenario 9433/head
authorMobashshera Rasool <mrasool@vmware.com>
Mon, 16 Aug 2021 11:27:45 +0000 (04:27 -0700)
committermergify-bot <noreply@mergify.io>
Wed, 18 Aug 2021 07:19:15 +0000 (07:19 +0000)
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>
(cherry picked from commit d2e8400570e350e73fd54e257f704a5ad6878d6a)

ospfd/ospf_flood.c
ospfd/ospf_lsa.c

index 6c1ac6761af8f525bb9035015be23a2e37302251..ddd39a8fb1e6f6b40cfa5ecae5fe93764ae3c4e7 100644 (file)
@@ -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);
                }
index c850df55bb5892a4799f601d5bd619810ed22a1b..156c1e60c8f7cf0e80f26a9356730f764df89b99 100644 (file)
@@ -3601,6 +3601,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);
                }