void read_applications_from_file(char *file){ FILE *fd; long i; char pattern[50]; char *pattern_aux; long servers = get_servers(); application app; app.info.start_time = 0; app.info.end_time = 0; app.info.n_flows = 0; app.info.flows_distance = 0; app.info.flows_latency = 0; app.packets = 8192; app.comp_time = 10; app.phases = 1; app.running = 0; app.tasks_finished = 0; app.info.id = 1; if((fd = fopen(file, "r")) == NULL){ printf("Error opening the workload file.\n"); exit(-1); } while(!feof(fd)){ fscanf(fd,"%llu %s %ld %s\n",&app.info.arrive_time, pattern, &app.size, app.allocation_type); if(app.size > servers){ printf("WARNING: Application %ld with size %ld is larger than the network: %ld.\n",app.info.id,app.size, servers); exit(-1); } pattern_aux = strtok(pattern, "_"); if(!literal_value(tpatterns_l, pattern_aux, (int *) &app.pattern)) { printf("Error: Unknown traffic pattern - %s\n", pattern_aux); exit(-1); } app.pattern_nparam=0; if(app.pattern == FILE_PATTERN){ pattern_aux = strtok(NULL, "_"); sscanf(pattern_aux, "%s", app.pattern_file); } while ( (pattern_aux = strtok(NULL, "_")) && app.pattern_nparam < MAX_TRAFFIC_PARAMS){ app.pattern_params[app.pattern_nparam++] = atoi(pattern_aux); } for (i = app.pattern_nparam; i < MAX_TRAFFIC_PARAMS; i++) app.pattern_params[i] = -1; // undefine values, should not be checking these anyway. if(!literal_value(allocation_l, app.allocation_type, (int *) &app.allocation)) { printf("Error: Unknown allocation pattern - %s\n", app.allocation_type); exit(-1); } app.phases = app.pattern_params[0]; list_append(&workload, &app); app.info.id++; } fclose(fd); }
static bool print_tree(struct user_auth_info *user_info) { struct smb_name_list *wg, *sv, *sh; /* List workgroups */ if (!get_workgroups(user_info)) return False; for (wg = workgroups; wg; wg = wg->next) { printf("%s\n", wg->name); /* List servers */ free_name_list(servers); servers = NULL; if (level == LEV_WORKGROUP || !get_servers(wg->name, user_info)) continue; for (sv = servers; sv; sv = sv->next) { printf("\t\\\\%-15s\t\t%s\n", sv->name, sv->comment); /* List shares */ free_name_list(shares); shares = NULL; if (level == LEV_SERVER || !get_shares(sv->name, user_info)) continue; for (sh = shares; sh; sh = sh->next) { printf("\t\t\\\\%s\\%-15s\t%s\n", sv->name, sh->name, sh->comment); } } } return True; }
void *get_serverlists(void *value) { struct name_list *wg, *sv; //struct smbEventProxyCmd *pcmd = (struct smbEventProxyCmd *)cmd; char buf[MAX_NAME_LEN] = {0}; int get_serverlists_by_nmblookup_state = 0; /*0:fail; 1:ok*/ int id = (int *)value; struct smbEventProxyCmd *pevent = NULL; char samba_workgroup[16] = {0}; #ifdef CONF_SAMBA_SUPPORT_ONLY_BROWSE_WORKGROUP_SERVERS securesoho_samba_workgroup_get(samba_workgroup); #else //CONF_SAMBA_SUPPORT_ONLY_BROWSE_WORKGROUP_SERVERS get_serverlists_by_nmblookup_state = get_serverlists_by_nmblookup(id); #endif //CONF_SAMBA_SUPPORT_ONLY_BROWSE_WORKGROUP_SERVERS /* List workgroups */ if(workgroups) { free_name_list(workgroups); workgroups = NULL; } if (!get_workgroups(&cmdline_auth_info)) { is_getserver_done = 1; #ifdef CONF_SAMBA_SUPPORT_ONLY_BROWSE_WORKGROUP_SERVERS SMBTREE_send_event_to_OSD(SMB_CMD_REFRESH_SERVER_RESPONSE, SMB_REFRESHED_FAILED, id, NULL); printf("%s[%d], It's finish to search samba server(s).\n", __FILE__, __LINE__); return NULL; #else //CONF_SAMBA_SUPPORT_ONLY_BROWSE_WORKGROUP_SERVERS if(get_serverlists_by_nmblookup_state) { SMBTREE_send_event_to_OSD(SMB_CMD_REFRESH_SERVER_RESPONSE, SMB_REFRESHED_OK, id, NULL); printf("%s[%d], It's finish to search samba server(s). id:[%d]\n", __FILE__, __LINE__, id); return NULL; } else { SMBTREE_send_event_to_OSD(SMB_CMD_REFRESH_SERVER_RESPONSE, SMB_REFRESHED_FAILED, id, NULL); printf("%s[%d], It's finish to search samba server(s).\n", __FILE__, __LINE__); return NULL; } #endif //CONF_SAMBA_SUPPORT_ONLY_BROWSE_WORKGROUP_SERVERS } for (wg = workgroups; wg; wg = wg->next) { #ifdef ENABLE_SMBTREE_DEBUG_MODE printf("%s[%d], WorkGroup : [%s]\n", __FILE__, __LINE__, wg->name); #endif //ENABLE_SMBTREE_DEBUG_MODE /* List servers */ #ifdef CONF_SAMBA_SUPPORT_ONLY_BROWSE_WORKGROUP_SERVERS printf("samba_workgroup:[%s], wg->name:[%s]\n", samba_workgroup, wg->name); if(strcasecmp(samba_workgroup, wg->name) != 0) continue; #endif //CONF_SAMBA_SUPPORT_ONLY_BROWSE_WORKGROUP_SERVERS if(servers) { free_name_list(servers); servers = NULL; } if (level == LEV_WORKGROUP || !get_servers(wg->name, &cmdline_auth_info)) continue; for (sv = servers; sv; sv = sv->next) { char* ip = NULL; nmblookup_ip(sv->name, &ip); if(ip != NULL) { snprintf(buf, sizeof(buf), "%s\\%s\\0", sv->name,ip); #ifdef ENABLE_SMBTREE_DEBUG_MODE printf("\t\\\\%-15s\t\t%s buf:%s\n", sv->name, sv->comment, buf); #endif //ENABLE_SMBTREE_DEBUG_MODE #ifdef ENABLE_PTHREAD pevent = malloc(sizeof(struct smbEventProxyCmd)); pevent->cmd = SMB_CMD_REFRESH_SERVER_RESPONSE; pevent->status = SMB_REFRESHING; pevent->id = id; pevent->datalen = strlen(buf) + 1; strcpy((char *)pevent->data, buf); XLinkedList_Lock(serverlist); XLinkedList_AddTail(serverlist, (void *)pevent); XLinkedList_UnLock(serverlist); #else SMBTREE_send_event_to_OSD(SMB_CMD_REFRESH_SERVER_RESPONSE, SMB_REFRESHING, id, buf); #endif free(ip); ip = NULL; } } } printf("%s[%d], It's finish to search samba server(s). id:[%d]\n", __FILE__, __LINE__, id); SMBTREE_send_event_to_OSD(SMB_CMD_REFRESH_SERVER_RESPONSE, SMB_REFRESHED_OK, id, NULL); is_getserver_done = 1; if(workgroups) { free_name_list(workgroups); workgroups = NULL; } if(servers) { free_name_list(servers); servers = NULL; } return NULL; }
int main(int argc, char **argv) { char name[INET_ADDRSTRLEN]; pthread_t runner_thread; host_port *my_hostport; //Set our termination method signal(SIGINT, finish); signal(SIGPIPE, pipe_error); //Setup Jobs Folder if(mkdir("./jobs", S_IRWXU)) { if(errno == EEXIST) { #ifdef VERBOSE2 problem("Jobs directory already exists...\n"); #endif } else { problem("mkdir failed with %d\n", errno); } } //Setup Job Queue my_queue = (queue *)malloc(sizeof(queue)); backup_queue = (queue *)malloc(sizeof(queue)); init_queue(my_queue); init_queue(backup_queue); //Build host_port my_hostport = malloc(sizeof(host_port)); get_my_ip(my_hostport->ip); my_hostport->port = atoi(argv[1]); while(my_hostport->port < 1000) scanf("%d", &(my_hostport->port)); my_hostport->jobs = 0; my_hostport->time_stamp = 0; my_hostport->location = 0; my_hostport->id = 0; //Start listener listener_set_up(my_hostport); if(argc < 4) { server_list = new_host_list(my_hostport); my_host = server_list->head; } else { if(get_servers(argv[2], atoi(argv[3]), 1, &server_list) < 0) { problem("Get servers failed!\n"); exit(FAILURE); } if(acquire_add_lock(server_list)) { problem("Fatal error. Failed to acquire add lock.\n"); relinquish_add_lock(server_list); finish(0); exit(-1); } my_hostport->id = server_list->id; server_list->id++; my_host = integrate_host(my_hostport); distribute_update(); relinquish_add_lock(server_list); } heartbeat_dest = my_host->next; //User interaction thread pthread_create(&user_thread, NULL, (void *(*)(void *))print_method, NULL); //Runner/Heartbeat thread pthread_create(&runner_thread, NULL, (void *(*)(void *))runner, NULL); pthread_join(runner_thread, NULL); }