"ethernet", "bridge", "bond", "vlan",
);
-static virInterfaceDef *
-virInterfaceDefParseXML(xmlXPathContextPtr ctxt, int parentIfType);
-
static int
virInterfaceDefDevFormat(virBuffer *buf, const virInterfaceDef *def,
virInterfaceType parentIfType);
}
-static virInterfaceDef *
+virInterfaceDef *
virInterfaceDefParseXML(xmlXPathContextPtr ctxt,
int parentIfType)
{
}
-virInterfaceDef *
-virInterfaceDefParseNode(xmlDocPtr xml,
- xmlNodePtr root)
-{
- g_autoptr(xmlXPathContext) ctxt = NULL;
-
- if (!virXMLNodeNameEqual(root, "interface")) {
- virReportError(VIR_ERR_XML_ERROR,
- _("unexpected root element <%s>, "
- "expecting <interface>"),
- root->name);
- return NULL;
- }
-
- if (!(ctxt = virXMLXPathContextNew(xml)))
- return NULL;
-
- ctxt->node = root;
- return virInterfaceDefParseXML(ctxt, VIR_INTERFACE_TYPE_LAST);
-}
-
-
static virInterfaceDef *
virInterfaceDefParse(const char *xmlStr,
const char *filename,
unsigned int flags)
{
g_autoptr(xmlDoc) xml = NULL;
+ g_autoptr(xmlXPathContext) ctxt = NULL;
bool validate = flags & VIR_INTERFACE_DEFINE_VALIDATE;
- xml = virXMLParse(filename, xmlStr, _("(interface_definition)"),
- NULL, NULL, "interface.rng", validate);
- if (!xml)
+ if (!(xml = virXMLParse(filename, xmlStr, _("(interface_definition)"),
+ "interface", &ctxt, "interface.rng", validate)))
return NULL;
- return virInterfaceDefParseNode(xml, xmlDocGetRootElement(xml));
+ return virInterfaceDefParseXML(ctxt, VIR_INTERFACE_TYPE_LAST);
}
const char *file,
xmlXPathContextPtr ctxt)
{
+ VIR_XPATH_NODE_AUTORESTORE(ctxt)
int num;
size_t i;
virInterfaceObj *obj;
for (i = 0; i < num; i++) {
g_autoptr(virInterfaceDef) def = NULL;
- xmlNodePtr node = testParseXMLDocFromFile(nodes[i], file);
- if (!node)
+
+ if (!(ctxt->node = testParseXMLDocFromFile(nodes[i], file)))
return -1;
- def = virInterfaceDefParseNode(ctxt->doc, node);
- if (!def)
+ if (!(def = virInterfaceDefParseXML(ctxt, VIR_INTERFACE_TYPE_LAST)))
return -1;
if (!(obj = virInterfaceObjListAssignDef(privconn->ifaces, &def)))