[libvirt] [PATCH 3/2] network: check newDef for used bridge names in addition to def
Shivaprasad bhat
shivaprasadbhat at gmail.com
Mon Apr 27 09:54:37 UTC 2015
On Sat, Apr 25, 2015 at 12:14 AM, Laine Stump <laine at laine.org> wrote:
> If someone has updated a network to change its bridge name, but the
> network is still active (so that bridge name hasn't taken effect yet),
> we still want to disallow another network from taking that new name.
> ---
> As suggested by Shivaprasad following his tests of patches 1 and 2...
>
> src/conf/network_conf.c | 15 +++++++++++----
> 1 file changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
> index aa8d6c6..5b734f2 100644
> --- a/src/conf/network_conf.c
> +++ b/src/conf/network_conf.c
> @@ -3270,15 +3270,22 @@ virNetworkBridgeInUseHelper(const void *payload,
> const void *name ATTRIBUTE_UNUSED,
> const void *opaque)
> {
> - int ret = 0;
> + int ret;
> virNetworkObjPtr net = (virNetworkObjPtr) payload;
> const struct virNetworkBridgeInUseHelperData *data = opaque;
>
> virObjectLock(net);
> - if (net->def->bridge &&
> - STREQ(net->def->bridge, data->bridge) &&
> - !(data->skipname && STREQ(net->def->name, data->skipname)))
> + if (data->skipname &&
> + ((net->def && STREQ(net->def->name, data->skipname)) ||
> + (net->newDef && STREQ(net->newDef->name, data->skipname))))
Should the newDef->name be really be checked? The network cant be renamed.
Right ?
Thanks,
Shiva
> + ret = 0;
> + else if ((net->def && net->def->bridge &&
> + STREQ(net->def->bridge, data->bridge)) ||
> + (net->newDef && net->newDef->bridge &&
> + STREQ(net->newDef->bridge, data->bridge)))
> ret = 1;
> + else
> + ret = 0;
> virObjectUnlock(net);
> return ret;
> }
> --
> 2.1.0
>
More information about the libvir-list
mailing list