コード例 #1
0
ファイル: log_daemon.c プロジェクト: eskultety/libvirt
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;
}
コード例 #2
0
ファイル: virnetdaemon.c プロジェクト: carriercomm/libvirt
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;
}