]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
libxl: pass ipaddr to libxl toolstack
authorMarek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Tue, 10 Feb 2015 02:17:23 +0000 (03:17 +0100)
committerJim Fehlig <jfehlig@suse.com>
Wed, 11 Feb 2015 23:46:36 +0000 (16:46 -0700)
Do not silently ignore its value. LibXL support only one address, so
refuse multiple IPs.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
src/libxl/libxl_conf.c
src/libxl/libxl_domain.c

index 0555b917964f99616c5174e9962ec3ce1b74fbf6..4489f84695c5db67da3420adf2ae89834da0c135 100644 (file)
@@ -1051,6 +1051,11 @@ libxlMakeNic(virDomainDefPtr def,
         case VIR_DOMAIN_NET_TYPE_ETHERNET:
             if (VIR_STRDUP(x_nic->script, l_nic->script) < 0)
                 return -1;
+            if (l_nic->nips > 0) {
+                x_nic->ip = virSocketAddrFormat(&l_nic->ips[0]->address);
+                if (!x_nic->ip)
+                    return -1;
+            }
             break;
         case VIR_DOMAIN_NET_TYPE_NETWORK:
         {
@@ -1068,6 +1073,12 @@ libxlMakeNic(virDomainDefPtr def,
                 return -1;
             }
 
+            if (l_nic->nips > 0) {
+                x_nic->ip = virSocketAddrFormat(&l_nic->ips[0]->address);
+                if (!x_nic->ip)
+                    return -1;
+            }
+
             if ((brname = virNetworkGetBridgeName(network))) {
                 if (VIR_STRDUP(x_nic->bridge, brname) < 0)
                     fail = true;
index 856cfb40305d7f50984efb8527a86f96bb6858cf..f0eaf6c671dee9f1790a0e74290520c1e2f34b16 100644 (file)
@@ -482,6 +482,18 @@ libxlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
         STRNEQ(def->os.type, "hvm"))
         dev->data.chr->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_XEN;
 
+    if (dev->type == VIR_DOMAIN_DEVICE_NET &&
+            (dev->data.net->type == VIR_DOMAIN_NET_TYPE_BRIDGE ||
+             dev->data.net->type == VIR_DOMAIN_NET_TYPE_ETHERNET ||
+             dev->data.net->type == VIR_DOMAIN_NET_TYPE_NETWORK)) {
+        if (dev->data.net->nips > 1) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                    _("multiple IP addresses not supported on device type %s"),
+                    virDomainNetTypeToString(dev->data.net->type));
+            return -1;
+        }
+    }
+
     if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV ||
         (dev->type == VIR_DOMAIN_DEVICE_NET &&
          dev->data.net->type == VIR_DOMAIN_NET_TYPE_HOSTDEV)) {