if(!route->dst_gateway && !route->src_gateway)
XBT_DEBUG("Load Route from \"%s\" to \"%s\"", src, dst);
else{
- if (xbt_dict_get_or_null(rc->to_index, route->src_gateway) == NULL)
- surf_parse_error("The ASroute source gateway must be part of the current AS (being in a sub-AS is not enough), but '%s' is not in '%s'.",
- route->src_gateway,rc->name);
- if (xbt_dict_get_or_null(rc->to_index, route->dst_gateway) == NULL)
- surf_parse_error("The ASroute destination gateway must be part of the current AS (being in a sub-AS is not enough), but '%s' is not in '%s'.",
- route->dst_gateway,rc->name);
+ AS_t subas = xbt_dict_get_or_null(rc->routing_sons, src);
+ if (subas==NULL)
+ surf_parse_error("The source of an ASroute must be a sub-AS declared within the current AS, but '%s' is not an AS within '%s'",
+ src,rc->name);
+ if (xbt_dict_get_or_null(subas->to_index, route->src_gateway) == NULL)
+ surf_parse_error("In an ASroute, source gateway must be part of the source sub-AS (in particular, being in a sub-sub-AS is not allowed), but '%s' is not in '%s'.",
+ route->src_gateway,subas->name);
+
+ subas = xbt_dict_get_or_null(rc->routing_sons, dst);
+ if (subas==NULL)
+ surf_parse_error("The destination of an ASroute must be a sub-AS declared within the current AS, but '%s' is not an AS within '%s'",
+ dst,rc->name);
+ if (xbt_dict_get_or_null(subas->to_index, route->dst_gateway) == NULL)
+ surf_parse_error("In an ASroute, destination gateway must be part of the destination sub-AS (in particular, in a sub-sub-AS is not allowed), but '%s' is not in '%s'.",
+ route->dst_gateway,subas->name);
XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src,
route->src_gateway, dst, route->dst_gateway);