diff options
author | Arturo Borrero <arturo.borrero.glez@gmail.com> | 2014-01-07 12:47:21 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-01-08 00:14:18 +0100 |
commit | 2c21b41889abf93ff816b82b59e6bf2d4a084a61 (patch) | |
tree | 1c74371285d2ce2fba1a95d2498367046fff01e4 /src/set_elem.c | |
parent | 7cf3f99d7a4673644dd56984dc418daae48c6dd9 (diff) |
set_elem: add json parsing to API
Add missing support in the API function to parse a JSON set_elem.
I've renamed the main JSON parsing function to prevent clashing.
Signed-off-by: Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/set_elem.c')
-rw-r--r-- | src/set_elem.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/set_elem.c b/src/set_elem.c index 7365aff..14bf6f4 100644 --- a/src/set_elem.c +++ b/src/set_elem.c @@ -414,6 +414,24 @@ static int nft_set_elem_xml_parse(struct nft_set_elem *e, const char *xml, #endif } +static int nft_set_elem_json_parse(struct nft_set_elem *e, const void *json, + struct nft_parse_err *err) +{ +#ifdef JSON_PARSING + json_t *tree; + json_error_t error; + + tree = nft_jansson_create_root(json, &error, err); + if (tree == NULL) + return -1; + + return nft_jansson_set_elem_parse(e, tree, err); +#else + errno = EOPNOTSUPP; + return -1; +#endif +} + int nft_set_elem_parse(struct nft_set_elem *e, enum nft_parse_type type, const char *data, struct nft_parse_err *err) { @@ -423,6 +441,9 @@ int nft_set_elem_parse(struct nft_set_elem *e, case NFT_PARSE_XML: ret = nft_set_elem_xml_parse(e, data, err); break; + case NFT_PARSE_JSON: + ret = nft_set_elem_json_parse(e, data, err); + break; default: errno = EOPNOTSUPP; ret = -1; |