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; }
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; }