network: bridge: Don't start network if it collides with host routing
authorCole Robinson <crobinso@redhat.com>
Thu, 20 May 2010 23:31:16 +0000 (19:31 -0400)
committerCole Robinson <crobinso@redhat.com>
Thu, 27 May 2010 22:02:53 +0000 (18:02 -0400)
commita83fe2c23efad190a1e00e448f607fe032650fd6
tree6e74553d9b2b9f15e957d54d76167b8f52f99da9
parent1be3f095c96d30dfa5ff25c19b1db2de8fa57879
network: bridge: Don't start network if it collides with host routing

Fedora bug https://bugzilla.redhat.com/show_bug.cgi?id=235961

If using the default virtual network, an easy way to lose guest network
connectivity is to install libvirt inside the VM. The autostarted
default network inside the guest collides with host virtual network
routing. This is a long standing issue that has caused users quite a
bit of pain and confusion.

On network startup, parse /proc/net/route and compare the requested
IP+netmask against host routing destinations: if any matches are found,
refuse to start the network.

v2: Drop sscanf, fix a comment typo, comment that function could use
    libnl instead of /proc

v3: Consider route netmask. Compare binary data rather than convert to
    string.

v4: Return to using sscanf, drop inet functions in favor of virSocket,
    parsing safety checks. Don't make parse failures fatal, in case
    expected format changes.

v5: Try and continue if we receive unexpected. Delimit parsed lines to
    prevent scanning past newline
src/network/bridge_driver.c