]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
libxtables: add xtables_print_num
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 29 Oct 2012 09:49:42 +0000 (10:49 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 4 Jan 2013 19:29:39 +0000 (20:29 +0100)
This function is used both by iptables and ip6tables, and
refactorize to avoid longer than 80-chars per column lines
of code.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/xtables.h
iptables/ip6tables.c
iptables/iptables.c
libxtables/xtables.c

index add76ae549e0a1e13297a77cc9e597fdb374a441..75de958e78a229c0e3f60d13d4f3f7d515f2989b 100644 (file)
@@ -469,6 +469,22 @@ extern void xtables_ip6parse_multiple(const char *, struct in6_addr **,
  */
 extern void xtables_save_string(const char *value);
 
+#define FMT_NUMERIC            0x0001
+#define FMT_NOCOUNTS           0x0002
+#define FMT_KILOMEGAGIGA       0x0004
+#define FMT_OPTIONS            0x0008
+#define FMT_NOTABLE            0x0010
+#define FMT_NOTARGET           0x0020
+#define FMT_VIA                        0x0040
+#define FMT_NONEWLINE          0x0080
+#define FMT_LINENUMBERS                0x0100
+
+#define FMT_PRINT_RULE (FMT_NOCOUNTS | FMT_OPTIONS | FMT_VIA \
+                        | FMT_NUMERIC | FMT_NOTABLE)
+#define FMT(tab,notab) ((format) & FMT_NOTABLE ? (notab) : (tab))
+
+extern void xtables_print_num(uint64_t number, unsigned int format);
+
 #if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
 #      ifdef _INIT
 #              undef _init
index e9e753a5a09154ea37099208aede1dfafbc5daa5..556647f8eb8d532df2c59b838f6ccdf5840137eb 100644 (file)
 #define FALSE 0
 #endif
 
-#define FMT_NUMERIC    0x0001
-#define FMT_NOCOUNTS   0x0002
-#define FMT_KILOMEGAGIGA 0x0004
-#define FMT_OPTIONS    0x0008
-#define FMT_NOTABLE    0x0010
-#define FMT_NOTARGET   0x0020
-#define FMT_VIA                0x0040
-#define FMT_NONEWLINE  0x0080
-#define FMT_LINENUMBERS 0x0100
-
-#define FMT_PRINT_RULE (FMT_NOCOUNTS | FMT_OPTIONS | FMT_VIA \
-                       | FMT_NUMERIC | FMT_NOTABLE)
-#define FMT(tab,notab) ((format) & FMT_NOTABLE ? (notab) : (tab))
-
-
 #define CMD_NONE               0x0000U
 #define CMD_INSERT             0x0001U
 #define CMD_DELETE             0x0002U
@@ -442,31 +427,6 @@ set_option(unsigned int *options, unsigned int option, uint8_t *invflg,
        }
 }
 
-static void
-print_num(uint64_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;
-                                       if (number > 9999) {
-                                               number = (number + 500) / 1000;
-                                               printf(FMT("%4lluT ","%lluT "), (unsigned long long)number);
-                                       }
-                                       else printf(FMT("%4lluG ","%lluG "), (unsigned long long)number);
-                               }
-                               else printf(FMT("%4lluM ","%lluM "), (unsigned long long)number);
-                       } else
-                               printf(FMT("%4lluK ","%lluK "), (unsigned long long)number);
-               } else
-                       printf(FMT("%5llu ","%llu "), (unsigned long long)number);
-       } else
-               printf(FMT("%8llu ","%llu "), (unsigned long long)number);
-}
-
 
 static void
 print_header(unsigned int format, const char *chain, struct xtc_handle *handle)
@@ -478,9 +438,9 @@ print_header(unsigned int format, const char *chain, struct xtc_handle *handle)
                printf(" (policy %s", pol);
                if (!(format & FMT_NOCOUNTS)) {
                        fputc(' ', stdout);
-                       print_num(counters.pcnt, (format|FMT_NOTABLE));
+                       xtables_print_num(counters.pcnt, (format|FMT_NOTABLE));
                        fputs("packets, ", stdout);
-                       print_num(counters.bcnt, (format|FMT_NOTABLE));
+                       xtables_print_num(counters.bcnt, (format|FMT_NOTABLE));
                        fputs("bytes", stdout);
                }
                printf(")\n");
@@ -563,8 +523,8 @@ print_firewall(const struct ip6t_entry *fw,
                printf(FMT("%-4u ", "%u "), num);
 
        if (!(format & FMT_NOCOUNTS)) {
-               print_num(fw->counters.pcnt, format);
-               print_num(fw->counters.bcnt, format);
+               xtables_print_num(fw->counters.pcnt, format);
+               xtables_print_num(fw->counters.bcnt, format);
        }
 
        if (!(format & FMT_NOTARGET))
index 7cc82518dda4e72a7cc2cf17c7eace504c18a4df..00e3f0166f63f50a6eb0f665d4fcb93a5b6b5f3f 100644 (file)
 #define FALSE 0
 #endif
 
-#define FMT_NUMERIC    0x0001
-#define FMT_NOCOUNTS   0x0002
-#define FMT_KILOMEGAGIGA 0x0004
-#define FMT_OPTIONS    0x0008
-#define FMT_NOTABLE    0x0010
-#define FMT_NOTARGET   0x0020
-#define FMT_VIA                0x0040
-#define FMT_NONEWLINE  0x0080
-#define FMT_LINENUMBERS 0x0100
-
-#define FMT_PRINT_RULE (FMT_NOCOUNTS | FMT_OPTIONS | FMT_VIA \
-                       | FMT_NUMERIC | FMT_NOTABLE)
-#define FMT(tab,notab) ((format) & FMT_NOTABLE ? (notab) : (tab))
-
-
 #define CMD_NONE               0x0000U
 #define CMD_INSERT             0x0001U
 #define CMD_DELETE             0x0002U
@@ -428,32 +413,6 @@ set_option(unsigned int *options, unsigned int option, uint8_t *invflg,
        }
 }
 
-static void
-print_num(uint64_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;
-                                       if (number > 9999) {
-                                               number = (number + 500) / 1000;
-                                               printf(FMT("%4lluT ","%lluT "), (unsigned long long)number);
-                                       }
-                                       else printf(FMT("%4lluG ","%lluG "), (unsigned long long)number);
-                               }
-                               else printf(FMT("%4lluM ","%lluM "), (unsigned long long)number);
-                       } else
-                               printf(FMT("%4lluK ","%lluK "), (unsigned long long)number);
-               } else
-                       printf(FMT("%5llu ","%llu "), (unsigned long long)number);
-       } else
-               printf(FMT("%8llu ","%llu "), (unsigned long long)number);
-}
-
-
 static void
 print_header(unsigned int format, const char *chain, struct xtc_handle *handle)
 {
@@ -464,9 +423,9 @@ print_header(unsigned int format, const char *chain, struct xtc_handle *handle)
                printf(" (policy %s", pol);
                if (!(format & FMT_NOCOUNTS)) {
                        fputc(' ', stdout);
-                       print_num(counters.pcnt, (format|FMT_NOTABLE));
+                       xtables_print_num(counters.pcnt, (format|FMT_NOTABLE));
                        fputs("packets, ", stdout);
-                       print_num(counters.bcnt, (format|FMT_NOTABLE));
+                       xtables_print_num(counters.bcnt, (format|FMT_NOTABLE));
                        fputs("bytes", stdout);
                }
                printf(")\n");
@@ -551,8 +510,8 @@ print_firewall(const struct ipt_entry *fw,
                printf(FMT("%-4u ", "%u "), num);
 
        if (!(format & FMT_NOCOUNTS)) {
-               print_num(fw->counters.pcnt, format);
-               print_num(fw->counters.bcnt, format);
+               xtables_print_num(fw->counters.pcnt, format);
+               xtables_print_num(fw->counters.bcnt, format);
        }
 
        if (!(format & FMT_NOTARGET))
index da174e203e858d2be3e1b73aee3f356cbdb1aedb..009ab9115f6fd687a762a2552f89ac0b81ee1a42 100644 (file)
@@ -1912,6 +1912,35 @@ xtables_parse_protocol(const char *s)
        return -1;
 }
 
+void xtables_print_num(uint64_t number, unsigned int format)
+{
+       if (!(format & FMT_KILOMEGAGIGA)) {
+               printf(FMT("%8llu ","%llu "), (unsigned long long)number);
+               return;
+       }
+       if (number <= 99999) {
+               printf(FMT("%5llu ","%llu "), (unsigned long long)number);
+               return;
+       }
+       number = (number + 500) / 1000;
+       if (number <= 9999) {
+               printf(FMT("%4lluK ","%lluK "), (unsigned long long)number);
+               return;
+       }
+       number = (number + 500) / 1000;
+       if (number <= 9999) {
+               printf(FMT("%4lluM ","%lluM "), (unsigned long long)number);
+               return;
+       }
+       number = (number + 500) / 1000;
+       if (number <= 9999) {
+               printf(FMT("%4lluG ","%lluG "), (unsigned long long)number);
+               return;
+       }
+       number = (number + 500) / 1000;
+       printf(FMT("%4lluT ","%lluT "), (unsigned long long)number);
+}
+
 int kernel_version;
 
 void get_kernel_version(void)