[libvirt] [PATCH] netcf backend for virInterface*.

Daniel P. Berrange berrange at redhat.com
Mon Jul 20 18:56:06 UTC 2009


On Mon, Jul 20, 2009 at 01:42:07PM -0400, Laine Stump wrote:
> +static char *interfaceGetXMLDesc(virInterfacePtr ifinfo,
> +                                 unsigned int flags ATTRIBUTE_UNUSED)
> +{
> +    struct interface_driver *driver = ifinfo->conn->interfacePrivateData;
> +    struct netcf_if *iface = NULL;
> +    char *ret = NULL;
> +
> +    interfaceDriverLock(driver);
> +
> +    iface = interfaceDriverGetNetcfIF(driver->netcf, ifinfo);
> +    if (!iface) {
> +        /* helper already reported error */
> +        goto cleanup;
> +    }
> +
> +    ret = ncf_if_xml_desc(iface);
> +    if (!ret) {
> +        const char *errmsg, *details;
> +        int errcode = ncf_error(driver->netcf, &errmsg, &details);
> +        interfaceReportError(ifinfo->conn, NULL, ifinfo, netcf_to_vir_err(errcode),
> +                             "could not get interface XML description (netcf: %s - %s)",
> +                            errmsg, details ? details : "");
> +        goto cleanup;
> +    }
> +
> +cleanup:
> +    ncf_if_free(iface);
> +    interfaceDriverUnlock(driver);
> +    return ret;
> +}
> +
> +static virInterfacePtr interfaceDefineXML(virConnectPtr conn,
> +                                          const char *xml,
> +                                          unsigned int flags ATTRIBUTE_UNUSED)
> +{
> +    struct interface_driver *driver = conn->interfacePrivateData;
> +    struct netcf_if *iface = NULL;
> +    virInterfacePtr ret = NULL;
> +
> +    interfaceDriverLock(driver);
> +
> +    /*
> +     * This is where we will want to validate the XML, and possibly
> +     * transform it before sending it on.
> +     */
> +
> +    iface = ncf_define(driver->netcf, xml);
> +    if (!iface) {
> +        const char *errmsg, *details;
> +        int errcode = ncf_error(driver->netcf, &errmsg, &details);
> +        interfaceReportError(conn, NULL, NULL, netcf_to_vir_err(errcode),
> +                             "could not get interface XML description (netcf: %s - %s)",
> +                            errmsg, details ? details : "");
> +        goto cleanup;
> +    }
> +
> +    ret = virGetInterface(conn, ncf_if_name(iface), ncf_if_mac_string(iface));
> +
> +cleanup:
> +    ncf_if_free(iface);
> +    interfaceDriverUnlock(driver);
> +    return ret;
> +}

These two method should be round-tripping the XML via the virInterfaceDef
parse/format methods really.


Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.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