static virLogDaemonPtr virLogDaemonNew(virLogDaemonConfigPtr config, bool privileged) { virLogDaemonPtr logd; if (VIR_ALLOC(logd) < 0) return NULL; if (virMutexInit(&logd->lock) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Unable to initialize mutex")); VIR_FREE(logd); return NULL; } if (!(logd->srv = virNetServerNew("virtlogd", 1, 1, 1, 0, config->max_clients, config->max_clients, -1, 0, NULL, virLogDaemonClientNew, virLogDaemonClientPreExecRestart, virLogDaemonClientFree, (void*)(intptr_t)(privileged ? 0x1 : 0x0)))) goto error; if (!(logd->dmn = virNetDaemonNew()) || virNetDaemonAddServer(logd->dmn, logd->srv) < 0) goto error; if (!(logd->handler = virLogHandlerNew(privileged, config->max_size, config->max_backups, virLogDaemonInhibitor, logd))) goto error; return logd; error: virLogDaemonFree(logd); return NULL; }
virNetDaemonPtr virNetDaemonNewPostExecRestart(virJSONValuePtr object) { virNetDaemonPtr dmn = NULL; virJSONValuePtr servers = virJSONValueObjectGet(object, "servers"); bool new_version = virJSONValueObjectHasKey(object, "servers"); if (!(dmn = virNetDaemonNew())) goto error; if (new_version && !servers) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Malformed servers data in JSON document")); goto error; } if (!(dmn->srvObject = virJSONValueCopy(new_version ? servers : object))) goto error; return dmn; error: virObjectUnref(dmn); return NULL; }