コード例 #1
0
int
main(int argc, char *argv[])
{
	int ch, nr_cmd = 0, nr_arg = 0;
	const char *command = basename(argv[0]);
	char *name = NULL;

	if (argc > 3) {
usage:
		fprintf(stderr,
			"Usage:\n"
			"%s arguments\n"
			"\t-g interface	interface name to get info\n"
			"\t-d interface	interface name to be detached\n"
			"\t-a interface	interface name to be attached\n"
			"\t-h interface	interface name to be attached with the host stack\n"
			"\t-l list all or specified bridge's interfaces (default)\n"
			"", command);
		return 0;
	}

	while ((ch = getopt(argc, argv, "d:a:h:g:l")) != -1) {
		name = optarg; /* default */
		switch (ch) {
		default:
			fprintf(stderr, "bad option %c %s", ch, optarg);
			goto usage;
		case 'd':
			nr_cmd = NETMAP_BDG_DETACH;
			break;
		case 'a':
			nr_cmd = NETMAP_BDG_ATTACH;
			break;
		case 'h':
			nr_cmd = NETMAP_BDG_ATTACH;
			nr_arg = NETMAP_BDG_HOST;
			break;
		case 'g':
			nr_cmd = 0;
			break;
		case 'l':
			nr_cmd = NETMAP_BDG_LIST;
			if (optind < argc && argv[optind][0] == '-')
				name = NULL;
			break;
		}
		if (optind != argc) {
			// fprintf(stderr, "optind %d argc %d\n", optind, argc);
			goto usage;
		}
	}
	if (argc == 1)
		nr_cmd = NETMAP_BDG_LIST;
	bdg_ctl(name, nr_cmd, nr_arg);
	return 0;
}
コード例 #2
0
ファイル: vale-ctl.c プロジェクト: 2trill2spill/freebsd
int
main(int argc, char *argv[])
{
	int ch, nr_cmd = 0, nr_arg = 0;
	const char *command = basename(argv[0]);
	char *name = NULL, *nmr_config = NULL;

	if (argc > 5) {
usage:
		fprintf(stderr,
			"Usage:\n"
			"%s arguments\n"
			"\t-g interface	interface name to get info\n"
			"\t-d interface	interface name to be detached\n"
			"\t-a interface	interface name to be attached\n"
			"\t-h interface	interface name to be attached with the host stack\n"
			"\t-n interface	interface name to be created\n"
			"\t-r interface	interface name to be deleted\n"
			"\t-l list all or specified bridge's interfaces (default)\n"
			"\t-C string ring/slot setting of an interface creating by -n\n"
			"\t-p interface start polling. Additional -C x,y,z configures\n"
			"\t\t x: 0 (REG_ALL_NIC) or 1 (REG_ONE_NIC),\n"
			"\t\t y: CPU core id for ALL_NIC and core/ring for ONE_NIC\n"
			"\t\t z: (ONE_NIC only) num of total cores/rings\n"
			"\t-P interface stop polling\n"
			"", command);
		return 0;
	}

	while ((ch = getopt(argc, argv, "d:a:h:g:l:n:r:C:p:P:")) != -1) {
		if (ch != 'C')
			name = optarg; /* default */
		switch (ch) {
		default:
			fprintf(stderr, "bad option %c %s", ch, optarg);
			goto usage;
		case 'd':
			nr_cmd = NETMAP_BDG_DETACH;
			break;
		case 'a':
			nr_cmd = NETMAP_BDG_ATTACH;
			break;
		case 'h':
			nr_cmd = NETMAP_BDG_ATTACH;
			nr_arg = NETMAP_BDG_HOST;
			break;
		case 'n':
			nr_cmd = NETMAP_BDG_NEWIF;
			break;
		case 'r':
			nr_cmd = NETMAP_BDG_DELIF;
			break;
		case 'g':
			nr_cmd = 0;
			break;
		case 'l':
			nr_cmd = NETMAP_BDG_LIST;
			if (optind < argc && argv[optind][0] == '-')
				name = NULL;
			break;
		case 'C':
			nmr_config = strdup(optarg);
			break;
		case 'p':
			nr_cmd = NETMAP_BDG_POLLING_ON;
			break;
		case 'P':
			nr_cmd = NETMAP_BDG_POLLING_OFF;
			break;
		}
	}
	if (optind != argc) {
		// fprintf(stderr, "optind %d argc %d\n", optind, argc);
		goto usage;
	}
	if (argc == 1)
		nr_cmd = NETMAP_BDG_LIST;
	return bdg_ctl(name, nr_cmd, nr_arg, nmr_config) ? 1 : 0;
}