xmlXPathContextPtr ctxt)
{
virNetDevCoalescePtr ret = NULL;
- xmlNodePtr save = NULL;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
unsigned long long tmp = 0;
VIR_AUTOFREE(char *) str = NULL;
- save = ctxt->node;
ctxt->node = node;
str = virXPathString("string(./rx/frames/@max)", ctxt);
ret->rx_max_coalesced_frames = tmp;
cleanup:
- ctxt->node = save;
return ret;
error:
virCapsPtr caps,
unsigned int flags)
{
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
size_t i = 0, j;
int n;
- xmlNodePtr saved_node;
virCapsHostPtr host = &caps->host;
VIR_AUTOFREE(xmlNodePtr *) list = NULL;
/* Check args and save context */
if (def == NULL || ctxt == NULL)
return 0;
- saved_node = ctxt->node;
/* Allocate a security labels based on XML */
if ((n = virXPathNodeSet("./seclabel", ctxt, &list)) < 0)
def->seclabels[i] = seclabel;
}
def->nseclabels = n;
- ctxt->node = saved_node;
/* libvirt versions prior to 0.10.0 support just a single seclabel element
* in guest's XML and model attribute can be suppressed if type is none or
return 0;
error:
- ctxt->node = saved_node;
for (; i > 0; i--)
virSecurityLabelDefFree(def->seclabels[i - 1]);
VIR_FREE(def->seclabels);
unsigned int flags,
virDomainXMLOptionPtr xmlopt)
{
- xmlNodePtr saveNode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1;
if (!(flags & VIR_DOMAIN_DEF_PARSE_STATUS) ||
ret = 0;
cleanup:
- ctxt->node = saveNode;
-
return ret;
}
xmlXPathContextPtr ctxt,
virStoragePRDefPtr *pr)
{
- xmlNodePtr saveNode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1;
ctxt->node = node;
ret = 0;
cleanup:
- ctxt->node = saveNode;
return ret;
}
unsigned int flags)
{
int ret = -1;
- xmlNodePtr saveNode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr tmp;
ctxt->node = node;
ret = 0;
cleanup:
- ctxt->node = saveNode;
return ret;
}
unsigned int flags,
virDomainXMLOptionPtr xmlopt)
{
- xmlNodePtr save_ctxt = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr source;
int ret = -1;
VIR_AUTOUNREF(virStorageSourcePtr) backingStore = NULL;
ret = 0;
cleanup:
- ctxt->node = save_ctxt;
return ret;
}
virDomainXMLOptionPtr xmlopt)
{
xmlNodePtr private_node = virXPathNode("./privateData", ctxt);
- xmlNodePtr save_node = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1;
if (!xmlopt ||
ret = 0;
cleanup:
- ctxt->node = save_node;
return ret;
}
{
virDomainDiskDefPtr def;
xmlNodePtr cur;
- xmlNodePtr save_ctxt = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
bool source = false;
virStorageEncryptionPtr encryption = NULL;
VIR_AUTOPTR(virStorageAuthDef) authdef = NULL;
cleanup:
virStorageEncryptionFree(encryption);
- ctxt->node = save_ctxt;
return def;
error:
bool processedTarget = false;
int numaNode = -1;
int ports = -1;
- xmlNodePtr saved = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
int rc;
VIR_AUTOFREE(char *) typeStr = NULL;
VIR_AUTOFREE(char *) idx = NULL;
}
cleanup:
- ctxt->node = saved;
return def;
error:
xmlXPathContextPtr ctxt,
unsigned int flags)
{
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainFSDefPtr def;
- xmlNodePtr cur, save_node = ctxt->node;
+ xmlNodePtr cur;
VIR_AUTOFREE(char *) type = NULL;
VIR_AUTOFREE(char *) fsdriver = NULL;
VIR_AUTOFREE(char *) source = NULL;
goto error;
cleanup:
- ctxt->node = save_node;
return def;
error:
{
virDomainActualNetDefPtr actual = NULL;
int ret = -1;
- xmlNodePtr save_ctxt = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr bandwidth_node = NULL;
xmlNodePtr vlanNode;
xmlNodePtr virtPortNode;
error:
virDomainActualNetDefFree(actual);
- ctxt->node = save_ctxt;
return ret;
}
{
int ret = -1;
int tmpVal;
- xmlNodePtr saveNode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr cur;
VIR_AUTOFREE(char *) tmp = NULL;
ret = 0;
cleanup:
- ctxt->node = saveNode;
return ret;
}
xmlNodePtr tmpNode;
virHashTablePtr filterparams = NULL;
virDomainActualNetDefPtr actual = NULL;
- xmlNodePtr oldnode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainChrSourceReconnectDef reconnect = {0};
int rv, val;
VIR_AUTOFREE(char *) macaddr = NULL;
}
cleanup:
- ctxt->node = oldnode;
virDomainActualNetDefFree(actual);
virHashFree(filterparams);
return def;
unsigned int flags)
{
virDomainTPMDefPtr def;
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
int nbackends;
VIR_AUTOFREE(char *) path = NULL;
VIR_AUTOFREE(char *) model = NULL;
goto error;
cleanup:
- ctxt->node = save;
return def;
error:
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainInputDefPtr def;
VIR_AUTOFREE(char *) evdev = NULL;
VIR_AUTOFREE(char *) type = NULL;
goto error;
cleanup:
- ctxt->node = save;
return def;
error:
xmlXPathContextPtr ctxt)
{
virDomainTimerDefPtr def;
- xmlNodePtr oldnode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr catchup;
int ret;
VIR_AUTOFREE(char *) name = NULL;
}
cleanup:
- ctxt->node = oldnode;
-
return def;
error:
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainGraphicsListenDef newListen = {0};
int nListens;
int ret = -1;
ret = 0;
cleanup:
virDomainGraphicsListenDefClear(&newListen);
- ctxt->node = save;
return ret;
}
xmlNodePtr node,
xmlXPathContextPtr ctxt)
{
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
int enableVal;
xmlNodePtr glNode;
int ret = -1;
ret = 0;
cleanup:
- ctxt->node = save;
return ret;
}
xmlNodePtr node,
xmlXPathContextPtr ctxt)
{
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr glNode;
ctxt->node = node;
if ((glNode = virXPathNode("./gl", ctxt)))
def->data.egl_headless.rendernode = virXMLPropString(glNode,
"rendernode");
- ctxt->node = save;
return 0;
}
unsigned int flags)
{
virDomainSoundDefPtr def;
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
VIR_AUTOFREE(char *) model = NULL;
if (VIR_ALLOC(def) < 0)
goto error;
cleanup:
- ctxt->node = save;
return def;
error:
unsigned int flags)
{
virDomainRNGDefPtr def;
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
int nbackends;
VIR_AUTOFREE(xmlNodePtr *) backends = NULL;
VIR_AUTOFREE(char *) model = NULL;
goto error;
cleanup:
- ctxt->node = save;
return def;
error:
unsigned int flags)
{
virDomainMemballoonDefPtr def;
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
unsigned int period = 0;
VIR_AUTOFREE(char *) model = NULL;
VIR_AUTOFREE(char *) deflate = NULL;
goto error;
cleanup:
- ctxt->node = save;
return def;
error:
virDomainShmemDefPtr def = NULL;
virDomainShmemDefPtr ret = NULL;
xmlNodePtr msi = NULL;
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr server = NULL;
VIR_AUTOFREE(char *) tmp = NULL;
VIR_STEAL_PTR(ret, def);
cleanup:
- ctxt->node = save;
virDomainShmemDefFree(def);
return ret;
}
{
int ret = -1;
size_t i, nboards = 0;
- xmlNodePtr oldnode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
int n;
VIR_AUTOFREE(virSysinfoBaseBoardDefPtr) boards = NULL;
VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
*nbaseBoard = nboards;
ret = 0;
cleanup:
- ctxt->node = oldnode;
return ret;
}
{
virDomainVideoDefPtr def;
xmlNodePtr cur;
- xmlNodePtr saved = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
VIR_AUTOFREE(char *) type = NULL;
VIR_AUTOFREE(char *) heads = NULL;
VIR_AUTOFREE(char *) vram = NULL;
def->driver = virDomainVideoDriverDefParseXML(node);
cleanup:
- ctxt->node = saved;
return def;
error:
unsigned int flags)
{
virDomainHostdevDefPtr def;
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
VIR_AUTOFREE(char *) mode = virXMLPropString(node, "mode");
VIR_AUTOFREE(char *) type = virXMLPropString(node, "type");
}
cleanup:
- ctxt->node = save;
return def;
error:
{
int n;
size_t i;
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainRedirFilterDefPtr def = NULL;
VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
def->usbdevs[def->nusbdevs++] = usbdev;
}
- ctxt->node = save;
return def;
error:
virDomainMemoryDefPtr def)
{
int ret = -1;
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
ctxt->node = node;
VIR_AUTOFREE(char *) nodemask = NULL;
ret = 0;
cleanup:
- ctxt->node = save;
return ret;
}
virDomainMemoryDefPtr def)
{
int ret = -1;
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
ctxt->node = node;
int rv;
ret = 0;
cleanup:
- ctxt->node = save;
return ret;
}
virDomainSEVDefParseXML(xmlNodePtr sevNode,
xmlXPathContextPtr ctxt)
{
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainSEVDefPtr def;
unsigned long policy;
VIR_AUTOFREE(char *) type = NULL;
def->session = virXPathString("string(./session)", ctxt);
cleanup:
- ctxt->node = save;
return def;
error:
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr node;
virDomainMemoryDefPtr def;
int val;
&def->info, flags) < 0)
goto error;
- ctxt->node = save;
return def;
error:
virDomainMemoryDefFree(def);
- ctxt->node = save;
return NULL;
}
xmlXPathContextPtr ctxt)
{
virDomainIOMMUDefPtr ret = NULL;
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr driver;
int val;
VIR_AUTOFREE(char *) tmp = NULL;
VIR_STEAL_PTR(ret, iommu);
cleanup:
- ctxt->node = save;
return ret;
}
unsigned int flags)
{
virDomainVsockDefPtr ret = NULL;
- xmlNodePtr save = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr cid;
int val;
VIR_AUTOFREE(char *) tmp = NULL;
VIR_STEAL_PTR(ret, vsock);
cleanup:
- ctxt->node = save;
return ret;
}
{
size_t i;
virDomainIdMapEntryPtr idmap = NULL;
- xmlNodePtr save_ctxt = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
if (VIR_ALLOC_N(idmap, num) < 0)
goto cleanup;
}
cleanup:
- ctxt->node = save_ctxt;
return idmap;
}
virDomainHugePagePtr hugepage)
{
int ret = -1;
- xmlNodePtr oldnode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
VIR_AUTOFREE(char *) nodeset = NULL;
ctxt->node = node;
ret = 0;
cleanup:
- ctxt->node = oldnode;
return ret;
}
virDomainResourceDefParse(xmlNodePtr node,
xmlXPathContextPtr ctxt)
{
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainResourceDefPtr def = NULL;
- xmlNodePtr tmp = ctxt->node;
ctxt->node = node;
goto error;
}
- ctxt->node = tmp;
return def;
error:
- ctxt->node = tmp;
virDomainResourceDefFree(def);
return NULL;
}
xmlNodePtr node,
virResctrlAllocPtr alloc)
{
- xmlNodePtr oldnode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
unsigned int level;
unsigned int cache;
int type;
ret = 0;
cleanup:
- ctxt->node = oldnode;
return ret;
}
virDomainResctrlDefPtr resctrl)
{
virDomainResctrlMonDefPtr domresmon = NULL;
- xmlNodePtr oldnode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
unsigned int level = 0;
size_t i = 0;
int n = 0;
ret = 0;
cleanup:
- ctxt->node = oldnode;
virDomainResctrlMonDefFree(domresmon);
return ret;
}
xmlNodePtr node,
unsigned int flags)
{
- xmlNodePtr oldnode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainResctrlDefPtr resctrl = NULL;
ssize_t i = 0;
int n;
ret = 0;
cleanup:
- ctxt->node = oldnode;
virDomainResctrlDefFree(resctrl);
return ret;
}
xmlNodePtr node,
virResctrlAllocPtr alloc)
{
- xmlNodePtr oldnode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
unsigned int id;
unsigned int bandwidth;
int ret = -1;
ret = 0;
cleanup:
- ctxt->node = oldnode;
return ret;
}
xmlNodePtr node,
unsigned int flags)
{
- xmlNodePtr oldnode = ctxt->node;
+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainResctrlDefPtr resctrl = NULL;
VIR_AUTOPTR(virBitmap) vcpus = NULL;
VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
ret = 0;
cleanup:
- ctxt->node = oldnode;
virDomainResctrlDefFree(resctrl);
return ret;
}