/* Business methods */
static route_extended_t rulebased_get_route(routing_component_t rc, const char* src,const char* dst) {
xbt_assert1(rc&&src&&dst, "Invalid params for \"get_route\" function at AS \"%s\"",rc->name);
-
+
/* set utils vars */
routing_component_rulebased_t routing = (routing_component_rulebased_t) rc;
} else
xbt_assert2(NULL, "Ask for route \"from\"(%s) or \"to\"(%s) no found in the local table",src,dst);
- int rc_src,rc_dst;
+ int rc_src = -1;
+ int rc_dst = -1;
int src_length = (int)strlen(src);
int dst_length = (int)strlen(dst);
if(rc_src >= 0 && rc_dst >= 0) {
new_e_route = xbt_new0(s_route_extended_t,1);
new_e_route->generic_route.link_list = links_list;
+ } else if( !strcmp(src,dst) && are_processing_units ) {
+ new_e_route = xbt_new0(s_route_extended_t,1);
+ xbt_dynar_push(links_list,&(global_routing->loopback));
+ new_e_route->generic_route.link_list = links_list;
+ } else {
+ xbt_dynar_free(&link_list);
}
-
+
if(!are_processing_units && new_e_route)
{
rule_route_extended_t ruleroute_extended = (rule_route_extended_t)ruleroute;
static void generic_set_ASroute(routing_component_t rc, const char* src, const char* dst, route_extended_t e_route) {
DEBUG4("Load ASroute from \"%s(%s)\" to \"%s(%s)\"",src,e_route->src_gateway,dst,e_route->dst_gateway);
+ printf("Load ASroute from \"%s(%s)\" to \"%s(%s)\"\n",src,e_route->src_gateway,dst,e_route->dst_gateway);
model_type_t modeltype = rc->routing;
xbt_dict_t _parse_routes;
xbt_dict_t _to_index;
static void routing_full_parse_Scluster(void)
{
+ static int AX_ptr = 0;
char *cluster_id = A_surfxml_cluster_id;
char *cluster_prefix = A_surfxml_cluster_prefix;
int start, end, i;
xbt_dynar_t radical_elements;
xbt_dynar_t radical_ends;
- static int AX_ptr = 0;
- static int surfxml_bufferstack_size = 2048;
+
+ surfxml_bufferstack_push(1);
/* allocating memory for the buffer, I think 2kB should be enough */
- surfxml_bufferstack = xbt_new0(char, surfxml_bufferstack_size);
+ // surfxml_bufferstack = xbt_new0(char, surfxml_bufferstack_size);
- DEBUG4("id='%s' prefix='%s' suffix='%s' radical='%s'",
- cluster_id,cluster_prefix,cluster_suffix,cluster_radical);
- DEBUG5("power='%s' bw='%s' lat='%s' bb_bw='%s' bb_lat='%s'",
- cluster_power,cluster_bw,cluster_lat,cluster_bb_bw,cluster_bb_lat);
+// DEBUG4("id='%s' prefix='%s' suffix='%s' radical='%s'",
+// cluster_id,cluster_prefix,cluster_suffix,cluster_radical);
+// DEBUG5("power='%s' bw='%s' lat='%s' bb_bw='%s' bb_lat='%s'",
+// cluster_power,cluster_bw,cluster_lat,cluster_bb_bw,cluster_bb_lat);
- DEBUG1("<AS id=\"%s\"\trouting=\"Full\">",cluster_id);
+ DEBUG1("<AS id=\"%s\"\trouting=\"RuleBased\">",cluster_id);
SURFXML_BUFFER_SET(AS_id, cluster_id);
- SURFXML_BUFFER_SET(AS_routing, "Full");
+ SURFXML_BUFFER_SET(AS_routing, "RuleBased");
SURFXML_START_TAG(AS);
radical_elements = xbt_str_split(cluster_radical, ",");
SURFXML_BUFFER_SET(route_dst, route_src_dst);
SURFXML_START_TAG(route);
- DEBUG1("<link:ctn\tid=\"%s_link_$src1\"/>",cluster_id);
+ DEBUG1("<link:ctn\tid=\"%s_link_$1src\"/>",cluster_id);
SURFXML_BUFFER_RESET();
- SURFXML_BUFFER_SET(link_c_ctn_id, bprintf("%s_link_$src1",cluster_id));
+ SURFXML_BUFFER_SET(link_c_ctn_id, bprintf("%s_link_$1src",cluster_id));
SURFXML_START_TAG(link_c_ctn);
SURFXML_END_TAG(link_c_ctn);
SURFXML_START_TAG(link_c_ctn);
SURFXML_END_TAG(link_c_ctn);
- DEBUG1("<link:ctn\tid=\"%s_link_$dst1\"/>",cluster_id);
+ DEBUG1("<link:ctn\tid=\"%s_link_$1dst\"/>",cluster_id);
SURFXML_BUFFER_RESET();
- SURFXML_BUFFER_SET(link_c_ctn_id, bprintf("%s_link_$dst1",cluster_id));
+ SURFXML_BUFFER_SET(link_c_ctn_id, bprintf("%s_link_$1dst",cluster_id));
SURFXML_START_TAG(link_c_ctn);
SURFXML_END_TAG(link_c_ctn);
DEBUG0("</AS>");
SURFXML_END_TAG(AS);
+ DEBUG0(" ");
+ surfxml_bufferstack_pop(1);
}