X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/406f54970c00ca178fa918763d943027bd09e3ba..2489210b4ea8d03fbece8db288ef9e3ff6725723:/src/surf/surf_routing.c diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index b6bb950a70..5901fbd2ff 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -10,8 +10,6 @@ #include "surf/surf_routing.h" #include "surf/surfxml_parse_values.h" -#include /* regular expression library */ - /** * @ingroup SURF_build_api * @brief A library containing all known workstations @@ -321,7 +319,7 @@ static void routing_parse_trace_connect(sg_platf_trace_connect_cbarg_t trace_con } } -extern int _surf_init_status; /* yay, this is an horrible hack */ +extern int _sg_init_status; /* yay, this is an horrible hack */ /** * \brief Make a new routing component to the platform @@ -346,7 +344,7 @@ void routing_AS_begin(sg_platf_AS_cbarg_t AS) (as_router_lib, AS->id, ROUTING_ASR_LEVEL), "The AS \"%s\" already exists", AS->id); - _surf_init_status = 2; /* horrible hack: direct access to the global controlling the level of configuration to prevent any further config */ + _sg_init_status = 2; /* horrible hack: direct access to the global controlling the level of configuration to prevent any further config */ /* search the routing model */ switch(AS->routing){ @@ -899,6 +897,47 @@ static void routing_parse_cluster(sg_platf_cluster_cbarg_t cluster) info.link_up = xbt_lib_get_or_null(link_lib, link_id, SURF_LINK_LEVEL); info.link_down = info.link_up; } + + if(cluster->limiter_link!=0){ + char *tmp_link = bprintf("%s_limiter", link_id); + XBT_DEBUG("", tmp_link, + cluster->limiter_link); + + + memset(&link, 0, sizeof(link)); + link.id = tmp_link; + link.bandwidth = cluster->limiter_link; + link.latency = 0; + link.state = SURF_RESOURCE_ON; + link.policy = SURF_LINK_SHARED; + sg_platf_new_link(&link); + info.limiter_link = + xbt_lib_get_or_null(link_lib, tmp_link, SURF_LINK_LEVEL); + free(tmp_link); + }else{ + info.limiter_link =NULL; + } + + if(cluster->loopback_bw!=0 || cluster->loopback_lat!=0){ + char *tmp_link = bprintf("%s_loopback", link_id); + XBT_DEBUG("", tmp_link, + cluster->limiter_link); + + + memset(&link, 0, sizeof(link)); + link.id = tmp_link; + link.bandwidth = cluster->loopback_bw; + link.latency = cluster->loopback_lat; + link.state = SURF_RESOURCE_ON; + link.policy = SURF_LINK_FATPIPE; + sg_platf_new_link(&link); + info.loopback_link = + xbt_lib_get_or_null(link_lib, tmp_link, SURF_LINK_LEVEL); + free(tmp_link); + }else{ + info.loopback_link =NULL; + } + xbt_dynar_push(current_routing->link_up_down_list,&info); xbt_free(link_id); xbt_free(host_id); @@ -922,10 +961,11 @@ static void routing_parse_cluster(sg_platf_cluster_cbarg_t cluster) bprintf("%s%s_router%s", cluster->prefix, cluster->id, cluster->suffix); sg_platf_new_router(&router); + ((as_cluster_t)current_routing)->router = xbt_lib_get_or_null(as_router_lib, router.id, ROUTING_ASR_LEVEL); free(newid); //Make the backbone - if ((cluster->bb_bw != 0) && (cluster->bb_lat != 0)) { + if ((cluster->bb_bw != 0) || (cluster->bb_lat != 0)) { char *link_backbone = bprintf("%s_backbone", cluster->id); XBT_DEBUG("", link_backbone, cluster->bb_bw, cluster->bb_lat); @@ -1021,7 +1061,7 @@ static void routing_parse_Srandom(void) char *rd_name = NULL; char *rd_value; mean = surf_parse_get_double(A_surfxml_random_mean); - std = surf_parse_get_double(A_surfxml_random_std_deviation); + std = surf_parse_get_double(A_surfxml_random_std___deviation); min = surf_parse_get_double(A_surfxml_random_min); max = surf_parse_get_double(A_surfxml_random_max); seed = surf_parse_get_double(A_surfxml_random_seed);