virDomainXMLOption *
virBhyveDriverCreateXMLConf(struct _bhyveConn *driver)
{
+ virDomainXMLOption *ret = NULL;
+
virBhyveDriverDomainDefParserConfig.priv = driver;
- return virDomainXMLOptionNew(&virBhyveDriverDomainDefParserConfig,
- &virBhyveDriverPrivateDataCallbacks,
- &virBhyveDriverDomainXMLNamespace,
- NULL, NULL, NULL);
+
+ ret = virDomainXMLOptionNew(&virBhyveDriverDomainDefParserConfig,
+ &virBhyveDriverPrivateDataCallbacks,
+ &virBhyveDriverDomainXMLNamespace,
+ NULL, NULL, NULL);
+
+ virDomainXMLOptionSetCloseCallbackAlloc(ret, virCloseCallbacksDomainAlloc);
+
+ return ret;
}
{
struct _bhyveConn *privconn = conn->privateData;
- virCloseCallbacksRun(privconn->closeCallbacks, conn, privconn->domains);
+ virCloseCallbacksDomainRunForConn(privconn->domains, conn);
conn->privateData = NULL;
return 0;
virObjectUnref(bhyve_driver->caps);
virObjectUnref(bhyve_driver->xmlopt);
virSysinfoDefFree(bhyve_driver->hostsysinfo);
- virObjectUnref(bhyve_driver->closeCallbacks);
virObjectUnref(bhyve_driver->domainEventState);
virObjectUnref(bhyve_driver->config);
virPortAllocatorRangeFree(bhyve_driver->remotePorts);
return VIR_DRV_STATE_INIT_ERROR;
}
- if (!(bhyve_driver->closeCallbacks = virCloseCallbacksNew()))
- goto cleanup;
-
if (!(bhyve_driver->caps = virBhyveCapsBuild()))
goto cleanup;
if (bhyveProcessStartHook(vm, VIR_HOOK_BHYVE_OP_PREPARE) < 0)
return -1;
- if (flags & VIR_BHYVE_PROCESS_START_AUTODESTROY &&
- virCloseCallbacksSet(driver->closeCallbacks, vm,
- conn, bhyveProcessAutoDestroy) < 0)
- return -1;
+ if (flags & VIR_BHYVE_PROCESS_START_AUTODESTROY)
+ virCloseCallbacksDomainAdd(vm, conn, bhyveProcessAutoDestroy);
if (bhyveProcessPrepareDomain(driver, vm, flags) < 0)
return -1;
ret = 0;
- virCloseCallbacksUnset(driver->closeCallbacks, vm,
- bhyveProcessAutoDestroy);
+ virCloseCallbacksDomainRemove(vm, NULL, bhyveProcessAutoDestroy);
virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF, reason);
vm->pid = 0;
virObjectEventState *domainEventState;
- virCloseCallbacks *closeCallbacks;
-
virPortAllocatorRange *remotePorts;
unsigned bhyvecaps;