--- domain_conf.c.back 2008-12-04 15:31:40.000000000 +0000 +++ domain_conf.c 2008-12-04 20:30:31.000000000 +0000 @@ -142,6 +142,10 @@ "usb", "pci") +VIR_ENUM_IMPL(virDomainNetQemuAllocate, VIR_DOMAIN_NET_QEMU_ALLOC_LAST, + "true", + "false") + #define virDomainReportError(conn, code, fmt...) \ virReportErrorHelper(conn, VIR_FROM_DOMAIN, code, __FILE__, \ __FUNCTION__, __LINE__, fmt) @@ -787,6 +791,7 @@ char *address = NULL; char *port = NULL; char *model = NULL; + char *qemu_alloc = NULL; if (VIR_ALLOC(def) < 0) { virDomainReportError(conn, VIR_ERR_NO_MEMORY, NULL); @@ -800,6 +805,17 @@ _("unknown interface type '%s'"), type); goto error; } + qemu_alloc = virXMLPropString(node, "qemu"); + if( qemu_alloc!=NULL){ + if ((def->qemu_allocate = virDomainNetQemuAllocateTypeFromString(qemu_alloc)) < 0) { + virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR, + _("unknown qemu alloc '%s'"), qemu_alloc); + goto error; + } + + }else{ + def->qemu_allocate = VIR_DOMAIN_NET_QEMU_ALLOC_TRUE; // by default the aloocation will be true + } } else { def->type = VIR_DOMAIN_NET_TYPE_USER; } @@ -818,6 +834,7 @@ (def->type == VIR_DOMAIN_NET_TYPE_BRIDGE) && (xmlStrEqual(cur->name, BAD_CAST "source"))) { bridge = virXMLPropString(cur, "bridge"); + } else if ((dev == NULL) && (def->type == VIR_DOMAIN_NET_TYPE_ETHERNET) && xmlStrEqual(cur->name, BAD_CAST "source")) {