On Tue, Feb 16, 2010 at 5:22 AM, Stefan Berger <stefanb@xxxxxxxxxx> wrote: > As an RFC, now attached the patch that tears down the macvtap device upon > termination of the Qemu process without checking whether the device(s) > with the given MAC address are in use. Another problem comes to mind: it is incorrect to assume that an existing macvtap interface with a given MAC address has anything to do with the one we want to delete. Consider a host with two NICs, eth0 and eth1. Suppose some application previously created macvtap0 with MAC 52:54:00:12:34:56 from lower interface eth0. Now we want to create macvtap1 with the same MAC address 52:54:00:12:34:56 from lower interface eth1; this is fine as long as eth0 and eth1 are on different LANs or VLANs. We would be unhappy if libvirt blew away macvtap0 before creating macvtap1. This can be solved by comparing not only the MAC address but also the lower interface name: if they both match, then it's safe to delete the macvtap interface. It should be possible to query the name of the lower interface for a given macvtap interface via netlink (ip link show reveals this information). I'd stick with just one function delMacvtap(char *macaddress, char *linkdev, int checkTapInUse), which can be called from qemudPhysIfaceConnect(), qemudDomainDetachNetDevice() and qemudShutdownVMDaemon(). I don't see any reason for a separate hasBusyDev parameter; it seems sufficient to return 1 if the tap device is in use. --Ed -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list