From 878b97fc251a09c12db489c32b87bf33aa5aa81b Mon Sep 17 00:00:00 2001 From: Shivani Bhardwaj Date: Fri, 29 Jan 2016 01:05:37 +0530 Subject: src: netlink_linearize: Fix bug for redirect target Before this patch, $ sudo nft --debug=netlink add rule ip nat post ip protocol tcp redirect to 100-200 ip nat post [ payload load 1b @ network header + 9 => reg 1 ] [ cmp eq reg 1 0x00000006 ] [ immediate reg 1 0x00006400 ] [ immediate reg 2 0x0000c800 ] [ redir proto_min reg 1 proto_max reg 5 ] :1:1-56: Error: Could not process rule: Invalid argument add rule ip nat post ip protocol tcp redirect to 100-200 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ After this patch, $ sudo nft --debug=netlink add rule ip nat post ip protocol tcp redirect to 100-200 ip nat post [ payload load 1b @ network header + 9 => reg 1 ] [ cmp eq reg 1 0x00000006 ] [ immediate reg 1 0x00006400 ] [ immediate reg 2 0x0000c800 ] [ redir proto_min reg 1 proto_max reg 2 ] Signed-off-by: Shivani Bhardwaj Signed-off-by: Pablo Neira Ayuso --- src/netlink_linearize.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/netlink_linearize.c b/src/netlink_linearize.c index 63b3146c..86b49c64 100644 --- a/src/netlink_linearize.c +++ b/src/netlink_linearize.c @@ -919,14 +919,17 @@ static void netlink_gen_redir_stmt(struct netlink_linearize_ctx *ctx, pmin_reg); netlink_gen_expr(ctx, stmt->redir.proto->right, pmax_reg); - nftnl_expr_set_u32(nle, NFTNL_EXPR_REDIR_REG_PROTO_MIN, - pmin_reg); - nftnl_expr_set_u32(nle, NFTNL_EXPR_REDIR_REG_PROTO_MAX, - pmax_reg); + netlink_put_register(nle, + NFTNL_EXPR_REDIR_REG_PROTO_MIN, + pmin_reg); + netlink_put_register(nle, + NFTNL_EXPR_REDIR_REG_PROTO_MAX, + pmax_reg); } else { netlink_gen_expr(ctx, stmt->redir.proto, pmin_reg); - nftnl_expr_set_u32(nle, NFTNL_EXPR_REDIR_REG_PROTO_MIN, - pmin_reg); + netlink_put_register(nle, + NFTNL_EXPR_REDIR_REG_PROTO_MIN, + pmin_reg); } } -- cgit v1.2.3