From: Alvaro Neira <alvaroneay@gmail.com>
To: netfilter-devel@vger.kernel.org
Cc: eric@regit.org
Subject: [libnftables PATCH 2/7] jansson: Add helper function for building the tree
Date: Wed, 31 Jul 2013 15:20:59 +0200 [thread overview]
Message-ID: <20130731132058.29730.38608.stgit@Ph0enix> (raw)
In-Reply-To: <20130731132051.29730.53717.stgit@Ph0enix>
From: Álvaro Neira Ayuso <alvaroneay@gmail.com>
Add a helper function for parsing and return the jansson tree
Signed-off-by: Alvaro Neira Ayuso <alvaroneay@gmail.com>
---
src/internal.h | 1 +
src/jansson.c | 19 +++++++++++++++++++
src/table.c | 14 +++-----------
3 files changed, 23 insertions(+), 11 deletions(-)
diff --git a/src/internal.h b/src/internal.h
index a8ae431..d1c7690 100644
--- a/src/internal.h
+++ b/src/internal.h
@@ -45,6 +45,7 @@ int nft_jansson_value_parse_val(json_t *root, const char *tag,
int type, void *out);
const char *nft_jansson_value_parse_str(json_t *root, const char *tag);
bool nft_jansson_node_exist(json_t *root, const char *tag);
+json_t *nft_jansson_get_root(char *json, const char *tag, json_error_t *err);
#endif
const char *nft_family2str(uint32_t family);
diff --git a/src/jansson.c b/src/jansson.c
index cc68ae0..4c778d9 100644
--- a/src/jansson.c
+++ b/src/jansson.c
@@ -71,4 +71,23 @@ bool nft_jansson_node_exist(json_t *root, const char *tag)
{
return json_object_get(root, tag) != NULL;
}
+
+json_t *nft_jansson_get_root(char *json, const char *tag, json_error_t *err)
+{
+ json_t *root;
+
+ root = json_loadb(json, strlen(json), 0, err);
+ if (root == NULL) {
+ errno = EINVAL;
+ return NULL;
+ }
+
+ root = json_object_get(root, tag);
+ if (root == NULL) {
+ errno = EINVAL;
+ return NULL;
+ }
+
+ return root;
+}
#endif
diff --git a/src/table.c b/src/table.c
index 1f4fe76..526f3e7 100644
--- a/src/table.c
+++ b/src/table.c
@@ -290,17 +290,9 @@ static int nft_table_json_parse(struct nft_table *t, char *json)
const char *str;
int family;
- root = json_loadb(json, strlen(json), 0, &error);
- if (!root) {
- errno = EINVAL;
- goto err;
- }
-
- root = json_object_get(root, "table");
- if (root == NULL) {
- errno = EINVAL;
- goto err;
- }
+ root = nft_jansson_get_root(json, "table", &error);
+ if (root == NULL)
+ return -1;
str = nft_jansson_value_parse_str(root, "name");
if (str == NULL)
--
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
next prev parent reply other threads:[~2013-07-31 13:21 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-31 13:20 [libnftables PATCH 1/7] chain: change policy2str function to nft_verdict2str function Alvaro Neira
2013-07-31 13:20 ` Alvaro Neira [this message]
2013-07-31 13:21 ` [libnftables PATCH 3/7] table: remove the properties node in Json output Alvaro Neira
2013-07-31 13:21 ` [libnftables PATCH 4/7] chain: " Alvaro Neira
2013-07-31 13:21 ` [libnftables PATCH 5/7] chain:Add json parser support Alvaro Neira
2013-07-31 13:21 ` [libnftables PATCH 6/7] test:chain:test json parsing support Alvaro Neira
2013-07-31 13:21 ` [libnftables PATCH 7/7] examples: Add nft-chain-json-add Alvaro Neira
2013-07-31 17:14 ` [libnftables PATCH 1/7] chain: change policy2str function to nft_verdict2str function Pablo Neira Ayuso
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130731132058.29730.38608.stgit@Ph0enix \
--to=alvaroneay@gmail.com \
--cc=eric@regit.org \
--cc=netfilter-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).