X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/10d3db6766e9f19b11986ac1859bc6e6ca2ed49a..738a6645ea58a89cf957c360faf26e01eae7f7b4:/src/surf/surf_routing.c diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index 2ec08725e7..d33eb6446f 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -428,7 +428,7 @@ static route_extended_t _get_route(const char* src,const char* dst) { xbt_assert0(src&&dst,"bad parameters for \"_get_route\" method"); - route_extended_t e_route, e_route_cnt, e_route_src, e_route_dst; + route_extended_t e_route, e_route_cnt, e_route_src=NULL, e_route_dst=NULL; xbt_dynar_t elem_father_list = elements_father(src,dst); @@ -581,6 +581,16 @@ static void finalize(void) { xbt_free(global_routing); } +static void get_onelink_routes(void) +{ + xbt_die("get_onelink_routes function not implemented yet!!!"); +} + +static int is_router(const char *name) +{ + xbt_die("is_router function not implemented yet!!!"); +} + /** * \brief Generic method: create the global routing schema * @@ -819,7 +829,7 @@ static route_extended_t floyd_get_route(routing_component_t rc, const char* src, int first = 1; int pred = *dst_id; int prev_pred = 0; - char *gw_src,*gw_dst, *prev_gw_src,*prev_gw_dst, *first_gw; + char *gw_src=NULL,*gw_dst=NULL, *prev_gw_src,*prev_gw_dst, *first_gw=NULL; unsigned int cpt; void* link; xbt_dynar_t links; @@ -1269,7 +1279,7 @@ static route_extended_t dijkstra_get_route(routing_component_t rc, const char* s } /* compose route path with links */ - char *gw_src,*gw_dst, *prev_gw_src,*prev_gw_dst, *first_gw; + char *gw_src=NULL,*gw_dst=NULL, *prev_gw_src,*prev_gw_dst, *first_gw=NULL; for(v = dst_node_id; v != src_node_id; v = pred_arr[v]) { xbt_node_t node_pred_v = xbt_dynar_get_as(nodes, pred_arr[v], xbt_node_t); @@ -1596,7 +1606,7 @@ static char* remplace(char* value, const char** src_list, int src_size, const ch /* 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; @@ -1611,7 +1621,8 @@ static route_extended_t rulebased_get_route(routing_component_t rc, const char* } 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); @@ -1649,8 +1660,14 @@ static route_extended_t rulebased_get_route(routing_component_t rc, const char* 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; @@ -2187,6 +2204,7 @@ static void generic_src_dst_check(routing_component_t rc, const char* src, const 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; @@ -2203,17 +2221,17 @@ static void routing_full_parse_Scluster(void) 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; - 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); + static unsigned int surfxml_buffer_stack_stack_ptr = 1; + static unsigned int surfxml_buffer_stack_stack[1024]; + + surfxml_buffer_stack_stack[0]= 0; - DEBUG1("",cluster_id); + surfxml_bufferstack_push(1); + + DEBUG1("",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, ","); @@ -2227,16 +2245,29 @@ static void routing_full_parse_Scluster(void) host_id = bprintf("%s%d%s", cluster_prefix, start, cluster_suffix); link_id = bprintf("%s_link_%d", cluster_id, start); - DEBUG2("\t",host_id,cluster_power); + DEBUG2("",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("\t",link_id,cluster_bw,cluster_lat); + DEBUG3("",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); @@ -2246,21 +2277,35 @@ static void routing_full_parse_Scluster(void) 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); link_id = bprintf("%s_link_%d", cluster_id, i); - DEBUG2("\t",host_id,cluster_power); + DEBUG2("",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("\t",link_id,cluster_bw,cluster_lat); + DEBUG3("",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); } @@ -2274,13 +2319,38 @@ static void routing_full_parse_Scluster(void) } DEBUG0(" "); - router_id = bprintf("%s.router%s",cluster_prefix,cluster_suffix); + 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("\t",router_id); - DEBUG3("\t",link_router,cluster_bw,cluster_lat); - DEBUG3("\t",link_backbone,cluster_bb_bw,cluster_bb_lat); + DEBUG1("",router_id); + SURFXML_BUFFER_SET(router_id, router_id);; + SURFXML_START_TAG(router); + SURFXML_END_TAG(router); + + DEBUG3("",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_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",""); @@ -2295,33 +2365,33 @@ static void routing_full_parse_Scluster(void) route_src_dst = bprintf("%s(.*)%s",cluster_prefix,new_suffix); DEBUG0(" "); - DEBUG2("\t",route_src_dst,route_src_dst); - DEBUG1("\t",cluster_id); - DEBUG1("\t",cluster_id); - DEBUG1("\t",cluster_id); - DEBUG0("\t"); + + DEBUG2("",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("",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); + + DEBUG1("",cluster_id); + SURFXML_BUFFER_SET(link_c_ctn_id, bprintf("%s_backbone",cluster_id)); + SURFXML_START_TAG(link_c_ctn); + SURFXML_END_TAG(link_c_ctn); + + DEBUG1("",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(""); + SURFXML_END_TAG(route); + DEBUG0(""); SURFXML_END_TAG(AS); -// -// /* */ -// SURFXML_BUFFER_SET(link_id, "LinkA"); -// SURFXML_BUFFER_SET(link_bandwidth, "10000000.0"); -// SURFXML_BUFFER_SET(link_bandwidth_file, ""); -// SURFXML_BUFFER_SET(link_latency, "0.2"); -// 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); -// -// /* */ -// // OLD THINGS COMMENTED -// // SURFXML_BUFFER_SET(route_src, "host A"); -// // SURFXML_BUFFER_SET(route_dst, "host B"); -// // SURFXML_BUFFER_SET(route_impact_on_src, "0.0"); -// // SURFXML_BUFFER_SET(route_impact_on_dst, "0.0"); -// // SURFXML_BUFFER_SET(route_impact_on_src_with_other_recv, "0.0"); -// // SURFXML_BUFFER_SET(route_impact_on_dst_with_other_send, "0.0"); + DEBUG0(" "); + surfxml_bufferstack_pop(1); }