]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virNWFilterBindingDefParse: Properly use virXMLParse
authorPeter Krempa <pkrempa@redhat.com>
Thu, 22 Sep 2022 13:47:40 +0000 (15:47 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 6 Oct 2022 08:54:24 +0000 (10:54 +0200)
Fetch the XPath context and validate the node by using virXMLParse's
features.

This allows to completely remove virNWFilterBindingDefParseNode as
all callers now properly validate the root element name and have a XPath
context handy.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/virnwfilterbindingdef.c
src/conf/virnwfilterbindingdef.h
src/conf/virnwfilterbindingobj.c
src/libvirt_private.syms

index e58bab3f08b9e795b70f455f83882ec24ea66b09..524010c4c44ddf664418bd9a9b1c4edae470cb68 100644 (file)
@@ -71,7 +71,7 @@ virNWFilterBindingDefCopy(virNWFilterBindingDef *src)
 }
 
 
-static virNWFilterBindingDef *
+virNWFilterBindingDef *
 virNWFilterBindingDefParseXML(xmlXPathContextPtr ctxt)
 {
     virNWFilterBindingDef *ret;
@@ -154,42 +154,20 @@ virNWFilterBindingDefParseXML(xmlXPathContextPtr ctxt)
 }
 
 
-virNWFilterBindingDef *
-virNWFilterBindingDefParseNode(xmlDocPtr xml,
-                               xmlNodePtr root)
-{
-    g_autoptr(xmlXPathContext) ctxt = NULL;
-
-    if (STRNEQ((const char *)root->name, "filterbinding")) {
-        virReportError(VIR_ERR_XML_ERROR,
-                       "%s",
-                       _("unknown root element for nwfilter binding"));
-        return NULL;
-    }
-
-    if (!(ctxt = virXMLXPathContextNew(xml)))
-        return NULL;
-
-    ctxt->node = root;
-    return virNWFilterBindingDefParseXML(ctxt);
-}
-
-
 static virNWFilterBindingDef *
 virNWFilterBindingDefParse(const char *xmlStr,
                            const char *filename,
                            unsigned int flags)
 {
-    virNWFilterBindingDef *def = NULL;
     g_autoptr(xmlDoc) xml = NULL;
+    g_autoptr(xmlXPathContext) ctxt = NULL;
     bool validate = flags & VIR_NWFILTER_BINDING_CREATE_VALIDATE;
 
-    if ((xml = virXMLParse(filename, xmlStr, _("(nwfilterbinding_definition)"),
-                           NULL, NULL, "nwfilterbinding.rng", validate))) {
-        def = virNWFilterBindingDefParseNode(xml, xmlDocGetRootElement(xml));
-    }
+    if (!(xml = virXMLParse(filename, xmlStr, _("(nwfilterbinding_definition)"),
+                            "filterbinding", &ctxt, "nwfilterbinding.rng", validate)))
+        return NULL;
 
-    return def;
+    return virNWFilterBindingDefParseXML(ctxt);
 }
 
 
index 4bf0f252f8dcc261c78aa3583be8dc89228bd3f1..a5497d5a1c673df32c9f6f7bfdda894de38fcce1 100644 (file)
@@ -47,8 +47,7 @@ virNWFilterBindingDef *
 virNWFilterBindingDefCopy(virNWFilterBindingDef *src);
 
 virNWFilterBindingDef *
-virNWFilterBindingDefParseNode(xmlDocPtr xml,
-                               xmlNodePtr root);
+virNWFilterBindingDefParseXML(xmlXPathContextPtr ctxt);
 
 virNWFilterBindingDef *
 virNWFilterBindingDefParseString(const char *xml,
index 5ff53f738035c8a1e5215f482425aafa572df5d2..6e67c5c7b624cb66813899afd4c02c08cf994a9e 100644 (file)
@@ -223,7 +223,9 @@ virNWFilterBindingObjParse(const char *filename)
         return NULL;
     }
 
-    if (!(ret->def = virNWFilterBindingDefParseNode(xml, node)))
+    ctxt->node = node;
+
+    if (!(ret->def = virNWFilterBindingDefParseXML(ctxt)))
         return NULL;
 
     return g_steal_pointer(&ret);
index 11862bb1a92535b90ef6b5ca45ad6efa1b7f9ab0..6e85a8c6cbb95c197c65783a3c30e5eaa6cf8559 100644 (file)
@@ -1365,8 +1365,8 @@ virNWFilterBindingDefFormat;
 virNWFilterBindingDefFormatBuf;
 virNWFilterBindingDefFree;
 virNWFilterBindingDefParseFile;
-virNWFilterBindingDefParseNode;
 virNWFilterBindingDefParseString;
+virNWFilterBindingDefParseXML;
 
 
 # conf/virnwfilterbindingobj.h