From 4a11511e936b5d38837137c9d04f047d4dab2c8f Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Sun, 16 Feb 2014 22:45:19 +0000 Subject: netlink_delinarize: convert *all* bitmask values into individual bit values We're currently only converting bitmask types as direct argument to a relational expression in the form of a flagcmp (expr & mask neq 0) back into a list of bit values. This means expressions like: tcp flags & (syn | ack) == syn | ack won't be shown symbolically. Convert *all* bitmask values back to a sequence of inclusive or expressions of the individual bits. In case of a flagcmp, this sequence is further converted to a list (tcp flags syn,ack). Signed-off-by: Patrick McHardy --- include/expression.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'include') diff --git a/include/expression.h b/include/expression.h index 5128a5bb..ac6a4f4a 100644 --- a/include/expression.h +++ b/include/expression.h @@ -316,6 +316,12 @@ extern struct expr *constant_expr_join(const struct expr *e1, const struct expr *e2); extern struct expr *constant_expr_splice(struct expr *expr, unsigned int len); +extern struct expr *flag_expr_alloc(const struct location *loc, + const struct datatype *dtype, + enum byteorder byteorder, + unsigned int len, unsigned long n); +extern struct expr *bitmask_expr_to_binops(struct expr *expr); + extern struct expr *prefix_expr_alloc(const struct location *loc, struct expr *expr, unsigned int prefix_len); -- cgit v1.2.3