Exemple #1
0
/** 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();
}
Exemple #2
0
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;
}
Exemple #3
0
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;
}
Exemple #4
0
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();
}
Exemple #6
0
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;
}
Exemple #7
0
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);
}
Exemple #8
0
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;
}
Exemple #9
0
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);			
		}
	}
}