On Wed, Dec 07, 2016 at 12:01:14PM +0000, Peter Maydell wrote: > Hi; this is a bug report I'm forwarding for somebody else. > > The problem is that QEMU's tun/tap support in net/tap-linux.c only > supports the legacy /dev/net/tun interface (the filename is hardcoded). > If you created the tap device via macvtap, then this is the wrong > filename, but there's no code in QEMU to get the correct /dev/tapN > filename from the user-provided ifname=whatever option. > > Talking on IRC, the answer suggested was that we ought to > do a SIOCGIFINDEX ioctl passing in the user-specified ifname > string, which then gives you the index N to construct the > /dev/tapN filename. There is probably complexity in working out > whether we should do that or use the legacy interface (or try both > always?) This is probably overall not a very large amount of code, > though. > > The usual suggested workaround is to use the -netdev fd option, like > fd=3 3<>/dev/tap$(< /sys/class/net/tap0/ifindex) > (which gets the shell to open the right /dev/tap device). > Unfortunately this isn't compatible with multi-queue support > because netdev complains > "ifname=, script=, downscript=, vnet_hdr=, helper=, queues=, fds=, > and vhostfds= are invalid with fd=" > so you can't pass options like "queues=4"...
FWIW you should be able to instead do fds=3 3<>/dev/tap$(< /sys/class/net/tap0/ifindex) note 'fds' plural, instead of 'fd' It would be nicer to make it "just work" though when giving a device name for macvtap Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://entangle-photo.org -o- http://search.cpan.org/~danberr/ :|