[libvirt] [PATCH] Implement forgotten backend of virInterfaceIsActive()

Daniel P. Berrange berrange at redhat.com
Wed Apr 14 10:12:37 UTC 2010


On Tue, Apr 13, 2010 at 01:26:00PM -0400, Laine Stump wrote:
> Somehow the backend of this function was never implemented in
> libvirt's netcf driver, and nobody noticed until now. (The required
> netcf function was already in place, so nothing needs to change
> there.)
> ---
>  src/interface/netcf_driver.c |   31 ++++++++++++++++++++++++++++++-
>  1 files changed, 30 insertions(+), 1 deletions(-)
> 
> diff --git a/src/interface/netcf_driver.c b/src/interface/netcf_driver.c
> index 708f1f8..7163066 100644
> --- a/src/interface/netcf_driver.c
> +++ b/src/interface/netcf_driver.c
> @@ -511,6 +511,35 @@ cleanup:
>      return ret;
>  }
>  
> +static int interfaceIsActive(virInterfacePtr ifinfo)
> +{
> +    struct interface_driver *driver = ifinfo->conn->interfacePrivateData;
> +    struct netcf_if *iface = NULL;
> +    unsigned int flags = 0;
> +
> +    interfaceDriverLock(driver);
> +
> +    iface = interfaceDriverGetNetcfIF(driver->netcf, ifinfo);
> +    if (!iface) {
> +        /* helper already reported error */
> +        goto cleanup;
> +    }
> +
> +    if (ncf_if_status(iface, &flags) < 0) {
> +        const char *errmsg, *details;
> +        int errcode = ncf_error(driver->netcf, &errmsg, &details);
> +        interfaceReportError(netcf_to_vir_err(errcode),
> +                             "failed to get status of interface %s (netcf: %s - %s)",
> +                             ifinfo->name, errmsg, details ? details : "");
> +        goto cleanup;
> +    }
> +
> +cleanup:
> +    ncf_if_free(iface);
> +    interfaceDriverUnlock(driver);
> +    return flags & NETCF_IFACE_ACTIVE ? 1 : 0;
> +}

This causes it to return a success code in the event of either of
the cleanup paths being taken. It needs to be a tri-state return
value of  -1 (error), 0 (inactive), 1  (active)

Regards,
Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list