static int parse_bfifo_opts(struct rtnl_qdisc *qdisc, char *argv[], int argc) { int err, limit; if (argc > 0) { if (argc != 2 || strcasecmp(argv[0], "limit")) { fprintf(stderr, "Usage: ... bfifo limit <limit>\n"); return -1; } limit = nl_size2int(argv[1]); if (limit < 0) { fprintf(stderr, "Invalid value for limit.\n"); return -1; } err = rtnl_qdisc_fifo_set_limit(qdisc, limit); if (err < 0) { fprintf(stderr, "%s\n", nl_geterror()); return -1; } } return 0; }
static void bfifo_parse_argv(struct rtnl_tc *tc, int argc, char **argv) { struct rtnl_qdisc *qdisc = (struct rtnl_qdisc *) tc; int limit; for (;;) { int c, optidx = 0; enum { ARG_LIMIT = 257, }; static struct option long_opts[] = { { "help", 0, 0, 'h' }, { "limit", 1, 0, ARG_LIMIT }, { 0, 0, 0, 0 } }; c = getopt_long(argc, argv, "h", long_opts, &optidx); if (c == -1) break; switch (c) { case 'h': print_usage(); return; case ARG_LIMIT: limit = nl_size2int(optarg); if (limit < 0) { nl_cli_fatal(limit, "Unable to parse bfifo limit " "\"%s\": Invalid format.", optarg); } rtnl_qdisc_fifo_set_limit(qdisc, limit); break; } } }
static void htb_parse_class_argv(struct rtnl_tc *tc, int argc, char **argv) { struct rtnl_class *class = (struct rtnl_class *) tc; long rate; for (;;) { int c, optidx = 0; enum { ARG_RATE = 257, ARG_QUANTUM = 258, ARG_CEIL, ARG_PRIO, ARG_BURST, ARG_CBURST, }; static struct option long_opts[] = { { "help", 0, 0, 'h' }, { "rate", 1, 0, ARG_RATE }, { "quantum", 1, 0, ARG_QUANTUM }, { "ceil", 1, 0, ARG_CEIL }, { "prio", 1, 0, ARG_PRIO }, { "burst", 1, 0, ARG_BURST }, { "cburst", 1, 0, ARG_CBURST }, { 0, 0, 0, 0 } }; c = getopt_long(argc, argv, "h", long_opts, &optidx); if (c == -1) break; switch (c) { case 'h': print_class_usage(); return; case ARG_RATE: rate = nl_size2int(optarg); if (rate < 0) { nl_cli_fatal(rate, "Unable to parse htb rate " "\"%s\": Invalid format.", optarg); } rtnl_htb_set_rate(class, rate); break; case ARG_CEIL: rate = nl_size2int(optarg); if (rate < 0) { nl_cli_fatal(rate, "Unable to parse htb ceil rate " "\"%s\": Invalid format.", optarg); } rtnl_htb_set_ceil(class, rate); break; case ARG_PRIO: rtnl_htb_set_prio(class, nl_cli_parse_u32(optarg)); break; case ARG_QUANTUM: rate = nl_size2int(optarg); if (rate < 0) { nl_cli_fatal(rate, "Unable to parse quantum " "\"%s\": Invalid format.", optarg); } rtnl_htb_set_quantum(class, rate); break; case ARG_BURST: rate = nl_size2int(optarg); if (rate < 0) { nl_cli_fatal(rate, "Unable to parse burst " "\"%s\": Invalid format.", optarg); } rtnl_htb_set_rbuffer(class, rate); break; case ARG_CBURST: rate = nl_size2int(optarg); if (rate < 0) { nl_cli_fatal(rate, "Unable to parse cburst " "\"%s\": Invalid format.", optarg); } rtnl_htb_set_cbuffer(class, rate); break; } } }