]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virsh: add support for '--validate' option in define nwfilter
authorKristina Hanicova <khanicov@redhat.com>
Fri, 20 Aug 2021 11:57:10 +0000 (13:57 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 20 Aug 2021 13:38:53 +0000 (15:38 +0200)
Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
docs/manpages/virsh.rst
tools/virsh-nwfilter.c

index 3eb310d02e36a6c845095bcad248d9316e03bab8..0326a7d015a4a4ef1c8be20aa611eea360f9d2ce 100644 (file)
@@ -7483,7 +7483,7 @@ nwfilter-define
 
 ::
 
-   nwfilter-define xmlfile
+   nwfilter-define xmlfile [--validate]
 
 Make a new network filter known to libvirt. If a network filter with
 the same name already exists, it will be replaced with the new XML.
@@ -7492,6 +7492,9 @@ its network traffic rules adapted. If for any reason the network traffic
 filtering rules cannot be instantiated by any of the running virtual
 machines, then the new XML will be rejected.
 
+Optionally, the format of the input XML file can be validated against an
+internal RNG schema with *--validate*.
+
 
 nwfilter-undefine
 -----------------
index f38f33798d0c9b6a923b8d3ef9d3b401aaca27af..e062aa16491e00c3606402df2988bffbe15591df 100644 (file)
@@ -81,6 +81,10 @@ static const vshCmdInfo info_nwfilter_define[] = {
 static const vshCmdOptDef opts_nwfilter_define[] = {
     VIRSH_COMMON_OPT_FILE(N_("file containing an XML network "
                              "filter description")),
+    {.name = "validate",
+     .type = VSH_OT_BOOL,
+     .help = N_("validate the XML against the schema")
+    },
     {.name = NULL}
 };
 
@@ -91,15 +95,22 @@ cmdNWFilterDefine(vshControl *ctl, const vshCmd *cmd)
     const char *from = NULL;
     bool ret = true;
     g_autofree char *buffer = NULL;
+    unsigned int flags = 0;
     virshControl *priv = ctl->privData;
 
     if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
         return false;
 
+    if (vshCommandOptBool(cmd, "validate"))
+        flags |= VIR_NWFILTER_DEFINE_VALIDATE;
+
     if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0)
         return false;
 
-    nwfilter = virNWFilterDefineXML(priv->conn, buffer);
+    if (flags)
+        nwfilter = virNWFilterDefineXMLFlags(priv->conn, buffer, flags);
+    else
+        nwfilter = virNWFilterDefineXML(priv->conn, buffer);
 
     if (nwfilter != NULL) {
         vshPrintExtra(ctl, _("Network filter %s defined from %s\n"),