diff options
authorFlorian Westphal <>2018-05-23 23:30:24 +0200
committerFlorian Westphal <>2018-06-07 14:38:15 +0200
commit79fd53906d4834e64fad41cfe5ba2f14ec213fe3 (patch)
parentccd0125b242e923fce98d9321a69695bb74fb193 (diff)
src: netlink_delinarize: don't stop when encountering unsupported expression
The error message is still shown, but try to make sense of further expressions (if any). I tried to replace the expression by a textual representation. Two variants I tested are: 1. append as comment: ip saddr drop comment "unknown expression 'foo'" This allows nft -f, but it adds/alters a comment. 2. substitute in-place (i.e., add a constant expression with the error message instead of 'unkown' message: unknown expression "foo" ip saddr drop This won't allow 'nft -f' however. I'm not sure this is a problem, in any case we lose information if we can't find an expression (e.g. added by newer version). Signed-off-by: Florian Westphal <>
1 files changed, 1 insertions, 1 deletions
diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c
index 8da7c17c..31d62420 100644
--- a/src/netlink_delinearize.c
+++ b/src/netlink_delinearize.c
@@ -1399,7 +1399,7 @@ static int netlink_parse_expr(const struct nftnl_expr *nle,
netlink_error(ctx, &loc, "unknown expression type '%s'", type);
- return -1;
+ return 0;
static int netlink_parse_rule_expr(struct nftnl_expr *nle, void *arg)