- XBT_DEBUG("Load NetzoneRoute from %s@%s to %s@%s", srcName, route->gw_src->getCname(), dstName,
- route->gw_dst->getCname());
- xbt_assert(src->isNetZone(), "When defining a NetzoneRoute, src must be a netzone but '%s' is not", srcName);
- xbt_assert(dst->isNetZone(), "When defining a NetzoneRoute, dst must be a netzone but '%s' is not", dstName);
-
- xbt_assert(route->gw_src->isHost() || route->gw_src->isRouter(),
- "When defining a NetzoneRoute, gw_src must be an host or a router but '%s' is not.", srcName);
- xbt_assert(route->gw_dst->isHost() || route->gw_dst->isRouter(),
- "When defining a NetzoneRoute, gw_dst must be an host or a router but '%s' is not.", dstName);
-
- xbt_assert(route->gw_src != route->gw_dst, "Cannot define an NetzoneRoute from '%s' to itself",
- route->gw_src->getCname());
-
- xbt_assert(src, "Cannot add a route from %s@%s to %s@%s: %s does not exist.", srcName, route->gw_src->getCname(),
- dstName, route->gw_dst->getCname(), srcName);
- xbt_assert(dst, "Cannot add a route from %s@%s to %s@%s: %s does not exist.", srcName, route->gw_src->getCname(),
- dstName, route->gw_dst->getCname(), dstName);
- xbt_assert(not route->link_list->empty(), "Empty route (between %s@%s and %s@%s) forbidden.", srcName,
- route->gw_src->getCname(), dstName, route->gw_dst->getCname());
+ XBT_DEBUG("Load NetzoneRoute from %s@%s to %s@%s", srcName, gw_src->get_cname(), dstName, gw_dst->get_cname());
+ xbt_assert(src->is_netzone(), "When defining a NetzoneRoute, src must be a netzone but '%s' is not", srcName);
+ xbt_assert(dst->is_netzone(), "When defining a NetzoneRoute, dst must be a netzone but '%s' is not", dstName);
+
+ xbt_assert(gw_src->is_host() || gw_src->is_router(),
+ "When defining a NetzoneRoute, gw_src must be a host or a router but '%s' is not.", srcName);
+ xbt_assert(gw_dst->is_host() || gw_dst->is_router(),
+ "When defining a NetzoneRoute, gw_dst must be a host or a router but '%s' is not.", dstName);
+
+ xbt_assert(gw_src != gw_dst, "Cannot define a NetzoneRoute from '%s' to itself", gw_src->get_cname());
+
+ xbt_assert(src, "Cannot add a route from %s@%s to %s@%s: %s does not exist.", srcName, gw_src->get_cname(), dstName,
+ gw_dst->get_cname(), srcName);
+ xbt_assert(dst, "Cannot add a route from %s@%s to %s@%s: %s does not exist.", srcName, gw_src->get_cname(), dstName,
+ gw_dst->get_cname(), dstName);
+ xbt_assert(not link_list.empty(), "Empty route (between %s@%s and %s@%s) forbidden.", srcName, gw_src->get_cname(),
+ dstName, gw_dst->get_cname());
+ const auto* netzone_src = get_netzone_recursive(src);
+ xbt_assert(netzone_src->is_component_recursive(gw_src),
+ "Invalid NetzoneRoute from %s@%s to %s@%s: gw_src %s belongs to %s, not to %s.", srcName,
+ gw_src->get_cname(), dstName, gw_dst->get_cname(), gw_src->get_cname(),
+ gw_src->get_englobing_zone()->get_cname(), srcName);
+
+ const auto* netzone_dst = get_netzone_recursive(dst);
+ xbt_assert(netzone_dst->is_component_recursive(gw_dst),
+ "Invalid NetzoneRoute from %s@%s to %s@%s: gw_dst %s belongs to %s, not to %s.", srcName,
+ gw_src->get_cname(), dstName, gw_dst->get_cname(), gw_dst->get_cname(),
+ gw_dst->get_englobing_zone()->get_cname(), dst->get_cname());
+ s4u::NetZone::on_route_creation(symmetrical, gw_src, gw_dst, gw_src, gw_dst, get_link_list_impl(link_list, false));
+ NetZoneImpl::on_route_creation(symmetrical, gw_src, gw_dst, gw_src, gw_dst, get_link_list_impl(link_list, false));