diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-08-07 22:31:52 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-08-07 22:39:36 +0200 |
commit | aa78a088dde9875ae3e31468ea5e4ca3bd349d2c (patch) | |
tree | 1f06ab113506213e0d036296deef6b73aae3f37d /src/set.c | |
parent | fc7d496788b8abb3f009b73898508032eced0c6c (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.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -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); } |