]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
parallels: make E1000 network adapter model default
authorMaxim Nestratov <mnestratov@parallels.com>
Wed, 18 Mar 2015 08:33:55 +0000 (11:33 +0300)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 18 Mar 2015 17:16:17 +0000 (18:16 +0100)
and set adapter model specified in xml

Signed-off-by: Maxim Nestratov <mnestratov@parallels.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/parallels/parallels_driver.c
src/parallels/parallels_sdk.c

index 1a6d6e67f27a97c8e2187153909dd3aa89a2f602..2a6a7c9b420a67cbdd9c9b28cdb241528b8b3ae3 100644 (file)
@@ -168,14 +168,24 @@ parallelsDomainDefPostParse(virDomainDefPtr def ATTRIBUTE_UNUSED,
     return 0;
 }
 
-
 static int
-parallelsDomainDeviceDefPostParse(virDomainDeviceDefPtr dev ATTRIBUTE_UNUSED,
+parallelsDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
                                   const virDomainDef *def ATTRIBUTE_UNUSED,
                                   virCapsPtr caps ATTRIBUTE_UNUSED,
                                   void *opaque ATTRIBUTE_UNUSED)
 {
-    return 0;
+    int ret = -1;
+
+    if (dev->type == VIR_DOMAIN_DEVICE_NET &&
+        (dev->data.net->type == VIR_DOMAIN_NET_TYPE_NETWORK ||
+         dev->data.net->type == VIR_DOMAIN_NET_TYPE_BRIDGE) &&
+        !dev->data.net->model &&
+        VIR_STRDUP(dev->data.net->model, "e1000") < 0)
+        goto cleanup;
+
+    ret = 0;
+ cleanup:
+    return ret;
 }
 
 
index ab24b5e93bf30f52c79c9d2d27b039f41e80b238..f6fce40e891687c498d498f91cfab7f070ea9d8a 100644 (file)
@@ -2674,6 +2674,20 @@ static int prlsdkAddNet(PRL_HANDLE sdkdom,
     pret = PrlVmDevNet_SetMacAddress(sdknet, macstr);
     prlsdkCheckRetGoto(pret, cleanup);
 
+    if (STREQ(net->model, "rtl8139")) {
+        pret = PrlVmDevNet_SetAdapterType(sdknet, PNT_RTL);
+    } else if (STREQ(net->model, "e1000")) {
+        pret = PrlVmDevNet_SetAdapterType(sdknet, PNT_E1000);
+    } else if (STREQ(net->model, "virtio")) {
+        pret = PrlVmDevNet_SetAdapterType(sdknet, PNT_VIRTIO);
+    } else {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                       _("Specified network adapter model is not "
+                         "supported by Parallels Cloud Server."));
+        goto cleanup;
+    }
+    prlsdkCheckRetGoto(pret, cleanup);
+
     if (net->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
         if (STREQ(net->data.network.name, PARALLELS_DOMAIN_ROUTED_NETWORK_NAME)) {
             pret = PrlVmDev_SetEmulatedType(sdknet, PNA_ROUTED);