• L
    qemu: support unmanaged macvtap devices with <interface type='ethernet'> · 51d66b92
    Laine Stump 提交于
    Traditionally, macvtap devices are supported using <interface
    type='direct'>, but that type requires specifying a source device name
    and macvtap mode which can't be altered after the initial device
    creation (and may not even be available to the management software
    that's creating the XML config to feed to libvirt).
    
    But the attributes in the <source> are essentially describing how the
    device will be connected to the network, and if libvirt is to be
    supplied with the name of a macvtap device that has already been
    created, that device will also already be connected to the network
    (and the connection can't be changed). Thus it seems more appropriate
    to use type='ethernet', which was created explicitly for this purpose
    - for devices that have already been (or will be) connected to the
    external network by someone/something outside of libvirt. The fact
    that it is a *macv*tap rather than a contentional tap device is just a
    detail.
    
    This patch supports using an existing macvtap device with <interface
    type='ethernet'> by checking the supplied target dev name to see if it
    is a macvtap device and, when this is the case, calling
    virNetDevMacVLanTapOpen() instead of virNetDevTapCreate(). For
    consistency, this is only done when target managed='no'.
    
    Resolves: https://bugzilla.redhat.com/1723367 (partially)
    Signed-off-by: NLaine Stump <laine@redhat.com>
    Reviewed-by: NDaniel P. Berrangé <berrange@redhat.com>
    51d66b92
qemu_interface.c 24.6 KB