[libnftnl PATCH 4/4] expr: ct: Do not print unset values in json

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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, &reg, 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, &reg,
+					  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, &reg, 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, &reg,
+					  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




[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux