summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlvaro Neira <alvaroneay@gmail.com>2015-01-12 14:46:15 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2015-01-15 13:09:07 +0100
commitdbdf25c7c95969431b0c45cc2dd165021d6a05cc (patch)
tree69424ada6a1f510937a038ffe37d7c8f5eb7991e
parent1fc12719b6d878622e25825ef32615f281bb5e4d (diff)
ruleset: refactor nft_ruleset_*_parse_ruleset()
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> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--src/ruleset.c58
1 files changed, 38 insertions, 20 deletions
diff --git a/src/ruleset.c b/src/ruleset.c
index a397824..c29c307 100644
--- a/src/ruleset.c
+++ b/src/ruleset.c
@@ -330,6 +330,23 @@ err:
return -1;
}
+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;
+}
#endif
static int nft_ruleset_json_parse(struct nft_ruleset *rs, const void *json,
@@ -349,16 +366,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);
@@ -537,6 +545,25 @@ err_free:
nft_rule_list_free(rule_list);
return -1;
}
+
+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;
+}
#endif
static int nft_ruleset_xml_parse(struct nft_ruleset *rs, const void *xml,
@@ -549,16 +576,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);