diff options
author | Ana Rey <anarey@gmail.com> | 2014-04-09 11:16:19 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-04-14 10:46:06 +0200 |
commit | 1a0abb3036452852757d13fe394c6c72dff877bd (patch) | |
tree | a9d8902e2725659d274d4830cf8809ed34c4b160 /src | |
parent | 5d20b27ac4365ab153afe476895926ede9b74528 (diff) |
xml, json: Delete a cmpdata label in xml and json file
It delete the cmpdata label in the structure of json and xml file.
Example of xmlfile:
The old structure of xml file:
[...]
<expr type="cmp">
<sreg>1</sreg>
<op>eq</op>
<cmpdata>
<data_reg type="value">
<len>4</len>
<data0>0x0100a8c0</data0>
</data_reg>
</cmpdata>
</expr>
The new structure of json file:
[...]
<expr type="cmp">
<sreg>1</sreg>
<op>eq</op>
<data_reg type="value">
<len>4</len>
<data0>0x0100a8c0</data0>
</data_reg>
</expr>
[...]
To generate the new testfiles, It use the option -u of nft-parsing-test
script.
Signed-off-by: Ana Rey <anarey@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/expr/cmp.c | 10 | ||||
-rw-r--r-- | src/jansson.c | 9 | ||||
-rw-r--r-- | src/mxml.c | 11 |
3 files changed, 8 insertions, 22 deletions
diff --git a/src/expr/cmp.c b/src/expr/cmp.c index 63250f3..2c334ab 100644 --- a/src/expr/cmp.c +++ b/src/expr/cmp.c @@ -258,7 +258,7 @@ nft_rule_expr_cmp_snprintf_json(char *buf, size_t size, struct nft_expr_cmp *cmp { int len = size, offset = 0, ret; - ret = snprintf(buf, len, "\"sreg\":%u,\"op\":\"%s\",\"cmpdata\":{", + ret = snprintf(buf, len, "\"sreg\":%u,\"op\":\"%s\",", cmp->sreg, expr_cmp_str[cmp->op]); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); @@ -266,9 +266,6 @@ nft_rule_expr_cmp_snprintf_json(char *buf, size_t size, struct nft_expr_cmp *cmp NFT_OUTPUT_JSON, 0, DATA_VALUE); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - ret = snprintf(buf+offset, len, "}"); - SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - return offset; } @@ -277,7 +274,7 @@ nft_rule_expr_cmp_snprintf_xml(char *buf, size_t size, struct nft_expr_cmp *cmp) { int len = size, offset = 0, ret; - ret = snprintf(buf, len, "<sreg>%u</sreg><op>%s</op><cmpdata>", + ret = snprintf(buf, len, "<sreg>%u</sreg><op>%s</op>", cmp->sreg, expr_cmp_str[cmp->op]); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); @@ -285,9 +282,6 @@ nft_rule_expr_cmp_snprintf_xml(char *buf, size_t size, struct nft_expr_cmp *cmp) NFT_OUTPUT_XML, 0, DATA_VALUE); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - ret = snprintf(buf+offset, len, "</cmpdata>"); - SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - return offset; } diff --git a/src/jansson.c b/src/jansson.c index 5107eb5..affe8fe 100644 --- a/src/jansson.c +++ b/src/jansson.c @@ -215,13 +215,10 @@ int nft_jansson_data_reg_parse(json_t *root, const char *node_name, json_t *data; int ret; + /* It is necessary for the compatibility with cmpdata label. */ data = json_object_get(root, node_name); - if (data == NULL) { - err->error = NFT_PARSE_EMISSINGNODE; - err->node_name = node_name; - errno = EINVAL; - return -1; - } + if (data == NULL) + data = root; data = json_object_get(data, "data_reg"); if (data == NULL) { @@ -140,15 +140,10 @@ int nft_mxml_data_reg_parse(mxml_node_t *tree, const char *node_name, node = mxmlFindElement(tree, tree, node_name, NULL, NULL, MXML_DESCEND_FIRST); - if (node == NULL || node->child == NULL) { - if (!(flags & NFT_XML_OPT)) { - err->error = NFT_PARSE_EMISSINGNODE; - err->node_name = node_name; - errno = EINVAL; - } - return DATA_NONE; - } + /* It is necessary for the compatibility with cmpdata label. */ + if (node == NULL || node->child == NULL) + node = tree; return nft_data_reg_xml_parse(data_reg, node, err); } |