diff --git a/src/routing/static-route-manager.cc b/src/routing/static-route-manager.cc index 3c37389cf..62dfc5136 100644 --- a/src/routing/static-route-manager.cc +++ b/src/routing/static-route-manager.cc @@ -56,6 +56,16 @@ SPFVertex::SPFVertex (StaticRouterLSA* lsa) : SPFVertex::~SPFVertex () { + for ( t_listOfSPFVertex::iterator i = m_children.begin (); + i != m_children.end (); + i++) + { + SPFVertex *p = *i; + delete p; + p = 0; + *i = 0; + } + m_children.clear(); } StaticRouteManagerLSDB::~StaticRouteManagerLSDB() @@ -502,7 +512,7 @@ StaticRouteManager::SPFCalculate(Ipv4Address root) // Second stage of SPF calculation procedure's // NOTYET: ospf_spf_process_stubs (area, area->spf, new_table); - DeleteSPFVertexChain(m_spfroot); + delete m_spfroot; m_spfroot = 0; } @@ -622,15 +632,6 @@ StaticRouteManager::SPFVertexAddParent(SPFVertex* v) v->m_parent->m_children.push_back(v); } -void -StaticRouteManager::DeleteSPFVertexChain(SPFVertex* spfroot) -{ - // spfroot is the root of all SPFVertex created during the SPF process - // each vertex has a list of children - // Recursively, delete all of the SPFVertex children of each SPFVertex - // then delete root itself -} - } // namespace ns3 #ifdef RUN_SELF_TESTS @@ -819,12 +820,11 @@ StaticRouteManagerTest::RunTests (void) srmlsdb->Insert(lsa3->m_linkStateId, lsa3); NS_ASSERT(lsa2 == srmlsdb->GetLSA(lsa2->m_linkStateId)); - // We need a dummy node to populate the routing tables - Ptr n2 = Create (); - // XXX next, calculate routes based on the manually created LSDB StaticRouteManager* srm = new StaticRouteManager(); - srm->DebugUseLsdb (srmlsdb); + srm->DebugUseLsdb (srmlsdb); // manually add in an LSDB + // Note-- this will succeed without any nodes in the topology + // because the NodeList is empty srm->DebugSPFCalculate(lsa0->m_linkStateId); // node n0 // This delete clears the srm, which deletes the LSDB, which clears diff --git a/src/routing/static-route-manager.h b/src/routing/static-route-manager.h index 40105d464..2f47d0b40 100644 --- a/src/routing/static-route-manager.h +++ b/src/routing/static-route-manager.h @@ -133,7 +133,6 @@ private: int SPFNexthopCalculation (SPFVertex* v, SPFVertex* w, StaticRouterLinkRecord* l, uint32_t distance); void SPFVertexAddParent(SPFVertex* v); - void DeleteSPFVertexChain(SPFVertex* spfroot); StaticRouterLinkRecord* SPFGetNextLink(SPFVertex* v, SPFVertex* w, StaticRouterLinkRecord* prev_link); void SPFIntraAddRouter(SPFVertex* v);