Signed-off-by: Shi Lei <shi_lei(a)massclouds.com>
---
docs/schemas/network.rng | 1 +
src/conf/network_conf.c | 150 +--------------------------------------
2 files changed, 3 insertions(+), 148 deletions(-)
diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng
index 884cd64..7084248 100644
--- a/docs/schemas/network.rng
+++ b/docs/schemas/network.rng
@@ -261,6 +261,7 @@
"structure": {"output":
"src/conf/network_conf"},
"clearfunc": {"output":
"src/conf/network_conf"},
"parsefunc": {
+ "output": "src/conf/network_conf",
"post": true,
"args.instname": true
}
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index d231fea..905c01f 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -764,7 +764,7 @@ virNetworkDNSHostDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED,
}
-static int
+int
virNetworkDNSDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED,
virNetworkDNSDefPtr def,
xmlXPathContextPtr ctxt G_GNUC_UNUSED,
@@ -788,152 +788,6 @@ virNetworkDNSDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED,
}
-static int
-virNetworkDNSDefParseXML(const char *networkName,
- xmlNodePtr node,
- xmlXPathContextPtr ctxt,
- virNetworkDNSDefPtr def)
-{
- xmlNodePtr *hostNodes = NULL;
- xmlNodePtr *srvNodes = NULL;
- xmlNodePtr *txtNodes = NULL;
- xmlNodePtr *fwdNodes = NULL;
- char *forwardPlainNames = NULL;
- char *enable = NULL;
- int nhosts, nsrvs, ntxts, nfwds;
- size_t i;
- int ret = -1;
- xmlNodePtr save = ctxt->node;
-
- ctxt->node = node;
-
- enable = virXPathString("string(./@enable)", ctxt);
- if (enable) {
- def->enable = virTristateBoolTypeFromString(enable);
- if (def->enable <= 0) {
- virReportError(VIR_ERR_XML_ERROR,
- _("Invalid dns enable setting '%s' "
- "in network '%s'"),
- enable, networkName);
- goto cleanup;
- }
- }
-
- forwardPlainNames = virXPathString("string(./@forwardPlainNames)", ctxt);
- if (forwardPlainNames) {
- def->forwardPlainNames = virTristateBoolTypeFromString(forwardPlainNames);
- if (def->forwardPlainNames <= 0) {
- virReportError(VIR_ERR_XML_ERROR,
- _("Invalid dns forwardPlainNames setting '%s'
"
- "in network '%s'"),
- forwardPlainNames, networkName);
- goto cleanup;
- }
- }
-
- nfwds = virXPathNodeSet("./forwarder", ctxt, &fwdNodes);
- if (nfwds < 0) {
- virReportError(VIR_ERR_XML_ERROR,
- _("invalid <forwarder> element found in <dns> of
network %s"),
- networkName);
- goto cleanup;
- }
- if (nfwds > 0) {
- if (VIR_ALLOC_N(def->forwarders, nfwds) < 0)
- goto cleanup;
-
- for (i = 0; i < nfwds; i++) {
- if (virNetworkDNSForwarderParseXML(fwdNodes[i],
- &def->forwarders[i],
- networkName) < 0)
- goto cleanup;
-
- def->nforwarders++;
- }
- }
-
- nhosts = virXPathNodeSet("./host", ctxt, &hostNodes);
- if (nhosts < 0) {
- virReportError(VIR_ERR_XML_ERROR,
- _("invalid <host> element found in <dns> of
network %s"),
- networkName);
- goto cleanup;
- }
- if (nhosts > 0) {
- if (VIR_ALLOC_N(def->hosts, nhosts) < 0)
- goto cleanup;
-
- for (i = 0; i < nhosts; i++) {
- if (virNetworkDNSHostDefParseXML(hostNodes[i],
- &def->hosts[def->nhosts],
- ctxt,
- networkName, false) < 0) {
- goto cleanup;
- }
- def->nhosts++;
- }
- }
-
- nsrvs = virXPathNodeSet("./srv", ctxt, &srvNodes);
- if (nsrvs < 0) {
- virReportError(VIR_ERR_XML_ERROR,
- _("invalid <srv> element found in <dns> of
network %s"),
- networkName);
- goto cleanup;
- }
- if (nsrvs > 0) {
- if (VIR_ALLOC_N(def->srvs, nsrvs) < 0)
- goto cleanup;
-
- for (i = 0; i < nsrvs; i++) {
- if (virNetworkDNSSrvDefParseXML(srvNodes[i],
- &def->srvs[def->nsrvs], ctxt,
- networkName, false) < 0) {
- goto cleanup;
- }
- def->nsrvs++;
- }
- }
-
- ntxts = virXPathNodeSet("./txt", ctxt, &txtNodes);
- if (ntxts < 0) {
- virReportError(VIR_ERR_XML_ERROR,
- _("invalid <txt> element found in <dns> of
network %s"),
- networkName);
- goto cleanup;
- }
- if (ntxts > 0) {
- if (VIR_ALLOC_N(def->txts, ntxts) < 0)
- goto cleanup;
-
- for (i = 0; i < ntxts; i++) {
- if (virNetworkDNSTxtDefParseXML(txtNodes[i],
- &def->txts[def->ntxts],
- networkName, false) < 0) {
- goto cleanup;
- }
- def->ntxts++;
- }
- }
-
- if (virNetworkDNSDefParseXMLPost(node, def, ctxt, networkName, enable,
- forwardPlainNames, nfwds, ntxts,
- nsrvs, nhosts) < 0)
- goto cleanup;
-
- ret = 0;
- cleanup:
- VIR_FREE(enable);
- VIR_FREE(forwardPlainNames);
- VIR_FREE(fwdNodes);
- VIR_FREE(hostNodes);
- VIR_FREE(srvNodes);
- VIR_FREE(txtNodes);
- ctxt->node = save;
- return ret;
-}
-
-
static int
virNetworkIPDefParseXML(const char *networkName,
xmlNodePtr node,
@@ -1726,7 +1580,7 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt,
dnsNode = virXPathNode("./dns", ctxt);
if (dnsNode != NULL &&
- virNetworkDNSDefParseXML(def->name, dnsNode, ctxt, &def->dns) < 0)
{
+ virNetworkDNSDefParseXML(dnsNode, &def->dns, ctxt, def->name) < 0)
{
goto error;
}
--
2.17.1