diff options
author | Ana Rey <anarey@gmail.com> | 2014-06-11 17:50:49 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-06-11 19:43:36 +0200 |
commit | 5e90b0df344b9b57f841b312893791c066ba382a (patch) | |
tree | e3f883ff92aab99b29514466fbafc85496b60dec /src/jansson.c | |
parent | cbb40e407ed32c91a4d1d84eb7ad83401ce569c9 (diff) |
src: set: Do not print unset values in json
It changes the parse and the snprint functions to omit unset values.
This json file is gotten for a set:
{
"set": {
"name": "mi6set3",
"table": "test6",
"flags": "0",
"family": "unknown",
"key_type": "0",
"key_len": "0",
"set_elem": [
{
"flags": "0",
"key": {
"data_reg": {
"type": "value",
"len": "16",
"data0": "0x000080fe",
"data1": "0x00000000",
"data2": "0xffb30202",
"data3": "0x89001efe"
Now, This json file is gotten for a set without unset elements.
{
"set": {
"name": "mi6set3",
"table": "test6",
"family": "unknown",
"set_elem": [
{
"key": {
"data_reg": {
"type": "value",
"len": "16",
"data0": "0x000080fe",
"data1": "0x00000000",
"data2": "0xffb30202",
"data3": "0x89001efe"
[ Note: These fields are unset when they are obtained from the set element
information --pablo. ]
Signed-off-by: Ana Rey <anarey@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/jansson.c')
-rw-r--r-- | src/jansson.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/jansson.c b/src/jansson.c index affe8fe..377d06e 100644 --- a/src/jansson.c +++ b/src/jansson.c @@ -240,18 +240,14 @@ int nft_jansson_data_reg_parse(json_t *root, const char *node_name, int nft_jansson_set_elem_parse(struct nft_set_elem *e, json_t *root, struct nft_parse_err *err) { - uint32_t uval32; int set_elem_data; + uint32_t flags; - if (nft_jansson_parse_val(root, "flags", NFT_TYPE_U32, &uval32, err) < 0) - return -1; - - nft_set_elem_attr_set_u32(e, NFT_SET_ELEM_ATTR_FLAGS, uval32); + if (nft_jansson_parse_val(root, "flags", NFT_TYPE_U32, &flags, err) == 0) + nft_set_elem_attr_set_u32(e, NFT_SET_ELEM_ATTR_FLAGS, flags); - if (nft_jansson_data_reg_parse(root, "key", &e->key, err) != DATA_VALUE) - return -1; - - e->flags |= (1 << NFT_SET_ELEM_ATTR_KEY); + if (nft_jansson_data_reg_parse(root, "key", &e->key, err) == DATA_VALUE) + e->flags |= (1 << NFT_SET_ELEM_ATTR_KEY); if (nft_jansson_node_exist(root, "data")) { set_elem_data = nft_jansson_data_reg_parse(root, "data", @@ -264,7 +260,6 @@ int nft_jansson_set_elem_parse(struct nft_set_elem *e, json_t *root, e->flags |= (1 << NFT_SET_ELEM_ATTR_VERDICT); if (e->data.chain != NULL) e->flags |= (1 << NFT_SET_ELEM_ATTR_CHAIN); - break; case DATA_NONE: default: |