This is already fixed in upstream (in the manner the reporter suggests); see commit d175caad25a4e80800d5e7e7d8c9d920a88b78e1 from git://git.et.redhat.com/libvirt.git, attached.
I've applied that patch to libvirt0 0.4.0-2ubuntu8. It applies cleanly except for a reject on the changelog, and it does fix the problem.
(I ran across this trying to set up a virtual gfs2 cluster for testing; it failed because cluster nodes rejected traffic that (due to thbe unnecessary masquerading) appeared to come from the host instead of the other (guest) cluster nodes.)
This is already fixed in upstream (in the manner the reporter suggests); see commit d175caad25a4e80 800d5e7e7d8c9d9 20a88b78e1 from git://git. et.redhat. com/libvirt. git, attached.
I've applied that patch to libvirt0 0.4.0-2ubuntu8. It applies cleanly except for a reject on the changelog, and it does fix the problem.
(I ran across this trying to set up a virtual gfs2 cluster for testing; it failed because cluster nodes rejected traffic that (due to thbe unnecessary masquerading) appeared to come from the host instead of the other (guest) cluster nodes.)