From a0b4f797dc8227ebebd2de2568026e8f27cc4750 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 25 Mar 2001 19:55:04 +0000 Subject: Kilo/Mega/Giga otput in chain-summary fixed --- iptables.c | 52 +++++++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 23 deletions(-) (limited to 'iptables.c') diff --git a/iptables.c b/iptables.c index f838356c..bc76f8c7 100644 --- a/iptables.c +++ b/iptables.c @@ -1010,6 +1010,28 @@ register_target(struct iptables_target *me) me->tflags = 0; } +static void +print_num(u_int64_t number, unsigned int format) +{ + if (format & FMT_KILOMEGAGIGA) { + if (number > 99999) { + number = (number + 500) / 1000; + if (number > 9999) { + number = (number + 500) / 1000; + if (number > 9999) { + number = (number + 500) / 1000; + printf(FMT("%4lluG ","%lluG "),number); + } + else printf(FMT("%4lluM ","%lluM "), number); + } else + printf(FMT("%4lluK ","%lluK "), number); + } else + printf(FMT("%5llu ","%llu "), number); + } else + printf(FMT("%8llu ","%llu "), number); +} + + static void print_header(unsigned int format, const char *chain, iptc_handle_t *handle) { @@ -1018,9 +1040,13 @@ print_header(unsigned int format, const char *chain, iptc_handle_t *handle) printf("Chain %s", chain); if (pol) { printf(" (policy %s", pol); - if (!(format & FMT_NOCOUNTS)) - printf(" %llu packets, %llu bytes", - counters.pcnt, counters.bcnt); + if (!(format & FMT_NOCOUNTS)) { + fputc(' ', stdout); + print_num(counters.pcnt, (format|FMT_NOTABLE)); + fputs("packets, ", stdout); + print_num(counters.bcnt, (format|FMT_NOTABLE)); + fputs("bytes", stdout); + } printf(")\n"); } else { unsigned int refs; @@ -1055,26 +1081,6 @@ print_header(unsigned int format, const char *chain, iptc_handle_t *handle) printf("\n"); } -static void -print_num(u_int64_t number, unsigned int format) -{ - if (format & FMT_KILOMEGAGIGA) { - if (number > 99999) { - number = (number + 500) / 1000; - if (number > 9999) { - number = (number + 500) / 1000; - if (number > 9999) { - number = (number + 500) / 1000; - printf(FMT("%4lluG ","%lluG "),number); - } - else printf(FMT("%4lluM ","%lluM "), number); - } else - printf(FMT("%4lluK ","%lluK "), number); - } else - printf(FMT("%5llu ","%llu "), number); - } else - printf(FMT("%8llu ","%llu "), number); -} static int print_match(const struct ipt_entry_match *m, -- cgit v1.2.3