On 11/21/2013 11:24 PM, Nehal J Wani wrote:
Currently, I have two networks configured via xml:

virsh # net-dumpxml TestNetwork1
<network connections='2'>
  <name>TestNetwork1</name>
  <uuid>a76f665a-0196-4edb-81b4-340944a6869c</uuid>
  <forward dev='p1p1' mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
    <interface dev='p1p1'/>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:0b:e9:35'/>
  <ip address='192.168.100.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.100.128' end='192.168.100.254'/>
    </dhcp>
  </ip>
</network>

virsh # net-dumpxml default6
<network connections='1'>
  <name>default6</name>
  <uuid>6e57d831-f09e-4b33-950d-6d51c89f9786</uuid>
  <forward mode='nat'/>
  <bridge name='virbr3' stp='on' delay='0'/>
  <mac address='52:54:00:cb:c5:50'/>
  <ip family='ipv6' address='2001:db8:ca2:2::1' prefix='64'>
    <dhcp>
      <range start='2001:db8:ca2:2:1::10' end='2001:db8:ca2:2:1::ff'/>
    </dhcp>
  </ip>
</network>

# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.5254000be935 yes virbr0-nic
vnet0
vnet1
virbr3 8000.525400cbc550 yes virbr3-nic
vnet2

My queries are:
(i) For each interface that I attach to my guests, will a new vnetX (X=0,1,2,3,...) be created?

Yes. Each guest interface (except those of type='hostdev', which are just host hardware devices passed through to the guest) has a corresponding unique vnetX tap device or macvtapX device. The socket end of this tap/macvtap device is connected to the qemu process, and the netdev end is connected to a Linux host bridge, OpenvSwitch bridge (in the case of tap), or directly to a host network device (in the case of macvtap).


(ii) Can two different active networks share the same bridge? Example, can the xml of two active networks have the same line <bridge name='virbr0' stp='on' delay='0'/> ?

No, not for libvirt-managed virtual networks. It *is* possible for two libvirt "unmanaged" networks (which merely shadow already-existing host system bridge devices without adding any extra services such as dhcp, dns, or iptables rules) to specify the same bridge device, but I don't think that's what you're talking about (and I also see no practical value in doing that).

(iii) If the answer for (ii) is false, how can I obtain the interface name for a given bridge name in libvirt?

What do you mean by "the interface name for a given bridge name"? A bridge *is* a type of network device, i.e. an interface from the host's point of view.

If you're wondering how to get a list of all vnetX interfaces that are attached to a particular bridge via libvirt, the answer is either 1) you don't, or 2) you would need to cycle through all active guests looking for guest interfaces that use the network you're interested in, and grab the interface name from that guest's <interface> xml. libvirt's networks don't maintain a ready-made list of the devices that are attached to that network, because it would need to be reconstructed whenever libvirt was restarted, and up until now nobody has needed it.