On Wed, Jun 20, 2012 at 07:01:17PM +0800, Yong Sheng Gong wrote: > Hi, > I found libvirtd will create vnet0 with a different mac other than the one defined in domain file. The mac in Domain file will be used by qemu-kvm. > I want to know how libvirtd decides the mac for vnet0, Who can give me a hint about the location of the libvirtd codes which does this work? > > I cannot find how the libvirtd translates the mac from one defined in domain file to vnet0's one in src/util/bridge.c: brSetInterfaceMac() > <interface type='bridge'> > <mac address='fa:16:3e:28:64:c2'/> > <source bridge='br100'/> > <target dev='vnet0'/> > <filterref filter='nova-instance-instance-00000002-fa163e2864c2'> > <parameter name='DHCPSERVER' value='10.0.1.1'/> > <parameter name='PROJNET' value='10.0.1.0'/> > <parameter name='PROJMASK' value='255.255.255.0'/> > <parameter name='IP' value='10.0.1.2'/> > </filterref> > <alias name='net0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> > </interface> The XML mac address config, sets the MAC address for the *guest* NIC, ie what the guest uses as its eth0. > [root@robinlinux eclipsecdt]# ifconfig vnet0 > vnet0 Link encap:Ethernet HWaddr FE:16:3E:28:64:C2 > inet6 addr: fe80::fc16:3eff:fe28:64c2/64 Scope:Link > UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 > RX packets:553 errors:0 dropped:0 overruns:0 frame:0 > TX packets:1485 errors:0 dropped:0 overruns:0 carrier:0 > collisions:0 txqueuelen:500 > RX bytes:136360 (133.1 KiB) TX bytes:280590 (274.0 KiB) vnet0 is the backend of the guest NIC, and its MAC addr is more or less irrelevant to functioning of the guest itself, since traffic does not originate on this NIC. The only important thing is that this TAP device must have a high value MAC address, to avoid the bridge device using the TAP device's MAC as its own. Hence when creating the TAP Device libvirt takes the guest MAC addr and simply sets the top byte to 0xFE Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list