hello,

I'm trying to use macvtap on Debian Wheezy.
Actually, I've installed a recent version of libvirt and qemu from wheezy-backports.

$ virsh version
Compiled against library: libvirt 1.2.1
Using library: libvirt 1.2.1
Using API: QEMU 1.2.1
Running hypervisor: QEMU 1.7.0


I'm trying to configure a macvtap interface like this:


    <interface type='direct'>
      <mac address='52:54:00:7b:05:cd'/>
      <source dev='eth1' mode='passthrough'/>
      <model type='rtl8139'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </interface>


The interface eth1 is used exclusively by this VM,  so as far as I understand, mode 'passthrough' is enough since I'd like to "plug" the VM straight onto a public static IP.


On my /etc/networks/interfaces, I have this:


# start :: define eth1
iface eth1 inet manual
# end :: define eth1


It does not matter whether eth1 is up or down, when I try to start the VM, I get the following error:

Error starting domain: Cannot create macvlan devices on this platform: Function not implemented

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 45, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 66, in tmpcb
    callback(*args, **kwargs)
  File "/usr/share/virt-manager/virtManager/domain.py", line 1114, in startup
    self._backend.create()
  File "/usr/lib/python2.7/dist-packages/libvirt.py", line 866, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: Cannot create macvlan devices on this platform: Function not implemented


Trying to solve the issue, I found this:
       http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=737097


I've tried to rebuild the package from Debian sources, but apparently, macvtap is already defined, as I've reported to another mailing list.
For your information:

I'm new to building packages from Debian sources, so I followed instructions from
     https://wiki.debian.org/HowToPackageForDebian#Building_Debian_packages
$ apt-get -t wheezy-backports source libvirt
$ cd libvirt-0.9.12.3/
$ sudo apt-get build-dep libvirt
$ debuild -i -us -uc -b
So... yes, it works and builds without any errors.

Next step now is applying the changes mentioned.
But I'm confused because apparently debian/rules is already the way it should be.

ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux))
  WITH_STORAGE_LVM    = --with-storage-lvm
  WITH_STORAGE_ISCSI  = --with-storage-iscsi
  WITH_STORAGE_DISK   = --with-storage-disk
  WITH_UDEV           = --with-udev --without-hal
  WITH_CAPNG          = --with-capng
  WITH_POLKIT         = --with-polkit
  WITH_MACVTAP        = --with-macvtap
  WITH_NETWORK        = --with-network
  WITH_QEMU           = --with-qemu
  WITH_OPENVZ         = --with-openvz
  WITH_NETCF          = --with-netcf
  ifneq (,$(findstring $(DEB_HOST_ARCH), amd64 i386 ia64 mips mipsel powerpc))
      WITH_NUMA       = --with-numactl
  else
      WITH_NUMA       = --without-numactl
  endif
  ifneq (,$(findstring $(DEB_HOST_ARCH), ia64))
      WITH_LXC        = --without-lxc
  else
      WITH_LXC        = --with-lxc
  endif
else
  WITH_STORAGE_LVM    = --without-storage-lvm
  WITH_STORAGE_ISCSI  = --without-storage-iscsi
  WITH_STORAGE_DISK   = --without-storage-disk
  WITH_UDEV           = --without-udev --with-hal
  WITH_CAPNG          = --without-capng
  WITH_POLKIT         = --without-polkit
  WITH_MACVTAP        = --without-macvtap
  WITH_NETWORK        = --without-network
  WITH_QEMU           = --without-qemu
  WITH_LXC            = --without-lxc
  WITH_NUMA           = --without-numactl
  WITH_NETCF          = --without-netcf
endif


I suppose that nothing has to be changed, correct? ... since the then branch already has the change mentioned and the else branch probably means that nothing related to networking would be enabled anyway.

Am I missing something ?

Thoughts?

Thanks a lot :)

Richard Gomes
http://rgomes.info
http://www.linkedin.com/in/rgomes
mobile: +44(77)9955-6813
inum: +883(5100)0800-9804
sip:rgomes@ippi.fr