typedef int AT_surfxml_argument_value;
#define AU_surfxml_argument_value NULL
typedef enum { AU_surfxml_link_state, A_surfxml_link_state_ON,A_surfxml_link_state_OFF } AT_surfxml_link_state;
+typedef int AT_surfxml_cluster_loopback___bw;
+#define AU_surfxml_cluster_loopback___bw NULL
typedef int AT_surfxml_ASroute_gw___src;
#define AU_surfxml_ASroute_gw___src NULL
typedef enum { AU_surfxml_AS_routing, A_surfxml_AS_routing_Full,A_surfxml_AS_routing_Floyd,A_surfxml_AS_routing_Dijkstra,A_surfxml_AS_routing_DijkstraCache,A_surfxml_AS_routing_None,A_surfxml_AS_routing_RuleBased,A_surfxml_AS_routing_Vivaldi,A_surfxml_AS_routing_Cluster } AT_surfxml_AS_routing;
#define AU_surfxml_peer_id NULL
typedef int AT_surfxml_cluster_router___id;
#define AU_surfxml_cluster_router___id NULL
+typedef int AT_surfxml_cluster_loopback___lat;
+#define AU_surfxml_cluster_loopback___lat NULL
typedef int AT_surfxml_cabinet_radical;
#define AU_surfxml_cabinet_radical NULL
typedef enum { AU_surfxml_cluster_sharing___policy, A_surfxml_cluster_sharing___policy_SHARED,A_surfxml_cluster_sharing___policy_FULLDUPLEX,A_surfxml_cluster_sharing___policy_FATPIPE } AT_surfxml_cluster_sharing___policy;
XBT_PUBLIC_DATA(AT_surfxml_link_state) AX_surfxml_link_state;
#define A_surfxml_link_state AX_surfxml_link_state
XBT_PUBLIC_DATA(short int) surfxml_link_state_isset;
+XBT_PUBLIC_DATA(AT_surfxml_cluster_loopback___bw) AX_surfxml_cluster_loopback___bw;
+#define A_surfxml_cluster_loopback___bw (surfxml_bufferstack + AX_surfxml_cluster_loopback___bw)
+XBT_PUBLIC_DATA(short int) surfxml_cluster_loopback___bw_isset;
XBT_PUBLIC_DATA(AT_surfxml_ASroute_gw___src) AX_surfxml_ASroute_gw___src;
#define A_surfxml_ASroute_gw___src (surfxml_bufferstack + AX_surfxml_ASroute_gw___src)
XBT_PUBLIC_DATA(short int) surfxml_ASroute_gw___src_isset;
XBT_PUBLIC_DATA(AT_surfxml_cluster_router___id) AX_surfxml_cluster_router___id;
#define A_surfxml_cluster_router___id (surfxml_bufferstack + AX_surfxml_cluster_router___id)
XBT_PUBLIC_DATA(short int) surfxml_cluster_router___id_isset;
+XBT_PUBLIC_DATA(AT_surfxml_cluster_loopback___lat) AX_surfxml_cluster_loopback___lat;
+#define A_surfxml_cluster_loopback___lat (surfxml_bufferstack + AX_surfxml_cluster_loopback___lat)
+XBT_PUBLIC_DATA(short int) surfxml_cluster_loopback___lat_isset;
XBT_PUBLIC_DATA(AT_surfxml_cabinet_radical) AX_surfxml_cabinet_radical;
#define A_surfxml_cabinet_radical (surfxml_bufferstack + AX_surfxml_cabinet_radical)
XBT_PUBLIC_DATA(short int) surfxml_cabinet_radical_isset;
info.limiter_link =NULL;
}
+ if(cluster->loopback_bw!=0 || cluster->loopback_lat!=0){
+ char *tmp_link = bprintf("%s_loopback", link_id);
+ XBT_DEBUG("<loopback\tid=\"%s\"\tbw=\"%f\"/>", 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);
info =
xbt_dynar_get_as(as->link_up_down_list, src->id,
s_surf_parsing_link_up_down_t);
+
+ if((src->id == dst->id) && info.loopback_link ){
+ xbt_dynar_push_as(route->link_list, void *, info.loopback_link);
+ if (lat)
+ *lat +=
+ surf_network_model->extension.network.get_link_latency(info.
+ loopback_link);
+ return;
+ }
+
+
if (info.limiter_link) // limiter for sender
xbt_dynar_push_as(route->link_list, void *, info.limiter_link);
cluster.bb_lat = surf_parse_get_double(A_surfxml_cluster_bb___lat);
if(strcmp(A_surfxml_cluster_limiter___link,""))
cluster.limiter_link = surf_parse_get_double(A_surfxml_cluster_limiter___link);
+ if(strcmp(A_surfxml_cluster_loopback___bw,""))
+ cluster.loopback_bw = surf_parse_get_double(A_surfxml_cluster_loopback___bw);
+ if(strcmp(A_surfxml_cluster_loopback___lat,""))
+ cluster.loopback_lat = surf_parse_get_double(A_surfxml_cluster_loopback___lat);
cluster.router_id = A_surfxml_cluster_router___id;
switch (AX_surfxml_cluster_sharing___policy) {