[libvirt] [PATCH 2/7] parallels: fix parallelsLoadNetworks
Michal Privoznik
mprivozn at redhat.com
Tue Mar 17 14:15:02 UTC 2015
On 13.03.2015 16:52, Maxim Nestratov wrote:
> Don't fail initialization of parallels driver if
> parallelsLoadNetwork fails for optional networks.
> This can happen when some of them are added manually
> and configured incompletely. PCS requires only two networks
> created automatically (named Host-Only and Bridged), others
> are optional and their incompletenes can be ignored.
>
> Signed-off-by: Maxim Nestratov <mnestratov at parallels.com>
> ---
> src/parallels/parallels_network.c | 43 +++++++++++++++++++++++-------------
> 1 files changed, 27 insertions(+), 16 deletions(-)
>
> diff --git a/src/parallels/parallels_network.c b/src/parallels/parallels_network.c
> index bb7ec5e..4dc7115 100644
> --- a/src/parallels/parallels_network.c
> +++ b/src/parallels/parallels_network.c
> @@ -180,9 +180,10 @@ static int parallelsGetHostOnlyNetInfo(virNetworkDefPtr def, const char *name)
> return ret;
> }
>
> -static virNetworkObjPtr
> +static int
> parallelsLoadNetwork(parallelsConnPtr privconn, virJSONValuePtr jobj)
> {
> + int ret = -1;
> virNetworkObjPtr net;
> virNetworkDefPtr def;
> const char *tmp;
> @@ -214,13 +215,25 @@ parallelsLoadNetwork(parallelsConnPtr privconn, virJSONValuePtr jobj)
> if (STREQ(tmp, PARALLELS_BRIDGED_NETWORK_TYPE)) {
> def->forward.type = VIR_NETWORK_FORWARD_BRIDGE;
>
> - if (parallelsGetBridgedNetInfo(def, jobj) < 0)
> + if (parallelsGetBridgedNetInfo(def, jobj) < 0) {
> +
> + /* Only mandatory networks required to be configured completely */
s/networks required/networks are required/
> + if (!STREQ(def->name, PARALLELS_REQUIRED_BRIDGED_NETWORK))
s/!STREQ/STRNEQ/
> + ret = 0;
> +
> goto cleanup;
> + }
> } else if (STREQ(tmp, PARALLELS_HOSTONLY_NETWORK_TYPE)) {
> def->forward.type = VIR_NETWORK_FORWARD_NONE;
>
> - if (parallelsGetHostOnlyNetInfo(def, def->name) < 0)
> + if (parallelsGetHostOnlyNetInfo(def, def->name) < 0) {
> +
> + /* Only mandatory networks required to be configured completely */
> + if (!STREQ(def->name, PARALLELS_REQUIRED_HOSTONLY_NETWORK))
> + ret = 0;
> +
> goto cleanup;
> + }
> } else {
> parallelsParseError();
> goto cleanup;
> @@ -230,14 +243,16 @@ parallelsLoadNetwork(parallelsConnPtr privconn, virJSONValuePtr jobj)
> goto cleanup;
> net->active = 1;
> net->autostart = 1;
> - return net;
> + virNetworkObjEndAPI(&net);
> + ret = 0;
> + return ret;
This doesn't make much sense. drop return, let it fall through cleanup,
and move virNetworkObjEndAPI() under the label. Of course, @def should
be set to NULL as soon as virNetworkAssignDef() succeeds.
>
> cleanup:
> virNetworkDefFree(def);
> - return NULL;
> + return ret;
> }
>
> -static virNetworkObjPtr
> +static int
> parallelsAddRoutedNetwork(parallelsConnPtr privconn)
> {
> virNetworkObjPtr net = NULL;
> @@ -264,18 +279,18 @@ parallelsAddRoutedNetwork(parallelsConnPtr privconn)
> }
> net->active = 1;
> net->autostart = 1;
> + virNetworkObjEndAPI(&net);
>
> - return net;
> + return 0;
>
> cleanup:
> virNetworkDefFree(def);
> - return NULL;
> + return -1;
> }
>
> static int parallelsLoadNetworks(parallelsConnPtr privconn)
> {
> virJSONValuePtr jobj, jobj2;
> - virNetworkObjPtr net = NULL;
> int ret = -1;
> int count;
> size_t i;
> @@ -300,22 +315,18 @@ static int parallelsLoadNetworks(parallelsConnPtr privconn)
> goto cleanup;
> }
>
> - net = parallelsLoadNetwork(privconn, jobj2);
> - if (!net)
> + ret = parallelsLoadNetwork(privconn, jobj2);
> + if (!ret)
> goto cleanup;
> - else
> - virNetworkObjEndAPI(&net);
> -
> }
>
> - if (!(net = parallelsAddRoutedNetwork(privconn)))
> + if (!(ret = parallelsAddRoutedNetwork(privconn)))
> goto cleanup;
>
> ret = 0;
>
> cleanup:
> virJSONValueFree(jobj);
> - virNetworkObjEndAPI(&net);
> return ret;
> }
>
>
ACK with nits fixed.
Michal
More information about the libvir-list
mailing list