Signed-off-by: Shi Lei <shi_lei(a)massclouds.com>
---
docs/schemas/network.rng | 6 +++++-
src/conf/network_conf.c | 33 +++++++++++++++++++++++++++------
2 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng
index 702018b..884cd64 100644
--- a/docs/schemas/network.rng
+++ b/docs/schemas/network.rng
@@ -259,7 +259,11 @@
<optional>
<!-- VIRT:DIRECTIVE {
"structure": {"output":
"src/conf/network_conf"},
- "clearfunc": {"output":
"src/conf/network_conf"}
+ "clearfunc": {"output":
"src/conf/network_conf"},
+ "parsefunc": {
+ "post": true,
+ "args.instname": true
+ }
} -->
<element name="dns">
<optional>
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index 3a43e40..d231fea 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -764,6 +764,30 @@ virNetworkDNSHostDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED,
}
+static int
+virNetworkDNSDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED,
+ virNetworkDNSDefPtr def,
+ xmlXPathContextPtr ctxt G_GNUC_UNUSED,
+ const char *networkName,
+ const char *enableStr G_GNUC_UNUSED,
+ const char *forwardPlainNamesStr G_GNUC_UNUSED,
+ int nForwarderNodes,
+ int nTxtNodes,
+ int nSrvNodes,
+ int nHostNodes)
+{
+ if (def->enable == VIR_TRISTATE_BOOL_NO &&
+ (nForwarderNodes || nHostNodes || nSrvNodes || nTxtNodes)) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("Extra data in disabled network '%s'"),
+ networkName);
+ return -1;
+ }
+
+ return 0;
+}
+
+
static int
virNetworkDNSDefParseXML(const char *networkName,
xmlNodePtr node,
@@ -892,13 +916,10 @@ virNetworkDNSDefParseXML(const char *networkName,
}
}
- if (def->enable == VIR_TRISTATE_BOOL_NO &&
- (nfwds || nhosts || nsrvs || ntxts)) {
- virReportError(VIR_ERR_XML_ERROR,
- _("Extra data in disabled network '%s'"),
- networkName);
+ if (virNetworkDNSDefParseXMLPost(node, def, ctxt, networkName, enable,
+ forwardPlainNames, nfwds, ntxts,
+ nsrvs, nhosts) < 0)
goto cleanup;
- }
ret = 0;
cleanup:
--
2.17.1