Devel
Threads by month
- ----- 2026 -----
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- 43 participants
- 40217 discussions
[libvirt] [PATCH] Change some variable names to follow standard in daemon dispatcher
by Daniel P. Berrange 13 Apr '11
by Daniel P. Berrange 13 Apr '11
13 Apr '11
Replace some occurrances of
virDomainPtr domain;
virNetworkPtr network;
With
virDomainPtr dom;
virNetworkPtr net;
* daemon/remote.c: Fix variable naming to follow standard
---
daemon/remote.c | 194 +++++++++++++++++++++++++++---------------------------
1 files changed, 97 insertions(+), 97 deletions(-)
diff --git a/daemon/remote.c b/daemon/remote.c
index 66df9f7..eb2727d 100644
--- a/daemon/remote.c
+++ b/daemon/remote.c
@@ -75,7 +75,7 @@ static virStoragePoolPtr get_nonnull_storage_pool(virConnectPtr conn, remote_non
static virStorageVolPtr get_nonnull_storage_vol(virConnectPtr conn, remote_nonnull_storage_vol vol);
static virSecretPtr get_nonnull_secret(virConnectPtr conn, remote_nonnull_secret secret);
static virNWFilterPtr get_nonnull_nwfilter(virConnectPtr conn, remote_nonnull_nwfilter nwfilter);
-static virDomainSnapshotPtr get_nonnull_domain_snapshot(virDomainPtr domain, remote_nonnull_domain_snapshot snapshot);
+static virDomainSnapshotPtr get_nonnull_domain_snapshot(virDomainPtr dom, remote_nonnull_domain_snapshot snapshot);
static void make_nonnull_domain(remote_nonnull_domain *dom_dst, virDomainPtr dom_src);
static void make_nonnull_network(remote_nonnull_network *net_dst, virNetworkPtr net_src);
static void make_nonnull_interface(remote_nonnull_interface *interface_dst, virInterfacePtr interface_src);
@@ -2198,7 +2198,7 @@ remoteDispatchDomainMigrateFinish(struct qemud_server *server ATTRIBUTE_UNUSED,
remote_domain_migrate_finish_args *args,
remote_domain_migrate_finish_ret *ret)
{
- virDomainPtr ddom = NULL;
+ virDomainPtr dom = NULL;
int rv = -1;
if (!conn) {
@@ -2206,21 +2206,21 @@ remoteDispatchDomainMigrateFinish(struct qemud_server *server ATTRIBUTE_UNUSED,
goto cleanup;
}
- if (!(ddom = virDomainMigrateFinish(conn, args->dname,
- args->cookie.cookie_val,
- args->cookie.cookie_len,
- args->uri,
- args->flags)))
+ if (!(dom = virDomainMigrateFinish(conn, args->dname,
+ args->cookie.cookie_val,
+ args->cookie.cookie_len,
+ args->uri,
+ args->flags)))
goto cleanup;
- make_nonnull_domain(&ret->ddom, ddom);
+ make_nonnull_domain(&ret->ddom, dom);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (ddom)
- virDomainFree(ddom);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -2284,7 +2284,7 @@ remoteDispatchDomainMigrateFinish2(struct qemud_server *server ATTRIBUTE_UNUSED,
remote_domain_migrate_finish2_args *args,
remote_domain_migrate_finish2_ret *ret)
{
- virDomainPtr ddom = NULL;
+ virDomainPtr dom = NULL;
int rv = -1;
if (!conn) {
@@ -2292,23 +2292,23 @@ remoteDispatchDomainMigrateFinish2(struct qemud_server *server ATTRIBUTE_UNUSED,
goto cleanup;
}
- if (!(ddom = virDomainMigrateFinish2(conn, args->dname,
- args->cookie.cookie_val,
- args->cookie.cookie_len,
- args->uri,
- args->flags,
- args->retcode)))
+ if (!(dom = virDomainMigrateFinish2(conn, args->dname,
+ args->cookie.cookie_val,
+ args->cookie.cookie_len,
+ args->uri,
+ args->flags,
+ args->retcode)))
goto cleanup;
- make_nonnull_domain(&ret->ddom, ddom);
+ make_nonnull_domain(&ret->ddom, dom);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (ddom)
- virDomainFree(ddom);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -7439,7 +7439,7 @@ static int remoteDispatchDomainIsActive(struct qemud_server *server ATTRIBUTE_UN
remote_domain_is_active_args *args,
remote_domain_is_active_ret *ret)
{
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
int rv = -1;
if (!conn) {
@@ -7447,10 +7447,10 @@ static int remoteDispatchDomainIsActive(struct qemud_server *server ATTRIBUTE_UN
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->dom)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if ((ret->active = virDomainIsActive(domain)) < 0)
+ if ((ret->active = virDomainIsActive(dom)) < 0)
goto cleanup;
rv = 0;
@@ -7458,8 +7458,8 @@ static int remoteDispatchDomainIsActive(struct qemud_server *server ATTRIBUTE_UN
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -7471,7 +7471,7 @@ static int remoteDispatchDomainIsPersistent(struct qemud_server *server ATTRIBUT
remote_domain_is_persistent_args *args,
remote_domain_is_persistent_ret *ret)
{
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
int rv = -1;
if (!conn) {
@@ -7479,10 +7479,10 @@ static int remoteDispatchDomainIsPersistent(struct qemud_server *server ATTRIBUT
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->dom)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if ((ret->persistent = virDomainIsPersistent(domain)) < 0)
+ if ((ret->persistent = virDomainIsPersistent(dom)) < 0)
goto cleanup;
rv = 0;
@@ -7490,8 +7490,8 @@ static int remoteDispatchDomainIsPersistent(struct qemud_server *server ATTRIBUT
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -7503,7 +7503,7 @@ static int remoteDispatchDomainIsUpdated(struct qemud_server *server ATTRIBUTE_U
remote_domain_is_updated_args *args,
remote_domain_is_updated_ret *ret)
{
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
int rv = -1;
if (!conn) {
@@ -7511,10 +7511,10 @@ static int remoteDispatchDomainIsUpdated(struct qemud_server *server ATTRIBUTE_U
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->dom)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if ((ret->updated = virDomainIsUpdated(domain)) < 0)
+ if ((ret->updated = virDomainIsUpdated(dom)) < 0)
goto cleanup;
rv = 0;
@@ -7522,8 +7522,8 @@ static int remoteDispatchDomainIsUpdated(struct qemud_server *server ATTRIBUTE_U
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -7567,7 +7567,7 @@ static int remoteDispatchNetworkIsActive(struct qemud_server *server ATTRIBUTE_U
remote_network_is_active_args *args,
remote_network_is_active_ret *ret)
{
- virNetworkPtr network = NULL;
+ virNetworkPtr net = NULL;
int rv = -1;
if (!conn) {
@@ -7575,10 +7575,10 @@ static int remoteDispatchNetworkIsActive(struct qemud_server *server ATTRIBUTE_U
goto cleanup;
}
- if (!(network = get_nonnull_network(conn, args->net)))
+ if (!(net = get_nonnull_network(conn, args->net)))
goto cleanup;
- if ((ret->active = virNetworkIsActive(network)) < 0)
+ if ((ret->active = virNetworkIsActive(net)) < 0)
goto cleanup;
rv = 0;
@@ -7586,8 +7586,8 @@ static int remoteDispatchNetworkIsActive(struct qemud_server *server ATTRIBUTE_U
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (network)
- virNetworkFree(network);
+ if (net)
+ virNetworkFree(net);
return rv;
}
@@ -7599,7 +7599,7 @@ static int remoteDispatchNetworkIsPersistent(struct qemud_server *server ATTRIBU
remote_network_is_persistent_args *args,
remote_network_is_persistent_ret *ret)
{
- virNetworkPtr network = NULL;
+ virNetworkPtr net = NULL;
int rv = -1;
if (!conn) {
@@ -7607,10 +7607,10 @@ static int remoteDispatchNetworkIsPersistent(struct qemud_server *server ATTRIBU
goto cleanup;
}
- if (!(network = get_nonnull_network(conn, args->net)))
+ if (!(net = get_nonnull_network(conn, args->net)))
goto cleanup;
- if ((ret->persistent = virNetworkIsPersistent(network)) < 0)
+ if ((ret->persistent = virNetworkIsPersistent(net)) < 0)
goto cleanup;
rv = 0;
@@ -7618,8 +7618,8 @@ static int remoteDispatchNetworkIsPersistent(struct qemud_server *server ATTRIBU
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (network)
- virNetworkFree(network);
+ if (net)
+ virNetworkFree(net);
return rv;
}
@@ -7937,7 +7937,7 @@ remoteDispatchDomainSnapshotCreateXml(struct qemud_server *server ATTRIBUTE_UNUS
remote_domain_snapshot_create_xml_ret *ret)
{
virDomainSnapshotPtr snapshot;
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
int rv = -1;
if (!conn) {
@@ -7945,10 +7945,10 @@ remoteDispatchDomainSnapshotCreateXml(struct qemud_server *server ATTRIBUTE_UNUS
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->domain)))
+ if (!(dom = get_nonnull_domain(conn, args->domain)))
goto cleanup;
- if (!(snapshot = virDomainSnapshotCreateXML(domain, args->xml_desc, args->flags)))
+ if (!(snapshot = virDomainSnapshotCreateXML(dom, args->xml_desc, args->flags)))
goto cleanup;
make_nonnull_domain_snapshot(&ret->snap, snapshot);
@@ -7960,8 +7960,8 @@ cleanup:
remoteDispatchError(rerr);
if (snapshot)
virDomainSnapshotFree(snapshot);
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -7974,7 +7974,7 @@ remoteDispatchDomainSnapshotDumpXml(struct qemud_server *server ATTRIBUTE_UNUSED
remote_domain_snapshot_dump_xml_args *args,
remote_domain_snapshot_dump_xml_ret *ret)
{
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
virDomainSnapshotPtr snapshot = NULL;
int rv = -1;
@@ -7983,10 +7983,10 @@ remoteDispatchDomainSnapshotDumpXml(struct qemud_server *server ATTRIBUTE_UNUSED
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->snap.domain)))
+ if (!(dom = get_nonnull_domain(conn, args->snap.domain)))
goto cleanup;
- if (!(snapshot = get_nonnull_domain_snapshot(domain, args->snap)))
+ if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap)))
goto cleanup;
/* remoteDispatchClientRequest will free this. */
@@ -8000,8 +8000,8 @@ cleanup:
remoteDispatchError(rerr);
if (snapshot)
virDomainSnapshotFree(snapshot);
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -8014,7 +8014,7 @@ remoteDispatchDomainSnapshotNum(struct qemud_server *server ATTRIBUTE_UNUSED,
remote_domain_snapshot_num_args *args,
remote_domain_snapshot_num_ret *ret)
{
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
int rv = -1;
if (!conn) {
@@ -8022,10 +8022,10 @@ remoteDispatchDomainSnapshotNum(struct qemud_server *server ATTRIBUTE_UNUSED,
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->domain)))
+ if (!(dom = get_nonnull_domain(conn, args->domain)))
goto cleanup;
- if ((ret->num = virDomainSnapshotNum(domain, args->flags)) < 0)
+ if ((ret->num = virDomainSnapshotNum(dom, args->flags)) < 0)
goto cleanup;
rv = 0;
@@ -8033,8 +8033,8 @@ remoteDispatchDomainSnapshotNum(struct qemud_server *server ATTRIBUTE_UNUSED,
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -8047,7 +8047,7 @@ remoteDispatchDomainSnapshotListNames(struct qemud_server *server ATTRIBUTE_UNUS
remote_domain_snapshot_list_names_args *args,
remote_domain_snapshot_list_names_ret *ret)
{
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
int rv = -1;
int len;
@@ -8062,7 +8062,7 @@ remoteDispatchDomainSnapshotListNames(struct qemud_server *server ATTRIBUTE_UNUS
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->domain)))
+ if (!(dom = get_nonnull_domain(conn, args->domain)))
goto cleanup;
/* Allocate return buffer. */
@@ -8071,7 +8071,7 @@ remoteDispatchDomainSnapshotListNames(struct qemud_server *server ATTRIBUTE_UNUS
goto cleanup;
}
- len = virDomainSnapshotListNames(domain,
+ len = virDomainSnapshotListNames(dom,
ret->names.names_val,
args->nameslen,
args->flags);
@@ -8086,8 +8086,8 @@ cleanup:
remoteDispatchError(rerr);
VIR_FREE(ret->names.names_val);
}
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -8101,7 +8101,7 @@ remoteDispatchDomainSnapshotLookupByName(struct qemud_server *server ATTRIBUTE_U
remote_domain_snapshot_lookup_by_name_ret *ret)
{
virDomainSnapshotPtr snapshot;
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
int rv = -1;
if (!conn) {
@@ -8109,10 +8109,10 @@ remoteDispatchDomainSnapshotLookupByName(struct qemud_server *server ATTRIBUTE_U
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->domain)))
+ if (!(dom = get_nonnull_domain(conn, args->domain)))
goto cleanup;
- if (!(snapshot = virDomainSnapshotLookupByName(domain, args->name, args->flags)))
+ if (!(snapshot = virDomainSnapshotLookupByName(dom, args->name, args->flags)))
goto cleanup;
make_nonnull_domain_snapshot(&ret->snap, snapshot);
@@ -8124,8 +8124,8 @@ cleanup:
remoteDispatchError(rerr);
if (snapshot)
virDomainSnapshotFree(snapshot);
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -8138,7 +8138,7 @@ remoteDispatchDomainHasCurrentSnapshot(struct qemud_server *server ATTRIBUTE_UNU
remote_domain_has_current_snapshot_args *args,
remote_domain_has_current_snapshot_ret *ret)
{
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
int result;
int rv = -1;
@@ -8147,10 +8147,10 @@ remoteDispatchDomainHasCurrentSnapshot(struct qemud_server *server ATTRIBUTE_UNU
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->domain)))
+ if (!(dom = get_nonnull_domain(conn, args->domain)))
goto cleanup;
- result = virDomainHasCurrentSnapshot(domain, args->flags);
+ result = virDomainHasCurrentSnapshot(dom, args->flags);
if (result < 0)
goto cleanup;
@@ -8161,8 +8161,8 @@ remoteDispatchDomainHasCurrentSnapshot(struct qemud_server *server ATTRIBUTE_UNU
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -8176,7 +8176,7 @@ remoteDispatchDomainSnapshotCurrent(struct qemud_server *server ATTRIBUTE_UNUSED
remote_domain_snapshot_current_ret *ret)
{
virDomainSnapshotPtr snapshot;
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
int rv = -1;
if (!conn) {
@@ -8184,10 +8184,10 @@ remoteDispatchDomainSnapshotCurrent(struct qemud_server *server ATTRIBUTE_UNUSED
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->domain)))
+ if (!(dom = get_nonnull_domain(conn, args->domain)))
goto cleanup;
- if (!(snapshot = virDomainSnapshotCurrent(domain, args->flags)))
+ if (!(snapshot = virDomainSnapshotCurrent(dom, args->flags)))
goto cleanup;
make_nonnull_domain_snapshot(&ret->snap, snapshot);
@@ -8199,8 +8199,8 @@ cleanup:
remoteDispatchError(rerr);
if (snapshot)
virDomainSnapshotFree(snapshot);
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -8213,7 +8213,7 @@ remoteDispatchDomainRevertToSnapshot(struct qemud_server *server ATTRIBUTE_UNUSE
remote_domain_revert_to_snapshot_args *args,
void *ret ATTRIBUTE_UNUSED)
{
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
virDomainSnapshotPtr snapshot = NULL;
int rv = -1;
@@ -8222,10 +8222,10 @@ remoteDispatchDomainRevertToSnapshot(struct qemud_server *server ATTRIBUTE_UNUSE
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->snap.domain)))
+ if (!(dom = get_nonnull_domain(conn, args->snap.domain)))
goto cleanup;
- if (!(snapshot = get_nonnull_domain_snapshot(domain, args->snap)))
+ if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap)))
goto cleanup;
if (virDomainRevertToSnapshot(snapshot, args->flags) < 0)
@@ -8238,8 +8238,8 @@ cleanup:
remoteDispatchError(rerr);
if (snapshot)
virDomainSnapshotFree(snapshot);
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -8252,7 +8252,7 @@ remoteDispatchDomainSnapshotDelete(struct qemud_server *server ATTRIBUTE_UNUSED,
remote_domain_snapshot_delete_args *args,
void *ret ATTRIBUTE_UNUSED)
{
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
virDomainSnapshotPtr snapshot = NULL;
int rv = -1;
@@ -8261,10 +8261,10 @@ remoteDispatchDomainSnapshotDelete(struct qemud_server *server ATTRIBUTE_UNUSED,
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->snap.domain)))
+ if (!(dom = get_nonnull_domain(conn, args->snap.domain)))
goto cleanup;
- if (!(snapshot = get_nonnull_domain_snapshot(domain, args->snap)))
+ if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap)))
goto cleanup;
if (virDomainSnapshotDelete(snapshot, args->flags) < 0)
@@ -8277,8 +8277,8 @@ cleanup:
remoteDispatchError(rerr);
if (snapshot)
virDomainSnapshotFree(snapshot);
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -8658,7 +8658,7 @@ qemuDispatchMonitorCommand(struct qemud_server *server ATTRIBUTE_UNUSED,
qemu_monitor_command_args *args,
qemu_monitor_command_ret *ret)
{
- virDomainPtr domain = NULL;
+ virDomainPtr dom = NULL;
int rv = -1;
if (!conn) {
@@ -8666,10 +8666,10 @@ qemuDispatchMonitorCommand(struct qemud_server *server ATTRIBUTE_UNUSED,
goto cleanup;
}
- if (!(domain = get_nonnull_domain(conn, args->domain)))
+ if (!(dom = get_nonnull_domain(conn, args->domain)))
goto cleanup;
- if (virDomainQemuMonitorCommand(domain, args->cmd, &ret->result,
+ if (virDomainQemuMonitorCommand(dom, args->cmd, &ret->result,
args->flags) < 0)
goto cleanup;
@@ -8678,8 +8678,8 @@ qemuDispatchMonitorCommand(struct qemud_server *server ATTRIBUTE_UNUSED,
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (domain)
- virDomainFree(domain);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
@@ -8793,9 +8793,9 @@ get_nonnull_nwfilter(virConnectPtr conn, remote_nonnull_nwfilter nwfilter)
}
static virDomainSnapshotPtr
-get_nonnull_domain_snapshot(virDomainPtr domain, remote_nonnull_domain_snapshot snapshot)
+get_nonnull_domain_snapshot(virDomainPtr dom, remote_nonnull_domain_snapshot snapshot)
{
- return virGetDomainSnapshot(domain, snapshot.name);
+ return virGetDomainSnapshot(dom, snapshot.name);
}
/* Make remote_nonnull_domain and remote_nonnull_network. */
--
1.7.4.2
2
1
[libvirt] [PATCH] Remove C99 variable declare in PHYP network driver
by Daniel P. Berrange 13 Apr '11
by Daniel P. Berrange 13 Apr '11
13 Apr '11
Move the virInterfacePtr declaration to the top of the
function to avoid jump uninitialized variable warnings
* src/phyp/phyp_driver.c: Fix var declaration
---
src/phyp/phyp_driver.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
Pushed to fix the broken build...
diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c
index b5145db..a1b6819 100644
--- a/src/phyp/phyp_driver.c
+++ b/src/phyp/phyp_driver.c
@@ -3587,6 +3587,7 @@ phypInterfaceLookupByName(virConnectPtr conn, const char *name)
int slot = 0;
int lpar_id = 0;
char mac[PHYP_MAC_SIZE];
+ virInterfacePtr result = NULL;
/*Getting the slot number for the interface */
virBufferAddLit(&buf, "lshwres ");
@@ -3667,7 +3668,7 @@ phypInterfaceLookupByName(virConnectPtr conn, const char *name)
memcpy(mac, ret, PHYP_MAC_SIZE-1);
- virInterfacePtr result = virGetInterface(conn, name, ret);
+ result = virGetInterface(conn, name, ret);
VIR_FREE(cmd);
VIR_FREE(ret);
--
1.7.4.2
2
1
13 Apr '11
When I edit the domain's config file like this:
=====================
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/test3.img'/>
<target dev='sdb' bus='scsi'/>
<address type='drive' controller='0' bus='0' unit='10'/>
</disk>
=====================
Note, the unit is wrong, but libvirt does not check it.
When I start the vm with the wrong config file, libvirtd will be blocked because
qemu quited unexpectedly. This bug does not happen every time, and it only happened
once on my box.
So I try to use gdb and add sleep() to trigger this bug. I have posted two patches
to fix 2 bugs. But there is still another bug, and I have no good way to fix it.
I add sleep() in qemuDomainObjExitMonitorWithDriver():
==============================
int qemuDomainObjExitMonitorWithDriver(struct qemud_driver *driver,
virDomainObjPtr obj)
{
qemuDomainObjPrivatePtr priv = obj->privateData;
int refs;
int debug = 0;
refs = qemuMonitorUnref(priv->mon);
if (refs > 0)
qemuMonitorUnlock(priv->mon);
/* Note: qemu may quited unexpectedly here, and the monitor will be freed.
* If it happened, priv->mon will be null.
*/
if (debug)
sleep(100);
qemuDriverLock(driver);
virDomainObjLock(obj);
if (refs == 0) {
priv->mon = NULL;
}
}
==============================
Steps to reproduce this bug:
1. use gdb to attach libvirtd, and set a breakpoint in the function
qemuConnectMonitor()
2. start a vm
3. let the libvirtd to run until qemuMonitorSetCapabilities() returns.
4. kill the qemu process
5. step into qemuDomainObjExitMonitorWithDriver(), and set debug to 1
Now, qemuDomainObjExitMonitorWithDriver() will sleep 100s to make sure
qemuProcessHandleMonitorEOF() is done before qemuProcessHandleMonitorEOF()
returns.
priv->mon will be null after qemuDomainObjExitMonitorWithDriver() returns.
So we must not use it. Unfortunately we still use it, and it will cause
libvirtd crashed.
My first fix is that qemuDomainObjExitMonitorWithDriver() returns -1, and
the caller checks the return value, then do some cleanup and return error.
Unfortunately we may use priv->mon when doing some cleanup. The only way
to avoid it is that add some local variable and set it when qemu quited
unexpectedly. Avoid to use priv->mon in cleanup codes
Is there some simply way to fix this bug.
3
6
13 Apr '11
Bug https://bugzilla.redhat.com/show_bug.cgi?id=689374 reported libvirtd
crash during error dispatch.
The reason is that libvirtd uses remoteDispatchConnError() with non-NULL
conn parameter which means that virConnGetLastError() is used instead of
its thread safe replacement virGetLastError().
So when several libvirtd threads are reporting errors at the same time,
the errors can get mixed or corrupted or in case of bad luck libvirtd
itself crashes.
Since Daniel B. is going to rewrite this code from scratch on top of his
RPC infrastructure, I tried to come up with a minimal fix. Thus,
remoteDispatchConnError() now just ignores its conn argument and always
calls virGetLastError(). However, several callers had to be touched as
well, since no libvirt API is allowed to be called before dispatching
the error. Doing so would reset the error and we would have nothing to
dispatch. As a result of that, the code is not very nice but that
doesn't really make daemon/remote.c worse than it is now :-) And it will
all die soon, which is good.
The bug report also contains a reproducer in C which detects both mixed
up error messages and libvirtd crash. Before this patch, I was able to
crash libvirtd in about 20 seconds up to 3 minutes depending on number
of CPU cores (more is better) and luck.
---
daemon/dispatch.c | 8 +--
daemon/remote.c | 238 +++++++++++++++++++++++++++-------------------------
2 files changed, 126 insertions(+), 120 deletions(-)
diff --git a/daemon/dispatch.c b/daemon/dispatch.c
index dc3b48a..4814017 100644
--- a/daemon/dispatch.c
+++ b/daemon/dispatch.c
@@ -113,14 +113,10 @@ void remoteDispatchOOMError (remote_error *rerr)
void remoteDispatchConnError (remote_error *rerr,
- virConnectPtr conn)
+ virConnectPtr conn ATTRIBUTE_UNUSED)
{
- virErrorPtr verr;
+ virErrorPtr verr = virGetLastError();
- if (conn)
- verr = virConnGetLastError(conn);
- else
- verr = virGetLastError();
if (verr)
remoteDispatchCopyError(rerr, verr);
else
diff --git a/daemon/remote.c b/daemon/remote.c
index a8fef4d..4b42ed2 100644
--- a/daemon/remote.c
+++ b/daemon/remote.c
@@ -757,8 +757,8 @@ remoteDispatchDomainGetSchedulerType (struct qemud_server *server ATTRIBUTE_UNUS
type = virDomainGetSchedulerType (dom, &nparams);
if (type == NULL) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
@@ -801,9 +801,9 @@ remoteDispatchDomainGetSchedulerParameters (struct qemud_server *server ATTRIBUT
r = virDomainGetSchedulerParameters (dom, params, &nparams);
if (r == -1) {
+ remoteDispatchConnError(rerr, conn);
virDomainFree(dom);
VIR_FREE(params);
- remoteDispatchConnError(rerr, conn);
return -1;
}
@@ -908,12 +908,13 @@ remoteDispatchDomainSetSchedulerParameters (struct qemud_server *server ATTRIBUT
}
r = virDomainSetSchedulerParameters (dom, params, nparams);
- virDomainFree(dom);
VIR_FREE(params);
if (r == -1) {
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
+ virDomainFree(dom);
return 0;
}
@@ -939,8 +940,8 @@ remoteDispatchDomainBlockStats (struct qemud_server *server ATTRIBUTE_UNUSED,
path = args->path;
if (virDomainBlockStats (dom, path, &stats, sizeof stats) == -1) {
- virDomainFree (dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree (dom);
return -1;
}
virDomainFree (dom);
@@ -975,8 +976,8 @@ remoteDispatchDomainInterfaceStats (struct qemud_server *server ATTRIBUTE_UNUSED
path = args->path;
if (virDomainInterfaceStats (dom, path, &stats, sizeof stats) == -1) {
- virDomainFree (dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree (dom);
return -1;
}
virDomainFree (dom);
@@ -1026,12 +1027,13 @@ remoteDispatchDomainMemoryStats (struct qemud_server *server ATTRIBUTE_UNUSED,
}
nr_stats = virDomainMemoryStats (dom, stats, args->maxStats, 0);
- virDomainFree (dom);
if (nr_stats == -1) {
VIR_FREE(stats);
remoteDispatchConnError(rerr, conn);
+ virDomainFree (dom);
return -1;
}
+ virDomainFree (dom);
/* Allocate return buffer */
if (VIR_ALLOC_N(ret->stats.stats_val, args->maxStats) < 0) {
@@ -1092,8 +1094,8 @@ remoteDispatchDomainBlockPeek (struct qemud_server *server ATTRIBUTE_UNUSED,
if (virDomainBlockPeek (dom, path, offset, size,
ret->buffer.buffer_val, flags) == -1) {
/* free (ret->buffer.buffer_val); - caller frees */
- virDomainFree (dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree (dom);
return -1;
}
virDomainFree (dom);
@@ -1141,8 +1143,8 @@ remoteDispatchDomainMemoryPeek (struct qemud_server *server ATTRIBUTE_UNUSED,
if (virDomainMemoryPeek (dom, offset, size,
ret->buffer.buffer_val, flags) == -1) {
/* free (ret->buffer.buffer_val); - caller frees */
- virDomainFree (dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree (dom);
return -1;
}
virDomainFree (dom);
@@ -1168,8 +1170,8 @@ remoteDispatchDomainAttachDevice (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainAttachDevice (dom, args->xml) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -1194,8 +1196,8 @@ remoteDispatchDomainAttachDeviceFlags (struct qemud_server *server ATTRIBUTE_UNU
}
if (virDomainAttachDeviceFlags (dom, args->xml, args->flags) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -1220,8 +1222,8 @@ remoteDispatchDomainUpdateDeviceFlags (struct qemud_server *server ATTRIBUTE_UNU
}
if (virDomainUpdateDeviceFlags (dom, args->xml, args->flags) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -1246,8 +1248,8 @@ remoteDispatchDomainCreate (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainCreate (dom) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -1272,8 +1274,8 @@ remoteDispatchDomainCreateWithFlags (struct qemud_server *server ATTRIBUTE_UNUSE
}
if (virDomainCreateWithFlags (dom, args->flags) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
@@ -1346,8 +1348,8 @@ remoteDispatchDomainDestroy (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainDestroy (dom) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -1372,8 +1374,8 @@ remoteDispatchDomainDetachDevice (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainDetachDevice (dom, args->xml) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
@@ -1399,8 +1401,8 @@ remoteDispatchDomainDetachDeviceFlags (struct qemud_server *server ATTRIBUTE_UNU
}
if (virDomainDetachDeviceFlags (dom, args->xml, args->flags) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
@@ -1428,8 +1430,8 @@ remoteDispatchDomainDumpXml (struct qemud_server *server ATTRIBUTE_UNUSED,
/* remoteDispatchClientRequest will free this. */
ret->xml = virDomainGetXMLDesc (dom, args->flags);
if (!ret->xml) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -1497,8 +1499,8 @@ remoteDispatchDomainGetAutostart (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainGetAutostart (dom, &ret->autostart) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -1524,8 +1526,8 @@ remoteDispatchDomainGetInfo (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainGetInfo (dom, &info) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
@@ -1559,8 +1561,8 @@ remoteDispatchDomainGetMaxMemory (struct qemud_server *server ATTRIBUTE_UNUSED,
ret->memory = virDomainGetMaxMemory (dom);
if (ret->memory == 0) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -1586,8 +1588,8 @@ remoteDispatchDomainGetMaxVcpus (struct qemud_server *server ATTRIBUTE_UNUSED,
ret->num = virDomainGetMaxVcpus (dom);
if (ret->num == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -1614,8 +1616,8 @@ remoteDispatchDomainGetSecurityLabel(struct qemud_server *server ATTRIBUTE_UNUSE
memset(&seclabel, 0, sizeof seclabel);
if (virDomainGetSecurityLabel(dom, &seclabel) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
@@ -1686,8 +1688,8 @@ remoteDispatchDomainGetOsType (struct qemud_server *server ATTRIBUTE_UNUSED,
/* remoteDispatchClientRequest will free this */
ret->type = virDomainGetOSType (dom);
if (ret->type == NULL) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -1737,10 +1739,10 @@ remoteDispatchDomainGetVcpus (struct qemud_server *server ATTRIBUTE_UNUSED,
info, args->maxinfo,
cpumaps, args->maplen);
if (info_len == -1) {
+ remoteDispatchConnError(rerr, conn);
VIR_FREE(info);
VIR_FREE(cpumaps);
virDomainFree(dom);
- remoteDispatchConnError(rerr, conn);
return -1;
}
@@ -1794,8 +1796,8 @@ remoteDispatchDomainGetVcpusFlags (struct qemud_server *server ATTRIBUTE_UNUSED,
ret->num = virDomainGetVcpusFlags (dom, args->flags);
if (ret->num == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -1877,11 +1879,12 @@ remoteDispatchDomainMigratePerform (struct qemud_server *server ATTRIBUTE_UNUSED
args->cookie.cookie_len,
args->uri,
args->flags, dname, args->resource);
- virDomainFree (dom);
if (r == -1) {
remoteDispatchConnError(rerr, conn);
+ virDomainFree (dom);
return -1;
}
+ virDomainFree (dom);
return 0;
}
@@ -2013,8 +2016,8 @@ remoteDispatchDomainMigratePrepareTunnel(struct qemud_server *server ATTRIBUTE_U
args->flags, dname, args->resource,
args->dom_xml);
if (r == -1) {
- remoteFreeClientStream(client, stream);
remoteDispatchConnError(rerr, conn);
+ remoteFreeClientStream(client, stream);
return -1;
}
@@ -2175,8 +2178,8 @@ remoteDispatchDomainPinVcpu (struct qemud_server *server ATTRIBUTE_UNUSED,
(unsigned char *) args->cpumap.cpumap_val,
args->cpumap.cpumap_len);
if (rv == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2201,8 +2204,8 @@ remoteDispatchDomainReboot (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainReboot (dom, args->flags) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2245,8 +2248,8 @@ remoteDispatchDomainResume (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainResume (dom) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2271,8 +2274,8 @@ remoteDispatchDomainSave (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainSave (dom, args->to) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2297,8 +2300,8 @@ remoteDispatchDomainCoreDump (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainCoreDump (dom, args->to, args->flags) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2323,8 +2326,8 @@ remoteDispatchDomainSetAutostart (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainSetAutostart (dom, args->autostart) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2349,8 +2352,8 @@ remoteDispatchDomainSetMaxMemory (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainSetMaxMemory (dom, args->memory) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2375,8 +2378,8 @@ remoteDispatchDomainSetMemory (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainSetMemory (dom, args->memory) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2401,8 +2404,8 @@ remoteDispatchDomainSetMemoryFlags (struct qemud_server *server ATTRIBUTE_UNUSED
}
if (virDomainSetMemoryFlags (dom, args->memory, args->flags) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2491,12 +2494,13 @@ remoteDispatchDomainSetMemoryParameters(struct qemud_server *server
}
r = virDomainSetMemoryParameters(dom, params, nparams, flags);
- virDomainFree(dom);
VIR_FREE(params);
if (r == -1) {
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
+ virDomainFree(dom);
return 0;
}
@@ -2541,9 +2545,9 @@ remoteDispatchDomainGetMemoryParameters(struct qemud_server *server
r = virDomainGetMemoryParameters(dom, params, &nparams, flags);
if (r == -1) {
+ remoteDispatchConnError(rerr, conn);
virDomainFree(dom);
VIR_FREE(params);
- remoteDispatchConnError(rerr, conn);
return -1;
}
/* In this case, we need to send back the number of parameters
@@ -2701,12 +2705,13 @@ remoteDispatchDomainSetBlkioParameters(struct qemud_server *server
}
r = virDomainSetBlkioParameters(dom, params, nparams, flags);
- virDomainFree(dom);
VIR_FREE(params);
if (r == -1) {
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
+ virDomainFree(dom);
return 0;
}
@@ -2751,9 +2756,9 @@ remoteDispatchDomainGetBlkioParameters(struct qemud_server *server
r = virDomainGetBlkioParameters(dom, params, &nparams, flags);
if (r == -1) {
+ remoteDispatchConnError(rerr, conn);
virDomainFree(dom);
VIR_FREE(params);
- remoteDispatchConnError(rerr, conn);
return -1;
}
/* In this case, we need to send back the number of parameters
@@ -2847,8 +2852,8 @@ remoteDispatchDomainSetVcpus (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainSetVcpus (dom, args->nvcpus) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2873,8 +2878,8 @@ remoteDispatchDomainSetVcpusFlags (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainSetVcpusFlags (dom, args->nvcpus, args->flags) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2899,8 +2904,8 @@ remoteDispatchDomainShutdown (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainShutdown (dom) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2925,8 +2930,8 @@ remoteDispatchDomainSuspend (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainSuspend (dom) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -2951,8 +2956,8 @@ remoteDispatchDomainUndefine (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainUndefine (dom) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -3044,8 +3049,8 @@ remoteDispatchDomainManagedSave (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainManagedSave (dom, args->flags) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -3071,8 +3076,8 @@ remoteDispatchDomainHasManagedSaveImage (struct qemud_server *server ATTRIBUTE_U
ret->ret = virDomainHasManagedSaveImage (dom, args->flags);
if (ret->ret == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -3097,8 +3102,8 @@ remoteDispatchDomainManagedSaveRemove (struct qemud_server *server ATTRIBUTE_UNU
}
if (virDomainManagedSaveRemove (dom, args->flags) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
virDomainFree(dom);
@@ -3157,8 +3162,8 @@ remoteDispatchNetworkCreate (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virNetworkCreate (net) == -1) {
- virNetworkFree(net);
remoteDispatchConnError(rerr, conn);
+ virNetworkFree(net);
return -1;
}
virNetworkFree(net);
@@ -3227,8 +3232,8 @@ remoteDispatchNetworkDestroy (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virNetworkDestroy (net) == -1) {
- virNetworkFree(net);
remoteDispatchConnError(rerr, conn);
+ virNetworkFree(net);
return -1;
}
virNetworkFree(net);
@@ -3255,8 +3260,8 @@ remoteDispatchNetworkDumpXml (struct qemud_server *server ATTRIBUTE_UNUSED,
/* remoteDispatchClientRequest will free this. */
ret->xml = virNetworkGetXMLDesc (net, args->flags);
if (!ret->xml) {
- virNetworkFree(net);
remoteDispatchConnError(rerr, conn);
+ virNetworkFree(net);
return -1;
}
virNetworkFree(net);
@@ -3281,8 +3286,8 @@ remoteDispatchNetworkGetAutostart (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virNetworkGetAutostart (net, &ret->autostart) == -1) {
- virNetworkFree(net);
remoteDispatchConnError(rerr, conn);
+ virNetworkFree(net);
return -1;
}
virNetworkFree(net);
@@ -3309,8 +3314,8 @@ remoteDispatchNetworkGetBridgeName (struct qemud_server *server ATTRIBUTE_UNUSED
/* remoteDispatchClientRequest will free this. */
ret->name = virNetworkGetBridgeName (net);
if (!ret->name) {
- virNetworkFree(net);
remoteDispatchConnError(rerr, conn);
+ virNetworkFree(net);
return -1;
}
virNetworkFree(net);
@@ -3379,8 +3384,8 @@ remoteDispatchNetworkSetAutostart (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virNetworkSetAutostart (net, args->autostart) == -1) {
- virNetworkFree(net);
remoteDispatchConnError(rerr, conn);
+ virNetworkFree(net);
return -1;
}
virNetworkFree(net);
@@ -3405,8 +3410,8 @@ remoteDispatchNetworkUndefine (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virNetworkUndefine (net) == -1) {
- virNetworkFree(net);
remoteDispatchConnError(rerr, conn);
+ virNetworkFree(net);
return -1;
}
virNetworkFree(net);
@@ -3642,8 +3647,8 @@ remoteDispatchInterfaceGetXmlDesc (struct qemud_server *server ATTRIBUTE_UNUSED,
/* remoteDispatchClientRequest will free this. */
ret->xml = virInterfaceGetXMLDesc (iface, args->flags);
if (!ret->xml) {
- virInterfaceFree(iface);
remoteDispatchConnError(rerr, conn);
+ virInterfaceFree(iface);
return -1;
}
virInterfaceFree(iface);
@@ -3690,8 +3695,8 @@ remoteDispatchInterfaceUndefine (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virInterfaceUndefine (iface) == -1) {
- virInterfaceFree(iface);
remoteDispatchConnError(rerr, conn);
+ virInterfaceFree(iface);
return -1;
}
virInterfaceFree(iface);
@@ -3716,8 +3721,8 @@ remoteDispatchInterfaceCreate (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virInterfaceCreate (iface, args->flags) == -1) {
- virInterfaceFree(iface);
remoteDispatchConnError(rerr, conn);
+ virInterfaceFree(iface);
return -1;
}
virInterfaceFree(iface);
@@ -3742,8 +3747,8 @@ remoteDispatchInterfaceDestroy (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virInterfaceDestroy (iface, args->flags) == -1) {
- virInterfaceFree(iface);
remoteDispatchConnError(rerr, conn);
+ virInterfaceFree(iface);
return -1;
}
virInterfaceFree(iface);
@@ -4656,8 +4661,8 @@ remoteDispatchStoragePoolCreate (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virStoragePoolCreate (pool, args->flags) == -1) {
- virStoragePoolFree(pool);
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
virStoragePoolFree(pool);
@@ -4726,8 +4731,8 @@ remoteDispatchStoragePoolBuild (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virStoragePoolBuild (pool, args->flags) == -1) {
- virStoragePoolFree(pool);
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
virStoragePoolFree(pool);
@@ -4753,8 +4758,8 @@ remoteDispatchStoragePoolDestroy (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virStoragePoolDestroy (pool) == -1) {
- virStoragePoolFree(pool);
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
virStoragePoolFree(pool);
@@ -4779,8 +4784,8 @@ remoteDispatchStoragePoolDelete (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virStoragePoolDelete (pool, args->flags) == -1) {
- virStoragePoolFree(pool);
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
virStoragePoolFree(pool);
@@ -4805,8 +4810,8 @@ remoteDispatchStoragePoolRefresh (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virStoragePoolRefresh (pool, args->flags) == -1) {
- virStoragePoolFree(pool);
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
virStoragePoolFree(pool);
@@ -4832,8 +4837,8 @@ remoteDispatchStoragePoolGetInfo (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virStoragePoolGetInfo (pool, &info) == -1) {
- virStoragePoolFree(pool);
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
@@ -4867,8 +4872,8 @@ remoteDispatchStoragePoolDumpXml (struct qemud_server *server ATTRIBUTE_UNUSED,
/* remoteDispatchClientRequest will free this. */
ret->xml = virStoragePoolGetXMLDesc (pool, args->flags);
if (!ret->xml) {
- virStoragePoolFree(pool);
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
virStoragePoolFree(pool);
@@ -4893,8 +4898,8 @@ remoteDispatchStoragePoolGetAutostart (struct qemud_server *server ATTRIBUTE_UNU
}
if (virStoragePoolGetAutostart (pool, &ret->autostart) == -1) {
- virStoragePoolFree(pool);
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
virStoragePoolFree(pool);
@@ -4965,11 +4970,12 @@ remoteDispatchStoragePoolLookupByVolume (struct qemud_server *server ATTRIBUTE_U
}
pool = virStoragePoolLookupByVolume (vol);
- virStorageVolFree(vol);
if (pool == NULL) {
remoteDispatchConnError(rerr, conn);
+ virStorageVolFree(vol);
return -1;
}
+ virStorageVolFree(vol);
make_nonnull_storage_pool (&ret->pool, pool);
virStoragePoolFree(pool);
@@ -4994,8 +5000,8 @@ remoteDispatchStoragePoolSetAutostart (struct qemud_server *server ATTRIBUTE_UNU
}
if (virStoragePoolSetAutostart (pool, args->autostart) == -1) {
- virStoragePoolFree(pool);
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
virStoragePoolFree(pool);
@@ -5020,8 +5026,8 @@ remoteDispatchStoragePoolUndefine (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virStoragePoolUndefine (pool) == -1) {
- virStoragePoolFree(pool);
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
virStoragePoolFree(pool);
@@ -5163,11 +5169,12 @@ remoteDispatchStorageVolCreateXml (struct qemud_server *server ATTRIBUTE_UNUSED,
}
vol = virStorageVolCreateXML (pool, args->xml, args->flags);
- virStoragePoolFree(pool);
if (vol == NULL) {
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
+ virStoragePoolFree(pool);
make_nonnull_storage_vol (&ret->vol, vol);
virStorageVolFree(vol);
@@ -5194,19 +5201,21 @@ remoteDispatchStorageVolCreateXmlFrom (struct qemud_server *server ATTRIBUTE_UNU
clonevol = get_nonnull_storage_vol (conn, args->clonevol);
if (clonevol == NULL) {
- virStoragePoolFree(pool);
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
newvol = virStorageVolCreateXMLFrom (pool, args->xml, clonevol,
args->flags);
- virStorageVolFree(clonevol);
- virStoragePoolFree(pool);
if (newvol == NULL) {
remoteDispatchConnError(rerr, conn);
+ virStorageVolFree(clonevol);
+ virStoragePoolFree(pool);
return -1;
}
+ virStorageVolFree(clonevol);
+ virStoragePoolFree(pool);
make_nonnull_storage_vol (&ret->vol, newvol);
virStorageVolFree(newvol);
@@ -5231,8 +5240,8 @@ remoteDispatchStorageVolDelete (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virStorageVolDelete (vol, args->flags) == -1) {
- virStorageVolFree(vol);
remoteDispatchConnError(rerr, conn);
+ virStorageVolFree(vol);
return -1;
}
virStorageVolFree(vol);
@@ -5290,8 +5299,8 @@ remoteDispatchStorageVolGetInfo (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virStorageVolGetInfo (vol, &info) == -1) {
- virStorageVolFree(vol);
remoteDispatchConnError(rerr, conn);
+ virStorageVolFree(vol);
return -1;
}
@@ -5324,8 +5333,8 @@ remoteDispatchStorageVolDumpXml (struct qemud_server *server ATTRIBUTE_UNUSED,
/* remoteDispatchClientRequest will free this. */
ret->xml = virStorageVolGetXMLDesc (vol, args->flags);
if (!ret->xml) {
- virStorageVolFree(vol);
remoteDispatchConnError(rerr, conn);
+ virStorageVolFree(vol);
return -1;
}
virStorageVolFree(vol);
@@ -5353,8 +5362,8 @@ remoteDispatchStorageVolGetPath (struct qemud_server *server ATTRIBUTE_UNUSED,
/* remoteDispatchClientRequest will free this. */
ret->name = virStorageVolGetPath (vol);
if (!ret->name) {
- virStorageVolFree(vol);
remoteDispatchConnError(rerr, conn);
+ virStorageVolFree(vol);
return -1;
}
virStorageVolFree(vol);
@@ -5381,11 +5390,12 @@ remoteDispatchStorageVolLookupByName (struct qemud_server *server ATTRIBUTE_UNUS
}
vol = virStorageVolLookupByName (pool, args->name);
- virStoragePoolFree(pool);
if (vol == NULL) {
remoteDispatchConnError(rerr, conn);
+ virStoragePoolFree(pool);
return -1;
}
+ virStoragePoolFree(pool);
make_nonnull_storage_vol (&ret->vol, vol);
virStorageVolFree(vol);
@@ -5622,8 +5632,8 @@ remoteDispatchNodeDeviceNumOfCaps (struct qemud_server *server ATTRIBUTE_UNUSED,
ret->num = virNodeDeviceNumOfCaps(dev);
if (ret->num < 0) {
- virNodeDeviceFree(dev);
remoteDispatchConnError(rerr, conn);
+ virNodeDeviceFree(dev);
return -1;
}
@@ -5668,8 +5678,8 @@ remoteDispatchNodeDeviceListCaps (struct qemud_server *server ATTRIBUTE_UNUSED,
virNodeDeviceListCaps (dev, ret->names.names_val,
args->maxnames);
if (ret->names.names_len == -1) {
- virNodeDeviceFree(dev);
remoteDispatchConnError(rerr, conn);
+ virNodeDeviceFree(dev);
VIR_FREE(ret->names.names_val);
return -1;
}
@@ -5698,8 +5708,8 @@ remoteDispatchNodeDeviceDettach (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virNodeDeviceDettach(dev) == -1) {
- virNodeDeviceFree(dev);
remoteDispatchConnError(rerr, conn);
+ virNodeDeviceFree(dev);
return -1;
}
@@ -5727,8 +5737,8 @@ remoteDispatchNodeDeviceReAttach (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virNodeDeviceReAttach(dev) == -1) {
- virNodeDeviceFree(dev);
remoteDispatchConnError(rerr, conn);
+ virNodeDeviceFree(dev);
return -1;
}
@@ -5756,8 +5766,8 @@ remoteDispatchNodeDeviceReset (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virNodeDeviceReset(dev) == -1) {
- virNodeDeviceFree(dev);
remoteDispatchConnError(rerr, conn);
+ virNodeDeviceFree(dev);
return -1;
}
@@ -5808,8 +5818,8 @@ remoteDispatchNodeDeviceDestroy(struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virNodeDeviceDestroy(dev) == -1) {
- virNodeDeviceFree(dev);
remoteDispatchConnError(rerr, conn);
+ virNodeDeviceFree(dev);
return -1;
}
@@ -6189,8 +6199,8 @@ static int remoteDispatchDomainIsActive(struct qemud_server *server ATTRIBUTE_UN
ret->active = virDomainIsActive(domain);
if (ret->active < 0) {
- virDomainFree(domain);
remoteDispatchConnError(err, conn);
+ virDomainFree(domain);
return -1;
}
@@ -6217,8 +6227,8 @@ static int remoteDispatchDomainIsPersistent(struct qemud_server *server ATTRIBUT
ret->persistent = virDomainIsPersistent(domain);
if (ret->persistent < 0) {
- virDomainFree(domain);
remoteDispatchConnError(err, conn);
+ virDomainFree(domain);
return -1;
}
@@ -6245,8 +6255,8 @@ static int remoteDispatchDomainIsUpdated(struct qemud_server *server ATTRIBUTE_U
ret->updated = virDomainIsUpdated(domain);
if (ret->updated < 0) {
- virDomainFree(domain);
remoteDispatchConnError(err, conn);
+ virDomainFree(domain);
return -1;
}
@@ -6273,8 +6283,8 @@ static int remoteDispatchInterfaceIsActive(struct qemud_server *server ATTRIBUTE
ret->active = virInterfaceIsActive(iface);
if (ret->active < 0) {
- virInterfaceFree(iface);
remoteDispatchConnError(err, conn);
+ virInterfaceFree(iface);
return -1;
}
@@ -6301,8 +6311,8 @@ static int remoteDispatchNetworkIsActive(struct qemud_server *server ATTRIBUTE_U
ret->active = virNetworkIsActive(network);
if (ret->active < 0) {
- virNetworkFree(network);
remoteDispatchConnError(err, conn);
+ virNetworkFree(network);
return -1;
}
@@ -6329,8 +6339,8 @@ static int remoteDispatchNetworkIsPersistent(struct qemud_server *server ATTRIBU
ret->persistent = virNetworkIsPersistent(network);
if (ret->persistent < 0) {
- virNetworkFree(network);
remoteDispatchConnError(err, conn);
+ virNetworkFree(network);
return -1;
}
@@ -6357,8 +6367,8 @@ static int remoteDispatchStoragePoolIsActive(struct qemud_server *server ATTRIBU
ret->active = virStoragePoolIsActive(pool);
if (ret->active < 0) {
- virStoragePoolFree(pool);
remoteDispatchConnError(err, conn);
+ virStoragePoolFree(pool);
return -1;
}
@@ -6385,8 +6395,8 @@ static int remoteDispatchStoragePoolIsPersistent(struct qemud_server *server ATT
ret->persistent = virStoragePoolIsPersistent(pool);
if (ret->persistent < 0) {
- virStoragePoolFree(pool);
remoteDispatchConnError(err, conn);
+ virStoragePoolFree(pool);
return -1;
}
@@ -6481,8 +6491,8 @@ remoteDispatchDomainGetJobInfo (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainGetJobInfo (dom, &info) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
@@ -6523,8 +6533,8 @@ remoteDispatchDomainAbortJob (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainAbortJob (dom) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
@@ -6552,8 +6562,8 @@ remoteDispatchDomainMigrateSetMaxDowntime(struct qemud_server *server ATTRIBUTE_
}
if (virDomainMigrateSetMaxDowntime(dom, args->downtime, args->flags) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
@@ -6610,8 +6620,8 @@ remoteDispatchDomainSnapshotCreateXml (struct qemud_server *server ATTRIBUTE_UNU
snapshot = virDomainSnapshotCreateXML(domain, args->xml_desc, args->flags);
if (snapshot == NULL) {
- virDomainFree(domain);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(domain);
return -1;
}
@@ -6652,12 +6662,12 @@ remoteDispatchDomainSnapshotDumpXml (struct qemud_server *server ATTRIBUTE_UNUSE
rc = 0;
cleanup:
+ if (rc < 0)
+ remoteDispatchConnError(rerr, conn);
if (snapshot)
virDomainSnapshotFree(snapshot);
if (domain)
virDomainFree(domain);
- if (rc < 0)
- remoteDispatchConnError(rerr, conn);
return rc;
}
@@ -6681,8 +6691,8 @@ remoteDispatchDomainSnapshotNum (struct qemud_server *server ATTRIBUTE_UNUSED,
ret->num = virDomainSnapshotNum(domain, args->flags);
if (ret->num == -1) {
- virDomainFree(domain);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(domain);
return -1;
}
@@ -6726,9 +6736,9 @@ remoteDispatchDomainSnapshotListNames (struct qemud_server *server ATTRIBUTE_UNU
args->nameslen,
args->flags);
if (ret->names.names_len == -1) {
+ remoteDispatchConnError(rerr, conn);
virDomainFree(domain);
VIR_FREE(ret->names.names_val);
- remoteDispatchConnError(rerr, conn);
return -1;
}
@@ -6757,8 +6767,8 @@ remoteDispatchDomainSnapshotLookupByName (struct qemud_server *server ATTRIBUTE_
snapshot = virDomainSnapshotLookupByName(domain, args->name, args->flags);
if (snapshot == NULL) {
- virDomainFree(domain);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(domain);
return -1;
}
@@ -6790,8 +6800,8 @@ remoteDispatchDomainHasCurrentSnapshot(struct qemud_server *server ATTRIBUTE_UNU
result = virDomainHasCurrentSnapshot(domain, args->flags);
if (result < 0) {
- virDomainFree(domain);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(domain);
return -1;
}
@@ -6822,8 +6832,8 @@ remoteDispatchDomainSnapshotCurrent(struct qemud_server *server ATTRIBUTE_UNUSED
snapshot = virDomainSnapshotCurrent(domain, args->flags);
if (snapshot == NULL) {
- virDomainFree(domain);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(domain);
return -1;
}
@@ -6862,12 +6872,12 @@ remoteDispatchDomainRevertToSnapshot (struct qemud_server *server ATTRIBUTE_UNUS
rc = 0;
cleanup:
+ if (rc < 0)
+ remoteDispatchConnError(rerr, conn);
if (snapshot)
virDomainSnapshotFree(snapshot);
if (domain)
virDomainFree(domain);
- if (rc < 0)
- remoteDispatchConnError(rerr, conn);
return rc;
}
@@ -6899,12 +6909,12 @@ remoteDispatchDomainSnapshotDelete (struct qemud_server *server ATTRIBUTE_UNUSED
rc = 0;
cleanup:
+ if (rc < 0)
+ remoteDispatchConnError(rerr, conn);
if (snapshot)
virDomainSnapshotFree(snapshot);
if (domain)
virDomainFree(domain);
- if (rc < 0)
- remoteDispatchConnError(rerr, conn);
return rc;
}
@@ -7069,8 +7079,8 @@ remoteDispatchNwfilterUndefine (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virNWFilterUndefine (nwfilter) == -1) {
- virNWFilterFree(nwfilter);
remoteDispatchConnError(rerr, conn);
+ virNWFilterFree(nwfilter);
return -1;
}
virNWFilterFree(nwfilter);
@@ -7132,8 +7142,8 @@ remoteDispatchNwfilterGetXmlDesc (struct qemud_server *server ATTRIBUTE_UNUSED,
/* remoteDispatchClientRequest will free this. */
ret->xml = virNWFilterGetXMLDesc (nwfilter, args->flags);
if (!ret->xml) {
- virNWFilterFree(nwfilter);
remoteDispatchConnError(rerr, conn);
+ virNWFilterFree(nwfilter);
return -1;
}
virNWFilterFree(nwfilter);
@@ -7180,8 +7190,8 @@ remoteDispatchDomainGetBlockInfo (struct qemud_server *server ATTRIBUTE_UNUSED,
}
if (virDomainGetBlockInfo (dom, args->path, &info, args->flags) == -1) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
return -1;
}
@@ -7213,8 +7223,8 @@ qemuDispatchMonitorCommand (struct qemud_server *server ATTRIBUTE_UNUSED,
if (virDomainQemuMonitorCommand(domain, args->cmd, &ret->result,
args->flags) == -1) {
- virDomainFree(domain);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(domain);
return -1;
}
@@ -7257,15 +7267,15 @@ remoteDispatchDomainOpenConsole(struct qemud_server *server ATTRIBUTE_UNUSED,
stream->st,
args->flags);
if (r == -1) {
+ remoteDispatchConnError(rerr, conn);
virDomainFree(dom);
remoteFreeClientStream(client, stream);
- remoteDispatchConnError(rerr, conn);
return -1;
}
if (remoteAddClientStream(client, stream, 1) < 0) {
- virDomainFree(dom);
remoteDispatchConnError(rerr, conn);
+ virDomainFree(dom);
virStreamAbort(stream->st);
remoteFreeClientStream(client, stream);
return -1;
--
1.7.4.1
3
3
13 Apr '11
This extends the SPICE XML to allow variable compression settings for audio,
images and streaming:
<graphics type='spice' port='5901' tlsPort='-1' autoport='yes'>
<image compression='auto_glz'/>
<jpeg compression='auto'/>
<zlib compression='auto'/>
<playback compression='on'/>
</graphics>
All new element are optional.
---
docs/formatdomain.html.in | 12 ++
docs/schemas/domain.rng | 50 ++++++++
src/conf/domain_conf.c | 130 ++++++++++++++++++++
src/conf/domain_conf.h | 42 +++++++
src/libvirt_private.syms | 8 ++
src/qemu/qemu_command.c | 16 +++
.../qemuxml2argv-graphics-spice.args | 4 +-
.../qemuxml2argv-graphics-spice.xml | 4 +
8 files changed, 265 insertions(+), 1 deletions(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 3c4c656..c5edf53 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -1664,6 +1664,18 @@ qemu-kvm -net nic,model=? /dev/null
<channel name='main' mode='secure'/>
<channel name='record' mode='insecure'/>
</graphics></pre>
+ <p>
+Spice supports variable compression settings for audio, images and streaming.
+This setting are accessible via <code>compression</code> attribute in all
+following elements: <code>image</code> to set image compression (accept
+<code>auto_glz</code>, <code>auto_lz</code>, <code>quic</code>,
+<code>glz</code>, <code>lz</code>, <code>off</code>), <code>jpeg</code> for
+JPEG compression for images over wan (accept <code>auto</code>,
+<code>never</code>, <code>always</code>), <code>zlib</code> for configuring
+wan image compression (accept <code>auto</code>, <code>never</code>,
+<code>always</code>) and <code>playback</code> for enabling audio stream
+compression (accept <code>on</code> or <code>off</code>)
+ </p>
</dd>
<dt><code>"rdp"</code></dt>
<dd>
diff --git a/docs/schemas/domain.rng b/docs/schemas/domain.rng
index 0fbf326..f0578f8 100644
--- a/docs/schemas/domain.rng
+++ b/docs/schemas/domain.rng
@@ -1283,6 +1283,56 @@
<empty/>
</element>
</zeroOrMore>
+ <optional>
+ <element name="image">
+ <attribute name="compression">
+ <choice>
+ <value>auto_glz</value>
+ <value>auto_lz</value>
+ <value>quic</value>
+ <value>glz</value>
+ <value>lz</value>
+ <value>off</value>
+ </choice>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="jpeg">
+ <attribute name="compression">
+ <choice>
+ <value>auto</value>
+ <value>never</value>
+ <value>always</value>
+ </choice>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="zlib">
+ <attribute name="compression">
+ <choice>
+ <value>auto</value>
+ <value>never</value>
+ <value>always</value>
+ </choice>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="playback">
+ <attribute name="compression">
+ <choice>
+ <value>on</value>
+ <value>off</value>
+ </choice>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
</group>
<group>
<attribute name="type">
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 90a1317..f215e7d 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -322,6 +322,32 @@ VIR_ENUM_IMPL(virDomainGraphicsSpiceChannelMode,
"secure",
"insecure");
+VIR_ENUM_IMPL(virDomainGraphicsSpiceImageCompression,
+ VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_LAST,
+ "auto_glz",
+ "auto_lz",
+ "quic",
+ "glz",
+ "lz",
+ "off");
+
+VIR_ENUM_IMPL(virDomainGraphicsSpiceJpegCompression,
+ VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_LAST,
+ "auto",
+ "never",
+ "always");
+
+VIR_ENUM_IMPL(virDomainGraphicsSpiceZlibCompression,
+ VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_LAST,
+ "auto",
+ "never",
+ "always");
+
+VIR_ENUM_IMPL(virDomainGraphicsSpicePlaybackCompression,
+ VIR_DOMAIN_GRAPHICS_SPICE_PLAYBACK_COMPRESSION_LAST,
+ "on",
+ "off");
+
VIR_ENUM_IMPL(virDomainHostdevMode, VIR_DOMAIN_HOSTDEV_MODE_LAST,
"subsystem",
"capabilities")
@@ -3917,6 +3943,11 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, int flags) {
if (virDomainGraphicsAuthDefParseXML(node, &def->data.spice.auth) < 0)
goto error;
+ def->data.spice.image = VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_LAST;
+ def->data.spice.jpeg = VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_LAST;
+ def->data.spice.zlib = VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_LAST;
+ def->data.spice.playback = VIR_DOMAIN_GRAPHICS_SPICE_PLAYBACK_COMPRESSION_LAST;
+
cur = node->children;
while (cur != NULL) {
if (cur->type == XML_ELEMENT_NODE) {
@@ -3954,6 +3985,89 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, int flags) {
VIR_FREE(mode);
def->data.spice.channels[nameval] = modeval;
+ } else if (xmlStrEqual(cur->name, BAD_CAST "image")) {
+ const char *compression = virXMLPropString(cur, "compression");
+ int compressionVal;
+
+ if (!compression) {
+ virDomainReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("spice image missing compression"));
+ goto error;
+ }
+
+ if ((compressionVal =
+ virDomainGraphicsSpiceImageCompressionTypeFromString(compression)) < 0) {
+ virDomainReportError(VIR_ERR_INTERNAL_ERROR,
+ _("unknown spice image compression %s"),
+ compression);
+ VIR_FREE(compression);
+ goto error;
+ }
+ VIR_FREE(compression);
+
+ def->data.spice.image = compressionVal;
+ } else if (xmlStrEqual(cur->name, BAD_CAST "jpeg")) {
+ const char *compression = virXMLPropString(cur, "compression");
+ int compressionVal;
+
+ if (!compression) {
+ virDomainReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("spice jpeg missing compression"));
+ goto error;
+ }
+
+ if ((compressionVal =
+ virDomainGraphicsSpiceJpegCompressionTypeFromString(compression)) < 0) {
+ virDomainReportError(VIR_ERR_INTERNAL_ERROR,
+ _("unknown spice jpeg compression %s"),
+ compression);
+ VIR_FREE(compression);
+ goto error;
+ }
+ VIR_FREE(compression);
+
+ def->data.spice.jpeg = compressionVal;
+ } else if (xmlStrEqual(cur->name, BAD_CAST "zlib")) {
+ const char *compression = virXMLPropString(cur, "compression");
+ int compressionVal;
+
+ if (!compression) {
+ virDomainReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("spice zlib missing compression"));
+ goto error;
+ }
+
+ if ((compressionVal =
+ virDomainGraphicsSpiceZlibCompressionTypeFromString(compression)) < 0) {
+ virDomainReportError(VIR_ERR_INTERNAL_ERROR,
+ _("unknown spice zlib compression %s"),
+ compression);
+ VIR_FREE(compression);
+ goto error;
+ }
+
+ def->data.spice.zlib = compressionVal;
+ } else if (xmlStrEqual(cur->name, BAD_CAST "playback")) {
+ const char *compression = virXMLPropString(cur, "compression");
+ int compressionVal;
+
+ if (!compression) {
+ virDomainReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("spice playback missing compression"));
+ goto error;
+ }
+
+ if ((compressionVal =
+ virDomainGraphicsSpicePlaybackCompressionTypeFromString(compression)) < 0) {
+ virDomainReportError(VIR_ERR_INTERNAL_ERROR,
+ _("unknown spice playback compression"));
+ VIR_FREE(compression);
+ goto error;
+
+ }
+ VIR_FREE(compression);
+
+ def->data.spice.playback = compressionVal;
}
}
cur = cur->next;
@@ -7817,6 +7931,22 @@ virDomainGraphicsDefFormat(virBufferPtr buf,
virDomainGraphicsSpiceChannelNameTypeToString(i),
virDomainGraphicsSpiceChannelModeTypeToString(mode));
}
+ if (def->data.spice.image !=
+ VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_LAST)
+ virBufferVSprintf(buf, " <image compression='%s'/>\n",
+ virDomainGraphicsSpiceImageCompressionTypeToString(def->data.spice.image));
+ if (def->data.spice.jpeg !=
+ VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_LAST)
+ virBufferVSprintf(buf, " <jpeg compression='%s'/>\n",
+ virDomainGraphicsSpiceJpegCompressionTypeToString(def->data.spice.jpeg));
+ if (def->data.spice.zlib !=
+ VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_LAST)
+ virBufferVSprintf(buf, " <zlib compression='%s'/>\n",
+ virDomainGraphicsSpiceZlibCompressionTypeToString(def->data.spice.zlib));
+ if (def->data.spice.playback !=
+ VIR_DOMAIN_GRAPHICS_SPICE_PLAYBACK_COMPRESSION_LAST)
+ virBufferVSprintf(buf, " <playback compression='%s'/>\n",
+ virDomainGraphicsSpicePlaybackCompressionTypeToString(def->data.spice.playback));
}
if (children) {
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 95bd11e..e36f0ed 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -658,6 +658,40 @@ enum virDomainGraphicsSpiceChannelMode {
VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_LAST
};
+enum virDomainGraphicsSpiceImageCompression {
+ VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_AUTO_GLZ,
+ VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_AUTO_LZ,
+ VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_QUIC,
+ VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_GLZ,
+ VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_LZ,
+ VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_OFF,
+
+ VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_LAST
+};
+
+enum virDomainGraphicsSpiceJpegCompression {
+ VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_AUTO,
+ VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_NEVER,
+ VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_ALWAYS,
+
+ VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_LAST
+};
+
+enum virDomainGraphicsSpiceZlibCompression {
+ VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_AUTO,
+ VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_NEVER,
+ VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_ALWAYS,
+
+ VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_LAST
+};
+
+enum virDomainGraphicsSpicePlaybackCompression {
+ VIR_DOMAIN_GRAPHICS_SPICE_PLAYBACK_COMPRESSION_ON,
+ VIR_DOMAIN_GRAPHICS_SPICE_PLAYBACK_COMPRESSION_OFF,
+
+ VIR_DOMAIN_GRAPHICS_SPICE_PLAYBACK_COMPRESSION_LAST
+};
+
typedef struct _virDomainGraphicsDef virDomainGraphicsDef;
typedef virDomainGraphicsDef *virDomainGraphicsDefPtr;
struct _virDomainGraphicsDef {
@@ -695,6 +729,10 @@ struct _virDomainGraphicsDef {
virDomainGraphicsAuthDef auth;
unsigned int autoport :1;
int channels[VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_LAST];
+ int image;
+ int jpeg;
+ int zlib;
+ int playback;
} spice;
} data;
};
@@ -1423,6 +1461,10 @@ VIR_ENUM_DECL(virDomainInputBus)
VIR_ENUM_DECL(virDomainGraphics)
VIR_ENUM_DECL(virDomainGraphicsSpiceChannelName)
VIR_ENUM_DECL(virDomainGraphicsSpiceChannelMode)
+VIR_ENUM_DECL(virDomainGraphicsSpiceImageCompression)
+VIR_ENUM_DECL(virDomainGraphicsSpiceJpegCompression)
+VIR_ENUM_DECL(virDomainGraphicsSpiceZlibCompression)
+VIR_ENUM_DECL(virDomainGraphicsSpicePlaybackCompression)
/* from libvirt.h */
VIR_ENUM_DECL(virDomainState)
VIR_ENUM_DECL(virDomainSeclabel)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 54e4482..d2aa077 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -262,6 +262,14 @@ virDomainGraphicsSpiceChannelModeTypeFromString;
virDomainGraphicsSpiceChannelModeTypeToString;
virDomainGraphicsSpiceChannelNameTypeFromString;
virDomainGraphicsSpiceChannelNameTypeToString;
+virDomainGraphicsSpiceImageCompressionTypeToString;
+virDomainGraphicsSpiceImageCompressionTypeFromString;
+virDomainGraphicsSpiceJpegCompressionTypeFromString;
+virDomainGraphicsSpiceJpegCompressionTypeToString;
+virDomainGraphicsSpicePlaybackCompressionTypeFromString;
+virDomainGraphicsSpicePlaybackCompressionTypeToString;
+virDomainGraphicsSpiceZlibCompressionTypeFromString;
+virDomainGraphicsSpiceZlibCompressionTypeToString;
virDomainGraphicsTypeFromString;
virDomainGraphicsTypeToString;
virDomainHostdevDefFree;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index fea0068..6272910 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -4032,6 +4032,22 @@ qemuBuildCommandLine(virConnectPtr conn,
break;
}
}
+ if (def->graphics[0]->data.spice.image !=
+ VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_LAST)
+ virBufferVSprintf(&opt, ",image-compression=%s",
+ virDomainGraphicsSpiceImageCompressionTypeToString(def->graphics[0]->data.spice.image));
+ if (def->graphics[0]->data.spice.jpeg !=
+ VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_LAST)
+ virBufferVSprintf(&opt, ",jpeg-wan-compression=%s",
+ virDomainGraphicsSpiceJpegCompressionTypeToString(def->graphics[0]->data.spice.jpeg));
+ if (def->graphics[0]->data.spice.zlib !=
+ VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_LAST)
+ virBufferVSprintf(&opt, ",zlib-glz-wan-compression=%s",
+ virDomainGraphicsSpiceZlibCompressionTypeToString(def->graphics[0]->data.spice.zlib));
+ if (def->graphics[0]->data.spice.playback !=
+ VIR_DOMAIN_GRAPHICS_SPICE_PLAYBACK_COMPRESSION_LAST)
+ virBufferVSprintf(&opt, ",playback-compression=%s",
+ virDomainGraphicsSpicePlaybackCompressionTypeToString(def->graphics[0]->data.spice.playback));
virCommandAddArg(cmd, "-spice");
virCommandAddArgBuffer(cmd, &opt);
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice.args b/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice.args
index c788bb6..70cd35b 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice.args
+++ b/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice.args
@@ -2,6 +2,8 @@ LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=spice \
/usr/bin/qemu -S -M pc -m 214 -smp 1 -nodefaults -monitor \
unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -hda \
/dev/HostVG/QEMUGuest1 -usb -spice port=5903,tls-port=5904,addr=127.0.0.1,\
-x509-dir=/etc/pki/libvirt-spice,tls-channel=main,plaintext-channel=inputs -vga \
+x509-dir=/etc/pki/libvirt-spice,tls-channel=main,plaintext-channel=inputs,\
+image-compression=auto_glz,jpeg-wan-compression=auto,zlib-glz-wan-compression=auto,\
+playback-compression=on -vga \
qxl -global qxl.vram_size=18874368 -device qxl,id=video1,vram_size=33554432,bus=pci.0,addr=0x4 \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice.xml b/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice.xml
index 5d46509..a29f50d 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice.xml
+++ b/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice.xml
@@ -24,6 +24,10 @@
<graphics type='spice' port='5903' tlsPort='5904' autoport='no' listen='127.0.0.1'>
<channel name='main' mode='secure'/>
<channel name='inputs' mode='insecure'/>
+ <image compression='auto_glz'/>
+ <jpeg compression='auto'/>
+ <zlib compression='auto'/>
+ <playback compression='on'/>
</graphics>
<video>
<model type='qxl' vram='18432' heads='1'/>
--
1.7.4.2
3
2
13 Apr '11
This is a series of 3 patches to add network management support for
pHyp driver.
Eduardo Otubo (3):
PHYP: Separating UUID functions in another file
PHYP: Adding basic network functions
PHYP: create, destroy and other network functions
po/POTFILES.in | 1 +
src/Makefile.am | 3 +-
src/phyp/phyp_driver.c | 1066 +++++++++++++++++++++++++++---------------------
src/phyp/phyp_driver.h | 43 ++-
src/phyp/phyp_uuid.c | 834 +++++++++++++++++++++++++++++++++++++
src/phyp/phyp_uuid.h | 44 ++
6 files changed, 1520 insertions(+), 471 deletions(-)
create mode 100644 src/phyp/phyp_uuid.c
create mode 100644 src/phyp/phyp_uuid.h
3
25
[libvirt] [PATCH] - added mapping to Network object - added implementation of select networking functions - virsh net-list and net-info commands now work for esx
by jbarkley 13 Apr '11
by jbarkley 13 Apr '11
13 Apr '11
From: jbarkely <jbarkley(a)willo.(none)>
---
src/esx/esx_network_driver.c | 181 +++++++++++++++++++++++++++++++++++++++-
src/esx/esx_vi.c | 104 ++++++++++++++++++++++-
src/esx/esx_vi.h | 9 ++
src/esx/esx_vi_generator.input | 78 +++++++++++++++++
4 files changed, 366 insertions(+), 6 deletions(-)
diff --git a/src/esx/esx_network_driver.c b/src/esx/esx_network_driver.c
index a64bb8e..c4cc7b4 100644
--- a/src/esx/esx_network_driver.c
+++ b/src/esx/esx_network_driver.c
@@ -34,6 +34,7 @@
#include "esx_vi.h"
#include "esx_vi_methods.h"
#include "esx_util.h"
+#include "md5.h"
#define VIR_FROM_THIS VIR_FROM_ESX
@@ -63,18 +64,190 @@ esxNetworkClose(virConnectPtr conn)
return 0;
}
+static virNetworkPtr
+esxNetworkLookupByName(virConnectPtr conn, const char *name) {
+ //esxPrivate *priv = conn->networkPrivateData;
+ esxPrivate *priv = conn->networkPrivateData;
+ esxVI_String *propertyNameList = NULL;
+ esxVI_ObjectContent *network = NULL;
+ virNetworkPtr virNetwork = NULL;
+ unsigned char uuid[VIR_UUID_BUFLEN];
+ unsigned char md5[MD5_DIGEST_SIZE]; /* MD5_DIGEST_SIZE = VIR_UUID_BUFLEN = 16 */
+
+ if (esxVI_EnsureSession(priv->primary) < 0) {
+ return NULL;
+ }
+
+ if (esxVI_LookupNetworkByName(priv->primary, name, propertyNameList,
+ &network,
+ esxVI_Occurrence_OptionalItem) < 0) {
+ goto cleanup;
+ }
+
+ if (NULL==network) {
+ // raise error
+ ESX_ERROR(VIR_ERR_NO_NETWORK, _("No network with name '%s'"), name);
+ goto cleanup;
+
+ }
+
+ char *name_candidate = NULL;
+ esxVI_GetStringValue(network, "name", &name_candidate, esxVI_Occurrence_OptionalItem);
+
+ md5_buffer(name, strlen(name), md5);
+ virNetwork = virGetNetwork(conn, name, md5);
+
+ cleanup:
+ esxVI_String_Free(&propertyNameList);
+ //esxVI_ObjectContent_Free(&network);
+// printf("virNetwork=%s\n", virNetwork->name);
+ return virNetwork;
+}
+
+static int
+esxListNetworks(virConnectPtr conn, char **const names, int nnames)
+{
+ //setup
+ bool success = false;
+ esxPrivate *priv = conn->networkPrivateData;
+ esxVI_String *propertyNameList = NULL;
+ esxVI_DynamicProperty *dynamicProperty = NULL;
+ esxVI_ObjectContent *networkList = NULL;
+ esxVI_ObjectContent *network = NULL;
+ int count = 0;
+ int i;
+
+ //check args
+ if (names == NULL || nnames < 0) {
+ ESX_ERROR(VIR_ERR_INVALID_ARG, "%s", _("Invalid argument"));
+ return -1;
+ }
+
+ if (nnames == 0) {
+ return 0;
+ }
+
+ //check connection
+ if (esxVI_EnsureSession(priv->primary) < 0) {
+ return -1;
+ }
+
+ //get network(s)
+ if (esxVI_String_AppendValueToList(&propertyNameList,
+ "summary.name") < 0 ||
+ esxVI_LookupNetworkList(priv->primary, propertyNameList,
+ &networkList) < 0) {
+ goto cleanup;
+ }
+
+ for (network = networkList; network != NULL;
+ network = network->_next) {
+ for (dynamicProperty = network->propSet; dynamicProperty != NULL;
+ dynamicProperty = dynamicProperty->_next) {
+ if (STREQ(dynamicProperty->name, "summary.name")) {
+ if (esxVI_AnyType_ExpectType(dynamicProperty->val,
+ esxVI_Type_String) < 0) {
+ goto cleanup;
+ }
+
+ names[count] = strdup(dynamicProperty->val->string);
+
+ if (names[count] == NULL) {
+ virReportOOMError();
+ goto cleanup;
+ }
+
+ ++count;
+ break;
+ } else {
+ VIR_WARN("Unexpected '%s' property", dynamicProperty->name);
+ }
+ }
+ }
+
+ success = true;
+
+ //cleanup
+ cleanup:
+ if (! success) {
+ for (i = 0; i < count; ++i) {
+ VIR_FREE(names[i]);
+ }
+
+ count = -1;
+ }
+
+ esxVI_String_Free(&propertyNameList);
+ esxVI_ObjectContent_Free(&networkList);
+
+ return count;
+}
+
+static int
+esxNumOfNetworks(virConnectPtr conn)
+{
+ //setup
+ esxPrivate *priv = conn->networkPrivateData;
+ esxVI_String *propertyNameList = NULL;
+ esxVI_DynamicProperty *dynamicProperty = NULL;
+ esxVI_ObjectContent *networkList = NULL;
+ esxVI_ObjectContent *network = NULL;
+ int count = 0;
+ int i;
+
+ //check connection
+ if (esxVI_EnsureSession(priv->primary) < 0) {
+ return -1;
+ }
+
+ //get network(s)
+ if (esxVI_String_AppendValueToList(&propertyNameList,
+ "summary.name") < 0 ||
+ esxVI_LookupNetworkList(priv->primary, propertyNameList,
+ &networkList) < 0) {
+ esxVI_String_Free(&propertyNameList);
+ esxVI_ObjectContent_Free(&networkList);
+
+ return -1;
+ }
+
+ for (network = networkList; network != NULL;
+ network = network->_next) {
+ for (dynamicProperty = network->propSet; dynamicProperty != NULL;
+ dynamicProperty = dynamicProperty->_next) {
+ if (STREQ(dynamicProperty->name, "summary.name")) {
+ ++count;
+ break;
+ } else {
+ VIR_WARN("Unexpected '%s' property", dynamicProperty->name);
+ }
+ }
+ }
+
+
+ esxVI_String_Free(&propertyNameList);
+ esxVI_ObjectContent_Free(&networkList);
+
+ return count;
+}
+
+static int esxNumOfDefinedNetworks(virConnectPtr conn)
+{
+ printf("JB-BUG C\n");
+ return 8;
+}
static virNetworkDriver esxNetworkDriver = {
"ESX", /* name */
esxNetworkOpen, /* open */
esxNetworkClose, /* close */
- NULL, /* numOfNetworks */
- NULL, /* listNetworks */
- NULL, /* numOfDefinedNetworks */
+ esxNumOfNetworks, /* numOfNetworks */
+ esxListNetworks, /* listNetworks */
+ esxNumOfDefinedNetworks, /* numOfDefinedNetworks */
NULL, /* listDefinedNetworks */
NULL, /* networkLookupByUUID */
- NULL, /* networkLookupByName */
+ esxNetworkLookupByName, /* networkLookupByName */
NULL, /* networkCreateXML */
NULL, /* networkDefineXML */
NULL, /* networkUndefine */
diff --git a/src/esx/esx_vi.c b/src/esx/esx_vi.c
index 7446ec5..509cf07 100644
--- a/src/esx/esx_vi.c
+++ b/src/esx/esx_vi.c
@@ -109,6 +109,7 @@ ESX_VI__TEMPLATE__FREE(Context,
esxVI_SelectionSpec_Free(&item->selectSet_hostSystemToParent);
esxVI_SelectionSpec_Free(&item->selectSet_hostSystemToVm);
esxVI_SelectionSpec_Free(&item->selectSet_hostSystemToDatastore);
+ esxVI_SelectionSpec_Free(&item->selectSet_hostSystemToNetwork);
esxVI_SelectionSpec_Free(&item->selectSet_computeResourceToHost);
esxVI_SelectionSpec_Free(&item->selectSet_computeResourceToParentToParent);
});
@@ -1483,6 +1484,13 @@ esxVI_BuildSelectSetCollection(esxVI_Context *ctx)
return -1;
}
+ /* HostSystem -> network (Network) */
+ if (esxVI_BuildSelectSet(&ctx->selectSet_hostSystemToNetwork,
+ "hostSystemToNetwork",
+ "HostSystem", "network", NULL) < 0) {
+ return -1;
+ }
+
/* Folder -> parent (Folder, Datacenter) */
if (esxVI_BuildSelectSet(&ctx->selectSet_computeResourceToParentToParent,
"managedEntityToParent",
@@ -1543,9 +1551,13 @@ esxVI_EnsureSession(esxVI_Context *ctx)
* Query the session manager for the current session of this connection
* and re-login if there is no current session for this connection.
*/
+
if (esxVI_String_AppendValueToList(&propertyNameList,
- "currentSession") < 0 ||
- esxVI_LookupObjectContentByType(ctx, ctx->service->sessionManager,
+ "currentSession") < 0) {
+ goto cleanup;
+ }
+
+ if (esxVI_LookupObjectContentByType(ctx, ctx->service->sessionManager,
"SessionManager", propertyNameList,
&sessionManager,
esxVI_Occurrence_RequiredItem) < 0) {
@@ -1649,6 +1661,8 @@ esxVI_LookupObjectContentByType(esxVI_Context *ctx,
objectSpec->selectSet = ctx->selectSet_hostSystemToVm;
} else if (STREQ(type, "Datastore")) {
objectSpec->selectSet = ctx->selectSet_hostSystemToDatastore;
+ } else if (STREQ(type, "Network")) {
+ objectSpec->selectSet = ctx->selectSet_hostSystemToNetwork;
} else {
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
_("Invalid lookup of '%s' from '%s'"),
@@ -2474,6 +2488,92 @@ esxVI_LookupDatastoreList(esxVI_Context *ctx, esxVI_String *propertyNameList,
esxVI_Occurrence_OptionalList);
}
+int
+esxVI_LookupNetworkList(esxVI_Context *ctx,
+ esxVI_String *propertyNameList,
+ esxVI_ObjectContent **networkList)
+{
+ return esxVI_LookupObjectContentByType(ctx, ctx->hostSystem->_reference,
+ "Network", propertyNameList,
+ networkList,
+ esxVI_Occurrence_OptionalList);
+}
+
+int
+esxVI_LookupNetworkByName(esxVI_Context *ctx, const char *name,
+ esxVI_String *propertyNameList,
+ esxVI_ObjectContent **network,
+ esxVI_Occurrence occurrence)
+{
+ int result = -1;
+ esxVI_String *completePropertyNameList = NULL;
+ esxVI_ObjectContent *networkList = NULL;
+ esxVI_ObjectContent *candidate = NULL;
+ char *name_candidate = NULL;
+
+ if (network == NULL || *network != NULL) {
+ ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid argument"));
+ return -1;
+ }
+
+
+ if (esxVI_String_DeepCopyList(&completePropertyNameList,
+ propertyNameList) < 0 ||
+ esxVI_String_AppendValueToList(&completePropertyNameList, "name") < 0 ||
+ esxVI_LookupNetworkList(ctx, completePropertyNameList,
+ &networkList) < 0) {
+ goto cleanup;
+ }
+
+ for (candidate = networkList; candidate != NULL;
+ candidate = candidate->_next) {
+ VIR_FREE(name_candidate);
+
+ /*
+ if (esxVI_GetVirtualMachineIdentity(candidate, NULL, &name_candidate,
+ NULL) < 0) {
+ goto cleanup;
+ }
+ */
+ if (esxVI_GetStringValue(candidate, "name", &name_candidate,
+ esxVI_Occurrence_OptionalItem) < 0) {
+ goto cleanup;
+ }
+
+ if (STRNEQ(name, name_candidate)) {
+ continue;
+ }
+
+ if (esxVI_ObjectContent_DeepCopy(network, candidate) < 0) {
+ goto cleanup;
+ }
+
+ break;
+ }
+
+ /*
+ if (*network == NULL) {
+ if (occurrence == esxVI_Occurrence_OptionalItem) {
+ result = 0;
+
+ goto cleanup;
+ } else {
+ ESX_VI_ERROR(VIR_ERR_NO_NETWORK,
+ _("Could not find network with name '%s'"), name);
+ goto cleanup;
+ }
+ }
+ */
+
+ result = 0;
+
+ cleanup:
+ esxVI_String_Free(&completePropertyNameList);
+ esxVI_ObjectContent_Free(&networkList);
+ //VIR_FREE(name_candidate);
+
+ return result;
+}
int
diff --git a/src/esx/esx_vi.h b/src/esx/esx_vi.h
index e150dbf..cbd6068 100644
--- a/src/esx/esx_vi.h
+++ b/src/esx/esx_vi.h
@@ -165,6 +165,7 @@ struct _esxVI_Context {
esxVI_SelectionSpec *selectSet_hostSystemToParent;
esxVI_SelectionSpec *selectSet_hostSystemToVm;
esxVI_SelectionSpec *selectSet_hostSystemToDatastore;
+ esxVI_SelectionSpec *selectSet_hostSystemToNetwork;
esxVI_SelectionSpec *selectSet_computeResourceToHost;
esxVI_SelectionSpec *selectSet_computeResourceToParentToParent;
bool hasQueryVirtualDiskUuid;
@@ -367,11 +368,19 @@ int esxVI_LookupVirtualMachineByUuidAndPrepareForTask
int esxVI_LookupDatastoreList(esxVI_Context *ctx, esxVI_String *propertyNameList,
esxVI_ObjectContent **datastoreList);
+int esxVI_LookupNetworkList(esxVI_Context *ctx, esxVI_String *propertyNameList,
+ esxVI_ObjectContent **networkList);
+
int esxVI_LookupDatastoreByName(esxVI_Context *ctx, const char *name,
esxVI_String *propertyNameList,
esxVI_ObjectContent **datastore,
esxVI_Occurrence occurrence);
+int esxVI_LookupNetworkByName(esxVI_Context *ctx, const char *name,
+ esxVI_String *propertyNameList,
+ esxVI_ObjectContent **network,
+ esxVI_Occurrence occurrence);
+
int esxVI_LookupDatastoreByAbsolutePath(esxVI_Context *ctx,
const char *absolutePath,
esxVI_String *propertyNameList,
diff --git a/src/esx/esx_vi_generator.input b/src/esx/esx_vi_generator.input
index 44d1d9b..86c4b12 100644
--- a/src/esx/esx_vi_generator.input
+++ b/src/esx/esx_vi_generator.input
@@ -334,6 +334,84 @@ object HostNasVolume extends HostFileSystemVolume
String userName o
end
+object HostNetCapabilities
+end
+
+object HostIpRouteConfig
+end
+
+object HostDnsConfig
+end
+
+object HostIpRouteConfig
+end
+
+object HostNetworkConfig
+end
+
+object HostNetworkInfo
+end
+
+object HostNetworkSystem
+ HostNetCapabilities capabilities rl
+ HostIpRouteConfig consoleIpRuteConfig r
+ HostDnsConfig dnsConfig r
+ HostIpRouteConfig ipRouteConfig r
+ HostNetworkConfig networkConfig r
+ HostNetworkInfo networkInfo r
+end
+
+
+object HostIpRouteConfig
+end
+
+object HostVirtualNic
+end
+
+object HostDhcpService
+end
+
+object HostDnsConfig
+end
+
+object HostNatService
+end
+
+object PhysicalNic
+end
+
+object HostPortGroup
+end
+
+object HostProxySwitch
+end
+
+object HostIpRouteTableInfo
+end
+
+object HostVirtualNic
+end
+
+object HostVirtualSwitch
+end
+
+object HostNetworkInfo
+ Boolean atBootIpV6Enabled r
+ HostIpRouteConfig consoleIpRouteConfig r
+ HostVirtualNic consoleVnic rl
+ HostDhcpService dhcp rl
+ HostDnsConfig dnsConfig r
+ HostIpRouteConfig ipRouteConfig r
+ Boolean ipV6Enabled r
+ HostNatService nat rl
+ PhysicalNic pnic rl
+ HostPortGroup portgroup rl
+ HostProxySwitch proxySwitch rl
+ HostIpRouteTableInfo routeTableInfo r
+ HostVirtualNic vnic rl
+ HostVirtualSwitch vswitch rl
+end
+
object HostScsiDiskPartition
String diskName r
--
1.7.4.1
4
3
Thanks , Hahn!
I think I get your point ,libvirt or the host machine is independent from the guest OS.
but ,as I know ,on the VMware ESX server , they supply an extra tool called vmware-tools which can get more information
about the Guest OS,including the network info. How did they do this?
Now I had to write a tool to get more information about the active Guest OS using KVM hypervisor , have no idea how to
who can help me ?
Sincerely
wade
2
1
13 Apr '11
Hi all,
Currently "virsh setmem" is not allowed to use against an inactive domain.
This is yet another approach to configure inactive domain's memory size.
The approach before was closed in "virsh" command:
http://www.redhat.com/archives/libvir-list/2011-February/msg01074.html
This time a new libvirt API is introduced to achieve this.
*[PATCH 1/5] setmem: introduce a new libvirt API (virDomainSetMemoryFlags)
*[PATCH 2/5] setmem: implement the call back member for new API on each driver
*[PATCH 3/5] setmem: implement the code to address the new API in the qemu driver
*[PATCH 4/5] setmem: implement the remote protocol to address the new API
*[PATCH 5/5] setmem: add the new options to "virsh setmem" command
Best regards,
Taku Izumi
5
28
[libvirt] [PATCH 0/3] Expose the libvirtd event loop to apps as an API
by Daniel P. Berrange 13 Apr '11
by Daniel P. Berrange 13 Apr '11
13 Apr '11
We provide the virEventRegister() API to let applications provide
a set of callbacks to integrate with their existing event loop.
Not all apps have an existing event loop and forcing them to write
one themselves is an undue burden, which they often get wrong. We
have an event loop impl used by libvirtd that could be used by
applications. This series exposes it via two new public APIs. Apps
are free to ignore these new APIs and provide their own impl, but
this should help the common case.
4
11