diff --git a/docs/schemas/domain.rng b/docs/schemas/domain.rng
index 309dcae..ef0f276 100644
--- a/docs/schemas/domain.rng
+++ b/docs/schemas/domain.rng
@@ -586,6 +586,34 @@
+
+
+ hostonly
+
+
+
+
+
+
+
+
+
+
+
+
+
+ internal
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/domain_conf.c b/src/domain_conf.c
index b160edd..063c776 100644
--- a/src/domain_conf.c
+++ b/src/domain_conf.c
@@ -119,7 +119,9 @@ VIR_ENUM_IMPL(virDomainNet, VIR_DOMAIN_NET_TYPE_LAST,
"client",
"mcast",
"network",
- "bridge")
+ "bridge",
+ "hostonly",
+ "internal")
VIR_ENUM_IMPL(virDomainChr, VIR_DOMAIN_CHR_TYPE_LAST,
"null",
@@ -316,6 +318,14 @@ void virDomainNetDefFree(virDomainNetDefPtr def)
VIR_FREE(def->data.bridge.script);
VIR_FREE(def->data.bridge.ipaddr);
break;
+
+ case VIR_DOMAIN_NET_TYPE_HOSTONLY:
+ VIR_FREE(def->data.hostonly.name);
+ break;
+
+ case VIR_DOMAIN_NET_TYPE_INTERNAL:
+ VIR_FREE(def->data.internal.name);
+ break;
}
VIR_FREE(def->ifname);
@@ -893,6 +903,8 @@ virDomainNetDefParseXML(virConnectPtr conn,
char *address = NULL;
char *port = NULL;
char *model = NULL;
+ char *hostonly = NULL;
+ char *internal = NULL;
if (VIR_ALLOC(def) < 0) {
virReportOOMError(conn);
@@ -920,6 +932,14 @@ virDomainNetDefParseXML(virConnectPtr conn,
(def->type == VIR_DOMAIN_NET_TYPE_NETWORK) &&
(xmlStrEqual(cur->name, BAD_CAST "source"))) {
network = virXMLPropString(cur, "network");
+ } else if ((hostonly == NULL) &&
+ (def->type == VIR_DOMAIN_NET_TYPE_HOSTONLY) &&
+ (xmlStrEqual(cur->name, BAD_CAST "source"))) {
+ hostonly = virXMLPropString(cur, "name");
+ } else if ((internal == NULL) &&
+ (def->type == VIR_DOMAIN_NET_TYPE_INTERNAL) &&
+ (xmlStrEqual(cur->name, BAD_CAST "source"))) {
+ internal = virXMLPropString(cur, "name");
} else if ((network == NULL) &&
(def->type == VIR_DOMAIN_NET_TYPE_BRIDGE) &&
(xmlStrEqual(cur->name, BAD_CAST "source"))) {
@@ -1035,6 +1055,24 @@ virDomainNetDefParseXML(virConnectPtr conn,
def->data.socket.address = address;
address = NULL;
}
+ case VIR_DOMAIN_NET_TYPE_HOSTONLY:
+ if (hostonly == NULL) {
+ virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR, "%s",
+ "No