summaryrefslogtreecommitdiffstats
path: root/src/set.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/set.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/set.c')
-rw-r--r--src/set.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/set.c b/src/set.c
index eb90426..97856b3 100644
--- a/src/set.c
+++ b/src/set.c
@@ -355,7 +355,6 @@ static int nft_set_xml_parse(struct nft_set *s, char *xml)
s->flags |= (1 << NFT_SET_ATTR_FLAGS);
-
if (nft_mxml_num_parse(tree, "key_type", MXML_DESCEND_FIRST,
BASE_DEC, &s->key_type, NFT_TYPE_U32) != 0)
goto err;
@@ -380,17 +379,19 @@ static int nft_set_xml_parse(struct nft_set *s, char *xml)
s->flags |= (1 << NFT_SET_ATTR_DATA_LEN);
- /* Iterate over each <set_elem> */
for (node = mxmlFindElement(tree, tree, "set_elem", NULL,
NULL, MXML_DESCEND);
node != NULL;
node = mxmlFindElement(node, tree, "set_elem", NULL,
NULL, MXML_DESCEND)) {
- elem = nft_mxml_set_elem_parse(node);
+ elem = nft_set_elem_alloc();
if (elem == NULL)
goto err;
+ if (nft_mxml_set_elem_parse(node, elem) < 0)
+ goto err;
+
list_add_tail(&elem->head, &s->element_list);
}