- if (src == NULL || dst == NULL)
- xbt_die("Ask for route \"from\"(%s) or \"to\"(%s) no found at AS \"%s\"",
- src ? src->getName() : "(null)",
- dst ? dst->getName() : "(null)",
- name_);
-
- As *src_as = src->getRcComponent();
- As *dst_as = dst->getRcComponent();
-
- if (src_as != dst_as)
- xbt_die("The src(%s in %s) and dst(%s in %s) are in differents AS",
- src->getName(), src_as->name_,
- dst->getName(), dst_as->name_);
-
- if (this != dst_as)
- xbt_die
- ("The routing component of src'%s' and dst'%s' is not the same as the network elements belong (%s?=%s?=%s)",
- src->getName(),
- dst->getName(),
- src_as->name_,
- dst_as->name_,
- name_);
+ xbt_assert(src,"Cannot find a route from NULL to %s", dst->name());
+ xbt_assert(dst,"Cannot find a route from %s to NULL", src->name());
+
+ As *src_as = src->containingAS();
+ As *dst_as = dst->containingAS();
+
+ xbt_assert(src_as == dst_as, "Internal error: %s@%s and %s@%s are not in the same AS as expected. Please report that bug.",
+ src->name(), src_as->name_, dst->name(), dst_as->name_);
+
+ xbt_assert(this == dst_as,
+ "Internal error: route destination %s@%s is not in AS %s as expected (route source: %s@%s). Please report that bug.",
+ src->name(), dst->name(), src_as->name_, dst_as->name_, name_);
+}
+void AsGeneric::addRouteCheckParams(sg_platf_route_cbarg_t route) {
+ const char *srcName = route->src;
+ const char *dstName = route->dst;
+ NetCard *src = sg_netcard_by_name_or_null(srcName);
+ NetCard *dst = sg_netcard_by_name_or_null(dstName);
+
+ if(!route->gw_dst && !route->gw_src) {
+ XBT_DEBUG("Load Route from \"%s\" to \"%s\"", srcName, dstName);
+ xbt_assert(src, "Cannot add a route from %s to %s: %s does not exist.", srcName, dstName, srcName);
+ xbt_assert(dst, "Cannot add a route from %s to %s: %s does not exist.", srcName, dstName, dstName);
+ xbt_assert(!xbt_dynar_is_empty(route->link_list), "Empty route (between %s and %s) forbidden.", srcName, dstName);
+ xbt_assert(src->getRcType()==SURF_NETWORK_ELEMENT_HOST || src->getRcType()==SURF_NETWORK_ELEMENT_ROUTER,
+ "When defining a route, src must be an host or a router but '%s' is not. Did you meant to have an ASroute?", srcName);
+ xbt_assert(dst->getRcType()==SURF_NETWORK_ELEMENT_HOST || dst->getRcType()==SURF_NETWORK_ELEMENT_ROUTER,
+ "When defining a route, dst must be an host or a router but '%s' is not. Did you meant to have an ASroute?", dstName);
+ } else {
+ XBT_DEBUG("Load ASroute from %s@%s to %s@%s", srcName, route->gw_src->name(), dstName, route->gw_dst->name());
+ xbt_assert(src->getRcType()==SURF_NETWORK_ELEMENT_AS,
+ "When defining an ASroute, src must be an AS but '%s' is not", srcName);
+ xbt_assert(dst->getRcType()==SURF_NETWORK_ELEMENT_AS,
+ "When defining an ASroute, dst must be an AS but '%s' is not", dstName);
+
+ xbt_assert(route->gw_src->getRcType()==SURF_NETWORK_ELEMENT_HOST || route->gw_src->getRcType()==SURF_NETWORK_ELEMENT_ROUTER,
+ "When defining an ASroute, gw_src must be an host or a router but '%s' is not.", srcName);
+ xbt_assert(route->gw_dst->getRcType()==SURF_NETWORK_ELEMENT_HOST || route->gw_dst->getRcType()==SURF_NETWORK_ELEMENT_ROUTER,
+ "When defining an ASroute, 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 ASroute from '%s' to itself", route->gw_src->name());
+
+ xbt_assert(src, "Cannot add a route from %s@%s to %s@%s: %s does not exist.",
+ srcName,route->gw_src->name(), dstName,route->gw_dst->name(), srcName);
+ xbt_assert(dst, "Cannot add a route from %s@%s to %s@%s: %s does not exist.",
+ srcName,route->gw_src->name(), dstName,route->gw_dst->name(), dstName);
+ xbt_assert(!xbt_dynar_is_empty(route->link_list), "Empty route (between %s@%s and %s@%s) forbidden.",
+ srcName,route->gw_src->name(), dstName,route->gw_dst->name());
+ }