From 1ad312703f930cfbf1fbf5cb5c4c28d2db3c4268 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Mon, 31 Aug 2020 22:36:54 +0200 Subject: [PATCH] ns3: get ride of the IPV4addr global vector --- src/surf/network_ns3.cpp | 21 +++------------------ src/surf/network_ns3.hpp | 2 +- src/surf/ns3/ns3_simulator.hpp | 1 + 3 files changed, 5 insertions(+), 19 deletions(-) diff --git a/src/surf/network_ns3.cpp b/src/surf/network_ns3.cpp index 1ba73e04d7..3c49279261 100644 --- a/src/surf/network_ns3.cpp +++ b/src/surf/network_ns3.cpp @@ -34,8 +34,6 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(ns3, surf, "Logging specific to the SURF network ns-3 module"); -std::vector IPV4addr; - /***************** * Crude globals * *****************/ @@ -149,8 +147,6 @@ static void routeCreation_cb(bool symmetrical, simgrid::kernel::routing::NetPoin /* Create the ns3 topology based on routing strategy */ static void postparse_cb() { - IPV4addr.shrink_to_fit(); - ns3::GlobalRouteManager::BuildGlobalRoutingDatabase(); ns3::GlobalRouteManager::InitializeRoutes(); } @@ -193,10 +189,6 @@ NetworkNS3Model::NetworkNS3Model() : NetworkModel(Model::UpdateAlgo::FULL) s4u::NetZone::on_route_creation.connect(&routeCreation_cb); } -NetworkNS3Model::~NetworkNS3Model() { - IPV4addr.clear(); -} - LinkImpl* NetworkNS3Model::create_link(const std::string& name, const std::vector& bandwidths, double latency, s4u::Link::SharingPolicy policy) { @@ -353,9 +345,7 @@ NetworkNS3Action::NetworkNS3Action(Model* model, double totalBytes, s4u::Host* s ns3::Ptr src_node = src->get_netpoint()->extension()->ns3_node_; ns3::Ptr dst_node = dst->get_netpoint()->extension()->ns3_node_; - xbt_assert(node2 < IPV4addr.size(), "Element %s is unknown to ns-3. Is it connected to any one-hop link?", - dst->get_netpoint()->get_cname()); - std::string& addr = IPV4addr[node2]; + std::string& addr = dst->get_netpoint()->extension()->ipv4_address_; xbt_assert(not addr.empty(), "Element %s is unknown to ns-3. Is it connected to any one-hop link?", dst->get_netpoint()->get_cname()); @@ -485,13 +475,8 @@ void ns3_add_direct_route(NetPointNs3* src, NetPointNs3* dst, double bw, double XBT_DEBUG("\tInterface stack '%s'", addr.c_str()); auto addresses = address.Assign(netA); - if (IPV4addr.size() <= (unsigned)srcNum) - IPV4addr.resize(srcNum + 1); - IPV4addr[srcNum] = transformIpv4Address(addresses.GetAddress(0)); - - if (IPV4addr.size() <= (unsigned)dstNum) - IPV4addr.resize(dstNum + 1); - IPV4addr[dstNum] = transformIpv4Address(addresses.GetAddress(1)); + src->ipv4_address_ = transformIpv4Address(addresses.GetAddress(0)); + dst->ipv4_address_ = transformIpv4Address(addresses.GetAddress(1)); if (number_of_links == 255){ xbt_assert(number_of_networks < 255, "Number of links and networks exceed 255*255"); diff --git a/src/surf/network_ns3.hpp b/src/surf/network_ns3.hpp index 4e4defdb84..abd978b2f9 100644 --- a/src/surf/network_ns3.hpp +++ b/src/surf/network_ns3.hpp @@ -17,7 +17,7 @@ namespace resource { class NetworkNS3Model : public NetworkModel { public: NetworkNS3Model(); - ~NetworkNS3Model(); + ~NetworkNS3Model() = default; LinkImpl* create_link(const std::string& name, const std::vector& bandwidth, double latency, s4u::Link::SharingPolicy policy) override; Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) override; diff --git a/src/surf/ns3/ns3_simulator.hpp b/src/surf/ns3/ns3_simulator.hpp index 02b613e742..3c508aa328 100644 --- a/src/surf/ns3/ns3_simulator.hpp +++ b/src/surf/ns3/ns3_simulator.hpp @@ -21,6 +21,7 @@ public: explicit NetPointNs3(); int node_num; ns3::Ptr ns3_node_; + std::string ipv4_address_; }; XBT_PUBLIC void ns3_initialize(std::string TcpProtocol); -- 2.20.1