summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElise Lennion <elise.lennion@gmail.com>2016-12-10 21:59:36 -0200
committerPablo Neira Ayuso <pablo@netfilter.org>2016-12-11 20:32:35 +0100
commitd03de764e498954a08251dee9e820347ad177970 (patch)
treed927f6e2a99b3c153ae9cdd9206170b7e0b26f74
parentc89a0801d07740eff531412fe35ea2c9faad82b0 (diff)
datatype: Display pre-defined inet_service values in decimal base
because the convention is to represent ports in base 10. gcc-workaround is no longer needed and was removed. Signed-off-by: Elise Lennion <elise.lennion@gmail.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--include/datatype.h14
-rw-r--r--src/datatype.c7
-rw-r--r--src/services.c3
3 files changed, 20 insertions, 4 deletions
diff --git a/include/datatype.h b/include/datatype.h
index a7db1df4..9f127f29 100644
--- a/include/datatype.h
+++ b/include/datatype.h
@@ -176,12 +176,24 @@ struct symbolic_constant {
#define SYMBOL_LIST_END (struct symbolic_constant) { }
/**
+ * enum base - indicate how to display symbol table values
+ *
+ * @BASE_HEXADECIMAL: hexadecimal
+ * @BASE_DECIMAL: decimal
+ */
+enum base {
+ BASE_HEXADECIMAL,
+ BASE_DECIMAL,
+};
+
+/**
* struct symbol_table - type construction from symbolic values
*
+ * @base: base of symbols representation
* @symbols: the symbols
*/
struct symbol_table {
- int gcc_workaround;
+ enum base base;
struct symbolic_constant symbols[];
};
diff --git a/src/datatype.c b/src/datatype.c
index 5600efcc..ec0b1201 100644
--- a/src/datatype.c
+++ b/src/datatype.c
@@ -204,8 +204,11 @@ void symbol_table_print(const struct symbol_table *tbl,
if (byteorder == BYTEORDER_BIG_ENDIAN)
switch_byteorder(&value, len);
- printf("\t%-30s\t0x%.*" PRIx64 "\n",
- s->identifier, 2 * len, value);
+ if (tbl->base == BASE_DECIMAL)
+ printf("\t%-30s\t%20lu\n", s->identifier, value);
+ else
+ printf("\t%-30s\t0x%.*" PRIx64 "\n",
+ s->identifier, 2 * len, value);
}
}
diff --git a/src/services.c b/src/services.c
index 0ba195e9..83c26723 100644
--- a/src/services.c
+++ b/src/services.c
@@ -2,7 +2,8 @@
#include <datatype.h>
const struct symbol_table inet_service_tbl = {
- .symbols = {
+ .base = BASE_DECIMAL,
+ .symbols = {
SYMBOL("tcpmux", __constant_htons(1)),
SYMBOL("echo", __constant_htons(7)),
SYMBOL("discard", __constant_htons(9)),