void AsCluster::create_links_for_node(sg_platf_cluster_cbarg_t cluster, int id, int , int position){ s_sg_platf_link_cbarg_t link = SG_PLATF_LINK_INITIALIZER; s_surf_parsing_link_up_down_t info; char* link_id = bprintf("%s_link_%d", cluster->id, id); memset(&link, 0, sizeof(link)); link.id = link_id; link.bandwidth = cluster->bw; link.latency = cluster->lat; link.policy = cluster->sharing_policy; sg_platf_new_link(&link); if (link.policy == SURF_LINK_FULLDUPLEX) { char *tmp_link = bprintf("%s_UP", link_id); info.link_up = sg_link_by_name(tmp_link); xbt_free(tmp_link); tmp_link = bprintf("%s_DOWN", link_id); info.link_down = sg_link_by_name(tmp_link); xbt_free(tmp_link); } else { info.link_up = sg_link_by_name(link_id); info.link_down = info.link_up; } xbt_dynar_set(upDownLinks, position, &info); xbt_free(link_id); }
int console_add_backbone(lua_State *L) { s_sg_platf_link_cbarg_t link; memset(&link,0,sizeof(link)); int type; link.properties = nullptr; lua_ensure(lua_istable(L, -1),"Bad Arguments to create backbone in Lua. Should be a table with named arguments."); lua_pushstring(L, "id"); type = lua_gettable(L, -2); lua_ensure(type == LUA_TSTRING, "Attribute 'id' must be specified for backbone and must be a string."); link.id = lua_tostring(L, -1); lua_pop(L, 1); lua_pushstring(L, "bandwidth"); type = lua_gettable(L, -2); lua_ensure(type == LUA_TSTRING || type == LUA_TNUMBER, "Attribute 'bandwidth' must be specified for backbone and must either be a string (in the right format; see docs) or a number."); link.bandwidth = surf_parse_get_bandwidth(lua_tostring(L, -1),"bandwidth of backbone",link.id); lua_pop(L, 1); lua_pushstring(L, "lat"); type = lua_gettable(L, -2); lua_ensure(type == LUA_TSTRING || type == LUA_TNUMBER, "Attribute 'lat' must be specified for backbone and must either be a string (in the right format; see docs) or a number."); link.latency = surf_parse_get_time(lua_tostring(L, -1),"latency of backbone",link.id); lua_pop(L, 1); lua_pushstring(L, "sharing_policy"); type = lua_gettable(L, -2); const char* policy = lua_tostring(L, -1); if (policy && !strcmp(policy,"FULLDUPLEX")) { link.policy = SURF_LINK_FULLDUPLEX; } else if (policy && !strcmp(policy,"FATPIPE")) { link.policy = SURF_LINK_FATPIPE; } else { link.policy = SURF_LINK_SHARED; } sg_platf_new_link(&link); routing_cluster_add_backbone(sg_link_by_name(link.id)); return 0; }