mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
network: check for bridge name conflict with existing devices
Since some people use the same naming convention as libvirt for bridge devices they create outside the context of libvirt, it is much nicer if we check for those devices when looking for a bridge device name to auto-assign to a new network.
This commit is contained in:
parent
a28d3e485f
commit
37b8bc6f12
@ -2764,8 +2764,9 @@ static int networkIsPersistent(virNetworkPtr net)
|
||||
|
||||
/*
|
||||
* networkFindUnusedBridgeName() - try to find a bridge name that is
|
||||
* unused by the currently configured libvirt networks, and set this
|
||||
* network's name to that new name.
|
||||
* unused by the currently configured libvirt networks, as well as by
|
||||
* the host system itself (possibly created by someone/something other
|
||||
* than libvirt). Set this network's name to that new name.
|
||||
*/
|
||||
static int
|
||||
networkFindUnusedBridgeName(virNetworkObjListPtr nets,
|
||||
@ -2779,7 +2780,13 @@ networkFindUnusedBridgeName(virNetworkObjListPtr nets,
|
||||
do {
|
||||
if (virAsprintf(&newname, templ, id) < 0)
|
||||
goto cleanup;
|
||||
if (!virNetworkBridgeInUse(nets, newname, def->name)) {
|
||||
/* check if this name is used in another libvirt network or
|
||||
* there is an existing device with that name. ignore errors
|
||||
* from virNetDevExists(), just in case it isn't implemented
|
||||
* on this platform (probably impossible).
|
||||
*/
|
||||
if (!(virNetworkBridgeInUse(nets, newname, def->name) ||
|
||||
virNetDevExists(newname) == 1)) {
|
||||
VIR_FREE(def->bridge); /*could contain template */
|
||||
def->bridge = newname;
|
||||
ret = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user