This commit is contained in:
Karel Zak 2005-12-16 18:41:46 +00:00
parent a02a3266e9
commit c613d7e162
4 changed files with 83 additions and 70 deletions

View File

@ -1,3 +1,8 @@
Fri Dec 16 19:35:29 CET 2005 Karel Zak <kzak@redhat.com>
* src/xml.c src/internal.h src/libvir.c: struct checks cleanup,
add macros VIS_IS_DOMAIN(), VIR_IS_CONNECT() and VIR_IS_CONNECTED_DOMAIN()
Fri Dec 16 14:26:05 CET 2005 Daniel Veillard <veillard@redhat.com> Fri Dec 16 14:26:05 CET 2005 Daniel Veillard <veillard@redhat.com>
* libvir.spec.in src/Makefile.am: cleaned up the spec file, removed * libvir.spec.in src/Makefile.am: cleaned up the spec file, removed

View File

@ -44,6 +44,8 @@ extern "C" {
* are passed down by the uers. * are passed down by the uers.
*/ */
#define VIR_CONNECT_MAGIC 0x4F23DEAD #define VIR_CONNECT_MAGIC 0x4F23DEAD
#define VIR_IS_CONNECT(obj) ((obj) && (obj)->magic==VIR_CONNECT_MAGIC)
/** /**
* VIR_DOMAIN_MAGIC: * VIR_DOMAIN_MAGIC:
@ -52,6 +54,8 @@ extern "C" {
* are passed down by the uers. * are passed down by the uers.
*/ */
#define VIR_DOMAIN_MAGIC 0xDEAD4321 #define VIR_DOMAIN_MAGIC 0xDEAD4321
#define VIR_IS_DOMAIN(obj) ((obj) && (obj)->magic==VIR_DOMAIN_MAGIC)
#define VIR_IS_CONNECTED_DOMAIN(obj) (VIR_IS_DOMAIN(obj) && VIR_IS_CONNECT((obj)->conn))
/* /*
* Flags for Xen connections * Flags for Xen connections

View File

@ -209,9 +209,8 @@ virDomainFreeName(virDomainPtr domain, const char *name ATTRIBUTE_UNUSED) {
*/ */
int int
virConnectClose(virConnectPtr conn) { virConnectClose(virConnectPtr conn) {
if ((conn == NULL) || (conn->magic != VIR_CONNECT_MAGIC)) if (!VIR_IS_CONNECT(conn))
return(-1); return(-1);
virHashFree(conn->domains, (virHashDeallocator) virDomainFreeName); virHashFree(conn->domains, (virHashDeallocator) virDomainFreeName);
conn->magic = -1; conn->magic = -1;
xs_daemon_close(conn->xshandle); xs_daemon_close(conn->xshandle);
@ -233,9 +232,8 @@ virConnectClose(virConnectPtr conn) {
*/ */
const char * const char *
virConnectGetType(virConnectPtr conn) { virConnectGetType(virConnectPtr conn) {
if (conn == NULL) if (!VIR_IS_CONNECT(conn))
return(NULL); return(NULL);
return("Xen"); return("Xen");
} }
@ -256,7 +254,10 @@ int
virConnectGetVersion(virConnectPtr conn, unsigned long *hvVer) { virConnectGetVersion(virConnectPtr conn, unsigned long *hvVer) {
unsigned long ver; unsigned long ver;
if ((conn == NULL) || (hvVer == NULL) || (conn->magic != VIR_CONNECT_MAGIC)) if (!VIR_IS_CONNECT(conn))
return(-1);
if (hvVer == NULL)
return(-1); return(-1);
/* this can't be extracted from the Xenstore */ /* this can't be extracted from the Xenstore */
@ -288,8 +289,10 @@ virConnectListDomains(virConnectPtr conn, int *ids, int maxids) {
long id; long id;
char **idlist = NULL, *endptr; char **idlist = NULL, *endptr;
if ((conn == NULL) || (conn->magic != VIR_CONNECT_MAGIC) || if (!VIR_IS_CONNECT(conn))
(ids == NULL) || (maxids <= 0)) return(-1);
if ((ids == NULL) || (maxids <= 0))
return(-1); return(-1);
t = xs_transaction_start(conn->xshandle); t = xs_transaction_start(conn->xshandle);
@ -336,7 +339,7 @@ virConnectNumOfDomains(virConnectPtr conn) {
unsigned int num; unsigned int num;
char **idlist = NULL; char **idlist = NULL;
if ((conn == NULL) || (conn->magic != VIR_CONNECT_MAGIC)) if (!VIR_IS_CONNECT(conn))
return(-1); return(-1);
t = xs_transaction_start(conn->xshandle); t = xs_transaction_start(conn->xshandle);
@ -371,8 +374,10 @@ virDomainCreateLinux(virConnectPtr conn, const char *kernel_path,
const char *cmdline ATTRIBUTE_UNUSED, const char *cmdline ATTRIBUTE_UNUSED,
unsigned long memory, unsigned long memory,
unsigned int flags ATTRIBUTE_UNUSED) { unsigned int flags ATTRIBUTE_UNUSED) {
if ((conn == NULL) || (conn->magic != VIR_CONNECT_MAGIC) ||
(kernel_path == NULL) || (memory < 4096)) if (!VIR_IS_CONNECT(conn))
return(NULL);
if ((kernel_path == NULL) || (memory < 4096))
return(NULL); return(NULL);
TODO TODO
return(NULL); return(NULL);
@ -451,6 +456,9 @@ virDomainDoStoreQuery(virDomainPtr domain, const char *path) {
char *ret = NULL; char *ret = NULL;
unsigned int len = 0; unsigned int len = 0;
if (!VIR_IS_CONNECTED_DOMAIN(domain))
return(NULL);
snprintf(s, 255, "/local/domain/%d/%s", domain->handle, path); snprintf(s, 255, "/local/domain/%d/%s", domain->handle, path);
s[255] = 0; s[255] = 0;
@ -485,12 +493,11 @@ virDomainDoStoreWrite(virDomainPtr domain, const char *path,
int ret = -1; int ret = -1;
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_CONNECTED_DOMAIN(domain))
return(-1); return(-1);
if ((domain->conn == NULL) || (domain->conn->flags & VIR_CONNECT_RO)) if (domain->conn->flags & VIR_CONNECT_RO)
return(-1); return(-1);
snprintf(s, 255, "/local/domain/%d/%s", domain->handle, path); snprintf(s, 255, "/local/domain/%d/%s", domain->handle, path);
s[255] = 0; s[255] = 0;
@ -523,9 +530,7 @@ virDomainGetVM(virDomainPtr domain)
char query[200]; char query[200];
unsigned int len; unsigned int len;
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_CONNECTED_DOMAIN(domain))
return(NULL);
if ((domain->conn == NULL) || (domain->conn->magic != VIR_CONNECT_MAGIC))
return(NULL); return(NULL);
t = xs_transaction_start(domain->conn->xshandle); t = xs_transaction_start(domain->conn->xshandle);
@ -563,9 +568,7 @@ virDomainGetVMInfo(virDomainPtr domain, const char *vm,
char *ret = NULL; char *ret = NULL;
unsigned int len = 0; unsigned int len = 0;
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_CONNECTED_DOMAIN(domain))
return(NULL);
if ((domain->conn == NULL) || (domain->conn->magic != VIR_CONNECT_MAGIC))
return(NULL); return(NULL);
snprintf(s, 255, "%s/%s", vm, name); snprintf(s, 255, "%s/%s", vm, name);
@ -597,7 +600,9 @@ virDomainLookupByID(virConnectPtr conn, int id) {
char *path; char *path;
virDomainPtr ret; virDomainPtr ret;
if ((conn == NULL) || (conn->magic != VIR_CONNECT_MAGIC) || (id < 0)) if (!VIR_IS_CONNECT(conn))
return(NULL);
if (id < 0)
return(NULL); return(NULL);
path = xs_get_domain_path(conn->xshandle, (unsigned int) id); path = xs_get_domain_path(conn->xshandle, (unsigned int) id);
@ -642,8 +647,9 @@ virDomainLookupByName(virConnectPtr conn, const char *name) {
char prop[200], *tmp; char prop[200], *tmp;
int found = 0; int found = 0;
if (!VIR_IS_CONNECT(conn))
if ((conn == NULL) || (conn->magic != VIR_CONNECT_MAGIC) || (name == NULL)) return(NULL);
if (name == NULL)
return(NULL); return(NULL);
t = xs_transaction_start(conn->xshandle); t = xs_transaction_start(conn->xshandle);
@ -707,9 +713,7 @@ int
virDomainDestroy(virDomainPtr domain) { virDomainDestroy(virDomainPtr domain) {
int ret; int ret;
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_CONNECTED_DOMAIN(domain))
return(-1);
if ((domain->conn == NULL) || (domain->conn->magic != VIR_CONNECT_MAGIC))
return(-1); return(-1);
ret = xenHypervisorDestroyDomain(domain->conn->handle, domain->handle); ret = xenHypervisorDestroyDomain(domain->conn->handle, domain->handle);
if (ret < 0) if (ret < 0)
@ -729,7 +733,7 @@ virDomainDestroy(virDomainPtr domain) {
*/ */
int int
virDomainFree(virDomainPtr domain) { virDomainFree(virDomainPtr domain) {
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_DOMAIN(domain))
return(-1); return(-1);
domain->magic = -1; domain->magic = -1;
domain->handle = -1; domain->handle = -1;
@ -755,9 +759,7 @@ virDomainFree(virDomainPtr domain) {
*/ */
int int
virDomainSuspend(virDomainPtr domain) { virDomainSuspend(virDomainPtr domain) {
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_CONNECTED_DOMAIN(domain))
return(-1);
if ((domain->conn == NULL) || (domain->conn->magic != VIR_CONNECT_MAGIC))
return(-1); return(-1);
return(xenHypervisorPauseDomain(domain->conn->handle, domain->handle)); return(xenHypervisorPauseDomain(domain->conn->handle, domain->handle));
} }
@ -774,9 +776,7 @@ virDomainSuspend(virDomainPtr domain) {
*/ */
int int
virDomainResume(virDomainPtr domain) { virDomainResume(virDomainPtr domain) {
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_CONNECTED_DOMAIN(domain))
return(-1);
if ((domain->conn == NULL) || (domain->conn->magic != VIR_CONNECT_MAGIC))
return(-1); return(-1);
return(xenHypervisorResumeDomain(domain->conn->handle, domain->handle)); return(xenHypervisorResumeDomain(domain->conn->handle, domain->handle));
} }
@ -797,10 +797,9 @@ int
virDomainShutdown(virDomainPtr domain) { virDomainShutdown(virDomainPtr domain) {
int ret; int ret;
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_CONNECTED_DOMAIN(domain))
return(-1);
if ((domain->conn == NULL) || (domain->conn->magic != VIR_CONNECT_MAGIC))
return(-1); return(-1);
/* /*
* this is very hackish, the domU kernel probes for a special * this is very hackish, the domU kernel probes for a special
* node in the xenstore and launch the shutdown command if found. * node in the xenstore and launch the shutdown command if found.
@ -823,7 +822,7 @@ virDomainShutdown(virDomainPtr domain) {
*/ */
const char * const char *
virDomainGetName(virDomainPtr domain) { virDomainGetName(virDomainPtr domain) {
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_DOMAIN(domain))
return(NULL); return(NULL);
return(domain->name); return(domain->name);
} }
@ -838,7 +837,7 @@ virDomainGetName(virDomainPtr domain) {
*/ */
unsigned int unsigned int
virDomainGetID(virDomainPtr domain) { virDomainGetID(virDomainPtr domain) {
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_DOMAIN(domain))
return((unsigned int) -1); return((unsigned int) -1);
return(domain->handle); return(domain->handle);
} }
@ -855,7 +854,7 @@ char *
virDomainGetOSType(virDomainPtr domain) { virDomainGetOSType(virDomainPtr domain) {
char *vm, *str = NULL; char *vm, *str = NULL;
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_DOMAIN(domain))
return(NULL); return(NULL);
vm = virDomainGetVM(domain); vm = virDomainGetVM(domain);
@ -880,8 +879,9 @@ unsigned long
virDomainGetMaxMemory(virDomainPtr domain) { virDomainGetMaxMemory(virDomainPtr domain) {
unsigned long ret = 0; unsigned long ret = 0;
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_CONNECTED_DOMAIN(domain))
return(0); return(0);
if (domain->conn->flags & VIR_CONNECT_RO) { if (domain->conn->flags & VIR_CONNECT_RO) {
char *tmp; char *tmp;
@ -921,8 +921,9 @@ virDomainSetMaxMemory(virDomainPtr domain, unsigned long memory) {
char s[256], v[30]; char s[256], v[30];
struct xs_transaction_handle* t; struct xs_transaction_handle* t;
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC) || if (!VIR_IS_CONNECTED_DOMAIN(domain))
(memory < 4096)) return(-1);
if (memory < 4096)
return(-1); return(-1);
if (domain->conn->flags & VIR_CONNECT_RO) if (domain->conn->flags & VIR_CONNECT_RO)
return(-1); return(-1);
@ -966,10 +967,13 @@ int
virDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info) { virDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info) {
int ret; int ret;
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC) || if (!VIR_IS_CONNECTED_DOMAIN(domain))
(info == NULL))
return(-1); return(-1);
if (info == NULL)
return(-1);
memset(info, 0, sizeof(virDomainInfo)); memset(info, 0, sizeof(virDomainInfo));
if (domain->conn->flags & VIR_CONNECT_RO) { if (domain->conn->flags & VIR_CONNECT_RO) {
char *tmp, **tmp2; char *tmp, **tmp2;
unsigned int nb_vcpus; unsigned int nb_vcpus;

View File

@ -248,11 +248,11 @@ virDomainGetXMLDevices(virDomainPtr domain, virBufferPtr buf) {
char backend[200]; char backend[200];
virConnectPtr conn; virConnectPtr conn;
conn = domain->conn; if (!VIR_IS_CONNECTED_DOMAIN(domain))
if ((conn == NULL) || (conn->magic != VIR_CONNECT_MAGIC))
return(-1); return(-1);
conn = domain->conn;
t = xs_transaction_start(conn->xshandle); t = xs_transaction_start(conn->xshandle);
if (t == NULL) if (t == NULL)
goto done; goto done;
@ -351,11 +351,11 @@ virDomainGetXMLInterfaces(virDomainPtr domain, virBufferPtr buf) {
char backend[200]; char backend[200];
virConnectPtr conn; virConnectPtr conn;
conn = domain->conn; if (!VIR_IS_CONNECTED_DOMAIN(domain))
if ((conn == NULL) || (conn->magic != VIR_CONNECT_MAGIC))
return(-1); return(-1);
conn = domain->conn;
t = xs_transaction_start(conn->xshandle); t = xs_transaction_start(conn->xshandle);
if (t == NULL) if (t == NULL)
goto done; goto done;
@ -402,7 +402,7 @@ static int
virDomainGetXMLBoot(virDomainPtr domain, virBufferPtr buf) { virDomainGetXMLBoot(virDomainPtr domain, virBufferPtr buf) {
char *vm, *str; char *vm, *str;
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC)) if (!VIR_IS_DOMAIN(domain))
return(-1); return(-1);
vm = virDomainGetVM(domain); vm = virDomainGetVM(domain);
@ -455,10 +455,10 @@ virDomainGetXMLDesc(virDomainPtr domain, int flags) {
virBuffer buf; virBuffer buf;
virDomainInfo info; virDomainInfo info;
if ((domain == NULL) || (domain->magic != VIR_DOMAIN_MAGIC) || if (!VIR_IS_DOMAIN(domain))
(flags != 0)) return(NULL);
if (flags != 0)
return(NULL); return(NULL);
if (virDomainGetInfo(domain, &info) < 0) if (virDomainGetInfo(domain, &info) < 0)
return(NULL); return(NULL);