On 12/02/2014 12:08 PM, Laine Stump wrote: > When the actualType of a virDomainNetDef is "network", it means that > we are connecting to a libvirt-managed network (routed, natted, or > isolated) which does use a bridge device (created by libvirt). In the > past we have required drivers such as qemu to call the public API to > retrieve the bridge name in this case (even though it is available in > the NetDef's ActualNetDef if the actualType is "bridge" (i.e., an > externally-created bridge that isn't managed by libvirt). There is no > real reason for this difference, and as a matter of fact it > complicates things for qemu. Also, there is another bridge-related > attribute (fdb) that will need to be available in both cases, so this > makes things consistent. > > In order to avoid problems when restarting libvirtd after an update > from an older version that *doesn't* store the network's bridgename in > the ActualNetDef, we also need to put it in place during > networkNotifyActualDevice() (this function is run for each interface > of each domain whenever libvirtd is restarted). > > Along with making the bridge name available in the internal object, it > is also now reported in the <source> element of the <interface> state > XML (or the <actual> subelement in the internally-stored format). > > The one oddity about this change is that usually there is a separate > union for every different "type" in a higher level object (e.g. in the > case of a virDomainNetDef there are separate "network" and "bridge" > members of the union that pivots on the type), but in this case > network and bridge types both have exactly the same attributes, so the > "bridge" member is used for both type==network and type==bridge. > --- > > Changes from V1: > > * populate actual.brname of an active interface when libvirtd is > restarted, to avoid problems during upgrade. > > (John had asked questions about what happens during a save/restore or a > migration; the answer is that everything in the <actual> is discarded > as the interface is re-allocated/re-created, so there are no upgrade > issues in that case.) > > src/conf/domain_conf.c | 102 +++++++++++++++++++++++--------------------- > src/network/bridge_driver.c | 20 +++++++++ > 2 files changed, 73 insertions(+), 49 deletions(-) > ACK John -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list