[libvirt] [PATCH 12/24] maint: improve VIR_ERR_INVALID_DOMAIN usage

Eric Blake eblake at redhat.com
Sat Dec 28 16:11:47 UTC 2013


In datatype.c, virGetDomainSnapshot could result in the message:

error: invalid domain pointer in bad domain

Furthermore, while there are a few functions in libvirt.c that
only care about a virDomainPtr without regards to the connection
(such as virDomainGetName), most functions also require a valid
connection.  Yet several functions were blindly derefencing the
conn member without checking it for validity first (such as
virDomainOpenConsole).  Rather than try and correct all usage
of VIR_IS_DOMAIN vs. VIR_IS_CONNECTED_DOMAIN, it is easier to
just blindly require that a valid domain object always has a
valid connection object (which should be true anyways, since
every domain object holds a reference to its connection, so the
connection will not be closed until all domain objects have
also been closed to release their reference).

After this patch, all places that validate a domain consistently
report:

error: invalid domain pointer in someFunc

* src/datatypes.h (virCheckDomainReturn, virCheckDomainGoto): New
macros.
* src/datatypes.c (virGetDomainSnapshot): Use new macro.
(virLibConnError): Delete unused macro.

Signed-off-by: Eric Blake <eblake at redhat.com>
---
 po/POTFILES.in     |    1 -
 src/datatypes.c    |   18 +-
 src/datatypes.h    |   23 ++
 src/libvirt-lxc.c  |   11 +-
 src/libvirt-qemu.c |   18 +-
 src/libvirt.c      | 1055 +++++++++++++---------------------------------------
 6 files changed, 284 insertions(+), 842 deletions(-)

diff --git a/po/POTFILES.in b/po/POTFILES.in
index 49dfc9c..0359b2f 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -32,7 +32,6 @@ src/cpu/cpu_generic.c
 src/cpu/cpu_map.c
 src/cpu/cpu_powerpc.c
 src/cpu/cpu_x86.c
-src/datatypes.c
 src/driver.c
 src/esx/esx_driver.c
 src/esx/esx_network_driver.c
diff --git a/src/datatypes.c b/src/datatypes.c
index b765ec8..044afae 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -31,11 +31,6 @@

 #define VIR_FROM_THIS VIR_FROM_NONE

-#define virLibConnError(code, ...)                                \
-    virReportErrorHelper(VIR_FROM_THIS, code, __FILE__,           \
-                         __FUNCTION__, __LINE__, __VA_ARGS__)
-
-
 virClassPtr virConnectClass;
 virClassPtr virConnectCloseCallbackDataClass;
 virClassPtr virDomainClass;
@@ -796,22 +791,19 @@ virGetDomainSnapshot(virDomainPtr domain, const char *name)
     if (virDataTypesInitialize() < 0)
         return NULL;

-    if (!VIR_IS_DOMAIN(domain)) {
-        virLibConnError(VIR_ERR_INVALID_DOMAIN, "%s", _("bad domain"));
-        return NULL;
-    }
-    virCheckNonNullArgReturn(name, NULL);
+    virCheckDomainGoto(domain, error);
+    virCheckNonNullArgGoto(name, error);

     if (!(ret = virObjectNew(virDomainSnapshotClass)))
-        return NULL;
+        goto error;
     if (VIR_STRDUP(ret->name, name) < 0)
-        goto cleanup;
+        goto error;

     ret->domain = virObjectRef(domain);

     return ret;

-cleanup:
+error:
     virObjectUnref(ret);
     return NULL;
 }
diff --git a/src/datatypes.h b/src/datatypes.h
index e3d8da0..eda4b9c 100644
--- a/src/datatypes.h
+++ b/src/datatypes.h
@@ -64,6 +64,29 @@ extern virClassPtr virStoragePoolClass;
     (virObjectIsClass((obj), virDomainClass))
 # define VIR_IS_CONNECTED_DOMAIN(obj) \
     (VIR_IS_DOMAIN(obj) && virObjectIsClass((obj)->conn, virConnectClass))
+# define virCheckDomainReturn(obj, retval)                              \
+    do {                                                                \
+        virDomainPtr _dom = (obj);                                      \
+        if (!virObjectIsClass(_dom, virDomainClass) ||                  \
+            !virObjectIsClass(_dom->conn, virConnectClass)) {           \
+            virReportErrorHelper(VIR_FROM_DOM, VIR_ERR_INVALID_DOMAIN,  \
+                                 __FILE__, __FUNCTION__, __LINE__,      \
+                                 __FUNCTION__);                         \
+            virDispatchError(NULL);                                     \
+            return retval;                                              \
+        }                                                               \
+    } while (0)
+# define virCheckDomainGoto(obj, label)                                 \
+    do {                                                                \
+        virDomainPtr _dom = (obj);                                      \
+        if (!virObjectIsClass(_dom, virDomainClass) ||                  \
+            !virObjectIsClass(_dom->conn, virConnectClass)) {           \
+            virReportErrorHelper(VIR_FROM_DOM, VIR_ERR_INVALID_DOMAIN,  \
+                                 __FILE__, __FUNCTION__, __LINE__,      \
+                                 __FUNCTION__);                         \
+            goto label;                                                 \
+        }                                                               \
+    } while (0)

 # define VIR_IS_NETWORK(obj) \
     (virObjectIsClass((obj), virNetworkClass))
diff --git a/src/libvirt-lxc.c b/src/libvirt-lxc.c
index ae8bc88..5de07c3 100644
--- a/src/libvirt-lxc.c
+++ b/src/libvirt-lxc.c
@@ -36,10 +36,6 @@

 #define VIR_FROM_THIS VIR_FROM_NONE

-#define virLibDomainError(domain, error, info)                          \
-    virReportErrorHelper(VIR_FROM_DOM, error, __FILE__, __FUNCTION__,   \
-                         __LINE__, info)
-
 /**
  * virDomainLxcOpenNamespace:
  * @domain: a domain object
@@ -70,12 +66,7 @@ virDomainLxcOpenNamespace(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

     virCheckNonNullArgGoto(fdlist, error);
diff --git a/src/libvirt-qemu.c b/src/libvirt-qemu.c
index 79e8e6b..83d756a 100644
--- a/src/libvirt-qemu.c
+++ b/src/libvirt-qemu.c
@@ -30,10 +30,6 @@

 #define VIR_FROM_THIS VIR_FROM_NONE

-#define virLibDomainError(domain, error, info)                          \
-    virReportErrorHelper(VIR_FROM_DOM, error, __FILE__, __FUNCTION__,   \
-                         __LINE__, info)
-
 /**
  * virDomainQemuMonitorCommand:
  * @domain: a domain object
@@ -77,12 +73,7 @@ virDomainQemuMonitorCommand(virDomainPtr domain, const char *cmd,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

     virCheckNonNullArgGoto(result, error);
@@ -205,12 +196,7 @@ virDomainQemuAgentCommand(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
-
+    virCheckDomainReturn(domain, NULL);
     conn = domain->conn;

     virCheckReadOnlyGoto(conn->flags, error);
diff --git a/src/libvirt.c b/src/libvirt.c
index e0b0b32..accbe69 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -1908,11 +1908,8 @@ virDomainGetConnect(virDomainPtr dom)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
+    virCheckDomainReturn(dom, NULL);
+
     return dom->conn;
 }

@@ -2236,13 +2233,9 @@ virDomainDestroy(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainDestroy) {
@@ -2300,13 +2293,9 @@ virDomainDestroyFlags(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainDestroyFlags) {
@@ -2341,11 +2330,8 @@ virDomainFree(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+
     virObjectUnref(domain);
     return 0;
 }
@@ -2375,11 +2361,7 @@ virDomainRef(virDomainPtr domain)

     virResetLastError();

-    if ((!VIR_IS_CONNECTED_DOMAIN(domain))) {
-        virLibConnError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);

     virObjectRef(domain);
     return 0;
@@ -2409,15 +2391,11 @@ virDomainSuspend(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
+
     if (conn->driver->domainSuspend) {
         int ret;
         ret = conn->driver->domainSuspend(domain);
@@ -2455,15 +2433,11 @@ virDomainResume(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
+
     if (conn->driver->domainResume) {
         int ret;
         ret = conn->driver->domainResume(domain);
@@ -2519,12 +2493,7 @@ virDomainPMSuspendForDuration(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;

     virCheckReadOnlyGoto(conn->flags, error);
@@ -2568,12 +2537,7 @@ virDomainPMWakeup(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;

     virCheckReadOnlyGoto(conn->flags, error);
@@ -2619,13 +2583,10 @@ virDomainSave(virDomainPtr domain, const char *to)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(to, error);

     if (conn->driver->domainSave) {
@@ -2706,13 +2667,10 @@ virDomainSaveFlags(virDomainPtr domain, const char *to,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(to, error);

     if ((flags & VIR_DOMAIN_SAVE_RUNNING) && (flags & VIR_DOMAIN_SAVE_PAUSED)) {
@@ -3050,13 +3008,10 @@ virDomainCoreDump(virDomainPtr domain, const char *to, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(to, error);

     if ((flags & VIR_DUMP_CRASH) && (flags & VIR_DUMP_LIVE)) {
@@ -3138,11 +3093,7 @@ virDomainScreenshot(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
+    virCheckDomainReturn(domain, NULL);
     if (!VIR_IS_STREAM(stream)) {
         virLibConnError(VIR_ERR_INVALID_STREAM, __FUNCTION__);
         return NULL;
@@ -3196,15 +3147,11 @@ virDomainShutdown(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
+
     if (conn->driver->domainShutdown) {
         int ret;
         ret = conn->driver->domainShutdown(domain);
@@ -3257,15 +3204,11 @@ virDomainShutdownFlags(virDomainPtr domain, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
+
     if (conn->driver->domainShutdownFlags) {
         int ret;
         ret = conn->driver->domainShutdownFlags(domain, flags);
@@ -3319,15 +3262,11 @@ virDomainReboot(virDomainPtr domain, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
+
     if (conn->driver->domainReboot) {
         int ret;
         ret = conn->driver->domainReboot(domain, flags);
@@ -3367,15 +3306,11 @@ virDomainReset(virDomainPtr domain, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
+
     if (conn->driver->domainReset) {
         int ret;
         ret = conn->driver->domainReset(domain, flags);
@@ -3408,11 +3343,8 @@ virDomainGetName(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
+    virCheckDomainReturn(domain, NULL);
+
     return domain->name;
 }

@@ -3433,11 +3365,7 @@ virDomainGetUUID(virDomainPtr domain, unsigned char *uuid)

     virResetLastError();

-    if (!VIR_IS_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(uuid, error);

     memcpy(uuid, &domain->uuid[0], VIR_UUID_BUFLEN);
@@ -3467,11 +3395,7 @@ virDomainGetUUIDString(virDomainPtr domain, char *buf)

     virResetLastError();

-    if (!VIR_IS_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(buf, error);

     virUUIDFormat(domain->uuid, buf);
@@ -3498,11 +3422,8 @@ virDomainGetID(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return (unsigned int)-1;
-    }
+    virCheckDomainReturn(domain, (unsigned int)-1);
+
     return domain->id;
 }

@@ -3525,12 +3446,7 @@ virDomainGetOSType(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
-
+    virCheckDomainReturn(domain, NULL);
     conn = domain->conn;

     if (conn->driver->domainGetOSType) {
@@ -3569,12 +3485,7 @@ virDomainGetMaxMemory(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return 0;
-    }
-
+    virCheckDomainReturn(domain, 0);
     conn = domain->conn;

     if (conn->driver->domainGetMaxMemory) {
@@ -3623,16 +3534,12 @@ virDomainSetMaxMemory(virDomainPtr domain, unsigned long memory)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-    virCheckNonZeroArgGoto(memory, error);
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
+    virCheckNonZeroArgGoto(memory, error);
+
     if (conn->driver->domainSetMaxMemory) {
         int ret;
         ret = conn->driver->domainSetMaxMemory(domain, memory);
@@ -3673,16 +3580,12 @@ virDomainSetMemory(virDomainPtr domain, unsigned long memory)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-    virCheckNonZeroArgGoto(memory, error);
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
+    virCheckNonZeroArgGoto(memory, error);
+
     if (conn->driver->domainSetMemory) {
         int ret;
         ret = conn->driver->domainSetMemory(domain, memory);
@@ -3734,17 +3637,12 @@ virDomainSetMemoryFlags(virDomainPtr domain, unsigned long memory,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonZeroArgGoto(memory, error);

-    conn = domain->conn;
-
     if (conn->driver->domainSetMemoryFlags) {
         int ret;
         ret = conn->driver->domainSetMemoryFlags(domain, memory, flags);
@@ -3793,19 +3691,14 @@ virDomainSetMemoryStatsPeriod(virDomainPtr domain, int period,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);

     /* This must be positive to set the balloon collection period */
     virCheckNonNegativeArgGoto(period, error);

-    conn = domain->conn;
-
     if (conn->driver->domainSetMemoryStatsPeriod) {
         int ret;
         ret = conn->driver->domainSetMemoryStatsPeriod(domain, period, flags);
@@ -3890,20 +3783,16 @@ virDomainSetMemoryParameters(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;
+
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(params, error);
     virCheckPositiveArgGoto(nparams, error);

-    if (virTypedParameterValidateSet(domain->conn, params, nparams) < 0)
+    if (virTypedParameterValidateSet(conn, params, nparams) < 0)
         goto error;

-    conn = domain->conn;
-
     if (conn->driver->domainSetMemoryParameters) {
         int ret;
         ret = conn->driver->domainSetMemoryParameters(domain, params, nparams, flags);
@@ -3967,11 +3856,7 @@ virDomainGetMemoryParameters(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(nparams, error);
     virCheckNonNegativeArgGoto(*nparams, error);
     if (*nparams != 0)
@@ -4032,11 +3917,7 @@ virDomainSetNumaParameters(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckReadOnlyGoto(domain->conn->flags, error);
     virCheckNonNullArgGoto(params, error);
     virCheckPositiveArgGoto(nparams, error);
@@ -4100,11 +3981,7 @@ virDomainGetNumaParameters(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(nparams, error);
     virCheckNonNegativeArgGoto(*nparams, error);
     if (*nparams != 0)
@@ -4158,20 +4035,16 @@ virDomainSetBlkioParameters(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;
+
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(params, error);
     virCheckNonNegativeArgGoto(nparams, error);

-    if (virTypedParameterValidateSet(domain->conn, params, nparams) < 0)
+    if (virTypedParameterValidateSet(conn, params, nparams) < 0)
         goto error;

-    conn = domain->conn;
-
     if (conn->driver->domainSetBlkioParameters) {
         int ret;
         ret = conn->driver->domainSetBlkioParameters(domain, params, nparams, flags);
@@ -4226,11 +4099,7 @@ virDomainGetBlkioParameters(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(nparams, error);
     virCheckNonNegativeArgGoto(*nparams, error);
     if (*nparams != 0)
@@ -4287,11 +4156,7 @@ virDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)

     memset(info, 0, sizeof(virDomainInfo));

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(info, error);

     conn = domain->conn;
@@ -4338,11 +4203,7 @@ virDomainGetState(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(state, error);

     conn = domain->conn;
@@ -4383,12 +4244,7 @@ virDomainGetControlInfo(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(info, error);

     conn = domain->conn;
@@ -4438,12 +4294,7 @@ virDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
-
+    virCheckDomainReturn(domain, NULL);
     conn = domain->conn;

     if ((conn->flags & VIR_CONNECT_RO) && (flags & VIR_DOMAIN_XML_SECURE)) {
@@ -5389,11 +5240,7 @@ virDomainMigrate(virDomainPtr domain,
     virResetLastError();

     /* First checkout the source */
-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
+    virCheckDomainReturn(domain, NULL);
     virCheckReadOnlyGoto(domain->conn->flags, error);

     /* Now checkout the destination */
@@ -5619,11 +5466,7 @@ virDomainMigrate2(virDomainPtr domain,
     virResetLastError();

     /* First checkout the source */
-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
+    virCheckDomainReturn(domain, NULL);
     virCheckReadOnlyGoto(domain->conn->flags, error);

     /* Now checkout the destination */
@@ -5800,11 +5643,7 @@ virDomainMigrate3(virDomainPtr domain,
     virResetLastError();

     /* First checkout the source */
-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
+    virCheckDomainReturn(domain, NULL);
     virCheckReadOnlyGoto(domain->conn->flags, error);

     /* Now checkout the destination */
@@ -6023,11 +5862,7 @@ virDomainMigrateToURI(virDomainPtr domain,
     virResetLastError();

     /* First checkout the source */
-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckReadOnlyGoto(domain->conn->flags, error);

     virCheckNonNullArgGoto(duri, error);
@@ -6186,11 +6021,7 @@ virDomainMigrateToURI2(virDomainPtr domain,
     virResetLastError();

     /* First checkout the source */
-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckReadOnlyGoto(domain->conn->flags, error);

     if (flags & VIR_MIGRATE_NON_SHARED_DISK &&
@@ -6299,11 +6130,7 @@ virDomainMigrateToURI3(virDomainPtr domain,
     virResetLastError();

     /* First checkout the source */
-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckReadOnlyGoto(domain->conn->flags, error);

     if (flags & VIR_MIGRATE_NON_SHARED_DISK &&
@@ -6449,14 +6276,10 @@ virDomainMigratePerform(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainMigratePerform) {
         int ret;
@@ -6667,14 +6490,10 @@ virDomainMigrateBegin3(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
+    virCheckDomainReturn(domain, NULL);
     conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainMigrateBegin3) {
         char *xml;
@@ -6825,14 +6644,10 @@ virDomainMigratePerform3(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainMigratePerform3) {
         int ret;
@@ -6919,14 +6734,10 @@ virDomainMigrateConfirm3(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainMigrateConfirm3) {
         int ret;
@@ -6967,14 +6778,10 @@ virDomainMigrateBegin3Params(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
+    virCheckDomainReturn(domain, NULL);
     conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainMigrateBegin3Params) {
         char *xml;
@@ -7116,14 +6923,10 @@ virDomainMigratePerform3Params(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainMigratePerform3Params) {
         int ret;
@@ -7209,14 +7012,10 @@ virDomainMigrateConfirm3Params(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainMigrateConfirm3Params) {
         int ret;
@@ -7708,11 +7507,7 @@ virDomainGetSchedulerType(virDomainPtr domain, int *nparams)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
+    virCheckDomainReturn(domain, NULL);
     conn = domain->conn;

     if (conn->driver->domainGetSchedulerType){
@@ -7760,11 +7555,7 @@ virDomainGetSchedulerParameters(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);

     virCheckNonNullArgGoto(params, error);
     virCheckNonNullArgGoto(nparams, error);
@@ -7831,11 +7622,7 @@ virDomainGetSchedulerParametersFlags(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);

     virCheckNonNullArgGoto(params, error);
     virCheckNonNullArgGoto(nparams, error);
@@ -7898,21 +7685,16 @@ virDomainSetSchedulerParameters(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(params, error);
     virCheckNonNegativeArgGoto(nparams, error);

-    if (virTypedParameterValidateSet(domain->conn, params, nparams) < 0)
+    if (virTypedParameterValidateSet(conn, params, nparams) < 0)
         goto error;

-    conn = domain->conn;
-
     if (conn->driver->domainSetSchedulerParameters) {
         int ret;
         ret = conn->driver->domainSetSchedulerParameters(domain, params, nparams);
@@ -7960,21 +7742,16 @@ virDomainSetSchedulerParametersFlags(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(params, error);
     virCheckNonNegativeArgGoto(nparams, error);

-    if (virTypedParameterValidateSet(domain->conn, params, nparams) < 0)
+    if (virTypedParameterValidateSet(conn, params, nparams) < 0)
         goto error;

-    conn = domain->conn;
-
     if (conn->driver->domainSetSchedulerParametersFlags) {
         int ret;
         ret = conn->driver->domainSetSchedulerParametersFlags(domain,
@@ -8031,11 +7808,7 @@ virDomainBlockStats(virDomainPtr dom, const char *disk,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
     virCheckNonNullArgGoto(disk, error);
     virCheckNonNullArgGoto(stats, error);
     if (size > sizeof(stats2)) {
@@ -8113,11 +7886,7 @@ virDomainBlockStatsFlags(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
     virCheckNonNullArgGoto(disk, error);
     virCheckNonNullArgGoto(nparams, error);
     virCheckNonNegativeArgGoto(*nparams, error);
@@ -8178,11 +7947,7 @@ virDomainInterfaceStats(virDomainPtr dom, const char *path,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
     virCheckNonNullArgGoto(path, error);
     virCheckNonNullArgGoto(stats, error);
     if (size > sizeof(stats2)) {
@@ -8243,20 +8008,16 @@ virDomainSetInterfaceParameters(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;
+
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(params, error);
     virCheckPositiveArgGoto(nparams, error);

-    if (virTypedParameterValidateSet(domain->conn, params, nparams) < 0)
+    if (virTypedParameterValidateSet(conn, params, nparams) < 0)
         goto error;

-    conn = domain->conn;
-
     if (conn->driver->domainSetInterfaceParameters) {
         int ret;
         ret = conn->driver->domainSetInterfaceParameters(domain, device,
@@ -8314,11 +8075,7 @@ virDomainGetInterfaceParameters(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(nparams, error);
     virCheckNonNegativeArgGoto(*nparams, error);
     if (*nparams != 0)
@@ -8391,11 +8148,7 @@ virDomainMemoryStats(virDomainPtr dom, virDomainMemoryStatPtr stats,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);

     if (!stats || nr_stats == 0)
         return 0;
@@ -8479,15 +8232,10 @@ virDomainBlockPeek(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;

-    virCheckReadOnlyGoto(dom->conn->flags, error);
-
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(disk, error);

     /* Allow size == 0 as an access test. */
@@ -8550,15 +8298,10 @@ virDomainBlockResize(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;

-    virCheckReadOnlyGoto(dom->conn->flags, error);
-
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(disk, error);

     if (conn->driver->domainBlockResize) {
@@ -8625,14 +8368,10 @@ virDomainMemoryPeek(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;

-    virCheckReadOnlyGoto(dom->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);

     /* Note on access to physical memory: A VIR_MEMORY_PHYSICAL flag is
      * a possibility.  However it isn't really useful unless the caller
@@ -8716,11 +8455,7 @@ virDomainGetBlockInfo(virDomainPtr domain, const char *disk,

     memset(info, 0, sizeof(virDomainBlockInfo));

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(disk, error);
     virCheckNonNullArgGoto(info, error);

@@ -8816,12 +8551,9 @@ virDomainUndefine(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainUndefine) {
@@ -8874,12 +8606,9 @@ virDomainUndefineFlags(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainUndefineFlags) {
@@ -9099,12 +8828,9 @@ virDomainCreate(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainCreate) {
@@ -9165,12 +8891,9 @@ virDomainCreateWithFlags(virDomainPtr domain, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainCreateWithFlags) {
@@ -9242,12 +8965,9 @@ virDomainCreateWithFiles(virDomainPtr domain, unsigned int nfiles,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainCreateWithFiles) {
@@ -9289,11 +9009,7 @@ virDomainGetAutostart(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(autostart, error);

     conn = domain->conn;
@@ -9334,15 +9050,10 @@ virDomainSetAutostart(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainSetAutostart) {
         int ret;
@@ -9377,15 +9088,11 @@ virDomainInjectNMI(virDomainPtr domain, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
+
     if (conn->driver->domainInjectNMI) {
         int ret;
         ret = conn->driver->domainInjectNMI(domain, flags);
@@ -9439,15 +9146,11 @@ virDomainSendKey(virDomainPtr domain,
         goto error;
     }

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
+
     if (conn->driver->domainSendKey) {
         int ret;
         ret = conn->driver->domainSendKey(domain, codeset, holdtime,
@@ -9510,17 +9213,11 @@ virDomainSendProcessSignal(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

     virCheckNonZeroArgGoto(pid_value, error);
-
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-
-    conn = domain->conn;
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainSendProcessSignal) {
         int ret;
@@ -9567,17 +9264,12 @@ virDomainSetVcpus(virDomainPtr domain, unsigned int nvcpus)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonZeroArgGoto(nvcpus, error);

-    conn = domain->conn;
-
     if (conn->driver->domainSetVcpus) {
         int ret;
         ret = conn->driver->domainSetVcpus(domain, nvcpus);
@@ -9640,11 +9332,7 @@ virDomainSetVcpusFlags(virDomainPtr domain, unsigned int nvcpus,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckReadOnlyGoto(domain->conn->flags, error);

     if (flags & VIR_DOMAIN_VCPU_GUEST &&
@@ -9717,11 +9405,7 @@ virDomainGetVcpusFlags(virDomainPtr domain, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);

     /* At most one of these two flags should be set.  */
     if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
@@ -9782,13 +9466,10 @@ virDomainPinVcpu(virDomainPtr domain, unsigned int vcpu,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(cpumap, error);
     virCheckPositiveArgGoto(maplen, error);

@@ -9797,8 +9478,6 @@ virDomainPinVcpu(virDomainPtr domain, unsigned int vcpu,
         goto error;
     }

-    conn = domain->conn;
-
     if (conn->driver->domainPinVcpu) {
         int ret;
         ret = conn->driver->domainPinVcpu(domain, vcpu, cpumap, maplen);
@@ -9857,16 +9536,12 @@ virDomainPinVcpuFlags(virDomainPtr domain, unsigned int vcpu,
     VIR_DOMAIN_DEBUG(domain, "vcpu=%u, cpumap=%p, maplen=%d, flags=%x",
                      vcpu, cpumap, maplen, flags);

-    virResetLastError();
-
-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virResetLastError();
+
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(cpumap, error);
     virCheckPositiveArgGoto(maplen, error);

@@ -9875,8 +9550,6 @@ virDomainPinVcpuFlags(virDomainPtr domain, unsigned int vcpu,
         goto error;
     }

-    conn = domain->conn;
-
     if (conn->driver->domainPinVcpuFlags) {
         int ret;
         ret = conn->driver->domainPinVcpuFlags(domain, vcpu, cpumap, maplen, flags);
@@ -9928,11 +9601,8 @@ virDomainGetVcpuPinInfo(virDomainPtr domain, int ncpumaps,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

     virCheckNonNullArgGoto(cpumaps, error);
     virCheckPositiveArgGoto(ncpumaps, error);
@@ -9952,7 +9622,6 @@ virDomainGetVcpuPinInfo(virDomainPtr domain, int ncpumaps,
                             __FUNCTION__);
         goto error;
     }
-    conn = domain->conn;

     if (conn->driver->domainGetVcpuPinInfo) {
         int ret;
@@ -10014,19 +9683,14 @@ virDomainPinEmulator(virDomainPtr domain, unsigned char *cpumap,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

-    virCheckReadOnlyGoto(domain->conn->flags, error);
+    virCheckReadOnlyGoto(conn->flags, error);

     virCheckNonNullArgGoto(cpumap, error);
     virCheckPositiveArgGoto(maplen, error);

-    conn = domain->conn;
-
     if (conn->driver->domainPinEmulator) {
         int ret;
         ret = conn->driver->domainPinEmulator(domain, cpumap, maplen, flags);
@@ -10074,11 +9738,7 @@ virDomainGetEmulatorPinInfo(virDomainPtr domain, unsigned char *cpumap,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);

     virCheckNonNullArgGoto(cpumap, error);
     virCheckPositiveArgGoto(maplen, error);
@@ -10147,11 +9807,7 @@ virDomainGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(info, error);
     virCheckPositiveArgGoto(maxinfo, error);

@@ -10208,12 +9864,7 @@ virDomainGetMaxVcpus(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

     if (conn->driver->domainGetMaxVcpus) {
@@ -10252,16 +9903,11 @@ virDomainGetSecurityLabel(virDomainPtr domain, virSecurityLabelPtr seclabel)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

     virCheckNonNullArgGoto(seclabel, error);

-    conn = domain->conn;
-
     if (conn->driver->domainGetSecurityLabel) {
         int ret;
         ret = conn->driver->domainGetSecurityLabel(domain, seclabel);
@@ -10300,11 +9946,7 @@ virDomainGetSecurityLabelList(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);

     virCheckNonNullArgGoto(seclabels, error);

@@ -10371,11 +10013,7 @@ virDomainSetMetadata(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        goto error;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

     virCheckReadOnlyGoto(conn->flags, error);
@@ -10456,10 +10094,7 @@ virDomainGetMetadata(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        goto error;
-    }
+    virCheckDomainReturn(domain, NULL);

     if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
         (flags & VIR_DOMAIN_AFFECT_CONFIG)) {
@@ -10559,16 +10194,11 @@ virDomainAttachDevice(virDomainPtr domain, const char *xml)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

     virCheckNonNullArgGoto(xml, error);
-
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-    conn = domain->conn;
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainAttachDevice) {
        int ret;
@@ -10620,16 +10250,11 @@ virDomainAttachDeviceFlags(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

     virCheckNonNullArgGoto(xml, error);
-
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-    conn = domain->conn;
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainAttachDeviceFlags) {
         int ret;
@@ -10666,16 +10291,11 @@ virDomainDetachDevice(virDomainPtr domain, const char *xml)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

     virCheckNonNullArgGoto(xml, error);
-
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-    conn = domain->conn;
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainDetachDevice) {
         int ret;
@@ -10743,16 +10363,11 @@ virDomainDetachDeviceFlags(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

     virCheckNonNullArgGoto(xml, error);
-
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-    conn = domain->conn;
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainDetachDeviceFlags) {
         int ret;
@@ -10804,16 +10419,11 @@ virDomainUpdateDeviceFlags(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
+    conn = domain->conn;

     virCheckNonNullArgGoto(xml, error);
-
-    virCheckReadOnlyGoto(domain->conn->flags, error);
-    conn = domain->conn;
+    virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainUpdateDeviceFlags) {
         int ret;
@@ -17036,11 +16646,8 @@ virDomainIsActive(virDomainPtr dom)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibConnError(VIR_ERR_INVALID_CONN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
+
     if (dom->conn->driver->domainIsActive) {
         int ret;
         ret = dom->conn->driver->domainIsActive(dom);
@@ -17072,11 +16679,8 @@ virDomainIsPersistent(virDomainPtr dom)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibConnError(VIR_ERR_INVALID_CONN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
+
     if (dom->conn->driver->domainIsPersistent) {
         int ret;
         ret = dom->conn->driver->domainIsPersistent(dom);
@@ -17107,11 +16711,8 @@ virDomainIsUpdated(virDomainPtr dom)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibConnError(VIR_ERR_INVALID_CONN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
+
     if (dom->conn->driver->domainIsUpdated) {
         int ret;
         ret = dom->conn->driver->domainIsUpdated(dom);
@@ -18037,11 +17638,7 @@ virDomainGetJobInfo(virDomainPtr domain, virDomainJobInfoPtr info)

     memset(info, 0, sizeof(virDomainJobInfo));

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(info, error);

     conn = domain->conn;
@@ -18094,11 +17691,7 @@ virDomainGetJobStats(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);
     virCheckNonNullArgGoto(type, error);
     virCheckNonNullArgGoto(params, error);
     virCheckNonNullArgGoto(nparams, error);
@@ -18140,13 +17733,9 @@ virDomainAbortJob(virDomainPtr domain)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainAbortJob) {
@@ -18188,13 +17777,9 @@ virDomainMigrateSetMaxDowntime(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainMigrateSetMaxDowntime) {
@@ -18232,12 +17817,7 @@ virDomainMigrateGetCompressionCache(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

     virCheckNonNullArgGoto(cacheSize, error);
@@ -18281,13 +17861,9 @@ virDomainMigrateSetCompressionCache(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainMigrateSetCompressionCache) {
@@ -18327,13 +17903,9 @@ virDomainMigrateSetMaxSpeed(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainMigrateSetMaxSpeed) {
@@ -18371,16 +17943,10 @@ virDomainMigrateGetMaxSpeed(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

     virCheckNonNullArgGoto(bandwidth, error);
-
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainMigrateGetMaxSpeed) {
@@ -18443,11 +18009,14 @@ virConnectDomainEventRegisterAny(virConnectPtr conn,
     virResetLastError();

     virCheckConnectReturn(conn, -1);
-    if (dom != NULL &&
-        !(VIR_IS_CONNECTED_DOMAIN(dom) && dom->conn == conn)) {
-        virLibConnError(VIR_ERR_INVALID_CONN, __FUNCTION__);
-        virDispatchError(conn);
-        return -1;
+    if (dom) {
+        virCheckDomainGoto(dom, error);
+        if (dom->conn != conn) {
+            virReportInvalidArg(dom,
+                                _("domain '%s' in %s must match connection"),
+                                dom->name, __FUNCTION__);
+            goto error;
+        }
     }
     virCheckNonNullArgGoto(cb, error);
     virCheckNonNegativeArgGoto(eventID, error);
@@ -18666,13 +18235,9 @@ virDomainManagedSave(virDomainPtr dom, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if ((flags & VIR_DOMAIN_SAVE_RUNNING) && (flags & VIR_DOMAIN_SAVE_PAUSED)) {
@@ -18720,12 +18285,7 @@ virDomainHasManagedSaveImage(virDomainPtr dom, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;

     if (conn->driver->domainHasManagedSaveImage) {
@@ -18763,13 +18323,9 @@ virDomainManagedSaveRemove(virDomainPtr dom, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainManagedSaveRemove) {
@@ -18983,16 +18539,10 @@ virDomainSnapshotCreateXML(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
-
+    virCheckDomainReturn(domain, NULL);
     conn = domain->conn;

     virCheckNonNullArgGoto(xmlDesc, error);
-
     virCheckReadOnlyGoto(conn->flags, error);

     if ((flags & VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT) &&
@@ -19136,11 +18686,7 @@ virDomainSnapshotNum(virDomainPtr domain, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(domain, -1);

     conn = domain->conn;
     if (conn->driver->domainSnapshotNum) {
@@ -19223,12 +18769,7 @@ virDomainSnapshotListNames(virDomainPtr domain, char **names, int nameslen,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

     virCheckNonNullArgGoto(names, error);
@@ -19313,12 +18854,7 @@ virDomainListAllSnapshots(virDomainPtr domain, virDomainSnapshotPtr **snaps,
     if (snaps)
         *snaps = NULL;

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

     if (conn->driver->domainListAllSnapshots) {
@@ -19617,12 +19153,7 @@ virDomainSnapshotLookupByName(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
-
+    virCheckDomainReturn(domain, NULL);
     conn = domain->conn;

     virCheckNonNullArgGoto(name, error);
@@ -19660,12 +19191,7 @@ virDomainHasCurrentSnapshot(virDomainPtr domain, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;

     if (conn->driver->domainHasCurrentSnapshot) {
@@ -19703,12 +19229,7 @@ virDomainSnapshotCurrent(virDomainPtr domain,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
-
+    virCheckDomainReturn(domain, NULL);
     conn = domain->conn;

     if (conn->driver->domainSnapshotCurrent) {
@@ -20118,13 +19639,9 @@ virDomainOpenConsole(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainOpenConsole) {
@@ -20178,13 +19695,9 @@ virDomainOpenChannel(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;
+
     virCheckReadOnlyGoto(conn->flags, error);

     if (conn->driver->domainOpenChannel) {
@@ -20253,15 +19766,10 @@ virDomainBlockJobAbort(virDomainPtr dom, const char *disk,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;

-    virCheckReadOnlyGoto(dom->conn->flags, error);
-
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(disk, error);

     if (conn->driver->domainBlockJobAbort) {
@@ -20311,11 +19819,7 @@ virDomainGetBlockJobInfo(virDomainPtr dom, const char *disk,

     memset(info, 0, sizeof(*info));

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;

     virCheckNonNullArgGoto(disk, error);
@@ -20367,15 +19871,10 @@ virDomainBlockJobSetSpeed(virDomainPtr dom, const char *disk,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;

-    virCheckReadOnlyGoto(dom->conn->flags, error);
-
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(disk, error);

     if (conn->driver->domainBlockJobSetSpeed) {
@@ -20438,15 +19937,10 @@ virDomainBlockPull(virDomainPtr dom, const char *disk,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;

-    virCheckReadOnlyGoto(dom->conn->flags, error);
-
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(disk, error);

     if (conn->driver->domainBlockPull) {
@@ -20555,15 +20049,10 @@ virDomainBlockRebase(virDomainPtr dom, const char *disk,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;

-    virCheckReadOnlyGoto(dom->conn->flags, error);
-
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(disk, error);

     if (flags & VIR_DOMAIN_BLOCK_REBASE_COPY) {
@@ -20671,15 +20160,10 @@ virDomainBlockCommit(virDomainPtr dom, const char *disk,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);
     conn = dom->conn;

-    virCheckReadOnlyGoto(dom->conn->flags, error);
-
+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(disk, error);

     if (conn->driver->domainBlockCommit) {
@@ -20735,12 +20219,7 @@ virDomainOpenGraphics(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(dom, -1);
     virCheckNonNegativeArgGoto(fd, error);

     if (fstat(fd, &sb) < 0) {
@@ -21022,14 +20501,10 @@ virDomainSetBlockIoTune(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
-    virCheckReadOnlyGoto(dom->conn->flags, error);
+    virCheckDomainReturn(dom, -1);
+    conn = dom->conn;

+    virCheckReadOnlyGoto(conn->flags, error);
     virCheckNonNullArgGoto(disk, error);
     virCheckPositiveArgGoto(nparams, error);
     virCheckNonNullArgGoto(params, error);
@@ -21037,8 +20512,6 @@ virDomainSetBlockIoTune(virDomainPtr dom,
     if (virTypedParameterValidateSet(dom->conn, params, nparams) < 0)
         goto error;

-    conn = dom->conn;
-
     if (conn->driver->domainSetBlockIoTune) {
         int ret;
         ret = conn->driver->domainSetBlockIoTune(dom, disk, params, nparams, flags);
@@ -21102,11 +20575,7 @@ virDomainGetBlockIoTune(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);

     virCheckNonNullArgGoto(nparams, error);
     virCheckNonNegativeArgGoto(*nparams, error);
@@ -21234,13 +20703,9 @@ virDomainGetCPUStats(virDomainPtr domain,
                      params, nparams, start_cpu, ncpus, flags);
     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(domain, -1);
     conn = domain->conn;
+
     /* Special cases:
      * start_cpu must be non-negative, or else -1
      * if start_cpu is -1, ncpus must be 1
@@ -21331,11 +20796,7 @@ virDomainGetDiskErrors(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
+    virCheckDomainReturn(dom, -1);

     if (maxerrors)
         virCheckNonNullArgGoto(errors, error);
@@ -21380,12 +20841,7 @@ virDomainGetHostname(virDomainPtr domain, unsigned int flags)

     virResetLastError();

-    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return NULL;
-    }
-
+    virCheckDomainReturn(domain, NULL);
     conn = domain->conn;

     if (conn->driver->domainGetHostname) {
@@ -21482,12 +20938,7 @@ virDomainFSTrim(virDomainPtr dom,

     virResetLastError();

-    if (!VIR_IS_DOMAIN(dom)) {
-        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
-        virDispatchError(NULL);
-        return -1;
-    }
-
+    virCheckDomainReturn(dom, -1);
     virCheckReadOnlyGoto(dom->conn->flags, error);

     if (dom->conn->driver->domainFSTrim) {
-- 
1.8.4.2




More information about the libvir-list mailing list