@@ -332,6 +332,24 @@ err:
#endif
+static int nft_ruleset_json_parse_ruleset(struct nft_ruleset *rs, json_t *array,
+ struct nft_parse_err *err)
+{
+ if (nft_ruleset_json_parse_tables(rs, array, err) != 0)
+ return -1;
+
+ if (nft_ruleset_json_parse_chains(rs, array, err) != 0)
+ return -1;
+
+ if (nft_ruleset_json_parse_sets(rs, array, err) != 0)
+ return -1;
+
+ if (nft_ruleset_json_parse_rules(rs, array, err) != 0)
+ return -1;
+
+ return 0;
+}
+
static int nft_ruleset_json_parse(struct nft_ruleset *rs, const void *json,
struct nft_parse_err *err, enum nft_parse_input input)
{
@@ -349,16 +367,7 @@ static int nft_ruleset_json_parse(struct nft_ruleset *rs, const void *json,
goto err;
}
- if (nft_ruleset_json_parse_tables(rs, array, err) != 0)
- goto err;
-
- if (nft_ruleset_json_parse_chains(rs, array, err) != 0)
- goto err;
-
- if (nft_ruleset_json_parse_sets(rs, array, err) != 0)
- goto err;
-
- if (nft_ruleset_json_parse_rules(rs, array, err) != 0)
+ if (nft_ruleset_json_parse_ruleset(rs, array, err) != 0)
goto err;
nft_jansson_free_root(root);
@@ -539,6 +548,25 @@ err_free:
}
#endif
+static int nft_ruleset_xml_parse_ruleset(struct nft_ruleset *rs,
+ mxml_node_t *tree,
+ struct nft_parse_err *err)
+{
+ if (nft_ruleset_xml_parse_tables(rs, tree, err) != 0)
+ return -1;
+
+ if (nft_ruleset_xml_parse_chains(rs, tree, err) != 0)
+ return -1;
+
+ if (nft_ruleset_xml_parse_sets(rs, tree, err) != 0)
+ return -1;
+
+ if (nft_ruleset_xml_parse_rules(rs, tree, err, rs->set_list) != 0)
+ return -1;
+
+ return 0;
+}
+
static int nft_ruleset_xml_parse(struct nft_ruleset *rs, const void *xml,
struct nft_parse_err *err, enum nft_parse_input input)
{
@@ -549,16 +577,7 @@ static int nft_ruleset_xml_parse(struct nft_ruleset *rs, const void *xml,
if (tree == NULL)
return -1;
- if (nft_ruleset_xml_parse_tables(rs, tree, err) != 0)
- goto err;
-
- if (nft_ruleset_xml_parse_chains(rs, tree, err) != 0)
- goto err;
-
- if (nft_ruleset_xml_parse_sets(rs, tree, err) != 0)
- goto err;
-
- if (nft_ruleset_xml_parse_rules(rs, tree, err, rs->set_list) != 0)
+ if (nft_ruleset_xml_parse_ruleset(rs, tree, err) != 0)
goto err;
mxmlDelete(tree);
Refactor the parsing ruleset element functions calls in xml/json to do that calls in the functions nft_ruleset_*_parse_ruleset. This patch is used in follow up patches. Signed-off-by: Alvaro Neira Ayuso <alvaroneay@gmail.com> --- src/ruleset.c | 59 ++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 20 deletions(-)