- static int AX_ptr = 0;
-
- char *cluster_id = A_surfxml_cluster_id;
- char *cluster_prefix = A_surfxml_cluster_prefix;
- char *cluster_suffix = A_surfxml_cluster_suffix;
- char *cluster_radical = A_surfxml_cluster_radical;
- char *cluster_power = A_surfxml_cluster_power;
- char *cluster_bw = A_surfxml_cluster_bw;
- char *cluster_lat = A_surfxml_cluster_lat;
- char *cluster_bb_bw = A_surfxml_cluster_bb_bw;
- char *cluster_bb_lat = A_surfxml_cluster_bb_lat;
- char *host_id, *groups, *link_id;
- char *router_id, *link_router, *link_backbone, *route_src_dst;
- unsigned int iter;
- int start, end, i;
- xbt_dynar_t radical_elements;
- xbt_dynar_t radical_ends;
- #ifndef HAVE_PCRE_LIB
- xbt_dynar_t tab_elements_num = xbt_dynar_new(sizeof(int), NULL);
- char *route_src,*route_dst;
- int j;
- #endif
-
- static unsigned int surfxml_buffer_stack_stack_ptr = 1;
- static unsigned int surfxml_buffer_stack_stack[1024];
-
- surfxml_buffer_stack_stack[0]= 0;
-
- surfxml_bufferstack_push(1);
-
- SURFXML_BUFFER_SET(AS_id, cluster_id);
-#ifdef HAVE_PCRE_LIB
- SURFXML_BUFFER_SET(AS_routing, "RuleBased");
- DEBUG1("<AS id=\"%s\"\trouting=\"RuleBased\">",cluster_id);
-#else
- SURFXML_BUFFER_SET(AS_routing, "Full");
- DEBUG1("<AS id=\"%s\"\trouting=\"Full\">",cluster_id);
-#endif
- SURFXML_START_TAG(AS);
-
- radical_elements = xbt_str_split(cluster_radical, ",");
- xbt_dynar_foreach(radical_elements, iter, groups)
- {
- radical_ends = xbt_str_split(groups, "-");
- switch (xbt_dynar_length(radical_ends))
- {
- case 1:
- surf_parse_get_int(&start, xbt_dynar_get_as(radical_ends, 0, char *));
- host_id = bprintf("%s%d%s", cluster_prefix, start, cluster_suffix);
- #ifndef HAVE_PCRE_LIB
- xbt_dynar_push_as(tab_elements_num, int, start);
- #endif
- link_id = bprintf("%s_link_%d", cluster_id, start);
-
- DEBUG2("<host\tid=\"%s\"\tpower=\"%s\"/>",host_id,cluster_power);
- SURFXML_BUFFER_SET(host_id, host_id);
- SURFXML_BUFFER_SET(host_power, cluster_power);
- SURFXML_BUFFER_SET(host_availability, "1.0");
- SURFXML_BUFFER_SET(host_availability_file, "");
- A_surfxml_host_state = A_surfxml_host_state_ON;
- SURFXML_BUFFER_SET(host_state_file, "");
- SURFXML_BUFFER_SET(host_interference_send, "1.0");
- SURFXML_BUFFER_SET(host_interference_recv, "1.0");
- SURFXML_BUFFER_SET(host_interference_send_recv, "1.0");
- SURFXML_BUFFER_SET(host_max_outgoing_rate, "-1.0");
- SURFXML_START_TAG(host);
- SURFXML_END_TAG(host);
-
- DEBUG3("<link\tid=\"%s\"\tbw=\"%s\"\tlat=\"%s\"/>",link_id,cluster_bw,cluster_lat);
- SURFXML_BUFFER_SET(link_id, link_id);
- SURFXML_BUFFER_SET(link_bandwidth, cluster_bw);
- SURFXML_BUFFER_SET(link_latency, cluster_lat);
- SURFXML_BUFFER_SET(link_bandwidth_file, "");
- SURFXML_BUFFER_SET(link_latency_file, "");
- A_surfxml_link_state = A_surfxml_link_state_ON;
- SURFXML_BUFFER_SET(link_state_file, "");
- A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
- SURFXML_START_TAG(link);
- SURFXML_END_TAG(link);
-
- break;
-
- case 2:
-
- surf_parse_get_int(&start, xbt_dynar_get_as(radical_ends, 0, char *));
- surf_parse_get_int(&end, xbt_dynar_get_as(radical_ends, 1, char *));
- DEBUG2("Create hosts and links from %d to %d",start,end);
- for (i = start; i <= end; i++)
- {
- host_id = bprintf("%s%d%s", cluster_prefix, i, cluster_suffix);
- #ifndef HAVE_PCRE_LIB
- xbt_dynar_push_as(tab_elements_num, int, i);
- #endif
- link_id = bprintf("%s_link_%d", cluster_id, i);
-
- DEBUG2("<host\tid=\"%s\"\tpower=\"%s\"/>",host_id,cluster_power);
- SURFXML_BUFFER_SET(host_id, host_id);
- SURFXML_BUFFER_SET(host_power, cluster_power);
- SURFXML_BUFFER_SET(host_availability, "1.0");
- SURFXML_BUFFER_SET(host_availability_file, "");
- A_surfxml_host_state = A_surfxml_host_state_ON;
- SURFXML_BUFFER_SET(host_state_file, "");
- SURFXML_BUFFER_SET(host_interference_send, "1.0");
- SURFXML_BUFFER_SET(host_interference_recv, "1.0");
- SURFXML_BUFFER_SET(host_interference_send_recv, "1.0");
- SURFXML_BUFFER_SET(host_max_outgoing_rate, "-1.0");
- SURFXML_START_TAG(host);
- SURFXML_END_TAG(host);
-
- DEBUG3("<link\tid=\"%s\"\tbw=\"%s\"\tlat=\"%s\"/>",link_id,cluster_bw,cluster_lat);
- SURFXML_BUFFER_SET(link_id, link_id);
- SURFXML_BUFFER_SET(link_bandwidth, cluster_bw);
- SURFXML_BUFFER_SET(link_latency, cluster_lat);
- SURFXML_BUFFER_SET(link_bandwidth_file, "");
- SURFXML_BUFFER_SET(link_latency_file, "");
- A_surfxml_link_state = A_surfxml_link_state_ON;
- SURFXML_BUFFER_SET(link_state_file, "");
- A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
- SURFXML_START_TAG(link);
- SURFXML_END_TAG(link);
- }
- break;
-
- default:
- DEBUG0("Malformed radical");
- }
-
- xbt_dynar_free(&radical_ends);
- }
-
- DEBUG0(" ");
- router_id = bprintf("%srouter%s",cluster_prefix,cluster_suffix);
- link_router = bprintf("%s_link_router",cluster_id);
- link_backbone = bprintf("%s_backbone",cluster_id);
-
- DEBUG1("<router id=\"%s\"\">",router_id);
- SURFXML_BUFFER_SET(router_id, router_id);;
- SURFXML_START_TAG(router);
- SURFXML_END_TAG(router);
-
- DEBUG3("<link\tid=\"%s\"\tbw=\"%s\"\tlat=\"%s\"/>",link_router,cluster_bw,cluster_lat);
- SURFXML_BUFFER_SET(link_id, link_router);
- SURFXML_BUFFER_SET(link_bandwidth, cluster_bw);
- SURFXML_BUFFER_SET(link_latency, cluster_lat);
- SURFXML_BUFFER_SET(link_bandwidth_file, "");
- SURFXML_BUFFER_SET(link_latency_file, "");
- A_surfxml_link_state = A_surfxml_link_state_ON;
- SURFXML_BUFFER_SET(link_state_file, "");
- A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
- SURFXML_START_TAG(link);
- SURFXML_END_TAG(link);
-
- DEBUG3("<link\tid=\"%s\"\tbw=\"%s\"\tlat=\"%s\"/>",link_backbone,cluster_bb_bw,cluster_bb_lat);
- SURFXML_BUFFER_SET(link_id, link_backbone);
- SURFXML_BUFFER_SET(link_bandwidth, cluster_bb_bw);
- SURFXML_BUFFER_SET(link_latency, cluster_bb_lat);
- SURFXML_BUFFER_SET(link_bandwidth_file, "");
- SURFXML_BUFFER_SET(link_latency_file, "");
- A_surfxml_link_state = A_surfxml_link_state_ON;
- SURFXML_BUFFER_SET(link_state_file, "");
- A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
- SURFXML_START_TAG(link);
- SURFXML_END_TAG(link);
-
- char *new_suffix = bprintf("%s","");
-
- radical_elements = xbt_str_split(cluster_suffix, ".");
- xbt_dynar_foreach(radical_elements, iter, groups)
- {
- if(strcmp(groups,""))
- {
- new_suffix = bprintf("%s\\.%s",new_suffix,groups);
- }
- }
- route_src_dst = bprintf("%s(.*)%s",cluster_prefix,new_suffix);
-
- DEBUG0(" ");
-
-#ifdef HAVE_PCRE_LIB
-
- DEBUG2("<route\tsrc=\"%s\"\tdst=\"%s\">",route_src_dst,route_src_dst);
- SURFXML_BUFFER_SET(route_src, route_src_dst);
- SURFXML_BUFFER_SET(route_dst, route_src_dst);
- SURFXML_START_TAG(route);
-
- DEBUG1("<link:ctn\tid=\"%s_link_$1src\"/>",cluster_id);
- SURFXML_BUFFER_SET(link_ctn_id, bprintf("%s_link_$1src",cluster_id));
- SURFXML_START_TAG(link_ctn);
- SURFXML_END_TAG(link_ctn);
-
- DEBUG1("<link:ctn\tid=\"%s_backbone\"/>",cluster_id);
- SURFXML_BUFFER_SET(link_ctn_id, bprintf("%s_backbone",cluster_id));
- SURFXML_START_TAG(link_ctn);
- SURFXML_END_TAG(link_ctn);
-
- DEBUG1("<link:ctn\tid=\"%s_link_$1dst\"/>",cluster_id);
- SURFXML_BUFFER_SET(link_ctn_id, bprintf("%s_link_$1dst",cluster_id));
- SURFXML_START_TAG(link_ctn);
- SURFXML_END_TAG(link_ctn);
-
- DEBUG0("</route>");
- SURFXML_END_TAG(route);
-#else
- for(i=0 ; i<=tab_elements_num->elmsize ; i++)
- {
- for(j=0 ; j<=tab_elements_num->elmsize ; j++)
- {
- route_src = bprintf("%s%d%s",cluster_prefix,xbt_dynar_get_as(tab_elements_num,i,int),cluster_suffix);
- route_dst = bprintf("%s%d%s",cluster_prefix,xbt_dynar_get_as(tab_elements_num,j,int),cluster_suffix);
-
- DEBUG2("<route\tsrc=\"%s\"\tdst=\"%s\">",route_src,route_dst);
- SURFXML_BUFFER_SET(route_src, route_src);
- SURFXML_BUFFER_SET(route_dst, route_dst);
- SURFXML_START_TAG(route);
-
- route_src = bprintf("%s_link_%d",cluster_id,xbt_dynar_get_as(tab_elements_num,i,int));
- route_dst = bprintf("%s_link_%d",cluster_id,xbt_dynar_get_as(tab_elements_num,j,int));
-
- DEBUG2("<link:ctn\tid=\"%s_link_%d\"/>",cluster_id,xbt_dynar_get_as(tab_elements_num,i,int));
- SURFXML_BUFFER_SET(link_ctn_id, bprintf("%s_link_%d",cluster_id,xbt_dynar_get_as(tab_elements_num,i,int)));
- SURFXML_START_TAG(link_ctn);
- SURFXML_END_TAG(link_ctn);
-
- DEBUG1("<link:ctn\tid=\"%s_backbone\"/>",cluster_id);
- SURFXML_BUFFER_SET(link_ctn_id, bprintf("%s_backbone",cluster_id));
- SURFXML_START_TAG(link_ctn);
- SURFXML_END_TAG(link_ctn);
-
- DEBUG2("<link:ctn\tid=\"%s_link_%d\"/>",cluster_id,xbt_dynar_get_as(tab_elements_num,j,int));
- SURFXML_BUFFER_SET(link_ctn_id, bprintf("%s_link_%d",cluster_id,xbt_dynar_get_as(tab_elements_num,j,int)));
- SURFXML_START_TAG(link_ctn);
- SURFXML_END_TAG(link_ctn);
-
- DEBUG0("</route>");
- SURFXML_END_TAG(route);
- }
- }
- xbt_dynar_free(&tab_elements_num);
-#endif