From patchwork Tue Jan 7 11:47:21 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arturo Borrero X-Patchwork-Id: 307617 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 09F772C00E4 for ; Tue, 7 Jan 2014 22:47:32 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751168AbaAGLra (ORCPT ); Tue, 7 Jan 2014 06:47:30 -0500 Received: from smtp3.cica.es ([150.214.5.190]:53930 "EHLO smtp.cica.es" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751054AbaAGLra (ORCPT ); Tue, 7 Jan 2014 06:47:30 -0500 Received: from localhost (unknown [127.0.0.1]) by smtp.cica.es (Postfix) with ESMTP id 0ABF451ED25; Tue, 7 Jan 2014 11:47:29 +0000 (UTC) X-Virus-Scanned: amavisd-new at cica.es Received: from smtp.cica.es ([127.0.0.1]) by localhost (mail.cica.es [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KDqC-ClSCirP; Tue, 7 Jan 2014 12:47:24 +0100 (CET) Received: from nfdev.cica.es (nfdev.cica.es [IPv6:2a00:9ac0:c1ca:31::220]) by smtp.cica.es (Postfix) with ESMTP id E6E6A51ED20; Tue, 7 Jan 2014 12:47:23 +0100 (CET) Subject: [libnftables PATCH 2/6] set_elem: add json parsing to API To: netfilter-devel@vger.kernel.org From: Arturo Borrero Gonzalez Cc: pablo@netfilter.org Date: Tue, 07 Jan 2014 12:47:21 +0100 Message-ID: <20140107114721.12841.19345.stgit@nfdev.cica.es> In-Reply-To: <20140107114518.12841.35778.stgit@nfdev.cica.es> References: <20140107114518.12841.35778.stgit@nfdev.cica.es> User-Agent: StGit/0.15 MIME-Version: 1.0 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org 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 --- 0 files changed -- 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 diff --git a/src/internal.h b/src/internal.h index 9ef505f..5fef6d6 100644 --- a/src/internal.h +++ b/src/internal.h @@ -105,8 +105,8 @@ int nft_jansson_data_reg_parse(json_t *root, const char *node_name, union nft_data_reg *data_reg, struct nft_parse_err *err); struct nft_set_elem; -int nft_set_elem_json_parse(struct nft_set_elem *e, json_t *root, - struct nft_parse_err *err); +int nft_jansson_set_elem_parse(struct nft_set_elem *e, json_t *root, + struct nft_parse_err *err); struct nft_table; int nft_jansson_parse_table(struct nft_table *t, json_t *tree, struct nft_parse_err *err); diff --git a/src/jansson.c b/src/jansson.c index 54a56b9..e62116b 100644 --- a/src/jansson.c +++ b/src/jansson.c @@ -244,8 +244,8 @@ int nft_jansson_data_reg_parse(json_t *root, const char *node_name, } } -int nft_set_elem_json_parse(struct nft_set_elem *e, json_t *root, - struct nft_parse_err *err) +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; diff --git a/src/set.c b/src/set.c index 32c7fff..9317b9c 100644 --- a/src/set.c +++ b/src/set.c @@ -357,7 +357,8 @@ int nft_jansson_parse_set(struct nft_set *s, json_t *tree, if (json_elem == NULL) goto err; - if (nft_set_elem_json_parse(elem, json_elem, err) < 0) + if (nft_jansson_set_elem_parse(elem, + json_elem, err) < 0) goto err; list_add_tail(&elem->head, &s->element_list); 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;