/** Initialize the xsanNodeTable table by defining its contents and how it's structured */ void initialize_table_xsanNodeTable(void) { static oid xsanNodeTable_oid[] = {1,3,6,1,4,1,20038,2,1,1,3}; size_t xsanNodeTable_oid_len = OID_LENGTH(xsanNodeTable_oid); netsnmp_handler_registration *reg; netsnmp_iterator_info *iinfo; netsnmp_table_registration_info *table_info; reg = netsnmp_create_handler_registration( "xsanNodeTable", xsanNodeTable_handler, xsanNodeTable_oid, xsanNodeTable_oid_len, HANDLER_CAN_RONLY ); table_info = SNMP_MALLOC_TYPEDEF( netsnmp_table_registration_info ); netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER, /* index: xsanVolumeIndex */ ASN_INTEGER, /* index: xsanStripeGroupIndex */ ASN_INTEGER, /* index: xsanNodeIndex */ 0); table_info->min_column = COLUMN_XSANNODEINDEX; table_info->max_column = COLUMN_XSANNODESIZE; iinfo = SNMP_MALLOC_TYPEDEF( netsnmp_iterator_info ); iinfo->get_first_data_point = xsanNodeTable_get_first_data_point; iinfo->get_next_data_point = xsanNodeTable_get_next_data_point; iinfo->table_reginfo = table_info; netsnmp_register_table_iterator( reg, iinfo ); update_node_list(); update_node_list_detail(); }
int do_generic_subcommand(struct subcommand *sub, int argc, char **argv) { int i, ret; for (i = 0; sub[i].name; i++) { if (!strcmp(sub[i].name, argv[optind])) { unsigned long flags = sub[i].flags; if (flags & SUBCMD_FLAG_NEED_NODELIST) { ret = update_node_list(SD_MAX_NODES); if (ret < 0) { fprintf(stderr, "Failed to get node list\n"); exit(EXIT_SYSFAIL); } } if (flags & SUBCMD_FLAG_NEED_ARG && argc < 5) subcommand_usage(argv[1], argv[2], EXIT_USAGE); optind++; ret = sub[i].fn(argc, argv); if (ret == EXIT_USAGE) subcommand_usage(argv[1], argv[2], EXIT_USAGE); return ret; } } subcommand_usage(argv[1], argv[2], EXIT_FAILURE); return EXIT_FAILURE; }
void add_line_history(struct session *ses, char *line) { struct listroot *root; root = ses->list[LIST_HISTORY]; if (*line == 0) { if (root->used && HAS_BIT(ses->flags, SES_FLAG_REPEATENTER)) { strcpy(line, root->list[root->used - 1]->left); } return; } if (*line == gtd->repeat_char) { search_line_history(ses, line); } update_node_list(ses->list[LIST_HISTORY], line, "", ""); while (root->used > gtd->history_size) { delete_index_list(ses->list[LIST_HISTORY], 0); } return; }
int do_generic_subcommand(struct subcommand *sub, int argc, char **argv) { int i, ret; if (subcmd_depth + 1 == MAX_SUBCMD_DEPTH) { sd_err("Too deep netsted subcommands, " "please expand MAX_SUBCMD_DEPTH"); exit(EXIT_USAGE); } subcmd_stack[++subcmd_depth] = sub; for (i = 0; sub[i].name; i++) { unsigned long flags; if (strcmp(sub[i].name, argv[optind])) continue; flags = sub[i].flags; if (flags & CMD_NEED_NODELIST) { ret = update_node_list(SD_MAX_NODES); if (ret < 0) { sd_err("Failed to get node list"); exit(EXIT_SYSFAIL); } } optind++; if ((flags & CMD_NEED_ARG) && (argc == optind || argv[optind][0] == '\0')) subcommand_usage(argv[1], argv[2], EXIT_USAGE); ret = sub[i].fn(argc, argv); if (ret == EXIT_USAGE) subcommand_usage(argv[1], argv[2], EXIT_USAGE); return ret; } subcommand_usage(argv[1], argv[2], EXIT_FAILURE); subcmd_depth--; return EXIT_FAILURE; }
void PerformancePrefs::update_rates() { //printf("PerformancePrefs::update_rates %d\n", __LINE__); char string[BCTEXTLEN]; for(int i = 0; i < mwindow->preferences->renderfarm_rate.size(); i++) { if(i < nodes[RATE_COLUMN].size()) { sprintf(string, "%0.3f", mwindow->preferences->renderfarm_rate.get(i)); nodes[RATE_COLUMN].get(i)->set_text(string); } } sprintf(string, _(MASTER_NODE_FRAMERATE_TEXT), mwindow->preferences->local_rate); master_rate->update(string); update_node_list(); }
int main(int argc, char **argv) { int ch, longindex, ret; unsigned long flags; struct option *long_options; const struct command *commands; const char *short_options; char *p; const struct sd_option *sd_opts; uint8_t sdhost[16]; int sdport; log_dog_operation(argc, argv); install_crash_handler(crash_handler); init_commands(&commands); if (argc < 2) usage(commands, 0); flags = setup_commands(commands, argv[1], argv[2]); optind = 3; sd_opts = build_sd_options(command_opts); long_options = build_long_options(sd_opts); short_options = build_short_options(sd_opts); while ((ch = getopt_long(argc, argv, short_options, long_options, &longindex)) >= 0) { switch (ch) { case 'a': if (!str_to_addr(optarg, sdhost)) { sd_err("Invalid ip address %s", optarg); return EXIT_FAILURE; } memcpy(sd_nid.addr, sdhost, sizeof(sdhost)); break; case 'p': sdport = strtol(optarg, &p, 10); if (optarg == p || sdport < 1 || sdport > UINT16_MAX) { sd_err("Invalid port number '%s'", optarg); exit(EXIT_USAGE); } sd_nid.port = sdport; break; case 'r': raw_output = true; break; case 'v': verbose = true; break; case 'h': subcommand_usage(argv[1], argv[2], EXIT_SUCCESS); break; case '?': usage(commands, EXIT_USAGE); break; default: if (command_parser) command_parser(ch, optarg); else usage(commands, EXIT_USAGE); break; } } if (!is_stdout_console() || raw_output) highlight = false; if (flags & CMD_NEED_NODELIST) { ret = update_node_list(SD_MAX_NODES); if (ret < 0) { sd_err("Failed to get node list"); exit(EXIT_SYSFAIL); } } if (flags & CMD_NEED_ARG && argc == optind) subcommand_usage(argv[1], argv[2], EXIT_USAGE); if (init_event(EPOLL_SIZE) < 0) exit(EXIT_SYSFAIL); if (init_work_queue(get_nr_nodes) != 0) { sd_err("Failed to init work queue"); exit(EXIT_SYSFAIL); } if (sockfd_init()) { sd_err("sockfd_init() failed"); exit(EXIT_SYSFAIL); } ret = command_fn(argc, argv); if (ret == EXIT_USAGE) subcommand_usage(argv[1], argv[2], EXIT_USAGE); return ret; }
int main(int argc, char **argv) { int ch, longindex, ret; unsigned long flags; struct option *long_options; const char *short_options; char *p; struct command commands[] = { vdi_command, node_command, cluster_command, debug_command, {NULL,} }; if (argc < 3) usage(commands, 0); flags = setup_command(commands, argv[1], argv[2]); optind = 3; long_options = build_long_options(command_options); short_options = build_short_options(command_options); while ((ch = getopt_long(argc, argv, short_options, long_options, &longindex)) >= 0) { switch (ch) { case 'a': sdhost = optarg; break; case 'p': sdport = strtol(optarg, &p, 10); if (optarg == p || sdport < 1 || sdport > UINT16_MAX) { fprintf(stderr, "Invalid port number '%s'\n", optarg); exit(EXIT_USAGE); } break; case 'r': raw_output = 1; break; case 'h': subcommand_usage(argv[1], argv[2], EXIT_SUCCESS); break; case '?': usage(commands, EXIT_USAGE); break; default: if (command_parser) command_parser(ch, optarg); else usage(commands, EXIT_USAGE); break; } } if (!isatty(STDOUT_FILENO) || raw_output) highlight = 0; if (flags & SUBCMD_FLAG_NEED_NODELIST) { ret = update_node_list(SD_MAX_NODES, 0); if (ret < 0) { fprintf(stderr, "Failed to get node list\n"); exit(EXIT_SYSFAIL); } } if (flags & SUBCMD_FLAG_NEED_THIRD_ARG && argc == optind) subcommand_usage(argv[1], argv[2], EXIT_USAGE); return command_fn(argc, argv); }
int main(int argc, char **argv) { int ch, longindex, ret; unsigned long flags; struct option *long_options; const struct command *commands; const char *short_options; char *p, *env; const struct sd_option *sd_opts; uint8_t sdhost[16]; int sdport; struct timespec start, end; start = get_time_tick(); log_dog_operation(argc, argv); install_crash_handler(crash_handler); init_commands(&commands); if (argc < 2) usage(commands, 0); flags = setup_commands(commands, argv[1], argv[2]); optind = 3; sd_opts = build_sd_options(command_opts); long_options = build_long_options(sd_opts); short_options = build_short_options(sd_opts); env = getenv("SHEEPDOG_DOG_ADDR"); if (env) { if (!str_to_addr(env, sdhost)) { sd_err("Invalid ip address %s", env); return EXIT_FAILURE; } memcpy(sd_nid.addr, sdhost, sizeof(sdhost)); } env = getenv("SHEEPDOG_DOG_PORT"); if (env) { sdport = strtol(env, &p, 10); if (env == p || sdport < 1 || sdport > UINT16_MAX || !is_numeric(env)) { sd_err("Invalid port number '%s'", env); exit(EXIT_USAGE); } sd_nid.port = sdport; } while ((ch = getopt_long(argc, argv, short_options, long_options, &longindex)) >= 0) { switch (ch) { case 'a': if (!str_to_addr(optarg, sdhost)) { sd_err("Invalid ip address %s", optarg); return EXIT_FAILURE; } memcpy(sd_nid.addr, sdhost, sizeof(sdhost)); break; case 'p': sdport = strtol(optarg, &p, 10); if (optarg == p || sdport < 1 || sdport > UINT16_MAX || !is_numeric(optarg)) { sd_err("Invalid port number '%s'", optarg); exit(EXIT_USAGE); } sd_nid.port = sdport; break; case 'r': raw_output = true; break; case 'v': verbose = true; break; case 'h': subcommand_usage(argv[1], argv[2], EXIT_SUCCESS); break; case 'T': elapsed_time = true; break; case '?': usage(commands, EXIT_USAGE); break; default: if (command_parser) command_parser(ch, optarg); else usage(commands, EXIT_USAGE); break; } } if (sd_inode_actor_init(dog_bnode_writer, dog_bnode_reader) < 0) exit(EXIT_SYSFAIL); if (!is_stdout_console() || raw_output) highlight = false; if (flags & CMD_NEED_NODELIST) { ret = update_node_list(SD_MAX_NODES); if (ret < 0) { sd_err("Failed to get node list"); exit(EXIT_SYSFAIL); } } if (flags & CMD_NEED_ARG && argc == optind) subcommand_usage(argv[1], argv[2], EXIT_USAGE); if (init_event(EPOLL_SIZE) < 0) exit(EXIT_SYSFAIL); if (wq_trace_init() < 0) exit(EXIT_SYSFAIL); if (init_work_queue(get_nr_nodes) != 0) { sd_err("Failed to init work queue"); exit(EXIT_SYSFAIL); } if (sockfd_init()) { sd_err("sockfd_init() failed"); exit(EXIT_SYSFAIL); } ret = command_fn(argc, argv); if (ret == EXIT_USAGE) subcommand_usage(argv[1], argv[2], EXIT_USAGE); if (elapsed_time) { end = get_time_tick(); printf("\nElapsed time: %.3lf seconds\n", get_time_interval(&start, &end)); } return ret; }
int main(int argc, char **argv) { int ch, longindex, ret; unsigned long flags; struct option *long_options; const struct command *commands; const char *short_options; char *p; const struct sd_option *sd_opts; install_crash_handler(crash_handler); init_commands(&commands); if (argc < 3) usage(commands, 0); flags = setup_commands(commands, argv[1], argv[2]); optind = 3; sd_opts = build_sd_options(command_opts); long_options = build_long_options(sd_opts); short_options = build_short_options(sd_opts); while ((ch = getopt_long(argc, argv, short_options, long_options, &longindex)) >= 0) { switch (ch) { case 'a': sdhost = optarg; break; case 'p': sdport = strtol(optarg, &p, 10); if (optarg == p || sdport < 1 || sdport > UINT16_MAX) { fprintf(stderr, "Invalid port number '%s'\n", optarg); exit(EXIT_USAGE); } break; case 'r': raw_output = true; break; case 'h': subcommand_usage(argv[1], argv[2], EXIT_SUCCESS); break; case '?': usage(commands, EXIT_USAGE); break; default: if (command_parser) command_parser(ch, optarg); else usage(commands, EXIT_USAGE); break; } } if (!is_stdout_console() || raw_output) highlight = false; if (flags & SUBCMD_FLAG_NEED_NODELIST) { ret = update_node_list(SD_MAX_NODES, 0); if (ret < 0) { fprintf(stderr, "Failed to get node list\n"); exit(EXIT_SYSFAIL); } } if (flags & SUBCMD_FLAG_NEED_ARG && argc == optind) subcommand_usage(argv[1], argv[2], EXIT_USAGE); return command_fn(argc, argv); }
/*Thread function for receiving UDP messages*/ void* server_handler(void *args){ struct sockaddr_in remaddr; unsigned char data[N*50]; socklen_t addrlen = sizeof(remaddr); gossip_node * receive_list = (gossip_node*)malloc(sizeof(gossip_node)*N); int rcvcount = 0; while(1){ int recvlen = recvfrom(fd, data, N*50, 0, (struct sockaddr *)&remaddr, &addrlen); //printf("Receiver Port : %d\n", ntohs(remaddr.sin_port)); /* Parsing incoming message fomr char[] to gossip_node list */ if (recvlen > 0) { data[recvlen] = 0; int port; int status; int heartbeat; int i = 0; //gossip_node *new_node = (gossip_node*)malloc(sizeof(gossip_node)); for(rcvcount = 0; rcvcount < N ;rcvcount++) { char tmpheartbeat[5]; char ip[17]; char tmpport[7]; char tmpstatus[2]; int ipc = 0; while(data[i] != ':'){ sprintf(ip+ipc,"%c",data[i]); i++; ipc++; } ip[i] = '\0'; i++; int idk = 0; while(data[i] != ':') { sprintf(tmpport+idk,"%c",data[i]); i++; idk++; } i++; tmpport[idk] = '\0'; port = atoi(tmpport); int idl = 0; while(data[i] != ':') { sprintf(tmpstatus+idl,"%c",data[i]); i++; idl++; } i++; tmpstatus[idl] = '\0'; status = atoi(tmpstatus); int idz= 0; while(data[i] && data[i] != '|') { sprintf(tmpheartbeat+idz,"%c",data[i]); i++; idz++; } tmpheartbeat[idz] = '\0'; heartbeat = atoi(tmpheartbeat); //printf("%s %s %s %s\n",ip,tmpport,tmpstatus,tmpheartbeat); gossip_node new_node; strcpy(new_node.ip,ip); new_node.port = port; new_node.status = status; new_node.heartbeat = heartbeat; //printf("Rcvcount %d\n", rcvcount); receive_list[rcvcount] = new_node; //printf("Rcvlist updated \n"); i++; } //printf("before lock\n"); pthread_mutex_lock(&mutex); //printf("before update\n"); update_node_list(receive_list); //printf("between update\n"); update_node_list_to_failures(); //printf("after update\n"); pthread_mutex_unlock(&mutex); } } }