Unfortunately, that is the expected behavior. If you do:
# brctl show
# /etc/init.d/networking restart
# brctl show
I also have this problem when I net-destroy/net-start the libvirt network in order to load a new network definition (typically, new DHCP hosts). I made a script which captures the br interfaces, restarts the network, then reattaches, but it seems like there should be a way for libvirt to do this for me since I'm restarting it's network and it's the one that plugged the interfaces in. Is there something I'm missing?
Ubuntu 9.10 / libvirt 0.7.0.
.:. jeremy