virDomainXMLOption *
lxcDomainXMLConfInit(virLXCDriver *driver, const char *defsecmodel)
{
+ virDomainXMLOption *ret = NULL;
+
virLXCDriverDomainDefParserConfig.priv = driver;
virLXCDriverDomainDefParserConfig.defSecModel = defsecmodel;
- return virDomainXMLOptionNew(&virLXCDriverDomainDefParserConfig,
- &virLXCDriverPrivateDataCallbacks,
- &virLXCDriverDomainXMLNamespace,
- NULL, NULL, NULL);
+
+ ret = virDomainXMLOptionNew(&virLXCDriverDomainDefParserConfig,
+ &virLXCDriverPrivateDataCallbacks,
+ &virLXCDriverDomainXMLNamespace,
+ NULL, NULL, NULL);
+
+ virDomainXMLOptionSetCloseCallbackAlloc(ret, virCloseCallbacksDomainAlloc);
+
+ return ret;
}
/* Immutable pointer. self-locking APIs */
virSecurityManager *securityManager;
-
- /* Immutable pointer, self-locking APIs */
- virCloseCallbacks *closeCallbacks;
};
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virLXCDriverConfig, virObjectUnref);
{
virLXCDriver *driver = conn->privateData;
- virCloseCallbacksRun(driver->closeCallbacks, conn, driver->domains);
+ virCloseCallbacksDomainRunForConn(driver->domains, conn);
+
conn->privateData = NULL;
return 0;
}
if (!(lxc_driver->xmlopt = lxcDomainXMLConfInit(lxc_driver, defsecmodel)))
goto cleanup;
- if (!(lxc_driver->closeCallbacks = virCloseCallbacksNew()))
- goto cleanup;
-
if (g_mkdir_with_parents(cfg->stateDir, 0777) < 0) {
virReportSystemError(errno,
_("Failed to mkdir %s"),
virObjectUnref(lxc_driver->domains);
virObjectUnref(lxc_driver->domainEventState);
- virObjectUnref(lxc_driver->closeCallbacks);
-
virSysinfoDefFree(lxc_driver->hostsysinfo);
virObjectUnref(lxc_driver->hostdevMgr);
/* Stop autodestroy in case guest is restarted */
if (flags & VIR_LXC_PROCESS_CLEANUP_AUTODESTROY) {
- virCloseCallbacksUnset(driver->closeCallbacks, vm, lxcProcessAutoDestroy);
+ virCloseCallbacksDomainRemove(vm, NULL, lxcProcessAutoDestroy);
}
if (priv->monitor) {
goto cleanup;
}
- if (autoDestroyConn &&
- virCloseCallbacksSet(driver->closeCallbacks, vm,
- autoDestroyConn, lxcProcessAutoDestroy) < 0)
- goto cleanup;
+ if (autoDestroyConn)
+ virCloseCallbacksDomainAdd(vm, autoDestroyConn, lxcProcessAutoDestroy);
/* We don't need the temporary NIC names anymore, clear them */
virLXCProcessCleanInterfaces(vm->def);