summaryrefslogtreecommitdiffstats
path: root/src/mxml.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2013-08-07 22:31:52 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2013-08-07 22:39:36 +0200
commitaa78a088dde9875ae3e31468ea5e4ca3bd349d2c (patch)
tree1f06ab113506213e0d036296deef6b73aae3f37d /src/mxml.c
parentfc7d496788b8abb3f009b73898508032eced0c6c (diff)
src: xml: cleanup set element parsing
Move nft_mxml_set_elem_parse to set_elem.c to improve readability, thus, we don't need to jump from set_elem.c to mxml.c to see how the parsing is done. I have also refactored some common parsing code in the new helper function nft_mxml_set_elem_parse, that avoids conversions from XML tree to text and then again back to tree. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/mxml.c')
-rw-r--r--src/mxml.c46
1 files changed, 0 insertions, 46 deletions
diff --git a/src/mxml.c b/src/mxml.c
index 1f0a2df..b5de153 100644
--- a/src/mxml.c
+++ b/src/mxml.c
@@ -184,50 +184,4 @@ int nft_mxml_family_parse(mxml_node_t *tree, const char *node_name,
return family;
}
-
-struct nft_set_elem *nft_mxml_set_elem_parse(mxml_node_t *node)
-{
- mxml_node_t *save;
- char *set_elem_str;
- struct nft_set_elem *elem;
-
- if (node == NULL)
- goto einval;
-
- if (strcmp(node->value.opaque, "set_elem") != 0)
- goto einval;
-
- elem = nft_set_elem_alloc();
- if (elem == NULL)
- goto enomem;
-
- /* This is a hack for mxml to print just the current node */
- save = node->next;
- node->next = NULL;
-
- set_elem_str = mxmlSaveAllocString(node, MXML_NO_CALLBACK);
- node->next = save;
-
- if (set_elem_str == NULL) {
- xfree(elem);
- goto enomem;
- }
-
- if (nft_set_elem_parse(elem, NFT_SET_PARSE_XML,
- set_elem_str) != 0) {
- xfree(set_elem_str);
- xfree(elem);
- return NULL;
- }
-
- xfree(set_elem_str);
-
- return elem;
-einval:
- errno = EINVAL;
- return NULL;
-enomem:
- errno = ENOMEM;
- return NULL;
-}
#endif