--- tools/virsh-console.c | 3 +- tools/virsh-domain-monitor.c | 23 +++++---- tools/virsh-domain.c | 110 +++++++++++++++++++++++++++---------------- tools/virsh-host.c | 78 ++++++++++++++++++------------ tools/virsh-interface.c | 46 +++++++++++------- tools/virsh-network.c | 36 ++++++++------ tools/virsh-nodedev.c | 31 +++++++----- tools/virsh-nwfilter.c | 21 +++++---- tools/virsh-pool.c | 44 ++++++++++------- tools/virsh-secret.c | 15 +++--- tools/virsh-snapshot.c | 25 +++++----- tools/virsh-volume.c | 17 ++++--- tools/virsh.c | 57 +++++++++++++--------- 13 files changed, 311 insertions(+), 195 deletions(-) diff --git a/tools/virsh-console.c b/tools/virsh-console.c index 86ba456..c1927c2 100644 --- a/tools/virsh-console.c +++ b/tools/virsh-console.c @@ -311,6 +311,7 @@ virshRunConsole(vshControl *ctl, unsigned int flags) { virConsolePtr con = NULL; + virshControlPtr priv = ctl->privData; int ret = -1; struct sigaction old_sigquit; @@ -341,7 +342,7 @@ virshRunConsole(vshControl *ctl, if (VIR_ALLOC(con) < 0) goto cleanup; - con->escapeChar = virshGetEscapeChar(ctl->escapeChar); + con->escapeChar = virshGetEscapeChar(priv->escapeChar); con->st = virStreamNew(virDomainGetConnect(dom), VIR_STREAM_NONBLOCK); if (!con->st) diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c index 1f53428..0762d6e 100644 --- a/tools/virsh-domain-monitor.c +++ b/tools/virsh-domain-monitor.c @@ -1210,6 +1210,7 @@ cmdDominfo(vshControl *ctl, const vshCmd *cmd) unsigned int id; char *str, uuid[VIR_UUID_STRING_BUFLEN]; int has_managed_save = 0; + virshControlPtr priv = ctl->privData; if (!(dom = virshCommandOptDomain(ctl, cmd, NULL))) return false; @@ -1281,7 +1282,7 @@ cmdDominfo(vshControl *ctl, const vshCmd *cmd) /* Security model and label information */ memset(&secmodel, 0, sizeof(secmodel)); - if (virNodeGetSecurityModel(ctl->conn, &secmodel) == -1) { + if (virNodeGetSecurityModel(priv->conn, &secmodel) == -1) { if (last_error->code != VIR_ERR_NO_SUPPORT) { virDomainFree(dom); return false; @@ -1568,9 +1569,10 @@ virshDomainListCollect(vshControl *ctl, unsigned int flags) int state; int nsnap; int mansave; + virshControlPtr priv = ctl->privData; /* try the list with flags support (0.9.13 and later) */ - if ((ret = virConnectListAllDomains(ctl->conn, &list->domains, + if ((ret = virConnectListAllDomains(priv->conn, &list->domains, flags)) >= 0) { list->ndomains = ret; goto finished; @@ -1588,7 +1590,7 @@ virshDomainListCollect(vshControl *ctl, unsigned int flags) VIR_CONNECT_LIST_DOMAINS_INACTIVE); vshResetLibvirtError(); - if ((ret = virConnectListAllDomains(ctl->conn, &list->domains, + if ((ret = virConnectListAllDomains(priv->conn, &list->domains, newflags)) >= 0) { list->ndomains = ret; goto filter; @@ -1607,7 +1609,7 @@ virshDomainListCollect(vshControl *ctl, unsigned int flags) /* list active domains, if necessary */ if (!VSH_MATCH(VIR_CONNECT_LIST_DOMAINS_FILTERS_ACTIVE) || VSH_MATCH(VIR_CONNECT_LIST_DOMAINS_ACTIVE)) { - if ((nids = virConnectNumOfDomains(ctl->conn)) < 0) { + if ((nids = virConnectNumOfDomains(priv->conn)) < 0) { vshError(ctl, "%s", _("Failed to list active domains")); goto cleanup; } @@ -1615,7 +1617,7 @@ virshDomainListCollect(vshControl *ctl, unsigned int flags) if (nids) { ids = vshMalloc(ctl, sizeof(int) * nids); - if ((nids = virConnectListDomains(ctl->conn, ids, nids)) < 0) { + if ((nids = virConnectListDomains(priv->conn, ids, nids)) < 0) { vshError(ctl, "%s", _("Failed to list active domains")); goto cleanup; } @@ -1624,7 +1626,7 @@ virshDomainListCollect(vshControl *ctl, unsigned int flags) if (!VSH_MATCH(VIR_CONNECT_LIST_DOMAINS_FILTERS_ACTIVE) || VSH_MATCH(VIR_CONNECT_LIST_DOMAINS_INACTIVE)) { - if ((nnames = virConnectNumOfDefinedDomains(ctl->conn)) < 0) { + if ((nnames = virConnectNumOfDefinedDomains(priv->conn)) < 0) { vshError(ctl, "%s", _("Failed to list inactive domains")); goto cleanup; } @@ -1632,7 +1634,7 @@ virshDomainListCollect(vshControl *ctl, unsigned int flags) if (nnames) { names = vshMalloc(ctl, sizeof(char *) * nnames); - if ((nnames = virConnectListDefinedDomains(ctl->conn, names, + if ((nnames = virConnectListDefinedDomains(priv->conn, names, nnames)) < 0) { vshError(ctl, "%s", _("Failed to list inactive domains")); goto cleanup; @@ -1645,14 +1647,14 @@ virshDomainListCollect(vshControl *ctl, unsigned int flags) /* get active domains */ for (i = 0; i < nids; i++) { - if (!(dom = virDomainLookupByID(ctl->conn, ids[i]))) + if (!(dom = virDomainLookupByID(priv->conn, ids[i]))) continue; list->domains[list->ndomains++] = dom; } /* get inactive domains */ for (i = 0; i < nnames; i++) { - if (!(dom = virDomainLookupByName(ctl->conn, names[i]))) + if (!(dom = virDomainLookupByName(priv->conn, names[i]))) continue; list->domains[list->ndomains++] = dom; } @@ -2106,6 +2108,7 @@ cmdDomstats(vshControl *ctl, const vshCmd *cmd) int flags = 0; const vshCmdOpt *opt = NULL; bool ret = false; + virshControlPtr priv = ctl->privData; if (vshCommandOptBool(cmd, "state")) stats |= VIR_DOMAIN_STATS_STATE; @@ -2175,7 +2178,7 @@ cmdDomstats(vshControl *ctl, const vshCmd *cmd) flags) < 0) goto cleanup; } else { - if ((virConnectGetAllDomainStats(ctl->conn, + if ((virConnectGetAllDomainStats(priv->conn, stats, &records, flags)) < 0) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index bf53a24..cbe213e 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -71,13 +71,14 @@ virshLookupDomainInternal(vshControl *ctl, virDomainPtr dom = NULL; int id; virCheckFlags(VSH_BYID | VSH_BYUUID | VSH_BYNAME, NULL); + virshControlPtr priv = ctl->privData; /* try it by ID */ if (flags & VSH_BYID) { if (virStrToLong_i(name, NULL, 10, &id) == 0 && id >= 0) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> looks like ID\n", cmdname); - dom = virDomainLookupByID(ctl->conn, id); + dom = virDomainLookupByID(priv->conn, id); } } @@ -86,14 +87,14 @@ virshLookupDomainInternal(vshControl *ctl, strlen(name) == VIR_UUID_STRING_BUFLEN-1) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> trying as domain UUID\n", cmdname); - dom = virDomainLookupByUUIDString(ctl->conn, name); + dom = virDomainLookupByUUIDString(priv->conn, name); } /* try it by NAME */ if (!dom && (flags & VSH_BYNAME)) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> trying as domain NAME\n", cmdname); - dom = virDomainLookupByName(ctl->conn, name); + dom = virDomainLookupByName(priv->conn, name); } if (!dom) @@ -1898,6 +1899,7 @@ cmdBlockCommit(vshControl *ctl, const vshCmd *cmd) int abort_flags = 0; int status = -1; int cb_id = -1; + virshControlPtr priv = ctl->privData; blocking |= vshCommandOptBool(cmd, "timeout") || pivot || finish; if (blocking) { @@ -1930,7 +1932,7 @@ cmdBlockCommit(vshControl *ctl, const vshCmd *cmd) virConnectDomainEventGenericCallback cb = VIR_DOMAIN_EVENT_CALLBACK(virshBlockJobStatusHandler); - if ((cb_id = virConnectDomainEventRegisterAny(ctl->conn, + if ((cb_id = virConnectDomainEventRegisterAny(priv->conn, dom, VIR_DOMAIN_EVENT_ID_BLOCK_JOB, cb, @@ -2025,7 +2027,7 @@ cmdBlockCommit(vshControl *ctl, const vshCmd *cmd) if (blocking) sigaction(SIGINT, &old_sig_action, NULL); if (cb_id >= 0) - virConnectDomainEventDeregisterAny(ctl->conn, cb_id); + virConnectDomainEventDeregisterAny(priv->conn, cb_id); return ret; } @@ -2151,6 +2153,7 @@ cmdBlockCopy(vshControl *ctl, const vshCmd *cmd) int nparams = 0; int status = -1; int cb_id = -1; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0) return false; @@ -2194,7 +2197,7 @@ cmdBlockCopy(vshControl *ctl, const vshCmd *cmd) virConnectDomainEventGenericCallback cb = VIR_DOMAIN_EVENT_CALLBACK(virshBlockJobStatusHandler); - if ((cb_id = virConnectDomainEventRegisterAny(ctl->conn, + if ((cb_id = virConnectDomainEventRegisterAny(priv->conn, dom, VIR_DOMAIN_EVENT_ID_BLOCK_JOB, cb, @@ -2376,7 +2379,7 @@ cmdBlockCopy(vshControl *ctl, const vshCmd *cmd) if (blocking) sigaction(SIGINT, &old_sig_action, NULL); if (cb_id >= 0) - virConnectDomainEventDeregisterAny(ctl->conn, cb_id); + virConnectDomainEventDeregisterAny(priv->conn, cb_id); return ret; } @@ -2468,6 +2471,7 @@ cmdBlockJob(vshControl *ctl, const vshCmd *cmd) const char *path; unsigned int flags = 0; unsigned long long speed; + virshControlPtr priv = ctl->privData; if (abortMode + infoMode + bandwidth > 1) { vshError(ctl, "%s", @@ -2495,14 +2499,14 @@ cmdBlockJob(vshControl *ctl, const vshCmd *cmd) /* If bytes were requested, or if raw mode is not forcing a MiB/s * query and cache can't prove failure, then query bytes/sec. */ - if (bytes || !(raw || ctl->blockJobNoBytes)) { + if (bytes || !(raw || priv->blockJobNoBytes)) { flags |= VIR_DOMAIN_BLOCK_JOB_INFO_BANDWIDTH_BYTES; rc = virDomainGetBlockJobInfo(dom, path, &info, flags); if (rc < 0) { /* Check for particular errors, let all the rest be fatal. */ switch (last_error->code) { case VIR_ERR_INVALID_ARG: - ctl->blockJobNoBytes = true; + priv->blockJobNoBytes = true; /* fallthrough */ case VIR_ERR_OVERFLOW: if (!bytes && !raw) { @@ -2636,6 +2640,7 @@ cmdBlockPull(vshControl *ctl, const vshCmd *cmd) int abort_flags = 0; int status = -1; int cb_id = -1; + virshControlPtr priv = ctl->privData; if (blocking) { if (virshCommandOptTimeoutToMs(ctl, cmd, &timeout) < 0) @@ -2664,7 +2669,7 @@ cmdBlockPull(vshControl *ctl, const vshCmd *cmd) virConnectDomainEventGenericCallback cb = VIR_DOMAIN_EVENT_CALLBACK(virshBlockJobStatusHandler); - if ((cb_id = virConnectDomainEventRegisterAny(ctl->conn, + if ((cb_id = virConnectDomainEventRegisterAny(priv->conn, dom, VIR_DOMAIN_EVENT_ID_BLOCK_JOB, cb, @@ -2736,7 +2741,7 @@ cmdBlockPull(vshControl *ctl, const vshCmd *cmd) if (blocking) sigaction(SIGINT, &old_sig_action, NULL); if (cb_id >= 0) - virConnectDomainEventDeregisterAny(ctl->conn, cb_id); + virConnectDomainEventDeregisterAny(priv->conn, cb_id); return ret; } @@ -2849,6 +2854,7 @@ cmdRunConsole(vshControl *ctl, virDomainPtr dom, { bool ret = false; int state; + virshControlPtr priv = ctl->privData; if ((state = virshDomainState(ctl, dom, NULL)) < 0) { vshError(ctl, "%s", _("Unable to get domain status")); @@ -2866,7 +2872,7 @@ cmdRunConsole(vshControl *ctl, virDomainPtr dom, } vshPrintExtra(ctl, _("Connected to domain %s\n"), virDomainGetName(dom)); - vshPrintExtra(ctl, _("Escape character is %s\n"), ctl->escapeChar); + vshPrintExtra(ctl, _("Escape character is %s\n"), priv->escapeChar); fflush(stdout); if (virshRunConsole(ctl, dom, name, flags) == 0) ret = true; @@ -3562,6 +3568,7 @@ cmdUndefine(vshControl *ctl, const vshCmd *cmd) char *pool = NULL; size_t i; size_t j; + virshControlPtr priv = ctl->privData; ignore_value(vshCommandOptString(ctl, cmd, "storage", &vol_string)); @@ -3717,7 +3724,7 @@ cmdUndefine(vshControl *ctl, const vshCmd *cmd) continue; } - if (!(storagepool = virStoragePoolLookupByName(ctl->conn, + if (!(storagepool = virStoragePoolLookupByName(priv->conn, pool))) { vshPrint(ctl, _("Storage pool '%s' for volume '%s' not found."), @@ -3730,7 +3737,7 @@ cmdUndefine(vshControl *ctl, const vshCmd *cmd) virStoragePoolFree(storagepool); } else { - vol.vol = virStorageVolLookupByPath(ctl->conn, source); + vol.vol = virStorageVolLookupByPath(priv->conn, source); } if (!vol.vol) { @@ -4357,6 +4364,7 @@ cmdSaveImageDumpxml(vshControl *ctl, const vshCmd *cmd) bool ret = false; unsigned int flags = 0; char *xml = NULL; + virshControlPtr priv = ctl->privData; if (vshCommandOptBool(cmd, "security-info")) flags |= VIR_DOMAIN_XML_SECURE; @@ -4364,7 +4372,7 @@ cmdSaveImageDumpxml(vshControl *ctl, const vshCmd *cmd) if (vshCommandOptStringReq(ctl, cmd, "file", &file) < 0) return false; - xml = virDomainSaveImageGetXMLDesc(ctl->conn, file, flags); + xml = virDomainSaveImageGetXMLDesc(priv->conn, file, flags); if (!xml) goto cleanup; @@ -4419,6 +4427,7 @@ cmdSaveImageDefine(vshControl *ctl, const vshCmd *cmd) const char *xmlfile = NULL; char *xml = NULL; unsigned int flags = 0; + virshControlPtr priv = ctl->privData; if (vshCommandOptBool(cmd, "running")) flags |= VIR_DOMAIN_SAVE_RUNNING; @@ -4434,7 +4443,7 @@ cmdSaveImageDefine(vshControl *ctl, const vshCmd *cmd) if (virFileReadAll(xmlfile, VIRSH_MAX_XML_FILE, &xml) < 0) goto cleanup; - if (virDomainSaveImageDefineXML(ctl->conn, file, xml, flags) < 0) { + if (virDomainSaveImageDefineXML(priv->conn, file, xml, flags) < 0) { vshError(ctl, _("Failed to update %s"), file); goto cleanup; } @@ -4484,6 +4493,7 @@ cmdSaveImageEdit(vshControl *ctl, const vshCmd *cmd) bool ret = false; unsigned int getxml_flags = VIR_DOMAIN_XML_SECURE; unsigned int define_flags = 0; + virshControlPtr priv = ctl->privData; if (vshCommandOptBool(cmd, "running")) define_flags |= VIR_DOMAIN_SAVE_RUNNING; @@ -4503,7 +4513,7 @@ cmdSaveImageEdit(vshControl *ctl, const vshCmd *cmd) return false; #define EDIT_GET_XML \ - virDomainSaveImageGetXMLDesc(ctl->conn, file, getxml_flags) + virDomainSaveImageGetXMLDesc(priv->conn, file, getxml_flags) #define EDIT_NOT_CHANGED \ do { \ vshPrint(ctl, _("Saved image %s XML configuration " \ @@ -4512,7 +4522,7 @@ cmdSaveImageEdit(vshControl *ctl, const vshCmd *cmd) goto edit_cleanup; \ } while (0) #define EDIT_DEFINE \ - (virDomainSaveImageDefineXML(ctl->conn, file, doc_edited, define_flags) == 0) + (virDomainSaveImageDefineXML(priv->conn, file, doc_edited, define_flags) == 0) #include "virsh-edit.c" vshPrint(ctl, _("State file %s edited.\n"), file); @@ -5002,6 +5012,7 @@ cmdRestore(vshControl *ctl, const vshCmd *cmd) unsigned int flags = 0; const char *xmlfile = NULL; char *xml = NULL; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; @@ -5021,8 +5032,8 @@ cmdRestore(vshControl *ctl, const vshCmd *cmd) goto cleanup; if (((flags || xml) - ? virDomainRestoreFlags(ctl->conn, from, xml, flags) - : virDomainRestore(ctl->conn, from)) < 0) { + ? virDomainRestoreFlags(priv->conn, from, xml, flags) + : virDomainRestore(priv->conn, from)) < 0) { vshError(ctl, _("Failed to restore domain from %s"), from); goto cleanup; } @@ -5298,6 +5309,7 @@ cmdScreenshot(vshControl *ctl, const vshCmd *cmd) bool created = false; bool generated = false; char *mime = NULL; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", (const char **) &file) < 0) return false; @@ -5308,7 +5320,7 @@ cmdScreenshot(vshControl *ctl, const vshCmd *cmd) if (!(dom = virshCommandOptDomain(ctl, cmd, &name))) return false; - if (!(st = virStreamNew(ctl->conn, 0))) + if (!(st = virStreamNew(priv->conn, 0))) goto cleanup; mime = virDomainScreenshot(dom, st, screen, flags); @@ -6264,11 +6276,12 @@ cmdVcpuinfo(vshControl *ctl, const vshCmd *cmd) bool ret = false; bool pretty = vshCommandOptBool(cmd, "pretty"); int n, m; + virshControlPtr priv = ctl->privData; if (!(dom = virshCommandOptDomain(ctl, cmd, NULL))) return false; - if ((maxcpu = virshNodeGetCPUCount(ctl->conn)) < 0) + if ((maxcpu = virshNodeGetCPUCount(priv->conn)) < 0) goto cleanup; if (virDomainGetInfo(dom, &info) != 0) @@ -6447,6 +6460,7 @@ cmdVcpuPin(vshControl *ctl, const vshCmd *cmd) bool current = vshCommandOptBool(cmd, "current"); int got_vcpu; unsigned int flags = VIR_DOMAIN_AFFECT_CURRENT; + virshControlPtr priv = ctl->privData; VSH_EXCLUSIVE_OPTIONS_VAR(current, live); VSH_EXCLUSIVE_OPTIONS_VAR(current, config); @@ -6474,7 +6488,7 @@ cmdVcpuPin(vshControl *ctl, const vshCmd *cmd) return false; } - if ((maxcpu = virshNodeGetCPUCount(ctl->conn)) < 0) + if ((maxcpu = virshNodeGetCPUCount(priv->conn)) < 0) return false; if (!(dom = virshCommandOptDomain(ctl, cmd, NULL))) @@ -6589,6 +6603,7 @@ cmdEmulatorPin(vshControl *ctl, const vshCmd *cmd) bool current = vshCommandOptBool(cmd, "current"); bool query = false; /* Query mode if no cpulist */ unsigned int flags = VIR_DOMAIN_AFFECT_CURRENT; + virshControlPtr priv = ctl->privData; VSH_EXCLUSIVE_OPTIONS_VAR(current, live); VSH_EXCLUSIVE_OPTIONS_VAR(current, config); @@ -6610,7 +6625,7 @@ cmdEmulatorPin(vshControl *ctl, const vshCmd *cmd) } query = !cpulist; - if ((maxcpu = virshNodeGetCPUCount(ctl->conn)) < 0) { + if ((maxcpu = virshNodeGetCPUCount(priv->conn)) < 0) { virDomainFree(dom); return false; } @@ -6794,6 +6809,7 @@ cmdIOThreadInfo(vshControl *ctl, const vshCmd *cmd) size_t i; int maxcpu; unsigned int flags = VIR_DOMAIN_AFFECT_CURRENT; + virshControlPtr priv = ctl->privData; VSH_EXCLUSIVE_OPTIONS_VAR(current, live); VSH_EXCLUSIVE_OPTIONS_VAR(current, config); @@ -6806,7 +6822,7 @@ cmdIOThreadInfo(vshControl *ctl, const vshCmd *cmd) if (!(dom = virshCommandOptDomain(ctl, cmd, NULL))) return false; - if ((maxcpu = virshNodeGetCPUCount(ctl->conn)) < 0) + if ((maxcpu = virshNodeGetCPUCount(priv->conn)) < 0) goto cleanup; if ((niothreads = virDomainGetIOThreadInfo(dom, &info, flags)) < 0) { @@ -6894,6 +6910,7 @@ cmdIOThreadPin(vshControl *ctl, const vshCmd *cmd) unsigned char *cpumap = NULL; int cpumaplen; unsigned int flags = VIR_DOMAIN_AFFECT_CURRENT; + virshControlPtr priv = ctl->privData; VSH_EXCLUSIVE_OPTIONS_VAR(current, live); VSH_EXCLUSIVE_OPTIONS_VAR(current, config); @@ -6914,7 +6931,7 @@ cmdIOThreadPin(vshControl *ctl, const vshCmd *cmd) goto cleanup; } - if ((maxcpu = virshNodeGetCPUCount(ctl->conn)) < 0) + if ((maxcpu = virshNodeGetCPUCount(priv->conn)) < 0) goto cleanup; if (!(cpumap = vshParseCPUList(ctl, &cpumaplen, cpulist, maxcpu))) @@ -7126,6 +7143,7 @@ cmdCPUCompare(vshControl *ctl, const vshCmd *cmd) xmlDocPtr xml = NULL; xmlXPathContextPtr ctxt = NULL; xmlNodePtr node; + virshControlPtr priv = ctl->privData; if (vshCommandOptBool(cmd, "error")) flags |= VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE; @@ -7153,7 +7171,7 @@ cmdCPUCompare(vshControl *ctl, const vshCmd *cmd) goto cleanup; } - result = virConnectCompareCPU(ctl->conn, snippet, flags); + result = virConnectCompareCPU(priv->conn, snippet, flags); switch (result) { case VIR_CPU_COMPARE_INCOMPATIBLE: @@ -7235,6 +7253,7 @@ cmdCPUBaseline(vshControl *ctl, const vshCmd *cmd) xmlXPathContextPtr ctxt = NULL; virBuffer buf = VIR_BUFFER_INITIALIZER; size_t i; + virshControlPtr priv = ctl->privData; if (vshCommandOptBool(cmd, "features")) flags |= VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES; @@ -7277,7 +7296,7 @@ cmdCPUBaseline(vshControl *ctl, const vshCmd *cmd) } } - result = virConnectBaselineCPU(ctl->conn, + result = virConnectBaselineCPU(priv->conn, (const char **)list, count, flags); if (result) { @@ -7551,6 +7570,7 @@ cmdCreate(vshControl *ctl, const vshCmd *cmd) unsigned int flags = 0; size_t nfds = 0; int *fds = NULL; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; @@ -7569,9 +7589,9 @@ cmdCreate(vshControl *ctl, const vshCmd *cmd) flags |= VIR_DOMAIN_START_VALIDATE; if (nfds) - dom = virDomainCreateXMLWithFiles(ctl->conn, buffer, nfds, fds, flags); + dom = virDomainCreateXMLWithFiles(priv->conn, buffer, nfds, fds, flags); else - dom = virDomainCreateXML(ctl->conn, buffer, flags); + dom = virDomainCreateXML(priv->conn, buffer, flags); if (!dom) { vshError(ctl, _("Failed to create domain from %s"), from); @@ -7627,6 +7647,7 @@ cmdDefine(vshControl *ctl, const vshCmd *cmd) bool ret = true; char *buffer; unsigned int flags = 0; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; @@ -7638,9 +7659,9 @@ cmdDefine(vshControl *ctl, const vshCmd *cmd) return false; if (flags) - dom = virDomainDefineXMLFlags(ctl->conn, buffer, flags); + dom = virDomainDefineXMLFlags(priv->conn, buffer, flags); else - dom = virDomainDefineXML(ctl->conn, buffer); + dom = virDomainDefineXML(priv->conn, buffer); VIR_FREE(buffer); if (dom != NULL) { @@ -9016,6 +9037,7 @@ cmdQemuMonitorEvent(vshControl *ctl, const vshCmd *cmd) int timeout = 0; const char *event = NULL; virshQemuEventData data; + virshControlPtr priv = ctl->privData; if (vshCommandOptBool(cmd, "regex")) flags |= VIR_CONNECT_DOMAIN_QEMU_MONITOR_EVENT_REGISTER_REGEX; @@ -9036,7 +9058,7 @@ cmdQemuMonitorEvent(vshControl *ctl, const vshCmd *cmd) if (vshEventStart(ctl, timeout) < 0) goto cleanup; - if ((eventId = virConnectDomainQemuMonitorEventRegister(ctl->conn, dom, + if ((eventId = virConnectDomainQemuMonitorEventRegister(priv->conn, dom, event, vshEventPrint, &data, NULL, @@ -9061,7 +9083,7 @@ cmdQemuMonitorEvent(vshControl *ctl, const vshCmd *cmd) cleanup: vshEventCleanup(ctl); if (eventId >= 0 && - virConnectDomainQemuMonitorEventDeregister(ctl->conn, eventId) < 0) + virConnectDomainQemuMonitorEventDeregister(priv->conn, eventId) < 0) ret = false; if (dom) virDomainFree(dom); @@ -9098,11 +9120,12 @@ cmdQemuAttach(vshControl *ctl, const vshCmd *cmd) bool ret = false; unsigned int flags = 0; unsigned int pid_value; /* API uses unsigned int, not pid_t */ + virshControlPtr priv = ctl->privData; if (vshCommandOptUInt(ctl, cmd, "pid", &pid_value) <= 0) goto cleanup; - if (!(dom = virDomainQemuAttach(ctl->conn, pid_value, flags))) { + if (!(dom = virDomainQemuAttach(priv->conn, pid_value, flags))) { vshError(ctl, _("Failed to attach to pid %u"), pid_value); goto cleanup; } @@ -9289,6 +9312,7 @@ cmdLxcEnterNamespace(vshControl *ctl, const vshCmd *cmd) bool setlabel = true; virSecurityModelPtr secmodel = NULL; virSecurityLabelPtr seclabel = NULL; + virshControlPtr priv = ctl->privData; dom = virshCommandOptDomain(ctl, cmd, NULL); if (dom == NULL) @@ -9322,7 +9346,7 @@ cmdLxcEnterNamespace(vshControl *ctl, const vshCmd *cmd) vshError(ctl, "%s", _("Failed to allocate security label")); goto cleanup; } - if (virNodeGetSecurityModel(ctl->conn, secmodel) < 0) + if (virNodeGetSecurityModel(priv->conn, secmodel) < 0) goto cleanup; if (virDomainGetSecurityLabel(dom, seclabel) < 0) goto cleanup; @@ -9495,6 +9519,7 @@ cmdDomXMLFromNative(vshControl *ctl, const vshCmd *cmd) char *configData; char *xmlData; unsigned int flags = 0; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "format", &format) < 0 || vshCommandOptStringReq(ctl, cmd, "config", &configFile) < 0) @@ -9503,7 +9528,7 @@ cmdDomXMLFromNative(vshControl *ctl, const vshCmd *cmd) if (virFileReadAll(configFile, VIRSH_MAX_XML_FILE, &configData) < 0) return false; - xmlData = virConnectDomainXMLFromNative(ctl->conn, format, configData, flags); + xmlData = virConnectDomainXMLFromNative(priv->conn, format, configData, flags); if (xmlData != NULL) { vshPrint(ctl, "%s", xmlData); VIR_FREE(xmlData); @@ -9551,6 +9576,7 @@ cmdDomXMLToNative(vshControl *ctl, const vshCmd *cmd) char *configData; char *xmlData; unsigned int flags = 0; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "format", &format) < 0 || vshCommandOptStringReq(ctl, cmd, "xml", &xmlFile) < 0) @@ -9559,7 +9585,7 @@ cmdDomXMLToNative(vshControl *ctl, const vshCmd *cmd) if (virFileReadAll(xmlFile, VIRSH_MAX_XML_FILE, &xmlData) < 0) return false; - configData = virConnectDomainXMLToNative(ctl->conn, format, xmlData, flags); + configData = virConnectDomainXMLToNative(priv->conn, format, xmlData, flags); if (configData != NULL) { vshPrint(ctl, "%s", configData); VIR_FREE(configData); @@ -11528,6 +11554,7 @@ cmdEdit(vshControl *ctl, const vshCmd *cmd) virDomainPtr dom_edited = NULL; unsigned int query_flags = VIR_DOMAIN_XML_SECURE | VIR_DOMAIN_XML_INACTIVE; unsigned int define_flags = VIR_DOMAIN_DEFINE_VALIDATE; + virshControlPtr priv = ctl->privData; dom = virshCommandOptDomain(ctl, cmd, NULL); if (dom == NULL) @@ -11545,7 +11572,7 @@ cmdEdit(vshControl *ctl, const vshCmd *cmd) goto edit_cleanup; \ } while (0) #define EDIT_DEFINE \ - (dom_edited = virshDomainDefine(ctl->conn, doc_edited, define_flags)) + (dom_edited = virshDomainDefine(priv->conn, doc_edited, define_flags)) #define EDIT_RELAX \ do { \ define_flags &= ~VIR_DOMAIN_DEFINE_VALIDATE; \ @@ -12243,6 +12270,7 @@ cmdEvent(vshControl *ctl, const vshCmd *cmd) bool all = vshCommandOptBool(cmd, "all"); bool loop = vshCommandOptBool(cmd, "loop"); int count = 0; + virshControlPtr priv = ctl->privData; if (vshCommandOptBool(cmd, "list")) { for (event = 0; event < VIR_DOMAIN_EVENT_ID_LAST; event++) @@ -12294,7 +12322,7 @@ cmdEvent(vshControl *ctl, const vshCmd *cmd) goto cleanup; for (i = 0; i < (all ? VIR_DOMAIN_EVENT_ID_LAST : 1); i++) { - if ((data[i].id = virConnectDomainEventRegisterAny(ctl->conn, dom, + if ((data[i].id = virConnectDomainEventRegisterAny(priv->conn, dom, all ? i : event, data[i].cb->cb, &data[i], @@ -12330,7 +12358,7 @@ cmdEvent(vshControl *ctl, const vshCmd *cmd) if (data) { for (i = 0; i < (all ? VIR_DOMAIN_EVENT_ID_LAST : 1); i++) { if (data[i].id >= 0 && - virConnectDomainEventDeregisterAny(ctl->conn, data[i].id) < 0) + virConnectDomainEventDeregisterAny(priv->conn, data[i].id) < 0) ret = false; } VIR_FREE(data); diff --git a/tools/virsh-host.c b/tools/virsh-host.c index 24341ae..d725ee0 100644 --- a/tools/virsh-host.c +++ b/tools/virsh-host.c @@ -57,8 +57,9 @@ static bool cmdCapabilities(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) { char *caps; + virshControlPtr priv = ctl->privData; - if ((caps = virConnectGetCapabilities(ctl->conn)) == NULL) { + if ((caps = virConnectGetCapabilities(priv->conn)) == NULL) { vshError(ctl, "%s", _("failed to get capabilities")); return false; } @@ -111,6 +112,7 @@ cmdDomCapabilities(vshControl *ctl, const vshCmd *cmd) const char *arch = NULL; const char *machine = NULL; const unsigned int flags = 0; /* No flags so far */ + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "virttype", &virttype) < 0 || vshCommandOptStringReq(ctl, cmd, "emulatorbin", &emulatorbin) < 0 || @@ -118,7 +120,7 @@ cmdDomCapabilities(vshControl *ctl, const vshCmd *cmd) vshCommandOptStringReq(ctl, cmd, "machine", &machine) < 0) return ret; - caps = virConnectGetDomainCapabilities(ctl->conn, emulatorbin, + caps = virConnectGetDomainCapabilities(priv->conn, emulatorbin, arch, machine, virttype, flags); if (!caps) { vshError(ctl, "%s", _("failed to get emulator capabilities")); @@ -173,6 +175,7 @@ cmdFreecell(vshControl *ctl, const vshCmd *cmd) char *cap_xml = NULL; xmlDocPtr xml = NULL; xmlXPathContextPtr ctxt = NULL; + virshControlPtr priv = ctl->privData; VSH_EXCLUSIVE_OPTIONS_VAR(all, cellno); @@ -180,7 +183,7 @@ cmdFreecell(vshControl *ctl, const vshCmd *cmd) return false; if (all) { - if (!(cap_xml = virConnectGetCapabilities(ctl->conn))) { + if (!(cap_xml = virConnectGetCapabilities(priv->conn))) { vshError(ctl, "%s", _("unable to get node capabilities")); goto cleanup; } @@ -213,7 +216,7 @@ cmdFreecell(vshControl *ctl, const vshCmd *cmd) } VIR_FREE(val); nodes_id[i] = id; - if (virNodeGetCellsFreeMemory(ctl->conn, &(nodes_free[i]), + if (virNodeGetCellsFreeMemory(priv->conn, &(nodes_free[i]), id, 1) != 1) { vshError(ctl, _("failed to get free memory for NUMA node " "number: %lu"), id); @@ -231,12 +234,12 @@ cmdFreecell(vshControl *ctl, const vshCmd *cmd) vshPrintExtra(ctl, "%5s: %10llu KiB\n", _("Total"), memory/1024); } else { if (cellno) { - if (virNodeGetCellsFreeMemory(ctl->conn, &memory, cell, 1) != 1) + if (virNodeGetCellsFreeMemory(priv->conn, &memory, cell, 1) != 1) goto cleanup; vshPrint(ctl, "%d: %llu KiB\n", cell, (memory/1024)); } else { - if ((memory = virNodeGetFreeMemory(ctl->conn)) == 0) + if ((memory = virNodeGetFreeMemory(priv->conn)) == 0) goto cleanup; vshPrint(ctl, "%s: %llu KiB\n", _("Total"), (memory/1024)); @@ -304,6 +307,7 @@ cmdFreepages(vshControl *ctl, const vshCmd *cmd) bool all = vshCommandOptBool(cmd, "all"); bool cellno = vshCommandOptBool(cmd, "cellno"); bool pagesz = vshCommandOptBool(cmd, "pagesize"); + virshControlPtr priv = ctl->privData; VSH_EXCLUSIVE_OPTIONS_VAR(all, cellno); @@ -312,7 +316,7 @@ cmdFreepages(vshControl *ctl, const vshCmd *cmd) kibibytes = VIR_DIV_UP(bytes, 1024); if (all) { - if (!(cap_xml = virConnectGetCapabilities(ctl->conn))) { + if (!(cap_xml = virConnectGetCapabilities(priv->conn))) { vshError(ctl, "%s", _("unable to get node capabilities")); goto cleanup; } @@ -367,7 +371,7 @@ cmdFreepages(vshControl *ctl, const vshCmd *cmd) } VIR_FREE(val); - if (virNodeGetFreePages(ctl->conn, npages, pagesize, + if (virNodeGetFreePages(priv->conn, npages, pagesize, cell, 1, counts, 0) < 0) goto cleanup; @@ -403,7 +407,8 @@ cmdFreepages(vshControl *ctl, const vshCmd *cmd) counts = vshMalloc(ctl, sizeof(*counts)); - if (virNodeGetFreePages(ctl->conn, 1, pagesize, cell, 1, counts, 0) < 0) + if (virNodeGetFreePages(priv->conn, 1, pagesize, + cell, 1, counts, 0) < 0) goto cleanup; vshPrint(ctl, "%uKiB: %lld\n", *pagesize, counts[0]); @@ -475,6 +480,7 @@ cmdAllocpages(vshControl *ctl, const vshCmd *cmd) xmlDocPtr xml = NULL; xmlXPathContextPtr ctxt = NULL; xmlNodePtr *nodes = NULL; + virshControlPtr priv = ctl->privData; VSH_EXCLUSIVE_OPTIONS_VAR(all, cellno); @@ -494,7 +500,7 @@ cmdAllocpages(vshControl *ctl, const vshCmd *cmd) unsigned long nodes_cnt; size_t i; - if (!(cap_xml = virConnectGetCapabilities(ctl->conn))) { + if (!(cap_xml = virConnectGetCapabilities(priv->conn))) { vshError(ctl, "%s", _("unable to get node capabilities")); goto cleanup; } @@ -524,12 +530,12 @@ cmdAllocpages(vshControl *ctl, const vshCmd *cmd) } VIR_FREE(val); - if (virNodeAllocPages(ctl->conn, 1, pageSizes, + if (virNodeAllocPages(priv->conn, 1, pageSizes, pageCounts, id, 1, flags) < 0) goto cleanup; } } else { - if (virNodeAllocPages(ctl->conn, 1, pageSizes, pageCounts, + if (virNodeAllocPages(priv->conn, 1, pageSizes, pageCounts, startCell, cellCount, flags) < 0) goto cleanup; } @@ -570,11 +576,12 @@ cmdMaxvcpus(vshControl *ctl, const vshCmd *cmd) { const char *type = NULL; int vcpus; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "type", &type) < 0) return false; - if ((vcpus = virConnectGetMaxVcpus(ctl->conn, type)) < 0) + if ((vcpus = virConnectGetMaxVcpus(priv->conn, type)) < 0) return false; vshPrint(ctl, "%d\n", vcpus); @@ -599,8 +606,9 @@ static bool cmdNodeinfo(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) { virNodeInfo info; + virshControlPtr priv = ctl->privData; - if (virNodeGetInfo(ctl->conn, &info) < 0) { + if (virNodeGetInfo(priv->conn, &info) < 0) { vshError(ctl, "%s", _("failed to get node information")); return false; } @@ -646,8 +654,9 @@ cmdNodeCpuMap(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) unsigned int online; bool pretty = vshCommandOptBool(cmd, "pretty"); bool ret = false; + virshControlPtr priv = ctl->privData; - cpunum = virNodeGetCPUMap(ctl->conn, &cpumap, &online, 0); + cpunum = virNodeGetCPUMap(priv->conn, &cpumap, &online, 0); if (cpunum < 0) { vshError(ctl, "%s", _("Unable to get cpu map")); goto cleanup; @@ -741,11 +750,12 @@ cmdNodeCpuStats(vshControl *ctl, const vshCmd *cmd) bool ret = false; unsigned long long cpu_stats[VIRSH_CPU_LAST] = { 0 }; bool present[VIRSH_CPU_LAST] = { false }; + virshControlPtr priv = ctl->privData; if (vshCommandOptInt(ctl, cmd, "cpu", &cpuNum) < 0) return false; - if (virNodeGetCPUStats(ctl->conn, cpuNum, NULL, &nparams, 0) != 0) { + if (virNodeGetCPUStats(priv->conn, cpuNum, NULL, &nparams, 0) != 0) { vshError(ctl, "%s", _("Unable to get number of cpu stats")); return false; @@ -759,7 +769,7 @@ cmdNodeCpuStats(vshControl *ctl, const vshCmd *cmd) params = vshCalloc(ctl, nparams, sizeof(*params)); for (i = 0; i < 2; i++) { - if (virNodeGetCPUStats(ctl->conn, cpuNum, params, &nparams, 0) != 0) { + if (virNodeGetCPUStats(priv->conn, cpuNum, params, &nparams, 0) != 0) { vshError(ctl, "%s", _("Unable to get node cpu stats")); goto cleanup; } @@ -851,12 +861,13 @@ cmdNodeMemStats(vshControl *ctl, const vshCmd *cmd) int cellNum = VIR_NODE_MEMORY_STATS_ALL_CELLS; virNodeMemoryStatsPtr params = NULL; bool ret = false; + virshControlPtr priv = ctl->privData; if (vshCommandOptInt(ctl, cmd, "cell", &cellNum) < 0) return false; /* get the number of memory parameters */ - if (virNodeGetMemoryStats(ctl->conn, cellNum, NULL, &nparams, 0) != 0) { + if (virNodeGetMemoryStats(priv->conn, cellNum, NULL, &nparams, 0) != 0) { vshError(ctl, "%s", _("Unable to get number of memory stats")); goto cleanup; @@ -870,7 +881,7 @@ cmdNodeMemStats(vshControl *ctl, const vshCmd *cmd) /* now go get all the memory parameters */ params = vshCalloc(ctl, nparams, sizeof(*params)); - if (virNodeGetMemoryStats(ctl->conn, cellNum, params, &nparams, 0) != 0) { + if (virNodeGetMemoryStats(priv->conn, cellNum, params, &nparams, 0) != 0) { vshError(ctl, "%s", _("Unable to get memory stats")); goto cleanup; } @@ -920,6 +931,7 @@ cmdNodeSuspend(vshControl *ctl, const vshCmd *cmd) const char *target = NULL; unsigned int suspendTarget; long long duration; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "target", &target) < 0) return false; @@ -943,7 +955,7 @@ cmdNodeSuspend(vshControl *ctl, const vshCmd *cmd) return false; } - if (virNodeSuspendForDuration(ctl->conn, suspendTarget, duration, 0) < 0) { + if (virNodeSuspendForDuration(priv->conn, suspendTarget, duration, 0) < 0) { vshError(ctl, "%s", _("The host was not suspended")); return false; } @@ -967,8 +979,9 @@ static bool cmdSysinfo(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) { char *sysinfo; + virshControlPtr priv = ctl->privData; - sysinfo = virConnectGetSysinfo(ctl->conn, 0); + sysinfo = virConnectGetSysinfo(priv->conn, 0); if (sysinfo == NULL) { vshError(ctl, "%s", _("failed to get sysinfo")); return false; @@ -997,8 +1010,9 @@ static bool cmdHostname(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) { char *hostname; + virshControlPtr priv = ctl->privData; - hostname = virConnectGetHostname(ctl->conn); + hostname = virConnectGetHostname(priv->conn); if (hostname == NULL) { vshError(ctl, "%s", _("failed to get hostname")); return false; @@ -1027,8 +1041,9 @@ static bool cmdURI(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) { char *uri; + virshControlPtr priv = ctl->privData; - uri = virConnectGetURI(ctl->conn); + uri = virConnectGetURI(priv->conn); if (uri == NULL) { vshError(ctl, "%s", _("failed to get URI")); return false; @@ -1069,11 +1084,12 @@ cmdCPUModelNames(vshControl *ctl, const vshCmd *cmd) size_t i; int nmodels; const char *arch = NULL; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "arch", &arch) < 0) return false; - nmodels = virConnectGetCPUModelNames(ctl->conn, arch, &models, 0); + nmodels = virConnectGetCPUModelNames(priv->conn, arch, &models, 0); if (nmodels < 0) { vshError(ctl, "%s", _("failed to get CPU model names")); return false; @@ -1122,8 +1138,9 @@ cmdVersion(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) unsigned int major; unsigned int minor; unsigned int rel; + virshControlPtr priv = ctl->privData; - hvType = virConnectGetType(ctl->conn); + hvType = virConnectGetType(priv->conn); if (hvType == NULL) { vshError(ctl, "%s", _("failed to get hypervisor type")); return false; @@ -1156,7 +1173,7 @@ cmdVersion(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) vshPrint(ctl, _("Using API: %s %d.%d.%d\n"), hvType, major, minor, rel); - ret = virConnectGetVersion(ctl->conn, &hvVersion); + ret = virConnectGetVersion(priv->conn, &hvVersion); if (ret < 0) { vshError(ctl, "%s", _("failed to get the hypervisor version")); return false; @@ -1175,7 +1192,7 @@ cmdVersion(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) } if (vshCommandOptBool(cmd, "daemon")) { - ret = virConnectGetLibVersion(ctl->conn, &daemonVersion); + ret = virConnectGetLibVersion(priv->conn, &daemonVersion); if (ret < 0) { vshError(ctl, "%s", _("failed to get the daemon version")); } else { @@ -1228,6 +1245,7 @@ cmdNodeMemoryTune(vshControl *ctl, const vshCmd *cmd) bool ret = false; int rc = -1; size_t i; + virshControlPtr priv = ctl->privData; if ((rc = vshCommandOptUInt(ctl, cmd, "shm-pages-to-scan", &value)) < 0) { goto cleanup; @@ -1258,7 +1276,7 @@ cmdNodeMemoryTune(vshControl *ctl, const vshCmd *cmd) if (nparams == 0) { /* Get the number of memory parameters */ - if (virNodeGetMemoryParameters(ctl->conn, NULL, &nparams, flags) != 0) { + if (virNodeGetMemoryParameters(priv->conn, NULL, &nparams, flags) != 0) { vshError(ctl, "%s", _("Unable to get number of memory parameters")); goto cleanup; @@ -1271,7 +1289,7 @@ cmdNodeMemoryTune(vshControl *ctl, const vshCmd *cmd) /* Now go get all the memory parameters */ params = vshCalloc(ctl, nparams, sizeof(*params)); - if (virNodeGetMemoryParameters(ctl->conn, params, &nparams, flags) != 0) { + if (virNodeGetMemoryParameters(priv->conn, params, &nparams, flags) != 0) { vshError(ctl, "%s", _("Unable to get memory parameters")); goto cleanup; } @@ -1286,7 +1304,7 @@ cmdNodeMemoryTune(vshControl *ctl, const vshCmd *cmd) VIR_FREE(str); } } else { - if (virNodeSetMemoryParameters(ctl->conn, params, nparams, flags) != 0) + if (virNodeSetMemoryParameters(priv->conn, params, nparams, flags) != 0) goto error; } diff --git a/tools/virsh-interface.c b/tools/virsh-interface.c index 8b085cd..9a00070 100644 --- a/tools/virsh-interface.c +++ b/tools/virsh-interface.c @@ -50,6 +50,7 @@ virshCommandOptInterfaceBy(vshControl *ctl, const vshCmd *cmd, bool is_mac = false; virMacAddr dummy; virCheckFlags(VSH_BYNAME | VSH_BYMAC, NULL); + virshControlPtr priv = ctl->privData; if (!optname) optname = "interface"; @@ -70,13 +71,13 @@ virshCommandOptInterfaceBy(vshControl *ctl, const vshCmd *cmd, if (!is_mac && (flags & VSH_BYNAME)) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as interface NAME\n", cmd->def->name, optname); - iface = virInterfaceLookupByName(ctl->conn, n); + iface = virInterfaceLookupByName(priv->conn, n); /* try it by MAC */ } else if (is_mac && (flags & VSH_BYMAC)) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as interface MAC\n", cmd->def->name, optname); - iface = virInterfaceLookupByMACString(ctl->conn, n); + iface = virInterfaceLookupByMACString(priv->conn, n); } if (!iface) @@ -114,6 +115,7 @@ cmdInterfaceEdit(vshControl *ctl, const vshCmd *cmd) virInterfacePtr iface = NULL; virInterfacePtr iface_edited = NULL; unsigned int flags = VIR_INTERFACE_XML_INACTIVE; + virshControlPtr priv = ctl->privData; iface = virshCommandOptInterface(ctl, cmd, NULL); if (iface == NULL) @@ -128,7 +130,7 @@ cmdInterfaceEdit(vshControl *ctl, const vshCmd *cmd) goto edit_cleanup; \ } while (0) #define EDIT_DEFINE \ - (iface_edited = virInterfaceDefineXML(ctl->conn, doc_edited, 0)) + (iface_edited = virInterfaceDefineXML(priv->conn, doc_edited, 0)) #include "virsh-edit.c" vshPrint(ctl, _("Interface %s XML configuration edited.\n"), @@ -197,9 +199,10 @@ vshInterfaceListCollect(vshControl *ctl, int nActiveIfaces = 0; int nInactiveIfaces = 0; int nAllIfaces = 0; + virshControlPtr priv = ctl->privData; /* try the list with flags support (0.10.2 and later) */ - if ((ret = virConnectListAllInterfaces(ctl->conn, + if ((ret = virConnectListAllInterfaces(priv->conn, &list->ifaces, flags)) >= 0) { list->nifaces = ret; @@ -220,7 +223,7 @@ vshInterfaceListCollect(vshControl *ctl, vshResetLibvirtError(); if (flags & VIR_CONNECT_LIST_INTERFACES_ACTIVE) { - nActiveIfaces = virConnectNumOfInterfaces(ctl->conn); + nActiveIfaces = virConnectNumOfInterfaces(priv->conn); if (nActiveIfaces < 0) { vshError(ctl, "%s", _("Failed to list active interfaces")); goto cleanup; @@ -228,7 +231,7 @@ vshInterfaceListCollect(vshControl *ctl, if (nActiveIfaces) { activeNames = vshMalloc(ctl, sizeof(char *) * nActiveIfaces); - if ((nActiveIfaces = virConnectListInterfaces(ctl->conn, activeNames, + if ((nActiveIfaces = virConnectListInterfaces(priv->conn, activeNames, nActiveIfaces)) < 0) { vshError(ctl, "%s", _("Failed to list active interfaces")); goto cleanup; @@ -237,7 +240,7 @@ vshInterfaceListCollect(vshControl *ctl, } if (flags & VIR_CONNECT_LIST_INTERFACES_INACTIVE) { - nInactiveIfaces = virConnectNumOfDefinedInterfaces(ctl->conn); + nInactiveIfaces = virConnectNumOfDefinedInterfaces(priv->conn); if (nInactiveIfaces < 0) { vshError(ctl, "%s", _("Failed to list inactive interfaces")); goto cleanup; @@ -246,7 +249,7 @@ vshInterfaceListCollect(vshControl *ctl, inactiveNames = vshMalloc(ctl, sizeof(char *) * nInactiveIfaces); if ((nInactiveIfaces = - virConnectListDefinedInterfaces(ctl->conn, inactiveNames, + virConnectListDefinedInterfaces(priv->conn, inactiveNames, nInactiveIfaces)) < 0) { vshError(ctl, "%s", _("Failed to list inactive interfaces")); goto cleanup; @@ -266,7 +269,7 @@ vshInterfaceListCollect(vshControl *ctl, /* get active interfaces */ for (i = 0; i < nActiveIfaces; i++) { - if (!(iface = virInterfaceLookupByName(ctl->conn, activeNames[i]))) { + if (!(iface = virInterfaceLookupByName(priv->conn, activeNames[i]))) { vshResetLibvirtError(); continue; } @@ -275,7 +278,7 @@ vshInterfaceListCollect(vshControl *ctl, /* get inactive interfaces */ for (i = 0; i < nInactiveIfaces; i++) { - if (!(iface = virInterfaceLookupByName(ctl->conn, inactiveNames[i]))) { + if (!(iface = virInterfaceLookupByName(priv->conn, inactiveNames[i]))) { vshResetLibvirtError(); continue; } @@ -530,6 +533,7 @@ cmdInterfaceDefine(vshControl *ctl, const vshCmd *cmd) const char *from = NULL; bool ret = true; char *buffer; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; @@ -537,7 +541,7 @@ cmdInterfaceDefine(vshControl *ctl, const vshCmd *cmd) if (virFileReadAll(from, VIRSH_MAX_XML_FILE, &buffer) < 0) return false; - iface = virInterfaceDefineXML(ctl->conn, buffer, 0); + iface = virInterfaceDefineXML(priv->conn, buffer, 0); VIR_FREE(buffer); if (iface != NULL) { @@ -702,7 +706,9 @@ static const vshCmdOptDef opts_interface_begin[] = { static bool cmdInterfaceBegin(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) { - if (virInterfaceChangeBegin(ctl->conn, 0) < 0) { + virshControlPtr priv = ctl->privData; + + if (virInterfaceChangeBegin(priv->conn, 0) < 0) { vshError(ctl, "%s", _("Failed to begin network config change transaction")); return false; } @@ -731,7 +737,9 @@ static const vshCmdOptDef opts_interface_commit[] = { static bool cmdInterfaceCommit(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) { - if (virInterfaceChangeCommit(ctl->conn, 0) < 0) { + virshControlPtr priv = ctl->privData; + + if (virInterfaceChangeCommit(priv->conn, 0) < 0) { vshError(ctl, "%s", _("Failed to commit network config change transaction")); return false; } @@ -760,7 +768,9 @@ static const vshCmdOptDef opts_interface_rollback[] = { static bool cmdInterfaceRollback(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) { - if (virInterfaceChangeRollback(ctl->conn, 0) < 0) { + virshControlPtr priv = ctl->privData; + + if (virInterfaceChangeRollback(priv->conn, 0) < 0) { vshError(ctl, "%s", _("Failed to rollback network config change transaction")); return false; } @@ -823,6 +833,7 @@ cmdInterfaceBridge(vshControl *ctl, const vshCmd *cmd) xmlDocPtr xml_doc = NULL; xmlXPathContextPtr ctxt = NULL; xmlNodePtr top_node, br_node, if_node, cur; + virshControlPtr priv = ctl->privData; /* Get a handle to the original device */ if (!(if_handle = virshCommandOptInterfaceBy(ctl, cmd, "interface", @@ -835,7 +846,7 @@ cmdInterfaceBridge(vshControl *ctl, const vshCmd *cmd) goto cleanup; /* make sure "new" device doesn't already exist */ - if ((br_handle = virInterfaceLookupByName(ctl->conn, br_name))) { + if ((br_handle = virInterfaceLookupByName(priv->conn, br_name))) { vshError(ctl, _("Network device %s already exists"), br_name); goto cleanup; } @@ -969,7 +980,7 @@ cmdInterfaceBridge(vshControl *ctl, const vshCmd *cmd) /* br_xml is the new interface to define. It will automatically undefine the * independent original interface. */ - if (!(br_handle = virInterfaceDefineXML(ctl->conn, (char *) br_xml, 0))) { + if (!(br_handle = virInterfaceDefineXML(priv->conn, (char *) br_xml, 0))) { vshError(ctl, _("Failed to define new bridge interface %s"), br_name); goto cleanup; @@ -1043,6 +1054,7 @@ cmdInterfaceUnbridge(vshControl *ctl, const vshCmd *cmd) xmlDocPtr xml_doc = NULL; xmlXPathContextPtr ctxt = NULL; xmlNodePtr top_node, if_node, cur; + virshControlPtr priv = ctl->privData; /* Get a handle to the original device */ if (!(br_handle = virshCommandOptInterfaceBy(ctl, cmd, "bridge", @@ -1170,7 +1182,7 @@ cmdInterfaceUnbridge(vshControl *ctl, const vshCmd *cmd) /* if_xml is the new interface to define. */ - if (!(if_handle = virInterfaceDefineXML(ctl->conn, (char *) if_xml, 0))) { + if (!(if_handle = virInterfaceDefineXML(priv->conn, (char *) if_xml, 0))) { vshError(ctl, _("Failed to define new interface %s"), if_name); goto cleanup; } diff --git a/tools/virsh-network.c b/tools/virsh-network.c index 79909d9..4e3eee5 100644 --- a/tools/virsh-network.c +++ b/tools/virsh-network.c @@ -41,6 +41,7 @@ virshCommandOptNetworkBy(vshControl *ctl, const vshCmd *cmd, const char *n = NULL; const char *optname = "network"; virCheckFlags(VSH_BYUUID | VSH_BYNAME, NULL); + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, optname, &n) < 0) return NULL; @@ -55,13 +56,13 @@ virshCommandOptNetworkBy(vshControl *ctl, const vshCmd *cmd, if ((flags & VSH_BYUUID) && strlen(n) == VIR_UUID_STRING_BUFLEN-1) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as network UUID\n", cmd->def->name, optname); - network = virNetworkLookupByUUIDString(ctl->conn, n); + network = virNetworkLookupByUUIDString(priv->conn, n); } /* try it by NAME */ if (!network && (flags & VSH_BYNAME)) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as network NAME\n", cmd->def->name, optname); - network = virNetworkLookupByName(ctl->conn, n); + network = virNetworkLookupByName(priv->conn, n); } if (!network) @@ -155,6 +156,7 @@ cmdNetworkCreate(vshControl *ctl, const vshCmd *cmd) const char *from = NULL; bool ret = true; char *buffer; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; @@ -162,7 +164,7 @@ cmdNetworkCreate(vshControl *ctl, const vshCmd *cmd) if (virFileReadAll(from, VIRSH_MAX_XML_FILE, &buffer) < 0) return false; - network = virNetworkCreateXML(ctl->conn, buffer); + network = virNetworkCreateXML(priv->conn, buffer); VIR_FREE(buffer); if (network != NULL) { @@ -206,6 +208,7 @@ cmdNetworkDefine(vshControl *ctl, const vshCmd *cmd) const char *from = NULL; bool ret = true; char *buffer; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; @@ -213,7 +216,7 @@ cmdNetworkDefine(vshControl *ctl, const vshCmd *cmd) if (virFileReadAll(from, VIRSH_MAX_XML_FILE, &buffer) < 0) return false; - network = virNetworkDefineXML(ctl->conn, buffer); + network = virNetworkDefineXML(priv->conn, buffer); VIR_FREE(buffer); if (network != NULL) { @@ -442,9 +445,10 @@ vshNetworkListCollect(vshControl *ctl, int nActiveNets = 0; int nInactiveNets = 0; int nAllNets = 0; + virshControlPtr priv = ctl->privData; /* try the list with flags support (0.10.2 and later) */ - if ((ret = virConnectListAllNetworks(ctl->conn, + if ((ret = virConnectListAllNetworks(priv->conn, &list->nets, flags)) >= 0) { list->nnets = ret; @@ -461,7 +465,7 @@ vshNetworkListCollect(vshControl *ctl, VIR_CONNECT_LIST_NETWORKS_INACTIVE); vshResetLibvirtError(); - if ((ret = virConnectListAllNetworks(ctl->conn, &list->nets, + if ((ret = virConnectListAllNetworks(priv->conn, &list->nets, newflags)) >= 0) { list->nnets = ret; goto filter; @@ -480,7 +484,7 @@ vshNetworkListCollect(vshControl *ctl, /* Get the number of active networks */ if (!VSH_MATCH(VIR_CONNECT_LIST_NETWORKS_FILTERS_ACTIVE) || VSH_MATCH(VIR_CONNECT_LIST_NETWORKS_ACTIVE)) { - if ((nActiveNets = virConnectNumOfNetworks(ctl->conn)) < 0) { + if ((nActiveNets = virConnectNumOfNetworks(priv->conn)) < 0) { vshError(ctl, "%s", _("Failed to get the number of active networks")); goto cleanup; } @@ -489,7 +493,7 @@ vshNetworkListCollect(vshControl *ctl, /* Get the number of inactive networks */ if (!VSH_MATCH(VIR_CONNECT_LIST_NETWORKS_FILTERS_ACTIVE) || VSH_MATCH(VIR_CONNECT_LIST_NETWORKS_INACTIVE)) { - if ((nInactiveNets = virConnectNumOfDefinedNetworks(ctl->conn)) < 0) { + if ((nInactiveNets = virConnectNumOfDefinedNetworks(priv->conn)) < 0) { vshError(ctl, "%s", _("Failed to get the number of inactive networks")); goto cleanup; } @@ -505,7 +509,7 @@ vshNetworkListCollect(vshControl *ctl, /* Retrieve a list of active network names */ if (!VSH_MATCH(VIR_CONNECT_LIST_NETWORKS_FILTERS_ACTIVE) || VSH_MATCH(VIR_CONNECT_LIST_NETWORKS_ACTIVE)) { - if (virConnectListNetworks(ctl->conn, + if (virConnectListNetworks(priv->conn, names, nActiveNets) < 0) { vshError(ctl, "%s", _("Failed to list active networks")); goto cleanup; @@ -515,7 +519,7 @@ vshNetworkListCollect(vshControl *ctl, /* Add the inactive networks to the end of the name list */ if (!VSH_MATCH(VIR_CONNECT_LIST_NETWORKS_FILTERS_ACTIVE) || VSH_MATCH(VIR_CONNECT_LIST_NETWORKS_ACTIVE)) { - if (virConnectListDefinedNetworks(ctl->conn, + if (virConnectListDefinedNetworks(priv->conn, &names[nActiveNets], nInactiveNets) < 0) { vshError(ctl, "%s", _("Failed to list inactive networks")); @@ -528,14 +532,14 @@ vshNetworkListCollect(vshControl *ctl, /* get active networks */ for (i = 0; i < nActiveNets; i++) { - if (!(net = virNetworkLookupByName(ctl->conn, names[i]))) + if (!(net = virNetworkLookupByName(priv->conn, names[i]))) continue; list->nets[list->nnets++] = net; } /* get inactive networks */ for (i = 0; i < nInactiveNets; i++) { - if (!(net = virNetworkLookupByName(ctl->conn, names[i]))) + if (!(net = virNetworkLookupByName(priv->conn, names[i]))) continue; list->nets[list->nnets++] = net; } @@ -1123,6 +1127,7 @@ cmdNetworkEdit(vshControl *ctl, const vshCmd *cmd) bool ret = false; virNetworkPtr network = NULL; virNetworkPtr network_edited = NULL; + virshControlPtr priv = ctl->privData; network = virshCommandOptNetwork(ctl, cmd, NULL); if (network == NULL) @@ -1137,7 +1142,7 @@ cmdNetworkEdit(vshControl *ctl, const vshCmd *cmd) goto edit_cleanup; \ } while (0) #define EDIT_DEFINE \ - (network_edited = virNetworkDefineXML(ctl->conn, doc_edited)) + (network_edited = virNetworkDefineXML(priv->conn, doc_edited)) #include "virsh-edit.c" vshPrint(ctl, _("Network %s XML configuration edited.\n"), @@ -1247,6 +1252,7 @@ cmdNetworkEvent(vshControl *ctl, const vshCmd *cmd) vshNetEventData data; const char *eventName = NULL; int event; + virshControlPtr priv = ctl->privData; if (vshCommandOptBool(cmd, "list")) { size_t i; @@ -1278,7 +1284,7 @@ cmdNetworkEvent(vshControl *ctl, const vshCmd *cmd) if (vshEventStart(ctl, timeout) < 0) goto cleanup; - if ((eventId = virConnectNetworkEventRegisterAny(ctl->conn, net, event, + if ((eventId = virConnectNetworkEventRegisterAny(priv->conn, net, event, VIR_NETWORK_EVENT_CALLBACK(vshEventLifecyclePrint), &data, NULL)) < 0) goto cleanup; @@ -1301,7 +1307,7 @@ cmdNetworkEvent(vshControl *ctl, const vshCmd *cmd) cleanup: vshEventCleanup(ctl); if (eventId >= 0 && - virConnectNetworkEventDeregisterAny(ctl->conn, eventId) < 0) + virConnectNetworkEventDeregisterAny(priv->conn, eventId) < 0) ret = false; if (net) virNetworkFree(net); diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c index adf4423..d81afcf 100644 --- a/tools/virsh-nodedev.c +++ b/tools/virsh-nodedev.c @@ -65,6 +65,7 @@ cmdNodeDeviceCreate(vshControl *ctl, const vshCmd *cmd) const char *from = NULL; bool ret = true; char *buffer; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; @@ -72,7 +73,7 @@ cmdNodeDeviceCreate(vshControl *ctl, const vshCmd *cmd) if (virFileReadAll(from, VIRSH_MAX_XML_FILE, &buffer) < 0) return false; - dev = virNodeDeviceCreateXML(ctl->conn, buffer, 0); + dev = virNodeDeviceCreateXML(priv->conn, buffer, 0); VIR_FREE(buffer); if (dev != NULL) { @@ -123,6 +124,7 @@ cmdNodeDeviceDestroy(vshControl *ctl, const vshCmd *cmd) const char *device_value = NULL; char **arr = NULL; int narr; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "device", &device_value) < 0) return false; @@ -137,9 +139,9 @@ cmdNodeDeviceDestroy(vshControl *ctl, const vshCmd *cmd) if (!virValidateWWN(arr[0]) || !virValidateWWN(arr[1])) goto cleanup; - dev = virNodeDeviceLookupSCSIHostByWWN(ctl->conn, arr[0], arr[1], 0); + dev = virNodeDeviceLookupSCSIHostByWWN(priv->conn, arr[0], arr[1], 0); } else { - dev = virNodeDeviceLookupByName(ctl->conn, device_value); + dev = virNodeDeviceLookupByName(priv->conn, device_value); } if (!dev) { @@ -227,9 +229,10 @@ vshNodeDeviceListCollect(vshControl *ctl, size_t deleted = 0; int ndevices = 0; char **names = NULL; + virshControlPtr priv = ctl->privData; /* try the list with flags support (0.10.2 and later) */ - if ((ret = virConnectListAllNodeDevices(ctl->conn, + if ((ret = virConnectListAllNodeDevices(priv->conn, &list->devices, flags)) >= 0) { list->ndevices = ret; @@ -249,7 +252,7 @@ vshNodeDeviceListCollect(vshControl *ctl, /* fall back to old method (0.10.1 and older) */ vshResetLibvirtError(); - ndevices = virNodeNumOfDevices(ctl->conn, NULL, 0); + ndevices = virNodeNumOfDevices(priv->conn, NULL, 0); if (ndevices < 0) { vshError(ctl, "%s", _("Failed to count node devices")); goto cleanup; @@ -260,7 +263,7 @@ vshNodeDeviceListCollect(vshControl *ctl, names = vshMalloc(ctl, sizeof(char *) * ndevices); - ndevices = virNodeListDevices(ctl->conn, NULL, names, ndevices, 0); + ndevices = virNodeListDevices(priv->conn, NULL, names, ndevices, 0); if (ndevices < 0) { vshError(ctl, "%s", _("Failed to list node devices")); goto cleanup; @@ -271,7 +274,7 @@ vshNodeDeviceListCollect(vshControl *ctl, /* get the node devices */ for (i = 0; i < ndevices; i++) { - if (!(device = virNodeDeviceLookupByName(ctl->conn, names[i]))) + if (!(device = virNodeDeviceLookupByName(priv->conn, names[i]))) continue; list->devices[list->ndevices++] = device; } @@ -534,6 +537,7 @@ cmdNodeDeviceDumpXML(vshControl *ctl, const vshCmd *cmd) char **arr = NULL; int narr; bool ret = false; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "device", &device_value) < 0) return false; @@ -548,9 +552,9 @@ cmdNodeDeviceDumpXML(vshControl *ctl, const vshCmd *cmd) if (!virValidateWWN(arr[0]) || !virValidateWWN(arr[1])) goto cleanup; - device = virNodeDeviceLookupSCSIHostByWWN(ctl->conn, arr[0], arr[1], 0); + device = virNodeDeviceLookupSCSIHostByWWN(priv->conn, arr[0], arr[1], 0); } else { - device = virNodeDeviceLookupByName(ctl->conn, device_value); + device = virNodeDeviceLookupByName(priv->conn, device_value); } if (!device) { @@ -606,13 +610,14 @@ cmdNodeDeviceDetach(vshControl *ctl, const vshCmd *cmd) const char *driverName = NULL; virNodeDevicePtr device; bool ret = true; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "device", &name) < 0) return false; ignore_value(vshCommandOptString(ctl, cmd, "driver", &driverName)); - if (!(device = virNodeDeviceLookupByName(ctl->conn, name))) { + if (!(device = virNodeDeviceLookupByName(priv->conn, name))) { vshError(ctl, _("Could not find matching device '%s'"), name); return false; } @@ -666,11 +671,12 @@ cmdNodeDeviceReAttach(vshControl *ctl, const vshCmd *cmd) const char *name = NULL; virNodeDevicePtr device; bool ret = true; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "device", &name) < 0) return false; - if (!(device = virNodeDeviceLookupByName(ctl->conn, name))) { + if (!(device = virNodeDeviceLookupByName(priv->conn, name))) { vshError(ctl, _("Could not find matching device '%s'"), name); return false; } @@ -715,11 +721,12 @@ cmdNodeDeviceReset(vshControl *ctl, const vshCmd *cmd) const char *name = NULL; virNodeDevicePtr device; bool ret = true; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "device", &name) < 0) return false; - if (!(device = virNodeDeviceLookupByName(ctl->conn, name))) { + if (!(device = virNodeDeviceLookupByName(priv->conn, name))) { vshError(ctl, _("Could not find matching device '%s'"), name); return false; } diff --git a/tools/virsh-nwfilter.c b/tools/virsh-nwfilter.c index d2c8a79..8c64ac4 100644 --- a/tools/virsh-nwfilter.c +++ b/tools/virsh-nwfilter.c @@ -39,6 +39,8 @@ virshCommandOptNWFilterBy(vshControl *ctl, const vshCmd *cmd, virNWFilterPtr nwfilter = NULL; const char *n = NULL; const char *optname = "nwfilter"; + virshControlPtr priv = ctl->privData; + virCheckFlags(VSH_BYUUID | VSH_BYNAME, NULL); if (vshCommandOptStringReq(ctl, cmd, optname, &n) < 0) @@ -54,13 +56,13 @@ virshCommandOptNWFilterBy(vshControl *ctl, const vshCmd *cmd, if ((flags & VSH_BYUUID) && strlen(n) == VIR_UUID_STRING_BUFLEN-1) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as nwfilter UUID\n", cmd->def->name, optname); - nwfilter = virNWFilterLookupByUUIDString(ctl->conn, n); + nwfilter = virNWFilterLookupByUUIDString(priv->conn, n); } /* try it by NAME */ if (!nwfilter && (flags & VSH_BYNAME)) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as nwfilter NAME\n", cmd->def->name, optname); - nwfilter = virNWFilterLookupByName(ctl->conn, n); + nwfilter = virNWFilterLookupByName(priv->conn, n); } if (!nwfilter) @@ -98,6 +100,7 @@ cmdNWFilterDefine(vshControl *ctl, const vshCmd *cmd) const char *from = NULL; bool ret = true; char *buffer; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; @@ -105,7 +108,7 @@ cmdNWFilterDefine(vshControl *ctl, const vshCmd *cmd) if (virFileReadAll(from, VIRSH_MAX_XML_FILE, &buffer) < 0) return false; - nwfilter = virNWFilterDefineXML(ctl->conn, buffer); + nwfilter = virNWFilterDefineXML(priv->conn, buffer); VIR_FREE(buffer); if (nwfilter != NULL) { @@ -255,9 +258,10 @@ vshNWFilterListCollect(vshControl *ctl, size_t deleted = 0; int nfilters = 0; char **names = NULL; + virshControlPtr priv = ctl->privData; /* try the list with flags support (0.10.2 and later) */ - if ((ret = virConnectListAllNWFilters(ctl->conn, + if ((ret = virConnectListAllNWFilters(priv->conn, &list->filters, flags)) >= 0) { list->nfilters = ret; @@ -279,7 +283,7 @@ vshNWFilterListCollect(vshControl *ctl, /* fall back to old method (0.9.13 and older) */ vshResetLibvirtError(); - nfilters = virConnectNumOfNWFilters(ctl->conn); + nfilters = virConnectNumOfNWFilters(priv->conn); if (nfilters < 0) { vshError(ctl, "%s", _("Failed to count network filters")); goto cleanup; @@ -290,7 +294,7 @@ vshNWFilterListCollect(vshControl *ctl, names = vshMalloc(ctl, sizeof(char *) * nfilters); - nfilters = virConnectListNWFilters(ctl->conn, names, nfilters); + nfilters = virConnectListNWFilters(priv->conn, names, nfilters); if (nfilters < 0) { vshError(ctl, "%s", _("Failed to list network filters")); goto cleanup; @@ -301,7 +305,7 @@ vshNWFilterListCollect(vshControl *ctl, /* get the network filters */ for (i = 0; i < nfilters; i++) { - if (!(filter = virNWFilterLookupByName(ctl->conn, names[i]))) + if (!(filter = virNWFilterLookupByName(priv->conn, names[i]))) continue; list->filters[list->nfilters++] = filter; } @@ -406,6 +410,7 @@ cmdNWFilterEdit(vshControl *ctl, const vshCmd *cmd) bool ret = false; virNWFilterPtr nwfilter = NULL; virNWFilterPtr nwfilter_edited = NULL; + virshControlPtr priv = ctl->privData; nwfilter = virshCommandOptNWFilter(ctl, cmd, NULL); if (nwfilter == NULL) @@ -421,7 +426,7 @@ cmdNWFilterEdit(vshControl *ctl, const vshCmd *cmd) goto edit_cleanup; \ } while (0) #define EDIT_DEFINE \ - (nwfilter_edited = virNWFilterDefineXML(ctl->conn, doc_edited)) + (nwfilter_edited = virNWFilterDefineXML(priv->conn, doc_edited)) #include "virsh-edit.c" vshPrint(ctl, _("Network filter %s XML configuration edited.\n"), diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c index 19c1f28..f87b73c 100644 --- a/tools/virsh-pool.c +++ b/tools/virsh-pool.c @@ -39,6 +39,8 @@ virshCommandOptPoolBy(vshControl *ctl, const vshCmd *cmd, const char *optname, { virStoragePoolPtr pool = NULL; const char *n = NULL; + virshControlPtr priv = ctl->privData; + virCheckFlags(VSH_BYUUID | VSH_BYNAME, NULL); if (vshCommandOptStringReq(ctl, cmd, optname, &n) < 0) @@ -54,13 +56,13 @@ virshCommandOptPoolBy(vshControl *ctl, const vshCmd *cmd, const char *optname, if ((flags & VSH_BYUUID) && strlen(n) == VIR_UUID_STRING_BUFLEN-1) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as pool UUID\n", cmd->def->name, optname); - pool = virStoragePoolLookupByUUIDString(ctl->conn, n); + pool = virStoragePoolLookupByUUIDString(priv->conn, n); } /* try it by NAME */ if (!pool && (flags & VSH_BYNAME)) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as pool NAME\n", cmd->def->name, optname); - pool = virStoragePoolLookupByName(ctl->conn, n); + pool = virStoragePoolLookupByName(priv->conn, n); } if (!pool) @@ -154,6 +156,7 @@ cmdPoolCreate(vshControl *ctl, const vshCmd *cmd) const char *from = NULL; bool ret = true; char *buffer; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; @@ -161,7 +164,7 @@ cmdPoolCreate(vshControl *ctl, const vshCmd *cmd) if (virFileReadAll(from, VIRSH_MAX_XML_FILE, &buffer) < 0) return false; - pool = virStoragePoolCreateXML(ctl->conn, buffer, 0); + pool = virStoragePoolCreateXML(priv->conn, buffer, 0); VIR_FREE(buffer); if (pool != NULL) { @@ -365,6 +368,7 @@ cmdPoolCreateAs(vshControl *ctl, const vshCmd *cmd) const char *name; char *xml; bool printXML = vshCommandOptBool(cmd, "print-xml"); + virshControlPtr priv = ctl->privData; if (!vshBuildPoolXML(ctl, cmd, &name, &xml)) return false; @@ -373,7 +377,7 @@ cmdPoolCreateAs(vshControl *ctl, const vshCmd *cmd) vshPrint(ctl, "%s", xml); VIR_FREE(xml); } else { - pool = virStoragePoolCreateXML(ctl->conn, xml, 0); + pool = virStoragePoolCreateXML(priv->conn, xml, 0); VIR_FREE(xml); if (pool != NULL) { @@ -417,6 +421,7 @@ cmdPoolDefine(vshControl *ctl, const vshCmd *cmd) const char *from = NULL; bool ret = true; char *buffer; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; @@ -424,7 +429,7 @@ cmdPoolDefine(vshControl *ctl, const vshCmd *cmd) if (virFileReadAll(from, VIRSH_MAX_XML_FILE, &buffer) < 0) return false; - pool = virStoragePoolDefineXML(ctl->conn, buffer, 0); + pool = virStoragePoolDefineXML(priv->conn, buffer, 0); VIR_FREE(buffer); if (pool != NULL) { @@ -458,6 +463,7 @@ cmdPoolDefineAs(vshControl *ctl, const vshCmd *cmd) const char *name; char *xml; bool printXML = vshCommandOptBool(cmd, "print-xml"); + virshControlPtr priv = ctl->privData; if (!vshBuildPoolXML(ctl, cmd, &name, &xml)) return false; @@ -466,7 +472,7 @@ cmdPoolDefineAs(vshControl *ctl, const vshCmd *cmd) vshPrint(ctl, "%s", xml); VIR_FREE(xml); } else { - pool = virStoragePoolDefineXML(ctl->conn, xml, 0); + pool = virStoragePoolDefineXML(priv->conn, xml, 0); VIR_FREE(xml); if (pool != NULL) { @@ -774,9 +780,10 @@ vshStoragePoolListCollect(vshControl *ctl, int nActivePools = 0; int nInactivePools = 0; int nAllPools = 0; + virshControlPtr priv = ctl->privData; /* try the list with flags support (0.10.2 and later) */ - if ((ret = virConnectListAllStoragePools(ctl->conn, + if ((ret = virConnectListAllStoragePools(priv->conn, &list->pools, flags)) >= 0) { list->npools = ret; @@ -792,7 +799,7 @@ vshStoragePoolListCollect(vshControl *ctl, unsigned int newflags = flags & (VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE | VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE); vshResetLibvirtError(); - if ((ret = virConnectListAllStoragePools(ctl->conn, &list->pools, + if ((ret = virConnectListAllStoragePools(priv->conn, &list->pools, newflags)) >= 0) { list->npools = ret; goto filter; @@ -818,7 +825,7 @@ vshStoragePoolListCollect(vshControl *ctl, /* Get the number of active pools */ if (!VSH_MATCH(VIR_CONNECT_LIST_STORAGE_POOLS_FILTERS_ACTIVE) || VSH_MATCH(VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE)) { - if ((nActivePools = virConnectNumOfStoragePools(ctl->conn)) < 0) { + if ((nActivePools = virConnectNumOfStoragePools(priv->conn)) < 0) { vshError(ctl, "%s", _("Failed to get the number of active pools ")); goto cleanup; } @@ -827,7 +834,7 @@ vshStoragePoolListCollect(vshControl *ctl, /* Get the number of inactive pools */ if (!VSH_MATCH(VIR_CONNECT_LIST_STORAGE_POOLS_FILTERS_ACTIVE) || VSH_MATCH(VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE)) { - if ((nInactivePools = virConnectNumOfDefinedStoragePools(ctl->conn)) < 0) { + if ((nInactivePools = virConnectNumOfDefinedStoragePools(priv->conn)) < 0) { vshError(ctl, "%s", _("Failed to get the number of inactive pools")); goto cleanup; } @@ -843,7 +850,7 @@ vshStoragePoolListCollect(vshControl *ctl, /* Retrieve a list of active storage pool names */ if (!VSH_MATCH(VIR_CONNECT_LIST_STORAGE_POOLS_FILTERS_ACTIVE) || VSH_MATCH(VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE)) { - if (virConnectListStoragePools(ctl->conn, + if (virConnectListStoragePools(priv->conn, names, nActivePools) < 0) { vshError(ctl, "%s", _("Failed to list active pools")); goto cleanup; @@ -853,7 +860,7 @@ vshStoragePoolListCollect(vshControl *ctl, /* Add the inactive storage pools to the end of the name list */ if (!VSH_MATCH(VIR_CONNECT_LIST_STORAGE_POOLS_FILTERS_ACTIVE) || VSH_MATCH(VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE)) { - if (virConnectListDefinedStoragePools(ctl->conn, + if (virConnectListDefinedStoragePools(priv->conn, &names[nActivePools], nInactivePools) < 0) { vshError(ctl, "%s", _("Failed to list inactive pools")); @@ -866,14 +873,14 @@ vshStoragePoolListCollect(vshControl *ctl, /* get active pools */ for (i = 0; i < nActivePools; i++) { - if (!(pool = virStoragePoolLookupByName(ctl->conn, names[i]))) + if (!(pool = virStoragePoolLookupByName(priv->conn, names[i]))) continue; list->pools[list->npools++] = pool; } /* get inactive pools */ for (i = 0; i < nInactivePools; i++) { - if (!(pool = virStoragePoolLookupByName(ctl->conn, names[i]))) + if (!(pool = virStoragePoolLookupByName(priv->conn, names[i]))) continue; list->pools[list->npools++] = pool; } @@ -1416,6 +1423,7 @@ cmdPoolDiscoverSourcesAs(vshControl * ctl, const vshCmd * cmd ATTRIBUTE_UNUSED) char *srcSpec = NULL; char *srcList; const char *initiator = NULL; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "type", &type) < 0 || vshCommandOptStringReq(ctl, cmd, "host", &host) < 0 || @@ -1453,7 +1461,7 @@ cmdPoolDiscoverSourcesAs(vshControl * ctl, const vshCmd * cmd ATTRIBUTE_UNUSED) srcSpec = virBufferContentAndReset(&buf); } - srcList = virConnectFindStoragePoolSources(ctl->conn, type, srcSpec, 0); + srcList = virConnectFindStoragePoolSources(priv->conn, type, srcSpec, 0); VIR_FREE(srcSpec); if (srcList == NULL) { vshError(ctl, _("Failed to find any %s pool sources"), type); @@ -1496,6 +1504,7 @@ cmdPoolDiscoverSources(vshControl * ctl, const vshCmd * cmd ATTRIBUTE_UNUSED) { const char *type = NULL, *srcSpecFile = NULL; char *srcSpec = NULL, *srcList; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "type", &type) < 0) return false; @@ -1507,7 +1516,7 @@ cmdPoolDiscoverSources(vshControl * ctl, const vshCmd * cmd ATTRIBUTE_UNUSED) &srcSpec) < 0) return false; - srcList = virConnectFindStoragePoolSources(ctl->conn, type, srcSpec, 0); + srcList = virConnectFindStoragePoolSources(priv->conn, type, srcSpec, 0); VIR_FREE(srcSpec); if (srcList == NULL) { vshError(ctl, _("Failed to find any %s pool sources"), type); @@ -1790,6 +1799,7 @@ cmdPoolEdit(vshControl *ctl, const vshCmd *cmd) virStoragePoolPtr pool_edited = NULL; unsigned int flags = VIR_STORAGE_XML_INACTIVE; char *tmp_desc = NULL; + virshControlPtr priv = ctl->privData; pool = virshCommandOptPool(ctl, cmd, "pool", NULL); if (pool == NULL) @@ -1816,7 +1826,7 @@ cmdPoolEdit(vshControl *ctl, const vshCmd *cmd) goto edit_cleanup; \ } while (0) #define EDIT_DEFINE \ - (pool_edited = virStoragePoolDefineXML(ctl->conn, doc_edited, 0)) + (pool_edited = virStoragePoolDefineXML(priv->conn, doc_edited, 0)) #include "virsh-edit.c" vshPrint(ctl, _("Pool %s XML configuration edited.\n"), diff --git a/tools/virsh-secret.c b/tools/virsh-secret.c index d78ef9d..e1fec56 100644 --- a/tools/virsh-secret.c +++ b/tools/virsh-secret.c @@ -40,6 +40,7 @@ virshCommandOptSecret(vshControl *ctl, const vshCmd *cmd, const char **name) virSecretPtr secret = NULL; const char *n = NULL; const char *optname = "secret"; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, optname, &n) < 0) return NULL; @@ -50,7 +51,7 @@ virshCommandOptSecret(vshControl *ctl, const vshCmd *cmd, const char **name) if (name != NULL) *name = n; - secret = virSecretLookupByUUIDString(ctl->conn, n); + secret = virSecretLookupByUUIDString(priv->conn, n); if (secret == NULL) vshError(ctl, _("failed to get secret '%s'"), n); @@ -88,6 +89,7 @@ cmdSecretDefine(vshControl *ctl, const vshCmd *cmd) virSecretPtr res; char uuid[VIR_UUID_STRING_BUFLEN]; bool ret = false; + virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; @@ -95,7 +97,7 @@ cmdSecretDefine(vshControl *ctl, const vshCmd *cmd) if (virFileReadAll(from, VIRSH_MAX_XML_FILE, &buffer) < 0) return false; - if (!(res = virSecretDefineXML(ctl->conn, buffer, 0))) { + if (!(res = virSecretDefineXML(priv->conn, buffer, 0))) { vshError(ctl, _("Failed to set attributes from %s"), from); goto cleanup; } @@ -383,9 +385,10 @@ vshSecretListCollect(vshControl *ctl, size_t deleted = 0; int nsecrets = 0; char **uuids = NULL; + virshControlPtr priv = ctl->privData; /* try the list with flags support (0.10.2 and later) */ - if ((ret = virConnectListAllSecrets(ctl->conn, + if ((ret = virConnectListAllSecrets(priv->conn, &list->secrets, flags)) >= 0) { list->nsecrets = ret; @@ -410,7 +413,7 @@ vshSecretListCollect(vshControl *ctl, goto cleanup; } - nsecrets = virConnectNumOfSecrets(ctl->conn); + nsecrets = virConnectNumOfSecrets(priv->conn); if (nsecrets < 0) { vshError(ctl, "%s", _("Failed to count secrets")); goto cleanup; @@ -421,7 +424,7 @@ vshSecretListCollect(vshControl *ctl, uuids = vshMalloc(ctl, sizeof(char *) * nsecrets); - nsecrets = virConnectListSecrets(ctl->conn, uuids, nsecrets); + nsecrets = virConnectListSecrets(priv->conn, uuids, nsecrets); if (nsecrets < 0) { vshError(ctl, "%s", _("Failed to list secrets")); goto cleanup; @@ -432,7 +435,7 @@ vshSecretListCollect(vshControl *ctl, /* get the secrets */ for (i = 0; i < nsecrets; i++) { - if (!(secret = virSecretLookupByUUIDString(ctl->conn, uuids[i]))) + if (!(secret = virSecretLookupByUUIDString(priv->conn, uuids[i]))) continue; list->secrets[list->nsecrets++] = secret; } diff --git a/tools/virsh-snapshot.c b/tools/virsh-snapshot.c index 5130479..839a322 100644 --- a/tools/virsh-snapshot.c +++ b/tools/virsh-snapshot.c @@ -763,11 +763,12 @@ vshGetSnapshotParent(vshControl *ctl, virDomainSnapshotPtr snapshot, xmlDocPtr xmldoc = NULL; xmlXPathContextPtr ctxt = NULL; int ret = -1; + virshControlPtr priv = ctl->privData; *parent_name = NULL; /* Try new API, since it is faster. */ - if (!ctl->useSnapshotOld) { + if (!priv->useSnapshotOld) { parent = virDomainSnapshotGetParent(snapshot, 0); if (parent) { /* API works, and virDomainSnapshotGetName will succeed */ @@ -781,7 +782,7 @@ vshGetSnapshotParent(vshControl *ctl, virDomainSnapshotPtr snapshot, goto cleanup; } /* API didn't work, fall back to XML scraping. */ - ctl->useSnapshotOld = true; + priv->useSnapshotOld = true; } xml = virDomainSnapshotGetXMLDesc(snapshot, 0); @@ -914,6 +915,7 @@ cmdSnapshotInfo(vshControl *ctl, const vshCmd *cmd) unsigned int flags; int current; int metadata; + virshControlPtr priv = ctl->privData; dom = virshCommandOptDomain(ctl, cmd, NULL); if (dom == NULL) @@ -996,7 +998,7 @@ cmdSnapshotInfo(vshControl *ctl, const vshCmd *cmd) /* Children, Descendants. After this point, the fallback to * compute children is too expensive, so we gracefully quit if the * APIs don't exist. */ - if (ctl->useSnapshotOld) { + if (priv->useSnapshotOld) { ret = true; goto cleanup; } @@ -1108,9 +1110,10 @@ vshSnapshotListCollect(vshControl *ctl, virDomainPtr dom, int deleted = 0; bool filter_fallback = false; unsigned int flags = orig_flags; + virshControlPtr priv = ctl->privData; /* Try the interface available in 0.9.13 and newer. */ - if (!ctl->useSnapshotOld) { + if (!priv->useSnapshotOld) { if (from) count = virDomainSnapshotListAllChildren(from, &snaps, flags); else @@ -1212,13 +1215,13 @@ vshSnapshotListCollect(vshControl *ctl, virDomainPtr dom, flags |= VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS; /* Determine if we can use the new child listing API. */ - if (ctl->useSnapshotOld || + if (priv->useSnapshotOld || ((count = virDomainSnapshotNumChildren(from, flags)) < 0 && last_error->code == VIR_ERR_NO_SUPPORT)) { /* We can emulate --from. */ /* XXX can we also emulate --leaves? */ vshResetLibvirtError(); - ctl->useSnapshotOld = true; + priv->useSnapshotOld = true; flags &= ~VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS; goto global; } @@ -1253,7 +1256,7 @@ vshSnapshotListCollect(vshControl *ctl, virDomainPtr dom, names = vshCalloc(ctl, sizeof(*names), count); /* Now that we have a count, collect the list. */ - if (from && !ctl->useSnapshotOld) { + if (from && !priv->useSnapshotOld) { if (tree) { if (count) count = virDomainSnapshotListChildrenNames(from, names + 1, @@ -1285,9 +1288,9 @@ vshSnapshotListCollect(vshControl *ctl, virDomainPtr dom, * --from together put from as the first element without a parent; * with the old API we still need to do a post-process filtering * based on all parent information. */ - if (tree || (from && ctl->useSnapshotOld) || roots) { - for (i = (from && !ctl->useSnapshotOld); i < count; i++) { - if (from && ctl->useSnapshotOld && STREQ(names[i], fromname)) { + if (tree || (from && priv->useSnapshotOld) || roots) { + for (i = (from && !priv->useSnapshotOld); i < count; i++) { + if (from && priv->useSnapshotOld && STREQ(names[i], fromname)) { start_index = i; if (tree) continue; @@ -1310,7 +1313,7 @@ vshSnapshotListCollect(vshControl *ctl, virDomainPtr dom, if (tree) goto success; - if (ctl->useSnapshotOld && descendants) { + if (priv->useSnapshotOld && descendants) { bool changed = false; bool remaining = false; diff --git a/tools/virsh-volume.c b/tools/virsh-volume.c index 21b7fb0..11b54ce 100644 --- a/tools/virsh-volume.c +++ b/tools/virsh-volume.c @@ -51,6 +51,8 @@ virshCommandOptVolBy(vshControl *ctl, const vshCmd *cmd, virStorageVolPtr vol = NULL; virStoragePoolPtr pool = NULL; const char *n = NULL, *p = NULL; + virshControlPtr priv = ctl->privData; + virCheckFlags(VSH_BYUUID | VSH_BYNAME, NULL); if (vshCommandOptStringReq(ctl, cmd, optname, &n) < 0) @@ -87,13 +89,13 @@ virshCommandOptVolBy(vshControl *ctl, const vshCmd *cmd, if (!vol && (flags & VSH_BYUUID)) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as vol key\n", cmd->def->name, optname); - vol = virStorageVolLookupByKey(ctl->conn, n); + vol = virStorageVolLookupByKey(priv->conn, n); } /* try it by path */ if (!vol && (flags & VSH_BYUUID)) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as vol path\n", cmd->def->name, optname); - vol = virStorageVolLookupByPath(ctl->conn, n); + vol = virStorageVolLookupByPath(priv->conn, n); } if (!vol) { @@ -201,6 +203,7 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd) unsigned long long capacity, allocation = 0; virBuffer buf = VIR_BUFFER_INITIALIZER; unsigned long flags = 0; + virshControlPtr priv = ctl->privData; if (vshCommandOptBool(cmd, "prealloc-metadata")) flags |= VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA; @@ -265,7 +268,7 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd) vshDebug(ctl, VSH_ERR_DEBUG, "%s: Look up backing store volume '%s' as key\n", cmd->def->name, snapshotStrVol); - snapVol = virStorageVolLookupByKey(ctl->conn, snapshotStrVol); + snapVol = virStorageVolLookupByKey(priv->conn, snapshotStrVol); if (snapVol) vshDebug(ctl, VSH_ERR_DEBUG, "%s: Backing store volume found using '%s' as key\n", @@ -277,7 +280,7 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd) vshDebug(ctl, VSH_ERR_DEBUG, "%s: Look up backing store volume '%s' as path\n", cmd->def->name, snapshotStrVol); - snapVol = virStorageVolLookupByPath(ctl->conn, snapshotStrVol); + snapVol = virStorageVolLookupByPath(priv->conn, snapshotStrVol); if (snapVol) vshDebug(ctl, VSH_ERR_DEBUG, "%s: Backing store volume found using '%s' as path\n", @@ -692,6 +695,7 @@ cmdVolUpload(vshControl *ctl, const vshCmd *cmd) virStreamPtr st = NULL; const char *name = NULL; unsigned long long offset = 0, length = 0; + virshControlPtr priv = ctl->privData; if (vshCommandOptULongLong(ctl, cmd, "offset", &offset) < 0) return false; @@ -710,7 +714,7 @@ cmdVolUpload(vshControl *ctl, const vshCmd *cmd) goto cleanup; } - if (!(st = virStreamNew(ctl->conn, 0))) { + if (!(st = virStreamNew(priv->conn, 0))) { vshError(ctl, _("cannot create a new stream")); goto cleanup; } @@ -797,6 +801,7 @@ cmdVolDownload(vshControl *ctl, const vshCmd *cmd) const char *name = NULL; unsigned long long offset = 0, length = 0; bool created = false; + virshControlPtr priv = ctl->privData; if (vshCommandOptULongLong(ctl, cmd, "offset", &offset) < 0) return false; @@ -820,7 +825,7 @@ cmdVolDownload(vshControl *ctl, const vshCmd *cmd) created = true; } - if (!(st = virStreamNew(ctl->conn, 0))) { + if (!(st = virStreamNew(priv->conn, 0))) { vshError(ctl, _("cannot create a new stream")); goto cleanup; } diff --git a/tools/virsh.c b/tools/virsh.c index 9280b40..404deb8 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -192,10 +192,10 @@ static void virshReconnect(vshControl *ctl) { bool connected = false; + virshControlPtr priv = ctl->privData; - if (ctl->conn) { + if (priv->conn) { int ret; - connected = true; virConnectUnregisterCloseCallback(priv->conn, virshCatchDisconnect); @@ -207,24 +207,24 @@ virshReconnect(vshControl *ctl) "disconnect from the hypervisor")); } - ctl->conn = virshConnect(ctl, ctl->name, ctl->readonly); + priv->conn = virshConnect(ctl, ctl->name, priv->readonly); - if (!ctl->conn) { + if (!priv->conn) { if (disconnected) vshError(ctl, "%s", _("Failed to reconnect to the hypervisor")); else vshError(ctl, "%s", _("failed to connect to the hypervisor")); } else { - if (virConnectRegisterCloseCallback(ctl->conn, virshCatchDisconnect, + if (virConnectRegisterCloseCallback(priv->conn, virshCatchDisconnect, NULL, NULL) < 0) vshError(ctl, "%s", _("Unable to register disconnect callback")); if (connected) vshError(ctl, "%s", _("Reconnected to the hypervisor")); } disconnected = 0; - ctl->useGetInfo = false; - ctl->useSnapshotOld = false; - ctl->blockJobNoBytes = false; + priv->useGetInfo = false; + priv->useSnapshotOld = false; + priv->blockJobNoBytes = false; } @@ -260,18 +260,19 @@ cmdConnect(vshControl *ctl, const vshCmd *cmd) { bool ro = vshCommandOptBool(cmd, "readonly"); const char *name = NULL; + virshControlPtr priv = ctl->privData; - if (ctl->conn) { + if (priv->conn) { int ret; - ret = virConnectClose(ctl->conn); virConnectUnregisterCloseCallback(priv->conn, virshCatchDisconnect); + ret = virConnectClose(priv->conn); if (ret < 0) vshError(ctl, "%s", _("Failed to disconnect from the hypervisor")); else if (ret > 0) vshError(ctl, "%s", _("One or more references were leaked after " "disconnect from the hypervisor")); - ctl->conn = NULL; + priv->conn = NULL; } VIR_FREE(ctl->name); @@ -280,19 +281,19 @@ cmdConnect(vshControl *ctl, const vshCmd *cmd) ctl->name = vshStrdup(ctl, name); - ctl->useGetInfo = false; - ctl->useSnapshotOld = false; - ctl->blockJobNoBytes = false; - ctl->readonly = ro; + priv->useGetInfo = false; + priv->useSnapshotOld = false; + priv->blockJobNoBytes = false; + priv->readonly = ro; - ctl->conn = virshConnect(ctl, ctl->name, ctl->readonly); + priv->conn = virshConnect(ctl, ctl->name, priv->readonly); - if (!ctl->conn) { + if (!priv->conn) { vshError(ctl, "%s", _("Failed to connect to the hypervisor")); return false; } - if (virConnectRegisterCloseCallback(ctl->conn, virshCatchDisconnect, + if (virConnectRegisterCloseCallback(priv->conn, virshCatchDisconnect, NULL, NULL) < 0) vshError(ctl, "%s", _("Unable to register disconnect callback")); @@ -1267,6 +1268,7 @@ virshParseArgv(vshControl *ctl, int argc, char **argv) int arg, len, debug, keepalive; size_t i; int longindex = -1; + virshControlPtr priv = ctl->privData; struct option opt[] = { {"connect", required_argument, NULL, 'c'}, {"debug", required_argument, NULL, 'd'}, @@ -1309,7 +1311,7 @@ virshParseArgv(vshControl *ctl, int argc, char **argv) if ((len == 2 && *optarg == '^' && virshAllowedEscapeChar(optarg[1])) || (len == 1 && *optarg != '^')) { - ctl->escapeChar = optarg; + priv->escapeChar = optarg; } else { vshError(ctl, _("Invalid string '%s' for escape sequence"), optarg); @@ -1364,7 +1366,7 @@ virshParseArgv(vshControl *ctl, int argc, char **argv) ctl->timing = true; break; case 'r': - ctl->readonly = true; + priv->readonly = true; break; case 'v': if (STRNEQ_NULLABLE(optarg, "long")) { @@ -1474,18 +1476,23 @@ static const vshCmdGrp cmdGroups[] = { {NULL, NULL, NULL} }; +static const vshClientHooks hooks = { + .connHandler = virshConnectionHandler +}; + int main(int argc, char **argv) { vshControl _ctl, *ctl = &_ctl; + virshControl virshCtl; const char *defaultConn; bool ret = true; memset(ctl, 0, sizeof(vshControl)); + memset(&virshCtl, 0, sizeof(virshControl)); ctl->imode = true; /* default is interactive mode */ ctl->log_fd = -1; /* Initialize log file descriptor */ ctl->debug = VSH_DEBUG_DEFAULT; - ctl->escapeChar = "^]"; /* Same default as telnet */ /* In order to distinguish default from setting to 0 */ ctl->keepalive_interval = -1; @@ -1494,6 +1501,14 @@ main(int argc, char **argv) ctl->eventPipe[0] = -1; ctl->eventPipe[1] = -1; ctl->eventTimerId = -1; + virshCtl.escapeChar = "^]"; /* Same default as telnet */ + ctl->privData = &virshCtl; + + if (!(progname = strrchr(argv[0], '/'))) + progname = argv[0]; + else + progname++; + ctl->progname = progname; if (!setlocale(LC_ALL, "")) { perror("setlocale"); -- 1.9.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list