@@ -260,15 +260,22 @@ const struct datatype bitmask_type = {
.type = TYPE_BITMASK,
.name = "bitmask",
.desc = "bitmask",
+ .basefmt = "0x%Zx",
.basetype = &integer_type,
};
static void integer_type_print(const struct expr *expr)
{
+ const struct datatype *dtype = expr->dtype;
const char *fmt = "%Zu";
- if (expr->dtype->basefmt != NULL)
- fmt = expr->dtype->basefmt;
+ do {
+ if (dtype->basefmt != NULL) {
+ fmt = dtype->basefmt;
+ break;
+ }
+ } while ((dtype = dtype->basetype));
+
gmp_printf(fmt, expr->value);
}
Instead of a plain integer. This updates integer_type_print() to look up some basefmt in the change of datatype, the first we find will be used to format the output. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> --- src/datatype.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)