/*
* xs_internal.c: access to Xen Store
*
- * Copyright (C) 2006, 2009-2012 Red Hat, Inc.
+ * Copyright (C) 2006, 2009-2013 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* Returns a string which must be freed by the caller or NULL in case of error
*/
static char **
-virConnectDoStoreList(virConnectPtr conn, const char *path,
- unsigned int *nb)
+virConnectDoStoreList(virConnectPtr conn, const char *path, unsigned int *nb)
{
- xenUnifiedPrivatePtr priv;
-
- if (conn == NULL)
- return NULL;
-
- priv = (xenUnifiedPrivatePtr) conn->privateData;
- if (priv->xshandle == NULL || path == NULL || nb == NULL)
- return NULL;
+ xenUnifiedPrivatePtr priv = conn->privateData;
return xs_directory(priv->xshandle, 0, path, nb);
}
{
char s[256];
unsigned int len = 0;
- xenUnifiedPrivatePtr priv;
-
- if (!conn)
- return NULL;
+ xenUnifiedPrivatePtr priv = conn->privateData;
- priv = (xenUnifiedPrivatePtr) conn->privateData;
if (priv->xshandle == NULL)
return NULL;
* Returns 0 in case of success, -1 in case of failure
*/
static int
-virDomainDoStoreWrite(virDomainPtr domain, const char *path,
- const char *value)
+virDomainDoStoreWrite(virDomainPtr domain, const char *path, const char *value)
{
char s[256];
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
int ret = -1;
- if (!VIR_IS_CONNECTED_DOMAIN(domain))
- return -1;
-
- priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
- if (priv->xshandle == NULL)
- return -1;
- if (domain->conn->flags & VIR_CONNECT_RO)
+ if (priv->xshandle == NULL || domain->conn->flags & VIR_CONNECT_RO)
return -1;
snprintf(s, 255, "/local/domain/%d/%s", domain->id, path);
char *vm;
char query[200];
unsigned int len;
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
- if (!VIR_IS_CONNECTED_DOMAIN(domain))
- return NULL;
-
- priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
if (priv->xshandle == NULL)
return NULL;
char s[256];
char *ret = NULL;
unsigned int len = 0;
- xenUnifiedPrivatePtr priv;
-
- if (!VIR_IS_CONNECTED_DOMAIN(domain))
- return NULL;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
- priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
if (priv->xshandle == NULL)
return NULL;
virConnectAuthPtr auth ATTRIBUTE_UNUSED,
unsigned int flags)
{
- xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
int
xenStoreClose(virConnectPtr conn)
{
- xenUnifiedPrivatePtr priv;
-
- if (conn == NULL) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
-
- priv = (xenUnifiedPrivatePtr) conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
if (xenStoreRemoveWatch(conn, "@introduceDomain", "introduceDomain") < 0) {
VIR_DEBUG("Warning, could not remove @introduceDomain watch");
char *tmp, **tmp2;
unsigned int nb_vcpus;
char request[200];
- xenUnifiedPrivatePtr priv;
-
- if (!VIR_IS_CONNECTED_DOMAIN(domain))
- return -1;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
- if ((domain == NULL) || (domain->conn == NULL) || (info == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
-
- priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
- if (priv->xshandle == NULL)
- return -1;
-
- if (domain->id == -1)
+ if (priv->xshandle == NULL || domain->id == -1)
return -1;
tmp = virDomainDoStoreQuery(domain->conn, domain->id, "running");
int ret;
char value[20];
- if ((domain == NULL) || (domain->conn == NULL) ||
- (memory < 1024 * MIN_XEN_GUEST_SIZE)) {
+ if (memory < 1024 * MIN_XEN_GUEST_SIZE) {
virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
return -1;
}
{
char *tmp;
unsigned long long ret = 0;
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
- if (!VIR_IS_CONNECTED_DOMAIN(domain))
- return ret;
if (domain->id == -1)
return 0;
- priv = domain->conn->privateData;
xenUnifiedLock(priv);
tmp = virDomainDoStoreQuery(domain->conn, domain->id, "memory/target");
if (tmp != NULL) {
char **idlist = NULL, *endptr;
int i, ret = -1, realnum = 0;
long id;
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = conn->privateData;
- if (conn == NULL) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
-
- priv = (xenUnifiedPrivatePtr) conn->privateData;
if (priv->xshandle == NULL) {
virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
return -1;
* Returns the number of domain found or -1 in case of error
*/
static int
-xenStoreDoListDomains(virConnectPtr conn, xenUnifiedPrivatePtr priv, int *ids, int maxids)
+xenStoreDoListDomains(virConnectPtr conn,
+ xenUnifiedPrivatePtr priv,
+ int *ids,
+ int maxids)
{
char **idlist = NULL, *endptr;
unsigned int num, i;
int
xenStoreListDomains(virConnectPtr conn, int *ids, int maxids)
{
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = conn->privateData;
int ret;
- if ((conn == NULL) || (ids == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
-
- priv = (xenUnifiedPrivatePtr) conn->privateData;
-
xenUnifiedLock(priv);
ret = xenStoreDoListDomains(conn, priv, ids, maxids);
xenUnifiedUnlock(priv);
char prop[200], *tmp;
int found = 0;
struct xend_domain *xenddomain = NULL;
- xenUnifiedPrivatePtr priv;
-
- if ((conn == NULL) || (name == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return NULL;
- }
+ xenUnifiedPrivatePtr priv = conn->privateData;
- priv = (xenUnifiedPrivatePtr) conn->privateData;
if (priv->xshandle == NULL)
return NULL;
xenStoreDomainShutdown(virDomainPtr domain)
{
int ret;
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
- if ((domain == NULL) || (domain->conn == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
if (domain->id == -1 || domain->id == 0)
return -1;
/*
* this is very hackish, the domU kernel probes for a special
* node in the xenstore and launch the shutdown command if found.
*/
- priv = domain->conn->privateData;
xenUnifiedLock(priv);
ret = virDomainDoStoreWrite(domain, "control/shutdown", "poweroff");
xenUnifiedUnlock(priv);
xenStoreDomainReboot(virDomainPtr domain, unsigned int flags)
{
int ret;
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
virCheckFlags(0, -1);
- if ((domain == NULL) || (domain->conn == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
if (domain->id == -1 || domain->id == 0)
return -1;
/*
* this is very hackish, the domU kernel probes for a special
* node in the xenstore and launch the shutdown command if found.
*/
- priv = domain->conn->privateData;
+
xenUnifiedLock(priv);
ret = virDomainDoStoreWrite(domain, "control/shutdown", "reboot");
xenUnifiedUnlock(priv);
* freed by the caller.
*/
static char *
-xenStoreDomainGetOSType(virDomainPtr domain) {
+xenStoreDomainGetOSType(virDomainPtr domain)
+{
char *vm, *str = NULL;
- if ((domain == NULL) || (domain->conn == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return NULL;
- }
-
vm = virDomainGetVM(domain);
if (vm) {
xenUnifiedPrivatePtr priv = domain->conn->privateData;
*
* Returns the port number, -1 in case of error
*/
-int xenStoreDomainGetVNCPort(virConnectPtr conn, int domid) {
+int
+xenStoreDomainGetVNCPort(virConnectPtr conn, int domid)
+{
char *tmp;
int ret = -1;
* The caller must hold the lock on the privateData
* associated with the 'conn' parameter.
*/
-char * xenStoreDomainGetConsolePath(virConnectPtr conn, int domid) {
+char *
+xenStoreDomainGetConsolePath(virConnectPtr conn, int domid)
+{
return virDomainDoStoreQuery(conn, domid, "console/tty");
}
* The caller must hold the lock on the privateData
* associated with the 'conn' parameter.
*/
-char * xenStoreDomainGetSerialConsolePath(virConnectPtr conn, int domid) {
+char *
+xenStoreDomainGetSerialConsolePath(virConnectPtr conn, int domid)
+{
return virDomainDoStoreQuery(conn, domid, "serial/0/tty");
}
* freed by the caller.
*/
char *
-xenStoreDomainGetNetworkID(virConnectPtr conn, int id, const char *mac) {
+xenStoreDomainGetNetworkID(virConnectPtr conn, int id, const char *mac)
+{
char dir[80], path[128], **list = NULL, *val = NULL;
unsigned int len, i, num;
char *ret = NULL;
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = conn->privateData;
- if (id < 0)
- return NULL;
-
- priv = (xenUnifiedPrivatePtr) conn->privateData;
- if (priv->xshandle == NULL)
- return NULL;
- if (mac == NULL)
+ if (id < 0 || priv->xshandle == NULL || mac == NULL)
return NULL;
snprintf(dir, sizeof(dir), "/local/domain/0/backend/vif/%d", id);
* freed by the caller.
*/
char *
-xenStoreDomainGetDiskID(virConnectPtr conn, int id, const char *dev) {
+xenStoreDomainGetDiskID(virConnectPtr conn, int id, const char *dev)
+{
char dir[80], path[128], **list = NULL, *val = NULL;
unsigned int devlen, len, i, num;
char *ret = NULL;
- xenUnifiedPrivatePtr priv;
-
- if (id < 0)
- return NULL;
+ xenUnifiedPrivatePtr priv = conn->privateData;
- priv = (xenUnifiedPrivatePtr) conn->privateData;
- if (priv->xshandle == NULL)
- return NULL;
- if (dev == NULL)
+ if (id < 0 || priv->xshandle == NULL || dev == NULL)
return NULL;
devlen = strlen(dev);
if (devlen <= 0)
char dir[80], path[128], **list = NULL, *val = NULL;
unsigned int len, i, num;
char *ret = NULL;
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = conn->privateData;
- if (id < 0)
- return NULL;
-
- priv = (xenUnifiedPrivatePtr) conn->privateData;
- if (priv->xshandle == NULL)
- return NULL;
- if (bdf == NULL)
+ if (id < 0 || priv->xshandle == NULL || bdf == NULL)
return NULL;
snprintf(dir, sizeof(dir), "/local/domain/0/backend/pci/%d", id);
* The caller must hold the lock on the privateData
* associated with the 'conn' parameter.
*/
-char *xenStoreDomainGetName(virConnectPtr conn,
- int id) {
+char *
+xenStoreDomainGetName(virConnectPtr conn, int id)
+{
char prop[200];
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = conn->privateData;
unsigned int len;
- priv = (xenUnifiedPrivatePtr) conn->privateData;
if (priv->xshandle == NULL)
return NULL;
* The caller must hold the lock on the privateData
* associated with the 'conn' parameter.
*/
-int xenStoreDomainGetUUID(virConnectPtr conn,
- int id,
- unsigned char *uuid) {
+int
+xenStoreDomainGetUUID(virConnectPtr conn, int id, unsigned char *uuid)
+{
char prop[200];
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = conn->privateData;
unsigned int len;
char *uuidstr;
int ret = 0;
- priv = (xenUnifiedPrivatePtr) conn->privateData;
if (priv->xshandle == NULL)
return -1;
* The caller must hold the lock on the privateData
* associated with the 'conn' parameter.
*/
-int xenStoreAddWatch(virConnectPtr conn,
- const char *path,
- const char *token,
- xenStoreWatchCallback cb,
- void *opaque)
+int
+xenStoreAddWatch(virConnectPtr conn,
+ const char *path,
+ const char *token,
+ xenStoreWatchCallback cb,
+ void *opaque)
{
xenStoreWatchPtr watch = NULL;
int n;
xenStoreWatchListPtr list;
- xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
if (priv->xshandle == NULL)
return -1;
* The caller must hold the lock on the privateData
* associated with the 'conn' parameter.
*/
-int xenStoreRemoveWatch(virConnectPtr conn,
- const char *path,
- const char *token)
+int
+xenStoreRemoveWatch(virConnectPtr conn, const char *path, const char *token)
{
int i;
xenStoreWatchListPtr list;
- xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
if (priv->xshandle == NULL)
return -1;
static void
xenStoreWatchEvent(int watch ATTRIBUTE_UNUSED,
int fd ATTRIBUTE_UNUSED,
- int events,
- void *data)
+ int events, void *data)
{
char **event;
char *path;
xenStoreWatchPtr sw;
virConnectPtr conn = data;
- xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
if (!priv) return;
*
* The lock on 'priv' is held when calling this
*/
-int xenStoreDomainIntroduced(virConnectPtr conn,
- const char *path ATTRIBUTE_UNUSED,
- const char *token ATTRIBUTE_UNUSED,
- void *opaque)
+int
+xenStoreDomainIntroduced(virConnectPtr conn,
+ const char *path ATTRIBUTE_UNUSED,
+ const char *token ATTRIBUTE_UNUSED,
+ void *opaque)
{
int i, j, found, missing = 0, retries = 20;
int new_domain_cnt;
*
* The lock on 'priv' is held when calling this
*/
-int xenStoreDomainReleased(virConnectPtr conn,
- const char *path ATTRIBUTE_UNUSED,
- const char *token ATTRIBUTE_UNUSED,
- void *opaque)
+int
+xenStoreDomainReleased(virConnectPtr conn,
+ const char *path ATTRIBUTE_UNUSED,
+ const char *token ATTRIBUTE_UNUSED,
+ void *opaque)
{
int i, j, found, removed, retries = 20;
int new_domain_cnt;
int *new_domids;
int nread;
- xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) opaque;
+ xenUnifiedPrivatePtr priv = opaque;
if (!priv->activeDomainList->count) return 0;