-
-/* erase me */
-// The following function makes a example as if a paser program would do it.
-static void example() {
-
- int nb_link = 0;
- unsigned int cpt = 0;
- xbt_dict_cursor_t cursor = NULL;
- char *key, *data, *end;
- const char *sep = "#";
- xbt_dynar_t links, keys;
- char *link_name = NULL;
-
- routetree_t tmp1,tmp2,tmp3,tmp4,tmp5; // erase me
- int *val; // erase me
- int i,j,n; // erase me
- void* link; // erase me
-
-routing_hierarchical_t routing = (routing_hierarchical_t)used_routing;
-
-/////////// fixed network /////////////
-
-/////////// make the routetree tree /////////////
-
- routing->routetree = routetree_new();
- routetree_fill(&(routing->routetree),"as1",NULL,0);
-
- tmp2 = routetree_new();
- routetree_fill(&(tmp2),"as2",(routing->routetree),0);
- //hosts
- //router
- routetree_add_router("R21",&tmp2);
- routetree_add_router("R22",&tmp2);
- // add
- routetree_add(&(routing->routetree),&tmp2);
-
- tmp3 = routetree_new();
- routetree_fill(&(tmp3),"as3",(tmp2),0);
- //hosts
- routetree_add_host("A",&tmp3);
- routetree_add_host("B",&tmp3);
- //router
- routetree_add_router("R31",&tmp3);
- routetree_add_router("R32",&tmp3);
- // add
- routetree_add(&(tmp2),&tmp3);
-
- tmp4 = routetree_new();
- routetree_fill(&(tmp4),"as4",(routing->routetree),1);
- //hosts
- routetree_add_host("C",&tmp4);
- routetree_add_host("D",&tmp4);
- routetree_add_host("E",&tmp4);
- //router
- routetree_add_router("R41",&tmp4);
- routetree_add_router("R42",&tmp4);
- // add
- routetree_add(&(routing->routetree),&tmp4);
-
- tmp5 = routetree_new();
- routetree_fill(&(tmp5),"as5",(routing->routetree),2);
- //hosts
- routetree_add_host("F",&tmp5);
- //router
- routetree_add_router("R51",&tmp5);
- // add
- routetree_add(&(routing->routetree),&tmp5);
-
-/////////// fill the routing tables /////////////
-
- routetree_fill_routing_table(&(routing->routetree));
- routetree_fill_routing_table(&(tmp2));
- routetree_fill_routing_table(&(tmp3));
- routetree_fill_routing_table(&(tmp4));
- routetree_fill_routing_table(&(tmp5));
-
-/////////// fill the routing tables with the routes /////////////
-
- // as2 - as4
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "0"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AA(&tmp2,&tmp4,&(routing->routetree)),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "1"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AA(&tmp2,&tmp4,&(routing->routetree)),&link);
- SRC_DST_HIERARCHICAL_AA(&tmp2,&tmp4,&(routing->routetree))->src_id = HOST2ROUTER(0); //r21
- SRC_DST_HIERARCHICAL_AA(&tmp2,&tmp4,&(routing->routetree))->dst_id = HOST2ROUTER(4); //r41
- // as4 - as2
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "0"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AA(&tmp4,&tmp2,&(routing->routetree)),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "1"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AA(&tmp4,&tmp2,&(routing->routetree)),&link);
- SRC_DST_HIERARCHICAL_AA(&tmp4,&tmp2,&(routing->routetree))->src_id = HOST2ROUTER(4); //r41
- SRC_DST_HIERARCHICAL_AA(&tmp4,&tmp2,&(routing->routetree))->dst_id = HOST2ROUTER(0); //r21
-
- // as2 - as5
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "2"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AA(&tmp2,&tmp5,&(routing->routetree)),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "3"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AA(&tmp2,&tmp5,&(routing->routetree)),&link);
- SRC_DST_HIERARCHICAL_AA(&tmp2,&tmp5,&(routing->routetree))->src_id = HOST2ROUTER(1); //r22
- SRC_DST_HIERARCHICAL_AA(&tmp2,&tmp5,&(routing->routetree))->dst_id = HOST2ROUTER(6); //r51
- // as5 - as2
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "2"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AA(&tmp5,&tmp2,&(routing->routetree)),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "3"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AA(&tmp5,&tmp2,&(routing->routetree)),&link);
- SRC_DST_HIERARCHICAL_AA(&tmp5,&tmp2,&(routing->routetree))->src_id = HOST2ROUTER(6); //r51
- SRC_DST_HIERARCHICAL_AA(&tmp5,&tmp2,&(routing->routetree))->dst_id = HOST2ROUTER(1); //r22
-
- // as4 - as5
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "4"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AA(&tmp4,&tmp5,&(routing->routetree)),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AA(&tmp4,&tmp5,&(routing->routetree)),&link);
- SRC_DST_HIERARCHICAL_AA(&tmp4,&tmp5,&(routing->routetree))->src_id = HOST2ROUTER(5); //r42
- SRC_DST_HIERARCHICAL_AA(&tmp4,&tmp5,&(routing->routetree))->dst_id = HOST2ROUTER(6); //r51
- // as5 - as4
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "4"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AA(&tmp5,&tmp4,&(routing->routetree)),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AA(&tmp5,&tmp4,&(routing->routetree)),&link);
- SRC_DST_HIERARCHICAL_AA(&tmp5,&tmp4,&(routing->routetree))->src_id = HOST2ROUTER(6); //r51
- SRC_DST_HIERARCHICAL_AA(&tmp5,&tmp4,&(routing->routetree))->dst_id = HOST2ROUTER(5); //r42
-
-// tmp2
-
- // as3 - r21
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AR(&tmp3,0,&tmp2),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "2"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AR(&tmp3,0,&tmp2),&link);
- SRC_DST_HIERARCHICAL_AR(&tmp3,0,&tmp2)->src_id = HOST2ROUTER(2); //r31
- SRC_DST_HIERARCHICAL_AR(&tmp3,0,&tmp2)->dst_id = HOST2ROUTER(0); //r21
- // r21 - as3
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RA(0,&tmp3,&tmp2),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "2"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RA(0,&tmp3,&tmp2),&link);
- SRC_DST_HIERARCHICAL_RA(0,&tmp3,&tmp2)->src_id = HOST2ROUTER(0); //r21
- SRC_DST_HIERARCHICAL_RA(0,&tmp3,&tmp2)->dst_id = HOST2ROUTER(2); //r31
-
- // as3 - r22
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "3"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AR(&tmp3,1,&tmp2),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "1"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_AR(&tmp3,1,&tmp2),&link);
- SRC_DST_HIERARCHICAL_AR(&tmp3,1,&tmp2)->src_id = HOST2ROUTER(3); //r32
- SRC_DST_HIERARCHICAL_AR(&tmp3,1,&tmp2)->dst_id = HOST2ROUTER(1); //r22
- // r22 - as3
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "3"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RA(1,&tmp3,&tmp2),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "1"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RA(1,&tmp3,&tmp2),&link);
- SRC_DST_HIERARCHICAL_RA(1,&tmp3,&tmp2)->src_id = HOST2ROUTER(1); //r22
- SRC_DST_HIERARCHICAL_RA(1,&tmp3,&tmp2)->dst_id = HOST2ROUTER(3); //r32
-
-// tmp3
-
- // a - b
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "7"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(0,1,&tmp3),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "2"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(0,1,&tmp3),&link);
- // b - a
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "7"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(1,0,&tmp3),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "2"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(1,0,&tmp3),&link);
-
- // a - r31
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(0,2,&tmp3),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "1"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(0,2,&tmp3),&link);
- // a - r32
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "8"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(0,3,&tmp3),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "7"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(0,3,&tmp3),&link);
- // b - r31
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "3"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(1,2,&tmp3),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "2"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(1,2,&tmp3),&link);
- // b - r32
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "9"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(1,3,&tmp3),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "3"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(1,3,&tmp3),&link);
-
- // r31 - a
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(2,0,&tmp3),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "1"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(2,0,&tmp3),&link);
- // r32 - a
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "8"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(3,1,&tmp3),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "7"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(3,1,&tmp3),&link);
- // r31 - b
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "3"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(2,0,&tmp3),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "2"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(2,0,&tmp3),&link);
- // r32 - b
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "9"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(3,1,&tmp3),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "3"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(3,1,&tmp3),&link);
-
-// tmp4
-
- // c - d
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "2"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(2,3,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "7"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(2,3,&tmp4),&link);
- // d - c
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "2"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(3,2,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "7"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(3,2,&tmp4),&link);
- // c - e
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "6"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(2,4,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(2,4,&tmp4),&link);
- // e - c
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "6"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(4,2,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(4,2,&tmp4),&link);
- // d - e
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(3,4,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "3"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(3,4,&tmp4),&link);
- // e - d
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(4,3,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "3"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(4,3,&tmp4),&link);
-
- // c - r41
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "7"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(2,4,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "9"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(2,4,&tmp4),&link);
- // d - r41
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(3,4,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "8"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(3,4,&tmp4),&link);
- // e - r41
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "8"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(4,4,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "0"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(4,4,&tmp4),&link);
- // c - r42
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "6"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(2,5,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(2,5,&tmp4),&link);
- // d - r42
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "2"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(3,5,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "1"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(3,5,&tmp4),&link);
- // e - r42
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "9"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(4,5,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "4"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(4,5,&tmp4),&link);
-
- // r41 - c
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "7"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(4,2,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "9"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(4,2,&tmp4),&link);
- // r41 - d
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(4,3,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "8"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(4,3,&tmp4),&link);
- // r41 - e
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "8"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(4,4,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "0"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(4,4,&tmp4),&link);
- // r42 - c
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "6"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(5,2,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "5"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(5,2,&tmp4),&link);
- // r42 - d
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "2"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(5,3,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "1"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(5,3,&tmp4),&link);
- // r42 - e
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "9"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(5,4,&tmp4),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "4"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(5,4,&tmp4),&link);
-
-// tmp5
-
- // f - r51
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "6"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(5,6,&tmp5),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "8"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HR(5,6,&tmp5),&link);
-
- // r51 - f
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "6"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(6,5,&tmp5),&link);
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "8"); xbt_assert0(link!=NULL,"NULL");
- xbt_dynar_push(ROUTE_HIERARCHICAL_RH(6,5,&tmp5),&link);
-
-// loopback
-
- link = xbt_dict_get_or_null(surf_network_model->resource_set, "loopback"); xbt_assert0(link!=NULL,"NULL loopback");
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(0,0,&tmp3),&link);
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(1,1,&tmp3),&link);
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(2,2,&tmp4),&link);
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(3,3,&tmp4),&link);
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(4,4,&tmp4),&link);
- xbt_dynar_push(ROUTE_HIERARCHICAL_HH(5,5,&tmp5),&link);
-
-// for(i=0;i<=5;i++) {
-// for(j=0;j<=5;j++) {
-// links = routing_hierarchical_get_route(i,j);
-// printf("route from %d to %d",i,j);
-// cpt=0;
-// xbt_dynar_foreach(links, cpt, link) {
-// s_surf_resource_t* generic_resource = link;
-// printf(" l%s,",generic_resource->name);
+//
+// static void add_loopback_dijkstra(void) {
+// routing_dijkstra_t routing = (routing_dijkstra_t) used_routing;
+//
+// xbt_dynar_t nodes = xbt_graph_get_nodes(routing->route_graph);
+//
+// xbt_node_t node = NULL;
+// unsigned int cursor2;
+// xbt_dynar_foreach(nodes, cursor2, node) {
+// xbt_dynar_t out_edges = xbt_graph_node_get_outedges(node);
+// xbt_edge_t edge = NULL;
+// unsigned int cursor;
+//
+// int found = 0;
+// xbt_dynar_foreach(out_edges, cursor, edge) {
+// xbt_node_t other_node = xbt_graph_edge_get_target(edge);
+// if(other_node == node) {
+// found = 1;
+// break;
+// }
+// }
+//
+// if(!found)
+// xbt_graph_new_edge(routing->route_graph, node, node, &routing->loopback);
+// }
+// }
+//
+// static void routing_dijkstra_parse_end(void) {
+// routing_dijkstra_t routing = (routing_dijkstra_t) used_routing;
+// int nb_link = 0;
+// xbt_dict_cursor_t cursor = NULL;
+// char *key, *data, *end;
+// const char *sep = "#";
+// xbt_dynar_t links, keys;
+// char* link_name = NULL;
+// void* link = NULL;
+// xbt_node_t node = NULL;
+// unsigned int cursor2;
+// xbt_dynar_t nodes = NULL;
+// /* Create the topology graph */
+// routing->route_graph = xbt_graph_new_graph(1, NULL);
+// routing->graph_node_map = xbt_dict_new();
+// routing->last_route = xbt_dynar_new(routing->size_of_link, NULL);
+// if(routing->cached)
+// routing->route_cache = xbt_dict_new();
+//
+//
+// /* Put the routes in position */
+// xbt_dict_foreach(route_table, cursor, key, data) {
+// nb_link = 0;
+// links = (xbt_dynar_t) data;
+// keys = xbt_str_split_str(key, sep);
+//
+// src_id = strtol(xbt_dynar_get_as(keys, 0, char *), &end, 16);
+// dst_id = strtol(xbt_dynar_get_as(keys, 1, char *), &end, 16);
+// xbt_dynar_free(&keys);
+//
+// DEBUG4("Handle %d %d (from %d hosts): %ld links",
+// src_id,dst_id,routing->generic_routing.host_count,xbt_dynar_length(links));
+//
+// xbt_assert3(xbt_dynar_length(links) == 1, "%ld links in route between host %d and %d, should be 1", xbt_dynar_length(links), src_id, dst_id);
+//
+// link_name = xbt_dynar_getfirst_as(links, char*);
+// link = xbt_dict_get_or_null(surf_network_model->resource_set, link_name);
+// if (link)
+// route_new_dijkstra(src_id,dst_id,link);
+// else
+// THROW1(mismatch_error,0,"Link %s not found", link_name);
+//
+// }
+//
+// /* Add the loopback if needed */
+// add_loopback_dijkstra();
+//
+// /* initialize graph indexes in nodes after graph has been built */
+// nodes = xbt_graph_get_nodes(routing->route_graph);
+//
+// xbt_dynar_foreach(nodes, cursor2, node) {
+// graph_node_data_t data = xbt_graph_node_get_data(node);
+// data->graph_id = cursor2;
+// }
+//
+// }
+//
+// /*
+// * Business methods
+// */
+// static xbt_dynar_t routing_dijkstra_get_route(int src_id,int dst_id) {
+//
+// routing_dijkstra_t routing = (routing_dijkstra_t) used_routing;
+// int * pred_arr = NULL;
+// int src_node_id = 0;
+// int dst_node_id = 0;
+// int * nodeid = NULL;
+// int v;
+// int size = 0;
+// void * link = NULL;
+// route_cache_element_t elm = NULL;
+// xbt_dynar_t nodes = xbt_graph_get_nodes(routing->route_graph);
+//
+// /*Use the graph_node id mapping set to quickly find the nodes */
+// graph_node_map_element_t src_elm = graph_node_map_search(src_id);
+// graph_node_map_element_t dst_elm = graph_node_map_search(dst_id);
+// xbt_assert2(src_elm != NULL && dst_elm != NULL, "src %d or dst %d does not exist", src_id, dst_id);
+// src_node_id = ((graph_node_data_t)xbt_graph_node_get_data(src_elm->node))->graph_id;
+// dst_node_id = ((graph_node_data_t)xbt_graph_node_get_data(dst_elm->node))->graph_id;
+//
+// if(routing->cached) {
+// /*check if there is a cached predecessor list avail */
+// elm = (route_cache_element_t)xbt_dict_get_or_null_ext(routing->route_cache, (char*)(&src_id), sizeof(int));
+// }
+//
+// if(elm) { //cached mode and cache hit
+// pred_arr = elm->pred_arr;
+// } else { //not cached mode or cache miss
+// double * cost_arr = NULL;
+// xbt_heap_t pqueue = NULL;
+// int i = 0;
+//
+// int nr_nodes = xbt_dynar_length(nodes);
+// cost_arr = xbt_new0(double, nr_nodes); //link cost from src to other hosts
+// pred_arr = xbt_new0(int, nr_nodes); //predecessors in path from src
+// pqueue = xbt_heap_new(nr_nodes, free);
+//
+// //initialize
+// cost_arr[src_node_id] = 0.0;
+//
+// for(i = 0; i < nr_nodes; i++) {
+// if(i != src_node_id) {
+// cost_arr[i] = DBL_MAX;