From 210adc4063a7557b3bc0ffd69bd992c0bec4bacc Mon Sep 17 00:00:00 2001 From: Arturo Borrero Gonzalez Date: Mon, 16 Sep 2013 20:24:51 +0200 Subject: src: xml: refactor XML parsing code This patch refactors nft_*_xml_parse to provide a new intermediate function nft_mxml_parse_* which will allow us to navigate an entire XML tree containing a ruleset without xml2text2xml conversions. While at it, I added a helper to build the XML tree and validate the top node name. Signed-off-by: Arturo Borrero Gonzalez --- src/set_elem.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) (limited to 'src/set_elem.c') diff --git a/src/set_elem.c b/src/set_elem.c index 9ad482b..ec4a1a6 100644 --- a/src/set_elem.c +++ b/src/set_elem.c @@ -418,23 +418,13 @@ static int nft_set_elem_xml_parse(struct nft_set_elem *e, const char *xml) mxml_node_t *tree; int ret; - tree = mxmlLoadString(NULL, xml, MXML_OPAQUE_CALLBACK); - if (tree == NULL) { - errno = EINVAL; + tree = nft_mxml_build_tree(xml, "set_elem"); + if (tree == NULL) return -1; - } - - if (strcmp(tree->value.opaque, "set_elem") != 0) { - errno = EINVAL; - goto err; - } ret = nft_mxml_set_elem_parse(tree, e); mxmlDelete(tree); return ret; -err: - mxmlDelete(tree); - return -1; #else errno = EOPNOTSUPP; return -1; -- cgit v1.2.3