src: Add DMA localagent
[barometer.git] / src / dma / vendor / github.com / libvirt / libvirt-go / connect_wrapper.go
diff --git a/src/dma/vendor/github.com/libvirt/libvirt-go/connect_wrapper.go b/src/dma/vendor/github.com/libvirt/libvirt-go/connect_wrapper.go
new file mode 100644 (file)
index 0000000..89727d0
--- /dev/null
@@ -0,0 +1,1766 @@
+/*
+ * This file is part of the libvirt-go project
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * Copyright (c) 2013 Alex Zorin
+ * Copyright (C) 2016 Red Hat, Inc.
+ *
+ */
+
+package libvirt
+
+/*
+#cgo pkg-config: libvirt
+#include <assert.h>
+#include <stdio.h>
+#include "connect_wrapper.h"
+#include "callbacks_wrapper.h"
+
+extern void closeCallback(virConnectPtr, int, long);
+void closeCallbackHelper(virConnectPtr conn, int reason, void *opaque)
+{
+    closeCallback(conn, reason, (long)opaque);
+}
+
+extern int connectAuthCallback(virConnectCredentialPtr, unsigned int, int);
+int connectAuthCallbackHelper(virConnectCredentialPtr cred, unsigned int ncred, void *cbdata)
+{
+    int *callbackID = cbdata;
+
+    return connectAuthCallback(cred, ncred, *callbackID);
+}
+
+
+char *
+virConnectBaselineCPUWrapper(virConnectPtr conn,
+                             const char **xmlCPUs,
+                             unsigned int ncpus,
+                             unsigned int flags,
+                             virErrorPtr err)
+{
+    char * ret = virConnectBaselineCPU(conn, xmlCPUs, ncpus, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+char *
+virConnectBaselineHypervisorCPUWrapper(virConnectPtr conn,
+                                       const char *emulator,
+                                       const char *arch,
+                                       const char *machine,
+                                       const char *virttype,
+                                       const char **xmlCPUs,
+                                       unsigned int ncpus,
+                                       unsigned int flags,
+                                       virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 4004000
+    assert(0); // Caller should have checked version
+#else
+    char * ret = virConnectBaselineHypervisorCPU(conn, emulator, arch, machine, virttype, xmlCPUs, ncpus, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+int
+virConnectCloseWrapper(virConnectPtr conn,
+                       virErrorPtr err)
+{
+    int ret = virConnectClose(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectCompareCPUWrapper(virConnectPtr conn,
+                            const char *xmlDesc,
+                            unsigned int flags,
+                            virErrorPtr err)
+{
+    int ret = virConnectCompareCPU(conn, xmlDesc, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectCompareHypervisorCPUWrapper(virConnectPtr conn,
+                                      const char *emulator,
+                                      const char *arch,
+                                      const char *machine,
+                                      const char *virttype,
+                                      const char *xmlCPU,
+                                      unsigned int flags,
+                                      virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 4004000
+    assert(0); // Caller should have checked version
+#else
+    int ret = virConnectCompareHypervisorCPU(conn, emulator, arch, machine, virttype, xmlCPU, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+char *
+virConnectDomainXMLFromNativeWrapper(virConnectPtr conn,
+                                     const char *nativeFormat,
+                                     const char *nativeConfig,
+                                     unsigned int flags,
+                                     virErrorPtr err)
+{
+    char * ret = virConnectDomainXMLFromNative(conn, nativeFormat, nativeConfig, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+char *
+virConnectDomainXMLToNativeWrapper(virConnectPtr conn,
+                                   const char *nativeFormat,
+                                   const char *domainXml,
+                                   unsigned int flags,
+                                   virErrorPtr err)
+{
+    char * ret = virConnectDomainXMLToNative(conn, nativeFormat, domainXml, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+char *
+virConnectFindStoragePoolSourcesWrapper(virConnectPtr conn,
+                                        const char *type,
+                                        const char *srcSpec,
+                                        unsigned int flags,
+                                        virErrorPtr err)
+{
+    char * ret = virConnectFindStoragePoolSources(conn, type, srcSpec, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectGetAllDomainStatsWrapper(virConnectPtr conn,
+                                   unsigned int stats,
+                                   virDomainStatsRecordPtr **retStats,
+                                   unsigned int flags,
+                                   virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 1002008
+    assert(0); // Caller should have checked version
+#else
+    int ret = virConnectGetAllDomainStats(conn, stats, retStats, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+int
+virConnectGetCPUModelNamesWrapper(virConnectPtr conn,
+                                  const char *arch,
+                                  char ** *models,
+                                  unsigned int flags,
+                                  virErrorPtr err)
+{
+    int ret = virConnectGetCPUModelNames(conn, arch, models, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+char *
+virConnectGetCapabilitiesWrapper(virConnectPtr conn,
+                                 virErrorPtr err)
+{
+    char * ret = virConnectGetCapabilities(conn);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+char *
+virConnectGetDomainCapabilitiesWrapper(virConnectPtr conn,
+                                       const char *emulatorbin,
+                                       const char *arch,
+                                       const char *machine,
+                                       const char *virttype,
+                                       unsigned int flags,
+                                       virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 1002007
+    assert(0); // Caller should have checked version
+#else
+    char * ret = virConnectGetDomainCapabilities(conn, emulatorbin, arch, machine, virttype, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+char *
+virConnectGetHostnameWrapper(virConnectPtr conn,
+                             virErrorPtr err)
+{
+    char * ret = virConnectGetHostname(conn);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectGetLibVersionWrapper(virConnectPtr conn,
+                               unsigned long *libVer,
+                               virErrorPtr err)
+{
+    int ret = virConnectGetLibVersion(conn, libVer);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectGetMaxVcpusWrapper(virConnectPtr conn,
+                             const char *type,
+                             virErrorPtr err)
+{
+    int ret = virConnectGetMaxVcpus(conn, type);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+char *
+virConnectGetSysinfoWrapper(virConnectPtr conn,
+                            unsigned int flags,
+                            virErrorPtr err)
+{
+    char * ret = virConnectGetSysinfo(conn, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+const char *
+virConnectGetTypeWrapper(virConnectPtr conn,
+                         virErrorPtr err)
+{
+    const char * ret = virConnectGetType(conn);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+char *
+virConnectGetURIWrapper(virConnectPtr conn,
+                        virErrorPtr err)
+{
+    char * ret = virConnectGetURI(conn);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectGetVersionWrapper(virConnectPtr conn,
+                            unsigned long *hvVer,
+                            virErrorPtr err)
+{
+    int ret = virConnectGetVersion(conn, hvVer);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectIsAliveWrapper(virConnectPtr conn,
+                         virErrorPtr err)
+{
+    int ret = virConnectIsAlive(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectIsEncryptedWrapper(virConnectPtr conn,
+                             virErrorPtr err)
+{
+    int ret = virConnectIsEncrypted(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectIsSecureWrapper(virConnectPtr conn,
+                          virErrorPtr err)
+{
+    int ret = virConnectIsSecure(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListAllDomainsWrapper(virConnectPtr conn,
+                                virDomainPtr **domains,
+                                unsigned int flags,
+                                virErrorPtr err)
+{
+    int ret = virConnectListAllDomains(conn, domains, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListAllInterfacesWrapper(virConnectPtr conn,
+                                   virInterfacePtr **ifaces,
+                                   unsigned int flags,
+                                   virErrorPtr err)
+{
+    int ret = virConnectListAllInterfaces(conn, ifaces, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn,
+                                         virNWFilterBindingPtr **bindings,
+                                         unsigned int flags,
+                                         virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 4005000
+    assert(0); // Caller should have checked version
+#else
+    int ret = virConnectListAllNWFilterBindings(conn, bindings, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+int
+virConnectListAllNWFiltersWrapper(virConnectPtr conn,
+                                  virNWFilterPtr **filters,
+                                  unsigned int flags,
+                                  virErrorPtr err)
+{
+    int ret = virConnectListAllNWFilters(conn, filters, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListAllNetworksWrapper(virConnectPtr conn,
+                                 virNetworkPtr **nets,
+                                 unsigned int flags,
+                                 virErrorPtr err)
+{
+    int ret = virConnectListAllNetworks(conn, nets, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListAllNodeDevicesWrapper(virConnectPtr conn,
+                                    virNodeDevicePtr **devices,
+                                    unsigned int flags,
+                                    virErrorPtr err)
+{
+    int ret = virConnectListAllNodeDevices(conn, devices, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListAllSecretsWrapper(virConnectPtr conn,
+                                virSecretPtr **secrets,
+                                unsigned int flags,
+                                virErrorPtr err)
+{
+    int ret = virConnectListAllSecrets(conn, secrets, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListAllStoragePoolsWrapper(virConnectPtr conn,
+                                     virStoragePoolPtr **pools,
+                                     unsigned int flags,
+                                     virErrorPtr err)
+{
+    int ret = virConnectListAllStoragePools(conn, pools, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListDefinedDomainsWrapper(virConnectPtr conn,
+                                    char ** const names,
+                                    int maxnames,
+                                    virErrorPtr err)
+{
+    int ret = virConnectListDefinedDomains(conn, names, maxnames);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListDefinedInterfacesWrapper(virConnectPtr conn,
+                                       char ** const names,
+                                       int maxnames,
+                                       virErrorPtr err)
+{
+    int ret = virConnectListDefinedInterfaces(conn, names, maxnames);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListDefinedNetworksWrapper(virConnectPtr conn,
+                                     char ** const names,
+                                     int maxnames,
+                                     virErrorPtr err)
+{
+    int ret = virConnectListDefinedNetworks(conn, names, maxnames);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListDefinedStoragePoolsWrapper(virConnectPtr conn,
+                                         char ** const names,
+                                         int maxnames,
+                                         virErrorPtr err)
+{
+    int ret = virConnectListDefinedStoragePools(conn, names, maxnames);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListDomainsWrapper(virConnectPtr conn,
+                             int *ids,
+                             int maxids,
+                             virErrorPtr err)
+{
+    int ret = virConnectListDomains(conn, ids, maxids);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListInterfacesWrapper(virConnectPtr conn,
+                                char ** const names,
+                                int maxnames,
+                                virErrorPtr err)
+{
+    int ret = virConnectListInterfaces(conn, names, maxnames);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListNWFiltersWrapper(virConnectPtr conn,
+                               char ** const names,
+                               int maxnames,
+                               virErrorPtr err)
+{
+    int ret = virConnectListNWFilters(conn, names, maxnames);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListNetworksWrapper(virConnectPtr conn,
+                              char ** const names,
+                              int maxnames,
+                              virErrorPtr err)
+{
+    int ret = virConnectListNetworks(conn, names, maxnames);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListSecretsWrapper(virConnectPtr conn,
+                             char **uuids,
+                             int maxuuids,
+                             virErrorPtr err)
+{
+    int ret = virConnectListSecrets(conn, uuids, maxuuids);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectListStoragePoolsWrapper(virConnectPtr conn,
+                                  char ** const names,
+                                  int maxnames,
+                                  virErrorPtr err)
+{
+    int ret = virConnectListStoragePools(conn, names, maxnames);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectNumOfDefinedDomainsWrapper(virConnectPtr conn,
+                                     virErrorPtr err)
+{
+    int ret = virConnectNumOfDefinedDomains(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectNumOfDefinedInterfacesWrapper(virConnectPtr conn,
+                                        virErrorPtr err)
+{
+    int ret = virConnectNumOfDefinedInterfaces(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectNumOfDefinedNetworksWrapper(virConnectPtr conn,
+                                      virErrorPtr err)
+{
+    int ret = virConnectNumOfDefinedNetworks(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectNumOfDefinedStoragePoolsWrapper(virConnectPtr conn,
+                                          virErrorPtr err)
+{
+    int ret = virConnectNumOfDefinedStoragePools(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectNumOfDomainsWrapper(virConnectPtr conn,
+                              virErrorPtr err)
+{
+    int ret = virConnectNumOfDomains(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectNumOfInterfacesWrapper(virConnectPtr conn,
+                                 virErrorPtr err)
+{
+    int ret = virConnectNumOfInterfaces(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectNumOfNWFiltersWrapper(virConnectPtr conn,
+                                virErrorPtr err)
+{
+    int ret = virConnectNumOfNWFilters(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectNumOfNetworksWrapper(virConnectPtr conn,
+                               virErrorPtr err)
+{
+    int ret = virConnectNumOfNetworks(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectNumOfSecretsWrapper(virConnectPtr conn,
+                              virErrorPtr err)
+{
+    int ret = virConnectNumOfSecrets(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectNumOfStoragePoolsWrapper(virConnectPtr conn,
+                                   virErrorPtr err)
+{
+    int ret = virConnectNumOfStoragePools(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virConnectPtr
+virConnectOpenWrapper(const char *name,
+                      virErrorPtr err)
+{
+    virConnectPtr ret = virConnectOpen(name);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virConnectPtr
+virConnectOpenAuthWrapper(const char *name,
+                          int *credtype,
+                          unsigned int ncredtype,
+                          int callbackID,
+                          unsigned int flags,
+                          virErrorPtr err)
+{
+    virConnectAuth auth = {
+       .credtype = credtype,
+       .ncredtype = ncredtype,
+       .cb = connectAuthCallbackHelper,
+       .cbdata = &callbackID,
+    };
+
+    virConnectPtr ret = virConnectOpenAuth(name, &auth, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virConnectPtr
+virConnectOpenReadOnlyWrapper(const char *name,
+                              virErrorPtr err)
+{
+    virConnectPtr ret = virConnectOpenReadOnly(name);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectRefWrapper(virConnectPtr conn,
+                     virErrorPtr err)
+{
+    int ret = virConnectRef(conn);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectRegisterCloseCallbackWrapper(virConnectPtr conn,
+                                       long goCallbackId,
+                                       virErrorPtr err)
+{
+    void *id = (void*)goCallbackId;
+    int ret = virConnectRegisterCloseCallback(conn, closeCallbackHelper, id, freeGoCallbackHelper);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectSetKeepAliveWrapper(virConnectPtr conn,
+                              int interval,
+                              unsigned int count,
+                              virErrorPtr err)
+{
+    int ret = virConnectSetKeepAlive(conn, interval, count);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virConnectUnregisterCloseCallbackWrapper(virConnectPtr conn,
+                                         virErrorPtr err)
+{
+    int ret = virConnectUnregisterCloseCallback(conn, closeCallbackHelper);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virDomainPtr
+virDomainCreateLinuxWrapper(virConnectPtr conn,
+                            const char *xmlDesc,
+                            unsigned int flags,
+                            virErrorPtr err)
+{
+    virDomainPtr ret = virDomainCreateLinux(conn, xmlDesc, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virDomainPtr
+virDomainCreateXMLWrapper(virConnectPtr conn,
+                          const char *xmlDesc,
+                          unsigned int flags,
+                          virErrorPtr err)
+{
+    virDomainPtr ret = virDomainCreateXML(conn, xmlDesc, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virDomainPtr
+virDomainCreateXMLWithFilesWrapper(virConnectPtr conn,
+                                   const char *xmlDesc,
+                                   unsigned int nfiles,
+                                   int *files,
+                                   unsigned int flags,
+                                   virErrorPtr err)
+{
+    virDomainPtr ret = virDomainCreateXMLWithFiles(conn, xmlDesc, nfiles, files, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virDomainPtr
+virDomainDefineXMLWrapper(virConnectPtr conn,
+                          const char *xml,
+                          virErrorPtr err)
+{
+    virDomainPtr ret = virDomainDefineXML(conn, xml);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virDomainPtr
+virDomainDefineXMLFlagsWrapper(virConnectPtr conn,
+                               const char *xml,
+                               unsigned int flags,
+                               virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 1002012
+    assert(0); // Caller should have checked version
+#else
+    virDomainPtr ret = virDomainDefineXMLFlags(conn, xml, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+int
+virDomainListGetStatsWrapper(virDomainPtr *doms,
+                             unsigned int stats,
+                             virDomainStatsRecordPtr **retStats,
+                             unsigned int flags,
+                             virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 1002008
+    assert(0); // Caller should have checked version
+#else
+    int ret = virDomainListGetStats(doms, stats, retStats, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+virDomainPtr
+virDomainLookupByIDWrapper(virConnectPtr conn,
+                           int id,
+                           virErrorPtr err)
+{
+    virDomainPtr ret = virDomainLookupByID(conn, id);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virDomainPtr
+virDomainLookupByNameWrapper(virConnectPtr conn,
+                             const char *name,
+                             virErrorPtr err)
+{
+    virDomainPtr ret = virDomainLookupByName(conn, name);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virDomainPtr
+virDomainLookupByUUIDWrapper(virConnectPtr conn,
+                             const unsigned char *uuid,
+                             virErrorPtr err)
+{
+    virDomainPtr ret = virDomainLookupByUUID(conn, uuid);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virDomainPtr
+virDomainLookupByUUIDStringWrapper(virConnectPtr conn,
+                                   const char *uuidstr,
+                                   virErrorPtr err)
+{
+    virDomainPtr ret = virDomainLookupByUUIDString(conn, uuidstr);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virDomainRestoreWrapper(virConnectPtr conn,
+                        const char *from,
+                        virErrorPtr err)
+{
+    int ret = virDomainRestore(conn, from);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virDomainRestoreFlagsWrapper(virConnectPtr conn,
+                             const char *from,
+                             const char *dxml,
+                             unsigned int flags,
+                             virErrorPtr err)
+{
+    int ret = virDomainRestoreFlags(conn, from, dxml, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virDomainSaveImageDefineXMLWrapper(virConnectPtr conn,
+                                   const char *file,
+                                   const char *dxml,
+                                   unsigned int flags,
+                                   virErrorPtr err)
+{
+    int ret = virDomainSaveImageDefineXML(conn, file, dxml, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+char *
+virDomainSaveImageGetXMLDescWrapper(virConnectPtr conn,
+                                    const char *file,
+                                    unsigned int flags,
+                                    virErrorPtr err)
+{
+    char * ret = virDomainSaveImageGetXMLDesc(conn, file, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+void
+virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats)
+{
+#if LIBVIR_VERSION_NUMBER < 1002008
+    assert(0); // Caller should have checked version
+#else
+    virDomainStatsRecordListFree(stats);
+#endif
+}
+
+
+int
+virGetVersionWrapper(unsigned long *libVer,
+                     const char *type,
+                     unsigned long *typeVer,
+                     virErrorPtr err)
+{
+    int ret = virGetVersion(libVer, type, typeVer);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virInterfaceChangeBeginWrapper(virConnectPtr conn,
+                               unsigned int flags,
+                               virErrorPtr err)
+{
+    int ret = virInterfaceChangeBegin(conn, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virInterfaceChangeCommitWrapper(virConnectPtr conn,
+                                unsigned int flags,
+                                virErrorPtr err)
+{
+    int ret = virInterfaceChangeCommit(conn, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virInterfaceChangeRollbackWrapper(virConnectPtr conn,
+                                  unsigned int flags,
+                                  virErrorPtr err)
+{
+    int ret = virInterfaceChangeRollback(conn, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virInterfacePtr
+virInterfaceDefineXMLWrapper(virConnectPtr conn,
+                             const char *xml,
+                             unsigned int flags,
+                             virErrorPtr err)
+{
+    virInterfacePtr ret = virInterfaceDefineXML(conn, xml, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virInterfacePtr
+virInterfaceLookupByMACStringWrapper(virConnectPtr conn,
+                                     const char *macstr,
+                                     virErrorPtr err)
+{
+    virInterfacePtr ret = virInterfaceLookupByMACString(conn, macstr);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virInterfacePtr
+virInterfaceLookupByNameWrapper(virConnectPtr conn,
+                                const char *name,
+                                virErrorPtr err)
+{
+    virInterfacePtr ret = virInterfaceLookupByName(conn, name);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virNWFilterBindingPtr
+virNWFilterBindingCreateXMLWrapper(virConnectPtr conn,
+                                   const char *xml,
+                                   unsigned int flags,
+                                   virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 4005000
+    assert(0); // Caller should have checked version
+#else
+    virNWFilterBindingPtr ret = virNWFilterBindingCreateXML(conn, xml, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+virNWFilterBindingPtr
+virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn,
+                                         const char *portdev,
+                                         virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 4005000
+    assert(0); // Caller should have checked version
+#else
+    virNWFilterBindingPtr ret = virNWFilterBindingLookupByPortDev(conn, portdev);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+virNWFilterPtr
+virNWFilterDefineXMLWrapper(virConnectPtr conn,
+                            const char *xmlDesc,
+                            virErrorPtr err)
+{
+    virNWFilterPtr ret = virNWFilterDefineXML(conn, xmlDesc);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virNWFilterPtr
+virNWFilterLookupByNameWrapper(virConnectPtr conn,
+                               const char *name,
+                               virErrorPtr err)
+{
+    virNWFilterPtr ret = virNWFilterLookupByName(conn, name);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virNWFilterPtr
+virNWFilterLookupByUUIDWrapper(virConnectPtr conn,
+                               const unsigned char *uuid,
+                               virErrorPtr err)
+{
+    virNWFilterPtr ret = virNWFilterLookupByUUID(conn, uuid);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virNWFilterPtr
+virNWFilterLookupByUUIDStringWrapper(virConnectPtr conn,
+                                     const char *uuidstr,
+                                     virErrorPtr err)
+{
+    virNWFilterPtr ret = virNWFilterLookupByUUIDString(conn, uuidstr);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virNetworkPtr
+virNetworkCreateXMLWrapper(virConnectPtr conn,
+                           const char *xmlDesc,
+                           virErrorPtr err)
+{
+    virNetworkPtr ret = virNetworkCreateXML(conn, xmlDesc);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virNetworkPtr
+virNetworkDefineXMLWrapper(virConnectPtr conn,
+                           const char *xml,
+                           virErrorPtr err)
+{
+    virNetworkPtr ret = virNetworkDefineXML(conn, xml);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virNetworkPtr
+virNetworkLookupByNameWrapper(virConnectPtr conn,
+                              const char *name,
+                              virErrorPtr err)
+{
+    virNetworkPtr ret = virNetworkLookupByName(conn, name);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virNetworkPtr
+virNetworkLookupByUUIDWrapper(virConnectPtr conn,
+                              const unsigned char *uuid,
+                              virErrorPtr err)
+{
+    virNetworkPtr ret = virNetworkLookupByUUID(conn, uuid);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virNetworkPtr
+virNetworkLookupByUUIDStringWrapper(virConnectPtr conn,
+                                    const char *uuidstr,
+                                    virErrorPtr err)
+{
+    virNetworkPtr ret = virNetworkLookupByUUIDString(conn, uuidstr);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virNodeAllocPagesWrapper(virConnectPtr conn,
+                         unsigned int npages,
+                         unsigned int *pageSizes,
+                         unsigned long long *pageCounts,
+                         int startCell,
+                         unsigned int cellCount,
+                         unsigned int flags,
+                         virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 1002009
+    assert(0); // Caller should have checked version
+#else
+    int ret = virNodeAllocPages(conn, npages, pageSizes, pageCounts, startCell, cellCount, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+virNodeDevicePtr
+virNodeDeviceCreateXMLWrapper(virConnectPtr conn,
+                              const char *xmlDesc,
+                              unsigned int flags,
+                              virErrorPtr err)
+{
+    virNodeDevicePtr ret = virNodeDeviceCreateXML(conn, xmlDesc, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virNodeDevicePtr
+virNodeDeviceLookupByNameWrapper(virConnectPtr conn,
+                                 const char *name,
+                                 virErrorPtr err)
+{
+    virNodeDevicePtr ret = virNodeDeviceLookupByName(conn, name);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virNodeDevicePtr
+virNodeDeviceLookupSCSIHostByWWNWrapper(virConnectPtr conn,
+                                        const char *wwnn,
+                                        const char *wwpn,
+                                        unsigned int flags,
+                                        virErrorPtr err)
+{
+    virNodeDevicePtr ret = virNodeDeviceLookupSCSIHostByWWN(conn, wwnn, wwpn, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virNodeGetCPUMapWrapper(virConnectPtr conn,
+                        unsigned char **cpumap,
+                        unsigned int *online,
+                        unsigned int flags,
+                        virErrorPtr err)
+{
+    int ret = virNodeGetCPUMap(conn, cpumap, online, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virNodeGetCPUStatsWrapper(virConnectPtr conn,
+                          int cpuNum,
+                          virNodeCPUStatsPtr params,
+                          int *nparams,
+                          unsigned int flags,
+                          virErrorPtr err)
+{
+    int ret = virNodeGetCPUStats(conn, cpuNum, params, nparams, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virNodeGetCellsFreeMemoryWrapper(virConnectPtr conn,
+                                 unsigned long long *freeMems,
+                                 int startCell,
+                                 int maxCells,
+                                 virErrorPtr err)
+{
+    int ret = virNodeGetCellsFreeMemory(conn, freeMems, startCell, maxCells);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+unsigned long long
+virNodeGetFreeMemoryWrapper(virConnectPtr conn,
+                            virErrorPtr err)
+{
+    unsigned long long ret = virNodeGetFreeMemory(conn);
+    if (ret == 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virNodeGetFreePagesWrapper(virConnectPtr conn,
+                           unsigned int npages,
+                           unsigned int *pages,
+                           int startCell,
+                           unsigned int cellCount,
+                           unsigned long long *counts,
+                           unsigned int flags,
+                           virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 1002006
+    assert(0); // Caller should have checked version
+#else
+    int ret = virNodeGetFreePages(conn, npages, pages, startCell, cellCount, counts, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+int
+virNodeGetInfoWrapper(virConnectPtr conn,
+                      virNodeInfoPtr info,
+                      virErrorPtr err)
+{
+    int ret = virNodeGetInfo(conn, info);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virNodeGetMemoryParametersWrapper(virConnectPtr conn,
+                                  virTypedParameterPtr params,
+                                  int *nparams,
+                                  unsigned int flags,
+                                  virErrorPtr err)
+{
+    int ret = virNodeGetMemoryParameters(conn, params, nparams, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virNodeGetMemoryStatsWrapper(virConnectPtr conn,
+                             int cellNum,
+                             virNodeMemoryStatsPtr params,
+                             int *nparams,
+                             unsigned int flags,
+                             virErrorPtr err)
+{
+    int ret = virNodeGetMemoryStats(conn, cellNum, params, nparams, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virNodeGetSEVInfoWrapper(virConnectPtr conn,
+                         virTypedParameterPtr *params,
+                         int *nparams,
+                         unsigned int flags,
+                         virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 4005000
+    assert(0); // Caller should have checked version
+#else
+    int ret = virNodeGetSEVInfo(conn, params, nparams, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+int
+virNodeGetSecurityModelWrapper(virConnectPtr conn,
+                               virSecurityModelPtr secmodel,
+                               virErrorPtr err)
+{
+    int ret = virNodeGetSecurityModel(conn, secmodel);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virNodeListDevicesWrapper(virConnectPtr conn,
+                          const char *cap,
+                          char ** const names,
+                          int maxnames,
+                          unsigned int flags,
+                          virErrorPtr err)
+{
+    int ret = virNodeListDevices(conn, cap, names, maxnames, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virNodeNumOfDevicesWrapper(virConnectPtr conn,
+                           const char *cap,
+                           unsigned int flags,
+                           virErrorPtr err)
+{
+    int ret = virNodeNumOfDevices(conn, cap, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virNodeSetMemoryParametersWrapper(virConnectPtr conn,
+                                  virTypedParameterPtr params,
+                                  int nparams,
+                                  unsigned int flags,
+                                  virErrorPtr err)
+{
+    int ret = virNodeSetMemoryParameters(conn, params, nparams, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+int
+virNodeSuspendForDurationWrapper(virConnectPtr conn,
+                                 unsigned int target,
+                                 unsigned long long duration,
+                                 unsigned int flags,
+                                 virErrorPtr err)
+{
+    int ret = virNodeSuspendForDuration(conn, target, duration, flags);
+    if (ret < 0) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virSecretPtr
+virSecretDefineXMLWrapper(virConnectPtr conn,
+                          const char *xml,
+                          unsigned int flags,
+                          virErrorPtr err)
+{
+    virSecretPtr ret = virSecretDefineXML(conn, xml, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virSecretPtr
+virSecretLookupByUUIDWrapper(virConnectPtr conn,
+                             const unsigned char *uuid,
+                             virErrorPtr err)
+{
+    virSecretPtr ret = virSecretLookupByUUID(conn, uuid);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virSecretPtr
+virSecretLookupByUUIDStringWrapper(virConnectPtr conn,
+                                   const char *uuidstr,
+                                   virErrorPtr err)
+{
+    virSecretPtr ret = virSecretLookupByUUIDString(conn, uuidstr);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virSecretPtr
+virSecretLookupByUsageWrapper(virConnectPtr conn,
+                              int usageType,
+                              const char *usageID,
+                              virErrorPtr err)
+{
+    virSecretPtr ret = virSecretLookupByUsage(conn, usageType, usageID);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virStoragePoolPtr
+virStoragePoolCreateXMLWrapper(virConnectPtr conn,
+                               const char *xmlDesc,
+                               unsigned int flags,
+                               virErrorPtr err)
+{
+    virStoragePoolPtr ret = virStoragePoolCreateXML(conn, xmlDesc, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virStoragePoolPtr
+virStoragePoolDefineXMLWrapper(virConnectPtr conn,
+                               const char *xml,
+                               unsigned int flags,
+                               virErrorPtr err)
+{
+    virStoragePoolPtr ret = virStoragePoolDefineXML(conn, xml, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virStoragePoolPtr
+virStoragePoolLookupByNameWrapper(virConnectPtr conn,
+                                  const char *name,
+                                  virErrorPtr err)
+{
+    virStoragePoolPtr ret = virStoragePoolLookupByName(conn, name);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virStoragePoolPtr
+virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn,
+                                        const char *path,
+                                        virErrorPtr err)
+{
+#if LIBVIR_VERSION_NUMBER < 4001000
+    assert(0); // Caller should have checked version
+#else
+    virStoragePoolPtr ret = virStoragePoolLookupByTargetPath(conn, path);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+#endif
+}
+
+
+virStoragePoolPtr
+virStoragePoolLookupByUUIDWrapper(virConnectPtr conn,
+                                  const unsigned char *uuid,
+                                  virErrorPtr err)
+{
+    virStoragePoolPtr ret = virStoragePoolLookupByUUID(conn, uuid);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virStoragePoolPtr
+virStoragePoolLookupByUUIDStringWrapper(virConnectPtr conn,
+                                        const char *uuidstr,
+                                        virErrorPtr err)
+{
+    virStoragePoolPtr ret = virStoragePoolLookupByUUIDString(conn, uuidstr);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virStorageVolPtr
+virStorageVolLookupByKeyWrapper(virConnectPtr conn,
+                                const char *key,
+                                virErrorPtr err)
+{
+    virStorageVolPtr ret = virStorageVolLookupByKey(conn, key);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virStorageVolPtr
+virStorageVolLookupByPathWrapper(virConnectPtr conn,
+                                 const char *path,
+                                 virErrorPtr err)
+{
+    virStorageVolPtr ret = virStorageVolLookupByPath(conn, path);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+virStreamPtr
+virStreamNewWrapper(virConnectPtr conn,
+                    unsigned int flags,
+                    virErrorPtr err)
+{
+    virStreamPtr ret = virStreamNew(conn, flags);
+    if (!ret) {
+        virCopyLastError(err);
+    }
+    return ret;
+}
+
+
+////////////////////////////////////////////////
+*/
+import "C"