summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author/C=EU/ST=EU/CN=Patrick McHardy/emailAddress=kaber@trash.net </C=EU/ST=EU/CN=Patrick McHardy/emailAddress=kaber@trash.net>2008-05-13 11:10:38 +0000
committer/C=EU/ST=EU/CN=Patrick McHardy/emailAddress=kaber@trash.net </C=EU/ST=EU/CN=Patrick McHardy/emailAddress=kaber@trash.net>2008-05-13 11:10:38 +0000
commitb0121dbfc5e0a2a9c50fc5c81d07d5ebcfd73785 (patch)
tree0d663371e39a2e4a7290ec6c5b27aaa406a8751e
parentcff85eb9424ef9606d952504162a5af661c6af46 (diff)
[patch] 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.c12
-rw-r--r--iptables.c11
2 files changed, 14 insertions, 9 deletions
diff --git a/ip6tables.c b/ip6tables.c
index d89a50f..9b68fba 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 */
diff --git a/iptables.c b/iptables.c
index f2a7d25..cff8cf4 100644
--- a/iptables.c
+++ b/iptables.c
@@ -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));