e_route = TO_ROUTE_FULL(i, i);
if (!e_route) {
e_route = xbt_new0(s_sg_platf_route_cbarg_t, 1);
- e_route->gw_src = NULL;
- e_route->gw_dst = NULL;
- e_route->link_list.push_back(routing_platf->loopback_);
+ e_route->gw_src = nullptr;
+ e_route->gw_dst = nullptr;
+ e_route->link_list = new std::vector<Link*>();
+ e_route->link_list->push_back(routing_platf->loopback_);
TO_ROUTE_FULL(i, i) = e_route;
}
}
AsFull::~AsFull(){
if (routingTable_) {
int table_size = (int)xbt_dynar_length(vertices_);
+ int i, j;
/* Delete routing table */
- for (int i = 0; i < table_size; i++)
- for (int j = 0; j < table_size; j++)
- if (TO_ROUTE_FULL(i,j))
+ for (i = 0; i < table_size; i++)
+ for (j = 0; j < table_size; j++) {
+ if (TO_ROUTE_FULL(i,j)){
+ delete TO_ROUTE_FULL(i,j)->link_list;
xbt_free(TO_ROUTE_FULL(i,j));
+ }
+ }
xbt_free(routingTable_);
}
}
/* set utils vars */
size_t table_size = xbt_dynar_length(vertices_);
- sg_platf_route_cbarg_t e_route = NULL;
+ sg_platf_route_cbarg_t e_route = nullptr;
e_route = TO_ROUTE_FULL(src->id(), dst->id());
if (e_route) {
res->gw_src = e_route->gw_src;
res->gw_dst = e_route->gw_dst;
- for (auto link : e_route->link_list) {
- res->link_list.push_back(link);
+ for (auto link : *e_route->link_list) {
+ res->link_list->push_back(link);
if (lat)
*lat += static_cast<Link*>(link)->getLatency();
}
void AsFull::addRoute(sg_platf_route_cbarg_t route)
{
- const char *src = route->src;
- const char *dst = route->dst;
- NetCard *src_net_elm = sg_netcard_by_name_or_null(src);
- NetCard *dst_net_elm = sg_netcard_by_name_or_null(dst);
+ NetCard *src_net_elm = route->src;
+ NetCard *dst_net_elm = route->dst;
+ const char *src = src_net_elm->name();
+ const char *dst = dst_net_elm->name();
addRouteCheckParams(route);
/* Add the route to the base */
TO_ROUTE_FULL(src_net_elm->id(), dst_net_elm->id()) = newExtendedRoute(hierarchy_, route, 1);
- TO_ROUTE_FULL(src_net_elm->id(), dst_net_elm->id())->link_list.shrink_to_fit();
+ TO_ROUTE_FULL(src_net_elm->id(), dst_net_elm->id())->link_list->shrink_to_fit();
if (route->symmetrical == true && src_net_elm != dst_net_elm) {
if (route->gw_dst && route->gw_src) {
"The route between %s and %s already exists. You should not declare the reverse path as symmetrical.", dst,src);
TO_ROUTE_FULL(dst_net_elm->id(), src_net_elm->id()) = newExtendedRoute(hierarchy_, route, 0);
- TO_ROUTE_FULL(dst_net_elm->id(), src_net_elm->id())->link_list.shrink_to_fit();
+ TO_ROUTE_FULL(dst_net_elm->id(), src_net_elm->id())->link_list->shrink_to_fit();
}
}