int maxnames)
{
xenUnifiedPrivatePtr priv = conn->privateData;
- int i;
- int ret;
-
- for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
- if (priv->opened[i] && drivers[i]->xenListDefinedDomains) {
- ret = drivers[i]->xenListDefinedDomains(conn, names, maxnames);
- if (ret >= 0) return ret;
- }
- return -1;
+ if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) {
+ return xenXMListDefinedDomains(conn, names, maxnames);
+ } else {
+ return xenDaemonListDefinedDomains(conn, names, maxnames);
+ }
}
static int
xenUnifiedConnectNumOfDefinedDomains(virConnectPtr conn)
{
xenUnifiedPrivatePtr priv = conn->privateData;
- int i;
- int ret;
-
- for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
- if (priv->opened[i] && drivers[i]->xenNumOfDefinedDomains) {
- ret = drivers[i]->xenNumOfDefinedDomains(conn);
- if (ret >= 0) return ret;
- }
- return -1;
+ if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) {
+ return xenXMNumOfDefinedDomains(conn);
+ } else {
+ return xenDaemonNumOfDefinedDomains(conn);
+ }
}
static int
* structure with direct calls in xen_unified.c.
*/
struct xenUnifiedDriver {
- virDrvConnectListDefinedDomains xenListDefinedDomains;
- virDrvConnectNumOfDefinedDomains xenNumOfDefinedDomains;
virDrvDomainCreate xenDomainCreate;
virDrvDomainDefineXML xenDomainDefineXML;
virDrvDomainUndefine xenDomainUndefine;
*
* Returns the number of domain found or -1 in case of error
*/
-static int
+int
xenDaemonNumOfDefinedDomains(virConnectPtr conn)
{
struct sexpr *root = NULL;
int ret = -1;
struct sexpr *_for_i, *node;
- xenUnifiedPrivatePtr priv = conn->privateData;
-
- /* xm_internal.c (the support for defined domains from /etc/xen
- * config files used by old Xen) will handle this.
- */
- if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
- return -1;
root = sexpr_get(conn, "/xend/domain?state=halted");
if (root == NULL)
return ret;
}
-static int
+int
xenDaemonListDefinedDomains(virConnectPtr conn,
char **const names,
int maxnames)
struct sexpr *root = NULL;
int i, ret = -1;
struct sexpr *_for_i, *node;
- xenUnifiedPrivatePtr priv = conn->privateData;
-
- if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
- return -1;
if (maxnames == 0)
return 0;
}
struct xenUnifiedDriver xenDaemonDriver = {
- .xenListDefinedDomains = xenDaemonListDefinedDomains,
- .xenNumOfDefinedDomains = xenDaemonNumOfDefinedDomains,
.xenDomainCreate = xenDaemonDomainCreate,
.xenDomainDefineXML = xenDaemonDomainDefineXML,
.xenDomainUndefine = xenDaemonDomainUndefine,
char *xenDaemonDomainGetOSType(virDomainPtr domain);
+int xenDaemonNumOfDefinedDomains(virConnectPtr conn);
+int xenDaemonListDefinedDomains(virConnectPtr conn,
+ char **const names,
+ int maxnames);
+
virDomainPtr xenDaemonDomainDefineXML(virConnectPtr xend, const char *sexpr);
int xenDaemonDomainCreate(virDomainPtr domain);
int xenDaemonDomainUndefine(virDomainPtr domain);
#define XM_XML_ERROR "Invalid xml"
struct xenUnifiedDriver xenXMDriver = {
- .xenListDefinedDomains = xenXMListDefinedDomains,
- .xenNumOfDefinedDomains = xenXMNumOfDefinedDomains,
.xenDomainCreate = xenXMDomainCreate,
.xenDomainDefineXML = xenXMDomainDefineXML,
.xenDomainUndefine = xenXMDomainUndefine,