From def2cca8e713d2dcbed3b2b3fa44d4e56d193674 Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Mon, 23 Mar 2015 23:36:35 +0000 Subject: set_elem: convert flag value to inclusive-OR binops during delinearize When a set contains combined flag values, they are displayed as numeric value since they don't match any of the single flag values: tcp flags { 18, psh, syn} Convert to a series of inclusive-OR binops of the single flag values for improved readability: tcp flags { syn | ack, psh, syn} Signed-off-by: Patrick McHardy --- src/netlink.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/netlink.c b/src/netlink.c index bd6aa939..24dda67c 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -1383,6 +1383,10 @@ static int netlink_delinearize_setelem(struct nft_set_elem *nlse, expr->byteorder == BYTEORDER_HOST_ENDIAN) mpz_switch_byteorder(expr->value, expr->len / BITS_PER_BYTE); + if (expr->dtype->basetype != NULL && + expr->dtype->basetype->type == TYPE_BITMASK) + expr = bitmask_expr_to_binops(expr); + if (flags & NFT_SET_ELEM_INTERVAL_END) { expr->flags |= EXPR_F_INTERVAL_END; } else { -- cgit v1.2.3