host.extension_set(NS3_EXTENSION_ID, ns3host);
}
-static void parse_ns3_add_link(sg_platf_link_cbarg_t link)
-{
- XBT_DEBUG("NS3_ADD_LINK '%s'",link->id);
-
- Link *l = surf_network_model->createLink(link->id, link->bandwidth, link->latency, link->policy, link->properties);
- if (link->bandwidth_trace)
- l->setBandwidthTrace(link->latency_trace);
- if (link->latency_trace)
- l->setLatencyTrace(link->latency_trace);
- if (link->state_trace)
- l->setStateTrace(link->state_trace);
-}
static void simgrid_ns3_add_router(simgrid::surf::NetCard* router)
{
const char* router_id = router->name();
//get the onelinks from the parsed platform
xbt_dynar_t onelink_routes = routing_platf->getOneLinkRoutes();
- if (!onelink_routes)
- xbt_die("There is no routes!");
- XBT_DEBUG("Have get_onelink_routes, found %ld routes",onelink_routes->used);
+
+ XBT_DEBUG("There is %ld one-link routes",onelink_routes->used);
//save them in trace file
simgrid::surf::Onelink *onelink;
unsigned int iter;
xbt_dynar_foreach(onelink_routes, iter, onelink) {
char *src = onelink->src_->name();
char *dst = onelink->dst_->name();
- simgrid::surf::LinkNS3 *link =
- static_cast<simgrid::surf::LinkNS3 *>(onelink->link_);
+ simgrid::surf::LinkNS3 *link = static_cast<simgrid::surf::LinkNS3 *>(onelink->link_);
if (strcmp(src,dst) && link->m_created){
XBT_DEBUG("Route from '%s' to '%s' with link '%s'", src, dst, link->getName());
}
}
-static void parse_ns3_end_platform(void)
-{
- ns3_end_platform();
-}
-
-static void define_callbacks_ns3(void)
-{
- simgrid::s4u::Host::onCreation.connect(simgrid_ns3_add_host);
- simgrid::surf::netcardCreatedCallbacks.connect(simgrid_ns3_add_router);
- simgrid::surf::on_link.connect (parse_ns3_add_link);
- simgrid::surf::on_cluster.connect (&parse_ns3_add_cluster);
- simgrid::surf::asCreatedCallbacks.connect(parse_ns3_add_AS);
- simgrid::surf::on_postparse.connect(&create_ns3_topology); //get_one_link_routes
- simgrid::surf::on_postparse.connect(&parse_ns3_end_platform); //InitializeRoutes
-}
-
/*********
* Model *
*********/
-static void free_ns3_link(void * elmts)
-{
- delete static_cast<simgrid::surf::LinkNS3*>(elmts);
-}
-
-static void free_ns3_host(void * elmts)
-{
- ns3_node_t host = static_cast<ns3_node_t>(elmts);
- free(host);
-}
-
void surf_network_model_init_NS3()
{
if (surf_network_model)
return;
surf_network_model = new simgrid::surf::NetworkNS3Model();
-
xbt_dynar_push(all_existing_models, &surf_network_model);
}
xbt_die("Impossible to initialize NS3 interface");
}
routing_model_create(NULL);
- define_callbacks_ns3();
+ simgrid::s4u::Host::onCreation.connect(simgrid_ns3_add_host);
+ simgrid::surf::netcardCreatedCallbacks.connect(simgrid_ns3_add_router);
+ simgrid::surf::on_link.connect(netlink_parse_init);
+ simgrid::surf::on_cluster.connect (&parse_ns3_add_cluster);
+ simgrid::surf::asCreatedCallbacks.connect(parse_ns3_add_AS);
+ simgrid::surf::on_postparse.connect(&create_ns3_topology); //get_one_link_routes
+ simgrid::surf::on_postparse.connect(&ns3_end_platform); //InitializeRoutes
- NS3_EXTENSION_ID = simgrid::s4u::Host::extension_create(free_ns3_host);
- NS3_ASR_LEVEL = xbt_lib_add_level(as_router_lib, free_ns3_host);
+ NS3_EXTENSION_ID = simgrid::s4u::Host::extension_create(xbt_free_f);
+ NS3_ASR_LEVEL = xbt_lib_add_level(as_router_lib, xbt_free_f);
}
NetworkNS3Model::~NetworkNS3Model() {
if (action_hook.is_linked())
p_stateSet->erase(p_stateSet->iterator_to(*this));
XBT_DEBUG ("Removing action %p", this);
- delete this;
+ delete this;
return 1;
}
return 0;