From 556fb7ee694a0f18cbd3d73ac96b27c74081bd6d Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Thu, 4 Jul 2013 16:10:24 +0200 Subject: src: consolidate XML parsing of expressions via nft_mxml_reg_parse This patch reduces the XML code in 100 LOC. --- src/mxml.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/mxml.c') diff --git a/src/mxml.c b/src/mxml.c index 76fb05f..4d81bf4 100644 --- a/src/mxml.c +++ b/src/mxml.c @@ -53,3 +53,25 @@ err: errno = EINVAL; return NULL; } + +int nft_mxml_reg_parse(mxml_node_t *tree, const char *reg_name, uint32_t flags) +{ + mxml_node_t *node; + char *endptr; + uint64_t val; + + node = mxmlFindElement(tree, tree, reg_name, NULL, NULL, flags); + if (node == NULL) { + errno = EINVAL; + goto err; + } + + val = strtoull(node->child->value.opaque, &endptr, 10); + if (val > NFT_REG_MAX || val < 0 || *endptr) { + errno = ERANGE; + goto err; + } + return val; +err: + return -1; +} -- cgit v1.2.3