All of lore.kernel.org
 help / color / mirror / Atom feed
* [libnftnl PATCH 0/4] expr: cmp: Do not print unset values in xml and json
@ 2014-06-19 17:34 Ana Rey
  2014-06-19 17:34 ` [libnftnl PATCH 1/4] expr: cmp: Get a nft_rule_expr type in nft_rule_expr_cmp_snprintf_* functions Ana Rey
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Ana Rey @ 2014-06-19 17:34 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Ana Rey

This patchset does tasks about does not print unset value in xml and json file
and about refactoring code:
 * expr: cmp: Get a nft_rule_expr type in nft_rule_expr_cmp_snprintf_* functions
 * expr: cmp: Use nft_rule_expr_set_* in the xml parsing code


Ana Rey (4):
  expr: cmp: Get a nft_rule_expr type in nft_rule_expr_cmp_snprintf_*
    functions
  expr: cmp: Use nft_rule_expr_set_* in the xml parsing code
  expr: cmp: Do not print unset values in xml file
  expr: cmp: Do not print unset values in json file

 src/expr/cmp.c | 112 ++++++++++++++++++++++++++++-----------------------------
 1 file changed, 55 insertions(+), 57 deletions(-)

-- 
2.0.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [libnftnl PATCH 1/4] expr: cmp: Get a nft_rule_expr type in nft_rule_expr_cmp_snprintf_* functions
  2014-06-19 17:34 [libnftnl PATCH 0/4] expr: cmp: Do not print unset values in xml and json Ana Rey
@ 2014-06-19 17:34 ` Ana Rey
  2014-06-19 17:34 ` [libnftnl PATCH 2/4] expr: cmp: Use nft_rule_expr_set_* in the xml parsing code Ana Rey
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Ana Rey @ 2014-06-19 17:34 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Ana Rey

Code refactoring in nft_rule_expr_cmp_snprintf_* functions to get a
nft_rule_expr type instead of nft_expr_cmp type.

Signed-off-by: Ana Rey <anarey@gmail.com>
---
 src/expr/cmp.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/expr/cmp.c b/src/expr/cmp.c
index 2c334ab..b21fa9d 100644
--- a/src/expr/cmp.c
+++ b/src/expr/cmp.c
@@ -253,9 +253,10 @@ static int nft_rule_expr_cmp_xml_parse(struct nft_rule_expr *e, mxml_node_t *tre
 #endif
 }
 
-static int
-nft_rule_expr_cmp_snprintf_json(char *buf, size_t size, struct nft_expr_cmp *cmp)
+static int nft_rule_expr_cmp_snprintf_json(char *buf, size_t size,
+					   struct nft_rule_expr *e)
 {
+	struct nft_expr_cmp *cmp = nft_expr_data(e);
 	int len = size, offset = 0, ret;
 
 	ret = snprintf(buf, len, "\"sreg\":%u,\"op\":\"%s\",",
@@ -269,9 +270,10 @@ nft_rule_expr_cmp_snprintf_json(char *buf, size_t size, struct nft_expr_cmp *cmp
 	return offset;
 }
 
-static int
-nft_rule_expr_cmp_snprintf_xml(char *buf, size_t size, struct nft_expr_cmp *cmp)
+static int nft_rule_expr_cmp_snprintf_xml(char *buf, size_t size,
+					  struct nft_rule_expr *e)
 {
+	struct nft_expr_cmp *cmp = nft_expr_data(e);
 	int len = size, offset = 0, ret;
 
 	ret = snprintf(buf, len, "<sreg>%u</sreg><op>%s</op>",
@@ -285,10 +287,10 @@ nft_rule_expr_cmp_snprintf_xml(char *buf, size_t size, struct nft_expr_cmp *cmp)
 	return offset;
 }
 
-static int
-nft_rule_expr_cmp_snprintf_default(char *buf, size_t size,
-				   struct nft_expr_cmp *cmp)
+static int nft_rule_expr_cmp_snprintf_default(char *buf, size_t size,
+					      struct nft_rule_expr *e)
 {
+	struct nft_expr_cmp *cmp = nft_expr_data(e);
 	int len = size, offset = 0, ret;
 
 	ret = snprintf(buf, len, "%s reg %u ",
@@ -306,15 +308,13 @@ static int
 nft_rule_expr_cmp_snprintf(char *buf, size_t size, uint32_t type,
 			   uint32_t flags, struct nft_rule_expr *e)
 {
-	struct nft_expr_cmp *cmp = nft_expr_data(e);
-
 	switch(type) {
 	case NFT_OUTPUT_DEFAULT:
-		return nft_rule_expr_cmp_snprintf_default(buf, size, cmp);
+		return nft_rule_expr_cmp_snprintf_default(buf, size, e);
 	case NFT_OUTPUT_XML:
-		return nft_rule_expr_cmp_snprintf_xml(buf, size, cmp);
+		return nft_rule_expr_cmp_snprintf_xml(buf, size, e);
 	case NFT_OUTPUT_JSON:
-		return nft_rule_expr_cmp_snprintf_json(buf, size, cmp);
+		return nft_rule_expr_cmp_snprintf_json(buf, size, e);
 	default:
 		break;
 	}
-- 
2.0.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [libnftnl PATCH 2/4] expr: cmp: Use nft_rule_expr_set_* in the xml parsing code
  2014-06-19 17:34 [libnftnl PATCH 0/4] expr: cmp: Do not print unset values in xml and json Ana Rey
  2014-06-19 17:34 ` [libnftnl PATCH 1/4] expr: cmp: Get a nft_rule_expr type in nft_rule_expr_cmp_snprintf_* functions Ana Rey
@ 2014-06-19 17:34 ` Ana Rey
  2014-06-19 17:34 ` [libnftnl PATCH 3/4] expr: cmp: Do not print unset values in xml file Ana Rey
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Ana Rey @ 2014-06-19 17:34 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Ana Rey

Code refactoring to use nft_rule_expr_cmp_* in parse functions.

Signed-off-by: Ana Rey <anarey@gmail.com>
---
 src/expr/cmp.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/src/expr/cmp.c b/src/expr/cmp.c
index b21fa9d..cc01573 100644
--- a/src/expr/cmp.c
+++ b/src/expr/cmp.c
@@ -218,14 +218,12 @@ static int nft_rule_expr_cmp_xml_parse(struct nft_rule_expr *e, mxml_node_t *tre
 	struct nft_expr_cmp *cmp = nft_expr_data(e);
 	const char *op;
 	int32_t op_value;
-	uint32_t reg;
+	uint32_t sreg;
 
-	if (nft_mxml_reg_parse(tree, "sreg", &reg, MXML_DESCEND_FIRST,
+	if (nft_mxml_reg_parse(tree, "sreg", &sreg, MXML_DESCEND_FIRST,
 			       NFT_XML_MAND, err) != 0)
 		return -1;
-
-	cmp->sreg = reg;
-	e->flags |= (1 << NFT_EXPR_CMP_SREG);
+	nft_rule_expr_set_u32(e, NFT_EXPR_CMP_SREG, sreg);
 
 	op = nft_mxml_str_parse(tree, "op", MXML_DESCEND_FIRST, NFT_XML_MAND,
 				err);
@@ -235,9 +233,7 @@ static int nft_rule_expr_cmp_xml_parse(struct nft_rule_expr *e, mxml_node_t *tre
 	op_value = nft_str2cmp(op);
 	if (op_value < 0)
 		return -1;
-
-	cmp->op = op_value;
-	e->flags |= (1 << NFT_EXPR_CMP_OP);
+	nft_rule_expr_set_u32(e, NFT_EXPR_CMP_OP, op_value);
 
 	if (nft_mxml_data_reg_parse(tree, "cmpdata",
 				    &cmp->data, NFT_XML_MAND,
-- 
2.0.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [libnftnl PATCH 3/4] expr: cmp: Do not print unset values in xml file
  2014-06-19 17:34 [libnftnl PATCH 0/4] expr: cmp: Do not print unset values in xml and json Ana Rey
  2014-06-19 17:34 ` [libnftnl PATCH 1/4] expr: cmp: Get a nft_rule_expr type in nft_rule_expr_cmp_snprintf_* functions Ana Rey
  2014-06-19 17:34 ` [libnftnl PATCH 2/4] expr: cmp: Use nft_rule_expr_set_* in the xml parsing code Ana Rey
@ 2014-06-19 17:34 ` Ana Rey
  2014-06-19 17:34 ` [libnftnl PATCH 4/4] expr: cmp: Do not print unset values in json file Ana Rey
  2014-06-20  7:05 ` [libnftnl PATCH 0/4] expr: cmp: Do not print unset values in xml and json Arturo Borrero Gonzalez
  4 siblings, 0 replies; 6+ messages in thread
From: Ana Rey @ 2014-06-19 17:34 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Ana Rey

It changes the parse and snprintf functions to omit unset values.

Signed-off-by: Ana Rey <anarey@gmail.com>
---
 src/expr/cmp.c | 39 +++++++++++++++++++++------------------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/src/expr/cmp.c b/src/expr/cmp.c
index cc01573..5fd02e4 100644
--- a/src/expr/cmp.c
+++ b/src/expr/cmp.c
@@ -221,26 +221,21 @@ static int nft_rule_expr_cmp_xml_parse(struct nft_rule_expr *e, mxml_node_t *tre
 	uint32_t sreg;
 
 	if (nft_mxml_reg_parse(tree, "sreg", &sreg, MXML_DESCEND_FIRST,
-			       NFT_XML_MAND, err) != 0)
-		return -1;
-	nft_rule_expr_set_u32(e, NFT_EXPR_CMP_SREG, sreg);
+			       NFT_XML_MAND, err) == 0)
+		nft_rule_expr_set_u32(e, NFT_EXPR_CMP_SREG, sreg);
 
 	op = nft_mxml_str_parse(tree, "op", MXML_DESCEND_FIRST, NFT_XML_MAND,
 				err);
-	if (op == NULL)
-		return -1;
-
-	op_value = nft_str2cmp(op);
-	if (op_value < 0)
-		return -1;
-	nft_rule_expr_set_u32(e, NFT_EXPR_CMP_OP, op_value);
+	if (op != NULL) {
+		op_value = nft_str2cmp(op);
+		if (op_value >= 0)
+			nft_rule_expr_set_u32(e, NFT_EXPR_CMP_OP, op_value);
+	}
 
 	if (nft_mxml_data_reg_parse(tree, "cmpdata",
 				    &cmp->data, NFT_XML_MAND,
-				    err) != DATA_VALUE)
-		return -1;
-
-	e->flags |= (1 << NFT_EXPR_CMP_DATA);
+				    err) == DATA_VALUE)
+		e->flags |= (1 << NFT_EXPR_CMP_DATA);
 
 	return 0;
 #else
@@ -272,11 +267,19 @@ static int nft_rule_expr_cmp_snprintf_xml(char *buf, size_t size,
 	struct nft_expr_cmp *cmp = nft_expr_data(e);
 	int len = size, offset = 0, ret;
 
-	ret = snprintf(buf, len, "<sreg>%u</sreg><op>%s</op>",
-		       cmp->sreg, expr_cmp_str[cmp->op]);
-	SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+	if (e->flags & (1 << NFT_EXPR_CMP_SREG)) {
+		ret = snprintf(buf, len, "<sreg>%u</sreg>",
+			       cmp->sreg);
+		SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+	}
 
-	ret = nft_data_reg_snprintf(buf+offset, len, &cmp->data,
+	if (e->flags & (1 << NFT_EXPR_CMP_SREG)) {
+		ret = snprintf(buf + offset, len, "<op>%s</op>",
+			       expr_cmp_str[cmp->op]);
+		SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+	}
+
+	ret = nft_data_reg_snprintf(buf + offset, len, &cmp->data,
 				    NFT_OUTPUT_XML, 0, DATA_VALUE);
 	SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
 
-- 
2.0.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [libnftnl PATCH 4/4] expr: cmp: Do not print unset values in json file
  2014-06-19 17:34 [libnftnl PATCH 0/4] expr: cmp: Do not print unset values in xml and json Ana Rey
                   ` (2 preceding siblings ...)
  2014-06-19 17:34 ` [libnftnl PATCH 3/4] expr: cmp: Do not print unset values in xml file Ana Rey
@ 2014-06-19 17:34 ` Ana Rey
  2014-06-20  7:05 ` [libnftnl PATCH 0/4] expr: cmp: Do not print unset values in xml and json Arturo Borrero Gonzalez
  4 siblings, 0 replies; 6+ messages in thread
From: Ana Rey @ 2014-06-19 17:34 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Ana Rey

It changes the parse and snprintf functions to omit unset values.

Signed-off-by: Ana Rey <anarey@gmail.com>
---
 src/expr/cmp.c | 41 ++++++++++++++++++++---------------------
 1 file changed, 20 insertions(+), 21 deletions(-)

diff --git a/src/expr/cmp.c b/src/expr/cmp.c
index 5fd02e4..633e114 100644
--- a/src/expr/cmp.c
+++ b/src/expr/cmp.c
@@ -183,26 +183,20 @@ static int nft_rule_expr_cmp_json_parse(struct nft_rule_expr *e, json_t *root,
 	uint32_t uval32;
 	int base;
 
-	if (nft_jansson_parse_val(root, "sreg", NFT_TYPE_U32, &uval32, err) < 0)
-		return -1;
-
-	nft_rule_expr_set_u32(e, NFT_EXPR_CMP_SREG, uval32);
+	if (nft_jansson_parse_val(root, "sreg", NFT_TYPE_U32, &uval32,
+				  err) == 0)
+		nft_rule_expr_set_u32(e, NFT_EXPR_CMP_SREG, uval32);
 
 	op = nft_jansson_parse_str(root, "op", err);
-	if (op == NULL)
-		return -1;
-
-	base = nft_str2cmp(op);
-	if (base < 0)
-		return -1;
-
-	nft_rule_expr_set_u32(e, NFT_EXPR_CMP_OP, base);
+	if (op != NULL) {
+		base = nft_str2cmp(op);
+		if (base >= 0)
+			nft_rule_expr_set_u32(e, NFT_EXPR_CMP_OP, base);
+	}
 
 	if (nft_jansson_data_reg_parse(root, "cmpdata",
-				       &cmp->data, err) != DATA_VALUE)
-		return -1;
-
-	e->flags |= (1 << NFT_EXPR_CMP_DATA);
+				       &cmp->data, err) == DATA_VALUE)
+		e->flags |= (1 << NFT_EXPR_CMP_DATA);
 
 	return 0;
 #else
@@ -250,11 +244,16 @@ static int nft_rule_expr_cmp_snprintf_json(char *buf, size_t size,
 	struct nft_expr_cmp *cmp = nft_expr_data(e);
 	int len = size, offset = 0, ret;
 
-	ret = snprintf(buf, len, "\"sreg\":%u,\"op\":\"%s\",",
-		       cmp->sreg, expr_cmp_str[cmp->op]);
-	SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
-
-	ret = nft_data_reg_snprintf(buf+offset, len, &cmp->data,
+	if (e->flags & (1 << NFT_EXPR_CMP_SREG)) {
+		ret = snprintf(buf + offset, len, "\"sreg\":%u,", cmp->sreg);
+		SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+	}
+	if (e->flags & (1 << NFT_EXPR_CMP_OP)) {
+		ret = snprintf(buf + offset, len, "\"op\":\"%s\",",
+			       expr_cmp_str[cmp->op]);
+		SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+	}
+	ret = nft_data_reg_snprintf(buf + offset, len, &cmp->data,
 				    NFT_OUTPUT_JSON, 0, DATA_VALUE);
 	SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
 
-- 
2.0.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [libnftnl PATCH 0/4] expr: cmp: Do not print unset values in xml and json
  2014-06-19 17:34 [libnftnl PATCH 0/4] expr: cmp: Do not print unset values in xml and json Ana Rey
                   ` (3 preceding siblings ...)
  2014-06-19 17:34 ` [libnftnl PATCH 4/4] expr: cmp: Do not print unset values in json file Ana Rey
@ 2014-06-20  7:05 ` Arturo Borrero Gonzalez
  4 siblings, 0 replies; 6+ messages in thread
From: Arturo Borrero Gonzalez @ 2014-06-20  7:05 UTC (permalink / raw)
  To: Ana Rey; +Cc: Netfilter Development Mailing list

On 19 June 2014 19:34, Ana Rey <anarey@gmail.com> wrote:
> This patchset does tasks about does not print unset value in xml and json file
> and about refactoring code:
>  * expr: cmp: Get a nft_rule_expr type in nft_rule_expr_cmp_snprintf_* functions
>  * expr: cmp: Use nft_rule_expr_set_* in the xml parsing code
>
>
> Ana Rey (4):
>   expr: cmp: Get a nft_rule_expr type in nft_rule_expr_cmp_snprintf_*
>     functions
>   expr: cmp: Use nft_rule_expr_set_* in the xml parsing code
>   expr: cmp: Do not print unset values in xml file
>   expr: cmp: Do not print unset values in json file
>
>  src/expr/cmp.c | 112 ++++++++++++++++++++++++++++-----------------------------
>  1 file changed, 55 insertions(+), 57 deletions(-)
>

Hi Ana,

I reviewed this patch-set and is good to me.

thanks, regards.
-- 
Arturo Borrero González
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-06-20  7:06 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-19 17:34 [libnftnl PATCH 0/4] expr: cmp: Do not print unset values in xml and json Ana Rey
2014-06-19 17:34 ` [libnftnl PATCH 1/4] expr: cmp: Get a nft_rule_expr type in nft_rule_expr_cmp_snprintf_* functions Ana Rey
2014-06-19 17:34 ` [libnftnl PATCH 2/4] expr: cmp: Use nft_rule_expr_set_* in the xml parsing code Ana Rey
2014-06-19 17:34 ` [libnftnl PATCH 3/4] expr: cmp: Do not print unset values in xml file Ana Rey
2014-06-19 17:34 ` [libnftnl PATCH 4/4] expr: cmp: Do not print unset values in json file Ana Rey
2014-06-20  7:05 ` [libnftnl PATCH 0/4] expr: cmp: Do not print unset values in xml and json Arturo Borrero Gonzalez

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.