static virNetClientPtr virLogManagerConnect(bool privileged, virNetClientProgramPtr *prog) { virNetClientPtr client = NULL; char *logdpath; char *daemonPath = NULL; *prog = NULL; if (!(logdpath = virLogManagerDaemonPath(privileged))) goto error; if (!privileged && !(daemonPath = virFileFindResourceFull("virtlogd", NULL, NULL, abs_topbuilddir "/src", SBINDIR, "VIRTLOGD_PATH"))) goto error; if (!(client = virNetClientNewUNIX(logdpath, daemonPath != NULL, daemonPath))) goto error; if (!(*prog = virNetClientProgramNew(VIR_LOG_MANAGER_PROTOCOL_PROGRAM, VIR_LOG_MANAGER_PROTOCOL_PROGRAM_VERSION, NULL, 0, NULL))) goto error; if (virNetClientAddProgram(client, *prog) < 0) goto error; VIR_FREE(daemonPath); VIR_FREE(logdpath); return client; error: VIR_FREE(daemonPath); VIR_FREE(logdpath); virNetClientClose(client); virObjectUnref(client); virObjectUnref(*prog); return NULL; }
static virNetClientPtr virLockManagerLockDaemonConnectionNew(bool privileged, virNetClientProgramPtr *prog) { virNetClientPtr client = NULL; char *lockdpath; const char *daemonPath = NULL; *prog = NULL; if (!(lockdpath = virLockManagerLockDaemonPath(privileged))) goto error; if (!privileged) daemonPath = virLockManagerLockDaemonFindDaemon(); if (!(client = virNetClientNewUNIX(lockdpath, daemonPath != NULL, daemonPath))) goto error; if (!(*prog = virNetClientProgramNew(VIR_LOCK_SPACE_PROTOCOL_PROGRAM, VIR_LOCK_SPACE_PROTOCOL_PROGRAM_VERSION, NULL, 0, NULL))) goto error; if (virNetClientAddProgram(client, *prog) < 0) goto error; VIR_FREE(lockdpath); return client; error: VIR_FREE(lockdpath); virNetClientClose(client); virObjectUnref(client); virObjectUnref(*prog); return NULL; }
static remoteAdminPrivPtr remoteAdminPrivNew(const char *sock_path) { remoteAdminPrivPtr priv = NULL; if (!(priv = virObjectLockableNew(remoteAdminPrivClass))) goto error; if (!(priv->client = virNetClientNewUNIX(sock_path, false, NULL))) goto error; if (!(priv->program = virNetClientProgramNew(ADMIN_PROGRAM, ADMIN_PROTOCOL_VERSION, NULL, 0, NULL))) goto error; if (virNetClientAddProgram(priv->client, priv->program) < 0) goto error; return priv; error: virObjectUnref(priv); return NULL; }