diff options
author | Henrik Nordstrom <henrik@henriknordstrom.net> | 2008-05-13 13:10:38 +0200 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2008-05-13 13:10:38 +0200 |
commit | 60a6073690a456770bf18d190beb57e8f2c8759f (patch) | |
tree | 0d663371e39a2e4a7290ec6c5b27aaa406a8751e | |
parent | bb34082de25ec7fb6bffe5702062f087ca887466 (diff) |
Make --set-counters (-c) accept comma separated counters
Here is the --set-counters syntax patch requested earlier today making
--set-counters (-c) accept comma separated counts.
-c packets,bytes
I have not updated the manpage to reflect this alternate syntax for the
--set-counters (-c) option.
Henrik Nordstrom <henrik@henriknordstrom.net>
-rw-r--r-- | ip6tables.c | 12 | ||||
-rw-r--r-- | iptables.c | 11 |
2 files changed, 14 insertions, 9 deletions
diff --git a/ip6tables.c b/ip6tables.c index d89a50f9..9b68fba3 100644 --- a/ip6tables.c +++ b/ip6tables.c @@ -1754,26 +1754,28 @@ int do_command6(int argc, char *argv[], char **table, ip6tc_handle_t *handle) set_option(&options, OPT_COUNTERS, &fw.ipv6.invflags, invert); pcnt = optarg; - if (optind < argc && argv[optind][0] != '-' + bcnt = strchr(pcnt + 1, ','); + if (bcnt) + bcnt++; + if (!bcnt && optind < argc && argv[optind][0] != '-' && argv[optind][0] != '!') bcnt = argv[optind++]; - else + if (!bcnt) exit_error(PARAMETER_PROBLEM, "-%c requires packet and byte counter", opt2char(OPT_COUNTERS)); - if (sscanf(pcnt, "%llu", (unsigned long long *)&cnt) != 1) + if (sscanf(pcnt, "%llu", &cnt) != 1) exit_error(PARAMETER_PROBLEM, "-%c packet counter not numeric", opt2char(OPT_COUNTERS)); fw.counters.pcnt = cnt; - if (sscanf(bcnt, "%llu", (unsigned long long *)&cnt) != 1) + if (sscanf(bcnt, "%llu", &cnt) != 1) exit_error(PARAMETER_PROBLEM, "-%c byte counter not numeric", opt2char(OPT_COUNTERS)); fw.counters.bcnt = cnt; - break; case 1: /* non option */ @@ -1794,21 +1794,24 @@ int do_command(int argc, char *argv[], char **table, iptc_handle_t *handle) set_option(&options, OPT_COUNTERS, &fw.ip.invflags, invert); pcnt = optarg; - if (optind < argc && argv[optind][0] != '-' + bcnt = strchr(pcnt + 1, ','); + if (bcnt) + bcnt++; + if (!bcnt && optind < argc && argv[optind][0] != '-' && argv[optind][0] != '!') bcnt = argv[optind++]; - else + if (!bcnt) exit_error(PARAMETER_PROBLEM, "-%c requires packet and byte counter", opt2char(OPT_COUNTERS)); - if (sscanf(pcnt, "%llu", (unsigned long long *)&cnt) != 1) + if (sscanf(pcnt, "%llu", &cnt) != 1) exit_error(PARAMETER_PROBLEM, "-%c packet counter not numeric", opt2char(OPT_COUNTERS)); fw.counters.pcnt = cnt; - if (sscanf(bcnt, "%llu", (unsigned long long *)&cnt) != 1) + if (sscanf(bcnt, "%llu", &cnt) != 1) exit_error(PARAMETER_PROBLEM, "-%c byte counter not numeric", opt2char(OPT_COUNTERS)); |