VBOX_RELEASE(audioAdapter);
}
-static void
+static int
vboxAttachNetwork(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
{
ISystemProperties *systemProperties = NULL;
} else if (def->nets[i]->type == VIR_DOMAIN_NET_TYPE_BRIDGE) {
VIR_DEBUG("NIC(%zu): brname: %s", i, def->nets[i]->data.bridge.brname);
VIR_DEBUG("NIC(%zu): script: %s", i, def->nets[i]->script);
- if (def->nets[i]->nips > 0) {
+ if (def->nets[i]->nips == 1) {
char *ipStr = virSocketAddrFormat(&def->nets[i]->ips[0]->address);
VIR_DEBUG("NIC(%zu): ipaddr: %s", i, ipStr);
VIR_FREE(ipStr);
+ } else if (def->nets[i]->nips > 1) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("Driver does not support setting multiple IP addresses"));
+ return -1;
}
}
gVBoxAPI.UINetworkAdapter.SetMACAddress(adapter, MACAddress);
VBOX_UTF16_FREE(MACAddress);
}
+ return 0;
}
static void
vboxSetBootDeviceOrder(def, data, machine);
vboxAttachDrives(def, data, machine);
vboxAttachSound(def, machine);
- vboxAttachNetwork(def, data, machine);
+ if (vboxAttachNetwork(def, data, machine) < 0)
+ goto cleanup;
vboxAttachSerial(def, data, machine);
vboxAttachParallel(def, data, machine);
vboxAttachVideo(def, machine);
switch (net->type) {
case VIR_DOMAIN_NET_TYPE_BRIDGE:
virBufferAsprintf(&buf, ",bridge=%s", net->data.bridge.brname);
- if (net->nips > 0) {
+ if (net->nips == 1) {
char *ipStr = virSocketAddrFormat(&net->ips[0]->address);
virBufferAsprintf(&buf, ",ip=%s", ipStr);
VIR_FREE(ipStr);
+ } else if (net->nips > 1) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("Driver does not support setting multiple IP addresses"));
+ goto cleanup;
}
virBufferAsprintf(&buf, ",script=%s", DEFAULT_VIF_SCRIPT);
break;
case VIR_DOMAIN_NET_TYPE_ETHERNET:
if (net->script)
virBufferAsprintf(&buf, ",script=%s", net->script);
- if (net->nips > 0) {
+ if (net->nips == 1) {
char *ipStr = virSocketAddrFormat(&net->ips[0]->address);
virBufferAsprintf(&buf, ",ip=%s", ipStr);
VIR_FREE(ipStr);
+ } else if (net->nips > 1) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("Driver does not support setting multiple IP addresses"));
+ goto cleanup;
}
break;
script = def->script;
virBufferEscapeSexpr(buf, "(script '%s')", script);
- if (def->nips > 0) {
+ if (def->nips == 1) {
char *ipStr = virSocketAddrFormat(&def->ips[0]->address);
virBufferEscapeSexpr(buf, "(ip '%s')", ipStr);
VIR_FREE(ipStr);
+ } else if (def->nips > 1) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("Driver does not support setting multiple IP addresses"));
+ return -1;
}
break;
if (def->script)
virBufferEscapeSexpr(buf, "(script '%s')",
def->script);
- if (def->nips > 0) {
+ if (def->nips == 1) {
char *ipStr = virSocketAddrFormat(&def->ips[0]->address);
virBufferEscapeSexpr(buf, "(ip '%s')", ipStr);
VIR_FREE(ipStr);
+ } else if (def->nips > 1) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("Driver does not support setting multiple IP addresses"));
+ return -1;
}
break;