+ //let's get routes
+ xbt_dict_cursor_t cursor1 = NULL, cursor2 = NULL;
+ container_t child1, child2;
+ const char *child_name1, *child_name2;
+
+ xbt_dict_foreach(container->children, cursor1, child_name1, child1) {
+ xbt_dict_foreach(container->children, cursor2, child_name2, child2) {
+ if ((child1->kind == INSTR_HOST || child1->kind == INSTR_ROUTER) &&
+ (child2->kind == INSTR_HOST || child2->kind == INSTR_ROUTER)){
+
+ //getting route
+ xbt_dynar_t route = NULL;
+ xbt_ex_t exception;
+ TRY {
+ route = global_routing->get_route (child_name1, child_name2);
+ }CATCH(exception) {
+ //no route between them, that's possible
+ continue;
+ }
+
+ //link the route members
+ unsigned int cpt;
+ void *link;
+ char *previous_entity_name = (char*)child_name1;
+ xbt_dynar_foreach (route, cpt, link) {
+ char *link_name = ((link_CM02_t)link)->lmm_resource.generic_resource.name;
+ linkContainers (previous_entity_name, link_name, filter);
+ previous_entity_name = link_name;
+ }
+ linkContainers (previous_entity_name, child_name2, filter);
+ }else if (child1->kind == INSTR_AS &&
+ child2->kind == INSTR_AS &&
+ strcmp(child_name1, child_name2) != 0){
+
+ //getting route
+ routing_component_t root = global_routing->root;
+ route_extended_t route = NULL;
+ xbt_ex_t exception;
+ TRY {
+ route = root->get_route (root, child_name1, child_name2);
+ }CATCH(exception) {
+ //no route between them, that's possible
+ continue;
+ }
+ xbt_assert(route!=NULL,
+ "there is no ASroute between %s and %s", child_name1, child_name2);
+ unsigned int cpt;
+ void *link;
+ char *previous_entity_name = route->src_gateway;
+ xbt_dynar_foreach (route->generic_route.link_list, cpt, link) {
+ char *link_name = ((link_CM02_t)link)->lmm_resource.generic_resource.name;
+ linkContainers (previous_entity_name, link_name, filter);
+ previous_entity_name = link_name;
+ }
+ linkContainers (previous_entity_name, route->dst_gateway, filter);
+ }
+ }
+ }
+ }