On Wed, Jun 25, 2025 at 10:38 AM Pavel Hrdina <phrd...@redhat.com> wrote:
>
> On Wed, Jun 25, 2025 at 09:40:16AM +0200, Enrique Llorente via Devel wrote:
> > Add support for passing extra arguments to the passt binary through
> > the domain XML configuration. This allows users to specify additional
> > command-line arguments for passt that are not covered by existing
> > structured fields.
> >
> > The new extraArgs attribute is added to the backend element:
> > <backend type='passt' extraArgs='--debug --no-dhcp -v'/>
> >
> > The extraArgs string is parsed using g_shell_parse_argv() to split
> > it into individual arguments before passing them to the passt command.
> >
> > This change includes:
> > - New field in virDomainNetBackend structure
> > - XML schema update to allow extraArgs attribute
> > - Parsing and formatting support in domain_conf.c
> > - Backend comparison function update
> > - Memory cleanup for the new field
> > - QEMU passt integration to use the extra arguments
> > - Comprehensive tests for both user and vhostuser interfaces
> >
> > This is an RFE to gather feedback on the approach. I have a few questions
> > for the community:
> >
> > 1. Is this general approach of adding extraArgs reasonable, or should we
> >    instead focus on adding specific structured fields for each passt option?
>
> No, this is not something we would add to VM XML. If there is something
> missing from our XML it should be added as proper attribute and or
> element.
>
> > 2. Should extraArgs be marked as unsupported/unstable in the documentation,
> >    with a clear indication that it's primarily intended for development and
> >    testing purposes?
>
> We do have similar "feature" for QEMU where you can pass any argument
> you want for development/testing purposes, see [1].
>

Should we implement this with a new new <passt:commandline> tag under
the passt backend ?

Use case example:

<domain type='qemu' xmlns:passt='http://libvirt.org/schemas/domain/passt/1.0'>
  <name>my-vm</name>
  <!-- ... other config ... -->

  <devices>
    <interface type='user'>
      <mac address='00:11:22:33:44:55'/>
      <model type='virtio'/>
      <backend type='passt' logFile='/var/log/passt.log'>
        <!-- This will taint the domain -->
        <passt:commandline>
          <passt:arg value='--debug'/>
          <passt:arg value='--dns-forward'/>
          <passt:arg value='8.8.8.8'/>
        </passt:commandline>
      </backend>
    </interface>
  </devices>
</domain>

> > 3. Are there any security concerns with allowing arbitrary arguments to be
> >    passed to the passt binary via XML configuration?
>
> In case of QEMU we mark the VM as tainted, that means no support and
> users are on their own if something breaks.
>
> > 4. Would it be better to validate the arguments against a known allowlist
> >    rather than allowing any argument string?
>
> No, if they are supposed to be used in production they should be
> exported as proper XML attribute/element, for development/testing it
> could be used for some new arguments where it doesn't make sense to have
> allow list hardcoded in libvirt as you would have to update that list
> and recompile libvirt in order to try new argument.
>
> [1] <https://libvirt.org/drvqemu.html#pass-through-of-arbitrary-qemu-commands>
>
> Pavel



-- 
Quique Llorente

CNV networking Senior Software Engineer

Red Hat EMEA

ellor...@redhat.com

@RedHat   Red Hat  Red Hat

Reply via email to