src/xs_internal.c: fix the connection and GetType initialization.
Daniel
+Tue Jun 13 18:35:22 EDT 2006 Daniel Veillard <veillard@redhat.com>
+
+ * src/libvirt.c src/xen_internal.c src/xend_internal.c
+ src/xs_internal.c: fix the connection and GetType initialization.
+
Tue Jun 13 16:37:27 EDT 2006 Daniel Veillard <veillard@redhat.com>
* docs//*: rebuilt the documentation
virConnectPtr
virConnectOpen(const char *name)
{
- int i, res;
+ int i, res, for_xen = 0;
virConnectPtr ret = NULL;
if (!initialized)
virInitialize();
+ if (name == NULL) {
+ name = "Xen";
+ for_xen = 1;
+ } else if (strncasecmp(name, "xen", 3)) {
+ for_xen = 1;
+ }
+
ret = virGetConnect();
if (ret == NULL) {
virLibConnError(NULL, VIR_ERR_NO_MEMORY, "Allocating connection");
* For a default connect to Xen make sure we manage to contact
* all related drivers.
*/
- if ((res < 0) && (name == NULL) &&
- (!strncmp(virDriverTab[i]->name, "Xen", 3)))
+ if ((res < 0) && (for_xen) &&
+ (!strncasecmp(virDriverTab[i]->name, "xen", 3)))
goto failed;
if (res == 0)
ret->drivers[ret->nb_drivers++] = virDriverTab[i];
if (!initialized)
virInitialize();
+ if (name == NULL)
+ name = "Xen";
+
ret = virGetConnect();
if (ret == NULL) {
virLibConnError(NULL, VIR_ERR_NO_MEMORY, "Allocating connection");
virConnectGetType(virConnectPtr conn)
{
int i;
+ const char *ret;
if (!VIR_IS_CONNECT(conn)) {
virLibConnError(conn, VIR_ERR_INVALID_CONN, __FUNCTION__);
return (NULL);
}
+ for (i = 0;i < conn->nb_drivers;i++) {
+ if ((conn->drivers[i] != NULL) &&
+ (conn->drivers[i]->type != NULL)) {
+ ret = conn->drivers[i]->type(conn);
+ if (ret != NULL)
+ return(ret);
+ }
+ }
for (i = 0;i < conn->nb_drivers;i++) {
if ((conn->drivers[i] != NULL) &&
(conn->drivers[i]->name != NULL)) {
#define XEN_HYPERVISOR_SOCKET "/proc/xen/privcmd"
+static const char * xenHypervisorGetType(virConnectPtr conn);
+
static virDriver xenHypervisorDriver = {
"Xen",
(DOM0_INTERFACE_VERSION >> 24) * 1000000 +
NULL, /* init */
xenHypervisorOpen, /* open */
xenHypervisorClose, /* close */
- NULL, /* type */
+ xenHypervisorGetType, /* type */
xenHypervisorGetVersion, /* version */
NULL, /* nodeGetInfo */
xenHypervisorListDomains, /* listDomains */
{
int ret;
- if ((name != NULL) && (strcmp(name, "xen")))
+ if ((name != NULL) && (strcasecmp(name, "xen")))
return(-1);
conn->handle = -1;
return (0);
}
+/**
+ * xenHypervisorGetType:
+ * @conn: pointer to the Xen Hypervisor block
+ *
+ * Get the version level of the Hypervisor running.
+ *
+ * Returns -1 in case of error, 0 otherwise. if the version can't be
+ * extracted by lack of capacities returns 0 and @hvVer is 0, otherwise
+ * @hvVer value is major * 1,000,000 + minor * 1,000 + release
+ */
+static const char *
+xenHypervisorGetType(virConnectPtr conn)
+{
+ if (!VIR_IS_CONNECT(conn)) {
+ virXenError(VIR_ERR_INVALID_CONN, __FUNCTION__, 0);
+ return (NULL);
+ }
+ return("Xen");
+}
+
/**
* xenHypervisorGetVersion:
* @conn: pointer to the connection block
#include "xend_internal.h"
#include "xen_internal.h" /* for DOM0_INTERFACE_VERSION */
+static const char * xenDaemonGetType(virConnectPtr conn);
static int xenDaemonNodeGetInfo(virConnectPtr conn, virNodeInfoPtr info);
static int xenDaemonGetVersion(virConnectPtr conn, unsigned long *hvVer);
NULL, /* init */
xenDaemonOpen, /* open */
xenDaemonClose, /* close */
- NULL, /* type */
+ xenDaemonGetType, /* type */
xenDaemonGetVersion, /* version */
xenDaemonNodeGetInfo, /* nodeGetInfo */
NULL, /* listDomains */
return (ret);
}
+/**
+ * xenDaemonGetType:
+ * @conn: pointer to the Xen Daemon block
+ *
+ * Get the version level of the Hypervisor running.
+ *
+ * Returns -1 in case of error, 0 otherwise. if the version can't be
+ * extracted by lack of capacities returns 0 and @hvVer is 0, otherwise
+ * @hvVer value is major * 1,000,000 + minor * 1,000 + release
+ */
+static const char *
+xenDaemonGetType(virConnectPtr conn)
+{
+ if (!VIR_IS_CONNECT(conn)) {
+ virXendError(conn, VIR_ERR_INVALID_CONN, __FUNCTION__);
+ return (NULL);
+ }
+ return("XenDaemon");
+}
+
/**
* xenDaemonGetVersion:
* @conn: pointer to the Xen Daemon block
int
xenStoreOpen(virConnectPtr conn, const char *name, int flags)
{
- if ((name != NULL) && (strcmp(name, "xen")))
+ if ((name != NULL) && (strcasecmp(name, "xen")))
return(-1);
if (flags & VIR_DRV_OPEN_RO)