[libvirt] [PATCH 5/9] conf: new "managed" attribute for target dev of <interface type='ethernet'>

Daniel P. Berrangé berrange at redhat.com
Fri Sep 6 09:10:37 UTC 2019


On Tue, Aug 27, 2019 at 09:46:35PM -0400, Laine Stump wrote:
> Although <interface type='ethernet'> has always been able to use an
> existing tap device, this is just a coincidence due to the fact that
> the same ioctl is used to create a new tap device or get a handle to
> an existing device.
> 
> Even then, once we have the handle to the device, we still insist on
> doing extra setup to it (setting the MAC address and IFF_UP).  That
> *might* be okay if libvirtd is running as a privileged process, but if
> libvirtd is running as an unprivileged user, those attempted
> modifications to the tap device will fail (yes, even if the tap is set
> to be owned by the user running libvirtd). We could avoid this if we
> knew that the device already existed, but as stated above, an existing
> device and new device are both accessed in the same manner, and
> anyway, we need to preserve existing behavior for those who are
> already using pre-existing devices with privileged libvirtd (and
> allowing/expecting libvirt to configure the pre-existing device).
> 
> In order to cleanly support the idea of using a pre-existing and
> pre-configured tap device, this patch introduces a new optional
> attribute "managed" for the interface <target> element. This
> attribute is only valid for <interface type='ethernet'> (since all
> other interface types have mandatory config that doesn't apply in the
> case where we expect the tap device to be setup before we
> get it). The syntax would look something like this:
> 
>    <interface type='ethernet'>
>       <target dev='mytap0' managed='no'/>
>       ...
>    </interface>
> 
> This patch just adds managed to the grammar and parser for <target>,
> but has no functionality behind it.
> 
> (NB: when managed='no' (the default when not specified is 'yes'), the
> target dev is always a name explicitly provided, so we don't
> auto-remove it from the config just because it starts with "vnet"
> (VIR_NET_GENERATED_TAP_PREFIX); this makes it possible to use the
> same pattern of names that libvirt itself uses when it automatically
> creates the tap devices.)
> 
> Signed-off-by: Laine Stump <laine at redhat.com>
> ---
>  docs/formatdomain.html.in                     | 48 +++++++++++++----
>  docs/schemas/domaincommon.rng                 |  5 ++
>  src/conf/domain_conf.c                        | 51 +++++++++++++++----
>  src/conf/domain_conf.h                        |  1 +
>  .../net-eth-unmanaged-tap.xml                 | 35 +++++++++++++
>  .../net-eth-unmanaged-tap.xml                 | 40 +++++++++++++++
>  tests/qemuxml2xmltest.c                       |  1 +
>  7 files changed, 160 insertions(+), 21 deletions(-)
>  create mode 100644 tests/qemuxml2argvdata/net-eth-unmanaged-tap.xml
>  create mode 100644 tests/qemuxml2xmloutdata/net-eth-unmanaged-tap.xml

Reviewed-by: Daniel P. Berrangé <berrange at redhat.com>


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list