Signed-off-by: Kristina Hanicova <khanicov@xxxxxxxxxx> --- docs/manpages/virsh.rst | 5 +++-- tools/virsh-interface.c | 10 +++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst index 3eb310d02e..da812ca5b7 100644 --- a/docs/manpages/virsh.rst +++ b/docs/manpages/virsh.rst @@ -5523,10 +5523,11 @@ iface-define :: - iface-define file + iface-define file [--validate] Define an inactive persistent physical host interface or modify an existing -persistent one from the XML *file*. +persistent one from the XML *file*. Optionally, the format of the input XML +file can be validated against an internal RNG schema with *--validate*. iface-destroy diff --git a/tools/virsh-interface.c b/tools/virsh-interface.c index 07d5f50be3..46af45c97b 100644 --- a/tools/virsh-interface.c +++ b/tools/virsh-interface.c @@ -523,6 +523,10 @@ static const vshCmdInfo info_interface_define[] = { static const vshCmdOptDef opts_interface_define[] = { VIRSH_COMMON_OPT_FILE(N_("file containing an XML interface description")), + {.name = "validate", + .type = VSH_OT_BOOL, + .help = N_("validate the XML against the schema") + }, {.name = NULL} }; @@ -533,15 +537,19 @@ cmdInterfaceDefine(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_INTERFACE_DEFINE_VALIDATE; + if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) return false; - iface = virInterfaceDefineXML(priv->conn, buffer, 0); + iface = virInterfaceDefineXML(priv->conn, buffer, flags); if (iface != NULL) { vshPrintExtra(ctl, _("Interface %s defined from %s\n"), -- 2.31.1