From 3451f89c65345dd22987c068647f54625b2f26ee Mon Sep 17 00:00:00 2001 From: Eric Leblond Date: Mon, 18 Nov 2013 00:54:45 +0100 Subject: verdict: fix delinearize in case of jump The name of the chain was not handled in case of a jump or a goto. This patch adds parsing of the chain. Reported-by: Alex Chapman Signed-off-by: Eric Leblond Signed-off-by: Pablo Neira Ayuso --- src/netlink_delinearize.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c index 3bb143b8..7e4e38c4 100644 --- a/src/netlink_delinearize.c +++ b/src/netlink_delinearize.c @@ -81,9 +81,13 @@ static void netlink_parse_immediate(struct netlink_parse_ctx *ctx, struct stmt *stmt; struct expr *expr; - if (nft_rule_expr_is_set(nle, NFT_EXPR_IMM_VERDICT)) + if (nft_rule_expr_is_set(nle, NFT_EXPR_IMM_VERDICT)) { nld.verdict = nft_rule_expr_get_u32(nle, NFT_EXPR_IMM_VERDICT); - else if (nft_rule_expr_is_set(nle, NFT_EXPR_IMM_DATA)) { + if (nft_rule_expr_is_set(nle, NFT_EXPR_IMM_CHAIN)) { + nld.chain = nft_rule_expr_get(nle, NFT_EXPR_IMM_CHAIN, + &nld.len); + } + } else if (nft_rule_expr_is_set(nle, NFT_EXPR_IMM_DATA)) { nld.value = nft_rule_expr_get(nle, NFT_EXPR_IMM_DATA, &nld.len); } -- cgit v1.2.3