- unsigned int table_size = getTableSize();
-
- /* Create table if needed */
- if (not routingTable_)
- routingTable_ = new sg_platf_route_cbarg_t[table_size * table_size]();
-
- /* Add the loopback if needed */
- if (surf_network_model->loopback_ && hierarchy_ == RoutingMode::base) {
- for (unsigned int i = 0; i < table_size; i++) {
- sg_platf_route_cbarg_t e_route = TO_ROUTE_FULL(i, i);
- if (not e_route) {
- e_route = new s_sg_platf_route_cbarg_t;
- e_route->gw_src = nullptr;
- e_route->gw_dst = nullptr;
- e_route->link_list = new std::vector<surf::LinkImpl*>();
- e_route->link_list->push_back(surf_network_model->loopback_);
- TO_ROUTE_FULL(i, i) = e_route;
- }
+ unsigned int table_size = get_table_size();
+ /* assure routing_table is table_size X table_size */
+ if (routing_table_.size() != table_size) {
+ routing_table_.resize(table_size);
+ for (auto& j : routing_table_) {
+ j.resize(table_size);