int ret = -1;
char mac[VIR_MAC_STRING_BUFLEN];
virConnectPtr conn = NULL;
+ virErrorPtr save_err = NULL;
libxl_device_nic_init(&nic);
ret = 0;
cleanup:
+ virErrorPreserveLast(&save_err);
libxl_device_nic_dispose(&nic);
if (!ret) {
vm->def->nets[vm->def->nnets++] = net;
}
virObjectUnref(conn);
virObjectUnref(cfg);
+ virErrorRestore(&save_err);
return ret;
}
libxl_device_nic nic;
char mac[VIR_MAC_STRING_BUFLEN];
int ret = -1;
+ virErrorPtr save_err = NULL;
libxl_device_nic_init(&nic);
ret = 0;
cleanup:
+ virErrorPreserveLast(&save_err);
libxl_device_nic_dispose(&nic);
if (!ret) {
if (detach->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
virDomainNetRemove(vm->def, detachidx);
}
virObjectUnref(cfg);
+ virErrorRestore(&save_err);
return ret;
}
virDomainNetType actualType;
virDomainNetDefPtr detach = NULL;
virNetDevVPortProfilePtr vport = NULL;
+ virErrorPtr save_err = NULL;
if ((detachidx = virDomainNetFindIdx(vm->def, dev->data.net)) < 0)
goto cleanup;
ret = 0;
cleanup:
if (!ret) {
+ virErrorPreserveLast(&save_err);
if (detach->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
virConnectPtr conn = virGetConnectNetwork();
if (conn) {
}
virDomainNetRemove(vm->def, detachidx);
virDomainNetDefFree(detach);
+ virErrorRestore(&save_err);
}
return ret;
}
virDomainNetDefPtr net;
virDomainNetType type;
virConnectPtr netconn = NULL;
+ virErrorPtr save_err = NULL;
if (VIR_ALLOC_N(*veths, def->nnets + 1) < 0)
return -1;
cleanup:
if (ret < 0) {
+ virErrorPreserveLast(&save_err);
for (i = 0; i < def->nnets; i++) {
virDomainNetDefPtr iface = def->nets[i];
virNetDevVPortProfilePtr vport = virDomainNetGetActualVirtPortProfile(iface);
if (iface->type == VIR_DOMAIN_NET_TYPE_NETWORK && netconn)
virDomainNetReleaseActualDevice(netconn, def, iface);
}
+ virErrorRestore(&save_err);
}
virObjectUnref(netconn);
return ret;
bool netdevPlugged = false;
char *netdev_name;
virConnectPtr conn = NULL;
+ virErrorPtr save_err = NULL;
/* preallocate new slot for device */
if (VIR_REALLOC_N(vm->def->nets, vm->def->nnets + 1) < 0)
if (!ret) {
vm->def->nets[vm->def->nnets++] = net;
} else {
+ virErrorPreserveLast(&save_err);
if (releaseaddr)
qemuDomainReleaseDeviceAddress(vm, &net->info);
else
VIR_WARN("Unable to release network device '%s'", NULLSTR(net->ifname));
}
+ virErrorRestore(&save_err);
}
VIR_FREE(nicstr);
int ret = -1;
int changeidx = -1;
virConnectPtr conn = NULL;
+ virErrorPtr save_err = NULL;
if ((changeidx = virDomainNetFindIdx(vm->def, newdev)) < 0)
goto cleanup;
ret = 0;
cleanup:
+ virErrorPreserveLast(&save_err);
/* When we get here, we will be in one of these two states:
*
* 1) newdev has been moved into the domain's list of nets and
if (newdev && newdev->type == VIR_DOMAIN_NET_TYPE_NETWORK && conn)
virDomainNetReleaseActualDevice(conn, vm->def, newdev);
virObjectUnref(conn);
+ virErrorRestore(&save_err);
return ret;
}