It changes the parse functions to omit unset values. Signed-off-by: Ana Rey <anarey@xxxxxxxxx> --- src/expr/ct.c | 44 ++++++++++++++++++-------------------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/src/expr/ct.c b/src/expr/ct.c index f2718f9..28ac13b 100644 --- a/src/expr/ct.c +++ b/src/expr/ct.c @@ -231,44 +231,36 @@ static int nft_rule_expr_ct_json_parse(struct nft_rule_expr *e, json_t *root, int key; if (nft_jansson_node_exist(root, "dreg")) { - if (nft_jansson_parse_reg(root, "dreg", NFT_TYPE_U32, ®, err) < 0) - return -1; - - nft_rule_expr_set_u32(e, NFT_EXPR_CT_DREG, reg); + if (nft_jansson_parse_reg(root, "dreg", NFT_TYPE_U32, ®, + err) == 0) + nft_rule_expr_set_u32(e, NFT_EXPR_CT_DREG, reg); } if (nft_jansson_node_exist(root, "sreg")) { - if (nft_jansson_parse_reg(root, "sreg", NFT_TYPE_U32, ®, err) < 0) - return -1; - - nft_rule_expr_set_u32(e, NFT_EXPR_CT_SREG, reg); + if (nft_jansson_parse_reg(root, "sreg", NFT_TYPE_U32, ®, + err) == 0) + nft_rule_expr_set_u32(e, NFT_EXPR_CT_SREG, reg); } if (nft_jansson_node_exist(root, "key")) { key_str = nft_jansson_parse_str(root, "key", err); - if (key_str == NULL) - return -1; - - key = str2ctkey(key_str); - if (key < 0) - goto err; - - nft_rule_expr_set_u32(e, NFT_EXPR_CT_KEY, key); - + if (key_str != NULL) { + key = str2ctkey(key_str); + if (key >= 0) + nft_rule_expr_set_u32(e, NFT_EXPR_CT_KEY, key); + } } if (nft_jansson_node_exist(root, "dir")) { dir_str = nft_jansson_parse_str(root, "dir", err); - if (dir_str == NULL) - return -1; - - if (str2ctdir(dir_str, &dir) != 0) { - err->node_name = "dir"; - err->error = NFT_PARSE_EBADTYPE; - goto err; - } - + if (dir_str != NULL) { + if (str2ctdir(dir_str, &dir) != 0) { + err->node_name = "dir"; + err->error = NFT_PARSE_EBADTYPE; + goto err; + } nft_rule_expr_set_u8(e, NFT_EXPR_CT_DIR, dir); + } } return 0; -- 2.0.0 -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html