From nobody Sun Feb 8 06:05:25 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1531747546698415.0197960521407; Mon, 16 Jul 2018 06:25:46 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.25]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CE8FE3086269; Mon, 16 Jul 2018 13:25:44 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 899982010CA0; Mon, 16 Jul 2018 13:25:44 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 1F0873F64B; Mon, 16 Jul 2018 13:25:44 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w6GDP1iw028306 for ; Mon, 16 Jul 2018 09:25:01 -0400 Received: by smtp.corp.redhat.com (Postfix) id DC2412026D76; Mon, 16 Jul 2018 13:25:00 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.75]) by smtp.corp.redhat.com (Postfix) with ESMTP id B06472026D65; Mon, 16 Jul 2018 13:24:58 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Mon, 16 Jul 2018 14:24:16 +0100 Message-Id: <20180716132423.10354-31-berrange@redhat.com> In-Reply-To: <20180716132423.10354-1-berrange@redhat.com> References: <20180716132423.10354-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [go PATCH 30/37] connect: fix error reporting thread safety X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.25 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.49]); Mon, 16 Jul 2018 13:25:45 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Create wrapper functions for each connect C API that accepts a virErrorPtr parameter. This avoids accessing a thread local from a goroutine which may race with other goroutines doing native API calls in the same OS thread. Signed-off-by: Daniel P. Berrang=C3=A9 --- connect.go | 700 ++++++++++-------- connect_wrapper.go | 1725 +++++++++++++++++++++++++++++++++++++++++--- connect_wrapper.h | 697 ++++++++++++++++-- error_test.go | 44 -- 4 files changed, 2677 insertions(+), 489 deletions(-) delete mode 100644 error_test.go diff --git a/connect.go b/connect.go index 5ea8c48..29e4fb0 100644 --- a/connect.go +++ b/connect.go @@ -309,8 +309,10 @@ func releaseConnectionData(c *Connect) { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virGetVersi= on func GetVersion() (uint32, error) { var version C.ulong - if err :=3D C.virGetVersion(&version, nil, nil); err < 0 { - return 0, GetLastError() + var err C.virError + ret :=3D C.virGetVersionWrapper(&version, nil, nil, &err) + if ret < 0 { + return 0, makeError(&err) } return uint32(version), nil } @@ -322,9 +324,10 @@ func NewConnect(uri string) (*Connect, error) { cUri =3D C.CString(uri) defer C.free(unsafe.Pointer(cUri)) } - ptr :=3D C.virConnectOpen(cUri) + var err C.virError + ptr :=3D C.virConnectOpenWrapper(cUri, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Connect{ptr: ptr}, nil } @@ -395,10 +398,11 @@ func NewConnectWithAuth(uri string, auth *ConnectAuth= , flags ConnectFlags) (*Con =20 callbackID :=3D registerCallbackId(auth.Callback) =20 - ptr :=3D C.virConnectOpenAuthWrapper(cUri, &ccredtype[0], C.uint(len(auth= .CredType)), C.int(callbackID), C.uint(flags)) + var err C.virError + ptr :=3D C.virConnectOpenAuthWrapper(cUri, &ccredtype[0], C.uint(len(auth= .CredType)), C.int(callbackID), C.uint(flags), &err) freeCallbackId(callbackID) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Connect{ptr: ptr}, nil } @@ -410,18 +414,20 @@ func NewConnectReadOnly(uri string) (*Connect, error)= { cUri =3D C.CString(uri) defer C.free(unsafe.Pointer(cUri)) } - ptr :=3D C.virConnectOpenReadOnly(cUri) + var err C.virError + ptr :=3D C.virConnectOpenReadOnlyWrapper(cUri, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Connect{ptr: ptr}, nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectC= lose func (c *Connect) Close() (int, error) { - result :=3D int(C.virConnectClose(c.ptr)) + var err C.virError + result :=3D int(C.virConnectCloseWrapper(c.ptr, &err)) if result =3D=3D -1 { - return result, GetLastError() + return result, makeError(&err) } if result =3D=3D 0 { // No more reference to this connection, release data. @@ -433,9 +439,10 @@ func (c *Connect) Close() (int, error) { =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectR= ef func (c *Connect) Ref() error { - ret :=3D C.virConnectRef(c.ptr) + var err C.virError + ret :=3D C.virConnectRefWrapper(c.ptr, &err) if ret =3D=3D -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -449,11 +456,11 @@ type CloseCallback func(conn *Connect, reason Connect= CloseReason) func (c *Connect) RegisterCloseCallback(callback CloseCallback) error { c.UnregisterCloseCallback() goCallbackId :=3D registerCallbackId(callback) - callbackPtr :=3D unsafe.Pointer(C.closeCallbackHelper) - res :=3D C.virConnectRegisterCloseCallbackHelper(c.ptr, C.virConnectClose= Func(callbackPtr), C.long(goCallbackId)) + var err C.virError + res :=3D C.virConnectRegisterCloseCallbackWrapper(c.ptr, C.long(goCallbac= kId), &err) if res !=3D 0 { freeCallbackId(goCallbackId) - return GetLastError() + return makeError(&err) } connData :=3D getConnectionData(c) connData.closeCallbackId =3D &goCallbackId @@ -466,10 +473,10 @@ func (c *Connect) UnregisterCloseCallback() error { if connData.closeCallbackId =3D=3D nil { return nil } - callbackPtr :=3D unsafe.Pointer(C.closeCallbackHelper) - res :=3D C.virConnectUnregisterCloseCallback(c.ptr, C.virConnectCloseFunc= (callbackPtr)) + var err C.virError + res :=3D C.virConnectUnregisterCloseCallbackWrapper(c.ptr, &err) if res !=3D 0 { - return GetLastError() + return makeError(&err) } connData.closeCallbackId =3D nil return nil @@ -487,9 +494,10 @@ func closeCallback(conn C.virConnectPtr, reason Connec= tCloseReason, goCallbackId =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectG= etCapabilities func (c *Connect) GetCapabilities() (string, error) { - str :=3D C.virConnectGetCapabilities(c.ptr) + var err C.virError + str :=3D C.virConnectGetCapabilitiesWrapper(c.ptr, &err) if str =3D=3D nil { - return "", GetLastError() + return "", makeError(&err) } capabilities :=3D C.GoString(str) C.free(unsafe.Pointer(str)) @@ -499,9 +507,10 @@ func (c *Connect) GetCapabilities() (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virNodeGetI= nfo func (c *Connect) GetNodeInfo() (*NodeInfo, error) { var cinfo C.virNodeInfo - result :=3D C.virNodeGetInfo(c.ptr, &cinfo) + var err C.virError + result :=3D C.virNodeGetInfoWrapper(c.ptr, &cinfo, &err) if result =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } return &NodeInfo{ Model: C.GoString((*C.char)(unsafe.Pointer(&cinfo.model[0]))), @@ -521,9 +530,10 @@ func (ni *NodeInfo) GetMaxCPUs() uint32 { =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectG= etHostname func (c *Connect) GetHostname() (string, error) { - str :=3D C.virConnectGetHostname(c.ptr) + var err C.virError + str :=3D C.virConnectGetHostnameWrapper(c.ptr, &err) if str =3D=3D nil { - return "", GetLastError() + return "", makeError(&err) } hostname :=3D C.GoString(str) C.free(unsafe.Pointer(str)) @@ -533,17 +543,20 @@ func (c *Connect) GetHostname() (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectG= etLibVersion func (c *Connect) GetLibVersion() (uint32, error) { var version C.ulong - if err :=3D C.virConnectGetLibVersion(c.ptr, &version); err < 0 { - return 0, GetLastError() + var err C.virError + ret :=3D C.virConnectGetLibVersionWrapper(c.ptr, &version, &err) + if ret < 0 { + return 0, makeError(&err) } return uint32(version), nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectG= etType func (c *Connect) GetType() (string, error) { - str :=3D C.virConnectGetType(c.ptr) + var err C.virError + str :=3D C.virConnectGetTypeWrapper(c.ptr, &err) if str =3D=3D nil { - return "", GetLastError() + return "", makeError(&err) } hypDriver :=3D C.GoString(str) return hypDriver, nil @@ -551,9 +564,10 @@ func (c *Connect) GetType() (string, error) { =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectI= sAlive func (c *Connect) IsAlive() (bool, error) { - result :=3D C.virConnectIsAlive(c.ptr) + var err C.virError + result :=3D C.virConnectIsAliveWrapper(c.ptr, &err) if result =3D=3D -1 { - return false, GetLastError() + return false, makeError(&err) } if result =3D=3D 1 { return true, nil @@ -563,9 +577,10 @@ func (c *Connect) IsAlive() (bool, error) { =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectI= sEncrypted func (c *Connect) IsEncrypted() (bool, error) { - result :=3D C.virConnectIsEncrypted(c.ptr) + var err C.virError + result :=3D C.virConnectIsEncryptedWrapper(c.ptr, &err) if result =3D=3D -1 { - return false, GetLastError() + return false, makeError(&err) } if result =3D=3D 1 { return true, nil @@ -575,9 +590,10 @@ func (c *Connect) IsEncrypted() (bool, error) { =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectI= sSecure func (c *Connect) IsSecure() (bool, error) { - result :=3D C.virConnectIsSecure(c.ptr) + var err C.virError + result :=3D C.virConnectIsSecureWrapper(c.ptr, &err) if result =3D=3D -1 { - return false, GetLastError() + return false, makeError(&err) } if result =3D=3D 1 { return true, nil @@ -589,12 +605,13 @@ func (c *Connect) IsSecure() (bool, error) { func (c *Connect) ListDefinedDomains() ([]string, error) { var names [1024](*C.char) namesPtr :=3D unsafe.Pointer(&names) - numDomains :=3D C.virConnectListDefinedDomains( + var err C.virError + numDomains :=3D C.virConnectListDefinedDomainsWrapper( c.ptr, (**C.char)(namesPtr), - 1024) + 1024, &err) if numDomains =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames :=3D make([]string, numDomains) for k :=3D 0; k < int(numDomains); k++ { @@ -608,9 +625,10 @@ func (c *Connect) ListDefinedDomains() ([]string, erro= r) { func (c *Connect) ListDomains() ([]uint32, error) { var cDomainsIds [512](uint32) cDomainsPointer :=3D unsafe.Pointer(&cDomainsIds) - numDomains :=3D C.virConnectListDomains(c.ptr, (*C.int)(cDomainsPointer),= 512) + var err C.virError + numDomains :=3D C.virConnectListDomainsWrapper(c.ptr, (*C.int)(cDomainsPo= inter), 512, &err) if numDomains =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } =20 return cDomainsIds[:numDomains], nil @@ -621,12 +639,13 @@ func (c *Connect) ListInterfaces() ([]string, error) { const maxIfaces =3D 1024 var names [maxIfaces](*C.char) namesPtr :=3D unsafe.Pointer(&names) - numIfaces :=3D C.virConnectListInterfaces( + var err C.virError + numIfaces :=3D C.virConnectListInterfacesWrapper( c.ptr, (**C.char)(namesPtr), - maxIfaces) + maxIfaces, &err) if numIfaces =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames :=3D make([]string, numIfaces) for k :=3D 0; k < int(numIfaces); k++ { @@ -641,12 +660,13 @@ func (c *Connect) ListNetworks() ([]string, error) { const maxNets =3D 1024 var names [maxNets](*C.char) namesPtr :=3D unsafe.Pointer(&names) - numNetworks :=3D C.virConnectListNetworks( + var err C.virError + numNetworks :=3D C.virConnectListNetworksWrapper( c.ptr, (**C.char)(namesPtr), - maxNets) + maxNets, &err) if numNetworks =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames :=3D make([]string, numNetworks) for k :=3D 0; k < int(numNetworks); k++ { @@ -661,12 +681,13 @@ func (c *Connect) ListNWFilters() ([]string, error) { const maxFilters =3D 1024 var names [maxFilters](*C.char) namesPtr :=3D unsafe.Pointer(&names) - numNWFilters :=3D C.virConnectListNWFilters( + var err C.virError + numNWFilters :=3D C.virConnectListNWFiltersWrapper( c.ptr, (**C.char)(namesPtr), - maxFilters) + maxFilters, &err) if numNWFilters =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames :=3D make([]string, numNWFilters) for k :=3D 0; k < int(numNWFilters); k++ { @@ -681,12 +702,13 @@ func (c *Connect) ListStoragePools() ([]string, error= ) { const maxPools =3D 1024 var names [maxPools](*C.char) namesPtr :=3D unsafe.Pointer(&names) - numStoragePools :=3D C.virConnectListStoragePools( + var err C.virError + numStoragePools :=3D C.virConnectListStoragePoolsWrapper( c.ptr, (**C.char)(namesPtr), - maxPools) + maxPools, &err) if numStoragePools =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames :=3D make([]string, numStoragePools) for k :=3D 0; k < int(numStoragePools); k++ { @@ -701,12 +723,13 @@ func (c *Connect) ListSecrets() ([]string, error) { const maxSecrets =3D 1024 var uuids [maxSecrets](*C.char) uuidsPtr :=3D unsafe.Pointer(&uuids) - numSecrets :=3D C.virConnectListSecrets( + var err C.virError + numSecrets :=3D C.virConnectListSecretsWrapper( c.ptr, (**C.char)(uuidsPtr), - maxSecrets) + maxSecrets, &err) if numSecrets =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } goUuids :=3D make([]string, numSecrets) for k :=3D 0; k < int(numSecrets); k++ { @@ -723,12 +746,13 @@ func (c *Connect) ListDevices(cap string, flags uint3= 2) ([]string, error) { const maxNodeDevices =3D 1024 var uuids [maxNodeDevices](*C.char) uuidsPtr :=3D unsafe.Pointer(&uuids) - numNodeDevices :=3D C.virNodeListDevices( + var err C.virError + numNodeDevices :=3D C.virNodeListDevicesWrapper( c.ptr, ccap, (**C.char)(uuidsPtr), - maxNodeDevices, C.uint(flags)) + maxNodeDevices, C.uint(flags), &err) if numNodeDevices =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } goUuids :=3D make([]string, numNodeDevices) for k :=3D 0; k < int(numNodeDevices); k++ { @@ -740,9 +764,10 @@ func (c *Connect) ListDevices(cap string, flags uint32= ) ([]string, error) { =20 // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomain= LookupByID func (c *Connect) LookupDomainById(id uint32) (*Domain, error) { - ptr :=3D C.virDomainLookupByID(c.ptr, C.int(id)) + var err C.virError + ptr :=3D C.virDomainLookupByIDWrapper(c.ptr, C.int(id), &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -751,9 +776,10 @@ func (c *Connect) LookupDomainById(id uint32) (*Domain= , error) { func (c *Connect) LookupDomainByName(id string) (*Domain, error) { cName :=3D C.CString(id) defer C.free(unsafe.Pointer(cName)) - ptr :=3D C.virDomainLookupByName(c.ptr, cName) + var err C.virError + ptr :=3D C.virDomainLookupByNameWrapper(c.ptr, cName, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -762,9 +788,10 @@ func (c *Connect) LookupDomainByName(id string) (*Doma= in, error) { func (c *Connect) LookupDomainByUUIDString(uuid string) (*Domain, error) { cUuid :=3D C.CString(uuid) defer C.free(unsafe.Pointer(cUuid)) - ptr :=3D C.virDomainLookupByUUIDString(c.ptr, cUuid) + var err C.virError + ptr :=3D C.virDomainLookupByUUIDStringWrapper(c.ptr, cUuid, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -779,9 +806,10 @@ func (c *Connect) LookupDomainByUUID(uuid []byte) (*Do= main, error) { for i :=3D 0; i < C.VIR_UUID_BUFLEN; i++ { cUuid[i] =3D C.uchar(uuid[i]) } - ptr :=3D C.virDomainLookupByUUID(c.ptr, &cUuid[0]) + var err C.virError + ptr :=3D C.virDomainLookupByUUIDWrapper(c.ptr, &cUuid[0], &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -790,9 +818,10 @@ func (c *Connect) LookupDomainByUUID(uuid []byte) (*Do= main, error) { func (c *Connect) DomainCreateXML(xmlConfig string, flags DomainCreateFlag= s) (*Domain, error) { cXml :=3D C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr :=3D C.virDomainCreateXML(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr :=3D C.virDomainCreateXMLWrapper(c.ptr, cXml, C.uint(flags), &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -805,9 +834,10 @@ func (c *Connect) DomainCreateXMLWithFiles(xmlConfig s= tring, files []os.File, fl for i :=3D 0; i < len(files); i++ { cfiles[i] =3D C.int(files[i].Fd()) } - ptr :=3D C.virDomainCreateXMLWithFiles(c.ptr, cXml, C.uint(len(files)), (= &cfiles[0]), C.uint(flags)) + var err C.virError + ptr :=3D C.virDomainCreateXMLWithFilesWrapper(c.ptr, cXml, C.uint(len(fil= es)), (&cfiles[0]), C.uint(flags), &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -816,9 +846,10 @@ func (c *Connect) DomainCreateXMLWithFiles(xmlConfig s= tring, files []os.File, fl func (c *Connect) DomainDefineXML(xmlConfig string) (*Domain, error) { cXml :=3D C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr :=3D C.virDomainDefineXML(c.ptr, cXml) + var err C.virError + ptr :=3D C.virDomainDefineXMLWrapper(c.ptr, cXml, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -830,9 +861,10 @@ func (c *Connect) DomainDefineXMLFlags(xmlConfig strin= g, flags DomainDefineFlags } cXml :=3D C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr :=3D C.virDomainDefineXMLFlagsWrapper(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr :=3D C.virDomainDefineXMLFlagsWrapper(c.ptr, cXml, C.uint(flags), &er= r) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -842,12 +874,13 @@ func (c *Connect) ListDefinedInterfaces() ([]string, = error) { const maxIfaces =3D 1024 var names [maxIfaces](*C.char) namesPtr :=3D unsafe.Pointer(&names) - numIfaces :=3D C.virConnectListDefinedInterfaces( + var err C.virError + numIfaces :=3D C.virConnectListDefinedInterfacesWrapper( c.ptr, (**C.char)(namesPtr), - maxIfaces) + maxIfaces, &err) if numIfaces =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames :=3D make([]string, numIfaces) for k :=3D 0; k < int(numIfaces); k++ { @@ -862,12 +895,13 @@ func (c *Connect) ListDefinedNetworks() ([]string, er= ror) { const maxNets =3D 1024 var names [maxNets](*C.char) namesPtr :=3D unsafe.Pointer(&names) - numNetworks :=3D C.virConnectListDefinedNetworks( + var err C.virError + numNetworks :=3D C.virConnectListDefinedNetworksWrapper( c.ptr, (**C.char)(namesPtr), - maxNets) + maxNets, &err) if numNetworks =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames :=3D make([]string, numNetworks) for k :=3D 0; k < int(numNetworks); k++ { @@ -882,12 +916,13 @@ func (c *Connect) ListDefinedStoragePools() ([]string= , error) { const maxPools =3D 1024 var names [maxPools](*C.char) namesPtr :=3D unsafe.Pointer(&names) - numStoragePools :=3D C.virConnectListDefinedStoragePools( + var err C.virError + numStoragePools :=3D C.virConnectListDefinedStoragePoolsWrapper( c.ptr, (**C.char)(namesPtr), - maxPools) + maxPools, &err) if numStoragePools =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames :=3D make([]string, numStoragePools) for k :=3D 0; k < int(numStoragePools); k++ { @@ -899,90 +934,100 @@ func (c *Connect) ListDefinedStoragePools() ([]strin= g, error) { =20 // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virConnec= tNumOfDefinedDomains func (c *Connect) NumOfDefinedDomains() (int, error) { - result :=3D int(C.virConnectNumOfDefinedDomains(c.ptr)) + var err C.virError + result :=3D int(C.virConnectNumOfDefinedDomainsWrapper(c.ptr, &err)) if result =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virCon= nectNumOfDefinedInterfaces func (c *Connect) NumOfDefinedInterfaces() (int, error) { - result :=3D int(C.virConnectNumOfDefinedInterfaces(c.ptr)) + var err C.virError + result :=3D int(C.virConnectNumOfDefinedInterfacesWrapper(c.ptr, &err)) if result =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-network.html#virConne= ctNumOfDefinedNetworks func (c *Connect) NumOfDefinedNetworks() (int, error) { - result :=3D int(C.virConnectNumOfDefinedNetworks(c.ptr)) + var err C.virError + result :=3D int(C.virConnectNumOfDefinedNetworksWrapper(c.ptr, &err)) if result =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virConne= ctNumOfDefinedStoragePools func (c *Connect) NumOfDefinedStoragePools() (int, error) { - result :=3D int(C.virConnectNumOfDefinedStoragePools(c.ptr)) + var err C.virError + result :=3D int(C.virConnectNumOfDefinedStoragePoolsWrapper(c.ptr, &err)) if result =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virConnec= tNumOfDomains func (c *Connect) NumOfDomains() (int, error) { - result :=3D int(C.virConnectNumOfDomains(c.ptr)) + var err C.virError + result :=3D int(C.virConnectNumOfDomainsWrapper(c.ptr, &err)) if result =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virConne= ctNumOfStoragePools func (c *Connect) NumOfStoragePools() (int, error) { - result :=3D int(C.virConnectNumOfStoragePools(c.ptr)) + var err C.virError + result :=3D int(C.virConnectNumOfStoragePoolsWrapper(c.ptr, &err)) if result =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virCon= nectNumOfInterfaces func (c *Connect) NumOfInterfaces() (int, error) { - result :=3D int(C.virConnectNumOfInterfaces(c.ptr)) + var err C.virError + result :=3D int(C.virConnectNumOfInterfacesWrapper(c.ptr, &err)) if result =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-network.html#virConne= ctNumOfNetworks func (c *Connect) NumOfNetworks() (int, error) { - result :=3D int(C.virConnectNumOfNetworks(c.ptr)) + var err C.virError + result :=3D int(C.virConnectNumOfNetworksWrapper(c.ptr, &err)) if result =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virConn= ectNumOfNWFilters func (c *Connect) NumOfNWFilters() (int, error) { - result :=3D int(C.virConnectNumOfNWFilters(c.ptr)) + var err C.virError + result :=3D int(C.virConnectNumOfNWFiltersWrapper(c.ptr, &err)) if result =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-secret.html#virConnec= tNumOfSecrets func (c *Connect) NumOfSecrets() (int, error) { - result :=3D int(C.virConnectNumOfSecrets(c.ptr)) + var err C.virError + result :=3D int(C.virConnectNumOfSecretsWrapper(c.ptr, &err)) if result =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } @@ -991,9 +1036,10 @@ func (c *Connect) NumOfSecrets() (int, error) { func (c *Connect) NumOfDevices(cap string, flags uint32) (int, error) { ccap :=3D C.CString(cap) defer C.free(unsafe.Pointer(ccap)) - result :=3D int(C.virNodeNumOfDevices(c.ptr, ccap, C.uint(flags))) + var err C.virError + result :=3D int(C.virNodeNumOfDevicesWrapper(c.ptr, ccap, C.uint(flags), = &err)) if result =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } @@ -1002,9 +1048,10 @@ func (c *Connect) NumOfDevices(cap string, flags uin= t32) (int, error) { func (c *Connect) NetworkDefineXML(xmlConfig string) (*Network, error) { cXml :=3D C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr :=3D C.virNetworkDefineXML(c.ptr, cXml) + var err C.virError + ptr :=3D C.virNetworkDefineXMLWrapper(c.ptr, cXml, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Network{ptr: ptr}, nil } @@ -1013,9 +1060,10 @@ func (c *Connect) NetworkDefineXML(xmlConfig string)= (*Network, error) { func (c *Connect) NetworkCreateXML(xmlConfig string) (*Network, error) { cXml :=3D C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr :=3D C.virNetworkCreateXML(c.ptr, cXml) + var err C.virError + ptr :=3D C.virNetworkCreateXMLWrapper(c.ptr, cXml, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Network{ptr: ptr}, nil } @@ -1024,9 +1072,10 @@ func (c *Connect) NetworkCreateXML(xmlConfig string)= (*Network, error) { func (c *Connect) LookupNetworkByName(name string) (*Network, error) { cName :=3D C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr :=3D C.virNetworkLookupByName(c.ptr, cName) + var err C.virError + ptr :=3D C.virNetworkLookupByNameWrapper(c.ptr, cName, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Network{ptr: ptr}, nil } @@ -1035,9 +1084,10 @@ func (c *Connect) LookupNetworkByName(name string) (= *Network, error) { func (c *Connect) LookupNetworkByUUIDString(uuid string) (*Network, error)= { cUuid :=3D C.CString(uuid) defer C.free(unsafe.Pointer(cUuid)) - ptr :=3D C.virNetworkLookupByUUIDString(c.ptr, cUuid) + var err C.virError + ptr :=3D C.virNetworkLookupByUUIDStringWrapper(c.ptr, cUuid, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Network{ptr: ptr}, nil } @@ -1052,29 +1102,32 @@ func (c *Connect) LookupNetworkByUUID(uuid []byte) = (*Network, error) { for i :=3D 0; i < C.VIR_UUID_BUFLEN; i++ { cUuid[i] =3D C.uchar(uuid[i]) } - ptr :=3D C.virNetworkLookupByUUID(c.ptr, &cUuid[0]) + var err C.virError + ptr :=3D C.virNetworkLookupByUUIDWrapper(c.ptr, &cUuid[0], &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Network{ptr: ptr}, nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectS= etKeepAlive func (c *Connect) SetKeepAlive(interval int, count uint) error { - res :=3D int(C.virConnectSetKeepAlive(c.ptr, C.int(interval), C.uint(coun= t))) + var err C.virError + res :=3D int(C.virConnectSetKeepAliveWrapper(c.ptr, C.int(interval), C.ui= nt(count), &err)) switch res { case 0: return nil default: - return GetLastError() + return makeError(&err) } } =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectG= etSysinfo func (c *Connect) GetSysinfo(flags uint32) (string, error) { - cStr :=3D C.virConnectGetSysinfo(c.ptr, C.uint(flags)) + var err C.virError + cStr :=3D C.virConnectGetSysinfoWrapper(c.ptr, C.uint(flags), &err) if cStr =3D=3D nil { - return "", GetLastError() + return "", makeError(&err) } info :=3D C.GoString(cStr) C.free(unsafe.Pointer(cStr)) @@ -1083,9 +1136,10 @@ func (c *Connect) GetSysinfo(flags uint32) (string, = error) { =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectG= etURI func (c *Connect) GetURI() (string, error) { - cStr :=3D C.virConnectGetURI(c.ptr) + var err C.virError + cStr :=3D C.virConnectGetURIWrapper(c.ptr, &err) if cStr =3D=3D nil { - return "", GetLastError() + return "", makeError(&err) } uri :=3D C.GoString(cStr) C.free(unsafe.Pointer(cStr)) @@ -1099,9 +1153,10 @@ func (c *Connect) GetMaxVcpus(typeAttr string) (int,= error) { cTypeAttr =3D C.CString(typeAttr) defer C.free(unsafe.Pointer(cTypeAttr)) } - result :=3D int(C.virConnectGetMaxVcpus(c.ptr, cTypeAttr)) + var err C.virError + result :=3D int(C.virConnectGetMaxVcpusWrapper(c.ptr, cTypeAttr, &err)) if result =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } @@ -1110,9 +1165,10 @@ func (c *Connect) GetMaxVcpus(typeAttr string) (int,= error) { func (c *Connect) InterfaceDefineXML(xmlConfig string, flags uint32) (*Int= erface, error) { cXml :=3D C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr :=3D C.virInterfaceDefineXML(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr :=3D C.virInterfaceDefineXMLWrapper(c.ptr, cXml, C.uint(flags), &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Interface{ptr: ptr}, nil } @@ -1121,9 +1177,10 @@ func (c *Connect) InterfaceDefineXML(xmlConfig strin= g, flags uint32) (*Interface func (c *Connect) LookupInterfaceByName(name string) (*Interface, error) { cName :=3D C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr :=3D C.virInterfaceLookupByName(c.ptr, cName) + var err C.virError + ptr :=3D C.virInterfaceLookupByNameWrapper(c.ptr, cName, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Interface{ptr: ptr}, nil } @@ -1132,9 +1189,10 @@ func (c *Connect) LookupInterfaceByName(name string)= (*Interface, error) { func (c *Connect) LookupInterfaceByMACString(mac string) (*Interface, erro= r) { cName :=3D C.CString(mac) defer C.free(unsafe.Pointer(cName)) - ptr :=3D C.virInterfaceLookupByMACString(c.ptr, cName) + var err C.virError + ptr :=3D C.virInterfaceLookupByMACStringWrapper(c.ptr, cName, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Interface{ptr: ptr}, nil } @@ -1143,9 +1201,10 @@ func (c *Connect) LookupInterfaceByMACString(mac str= ing) (*Interface, error) { func (c *Connect) StoragePoolDefineXML(xmlConfig string, flags uint32) (*S= toragePool, error) { cXml :=3D C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr :=3D C.virStoragePoolDefineXML(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr :=3D C.virStoragePoolDefineXMLWrapper(c.ptr, cXml, C.uint(flags), &er= r) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StoragePool{ptr: ptr}, nil } @@ -1154,9 +1213,10 @@ func (c *Connect) StoragePoolDefineXML(xmlConfig str= ing, flags uint32) (*Storage func (c *Connect) StoragePoolCreateXML(xmlConfig string, flags StoragePool= CreateFlags) (*StoragePool, error) { cXml :=3D C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr :=3D C.virStoragePoolCreateXML(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr :=3D C.virStoragePoolCreateXMLWrapper(c.ptr, cXml, C.uint(flags), &er= r) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StoragePool{ptr: ptr}, nil } @@ -1165,9 +1225,10 @@ func (c *Connect) StoragePoolCreateXML(xmlConfig str= ing, flags StoragePoolCreate func (c *Connect) LookupStoragePoolByName(name string) (*StoragePool, erro= r) { cName :=3D C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr :=3D C.virStoragePoolLookupByName(c.ptr, cName) + var err C.virError + ptr :=3D C.virStoragePoolLookupByNameWrapper(c.ptr, cName, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StoragePool{ptr: ptr}, nil } @@ -1176,9 +1237,10 @@ func (c *Connect) LookupStoragePoolByName(name strin= g) (*StoragePool, error) { func (c *Connect) LookupStoragePoolByUUIDString(uuid string) (*StoragePool= , error) { cUuid :=3D C.CString(uuid) defer C.free(unsafe.Pointer(cUuid)) - ptr :=3D C.virStoragePoolLookupByUUIDString(c.ptr, cUuid) + var err C.virError + ptr :=3D C.virStoragePoolLookupByUUIDStringWrapper(c.ptr, cUuid, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StoragePool{ptr: ptr}, nil } @@ -1193,9 +1255,10 @@ func (c *Connect) LookupStoragePoolByUUID(uuid []byt= e) (*StoragePool, error) { for i :=3D 0; i < C.VIR_UUID_BUFLEN; i++ { cUuid[i] =3D C.uchar(uuid[i]) } - ptr :=3D C.virStoragePoolLookupByUUID(c.ptr, &cUuid[0]) + var err C.virError + ptr :=3D C.virStoragePoolLookupByUUIDWrapper(c.ptr, &cUuid[0], &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StoragePool{ptr: ptr}, nil } @@ -1207,9 +1270,10 @@ func (c *Connect) LookupStoragePoolByTargetPath(path= string) (*StoragePool, erro } cPath :=3D C.CString(path) defer C.free(unsafe.Pointer(cPath)) - ptr :=3D C.virStoragePoolLookupByTargetPathWrapper(c.ptr, cPath) + var err C.virError + ptr :=3D C.virStoragePoolLookupByTargetPathWrapper(c.ptr, cPath, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StoragePool{ptr: ptr}, nil } @@ -1218,9 +1282,10 @@ func (c *Connect) LookupStoragePoolByTargetPath(path= string) (*StoragePool, erro func (c *Connect) NWFilterDefineXML(xmlConfig string) (*NWFilter, error) { cXml :=3D C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr :=3D C.virNWFilterDefineXML(c.ptr, cXml) + var err C.virError + ptr :=3D C.virNWFilterDefineXMLWrapper(c.ptr, cXml, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NWFilter{ptr: ptr}, nil } @@ -1229,9 +1294,10 @@ func (c *Connect) NWFilterDefineXML(xmlConfig string= ) (*NWFilter, error) { func (c *Connect) LookupNWFilterByName(name string) (*NWFilter, error) { cName :=3D C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr :=3D C.virNWFilterLookupByName(c.ptr, cName) + var err C.virError + ptr :=3D C.virNWFilterLookupByNameWrapper(c.ptr, cName, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NWFilter{ptr: ptr}, nil } @@ -1240,9 +1306,10 @@ func (c *Connect) LookupNWFilterByName(name string) = (*NWFilter, error) { func (c *Connect) LookupNWFilterByUUIDString(uuid string) (*NWFilter, erro= r) { cUuid :=3D C.CString(uuid) defer C.free(unsafe.Pointer(cUuid)) - ptr :=3D C.virNWFilterLookupByUUIDString(c.ptr, cUuid) + var err C.virError + ptr :=3D C.virNWFilterLookupByUUIDStringWrapper(c.ptr, cUuid, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NWFilter{ptr: ptr}, nil } @@ -1257,9 +1324,10 @@ func (c *Connect) LookupNWFilterByUUID(uuid []byte) = (*NWFilter, error) { for i :=3D 0; i < C.VIR_UUID_BUFLEN; i++ { cUuid[i] =3D C.uchar(uuid[i]) } - ptr :=3D C.virNWFilterLookupByUUID(c.ptr, &cUuid[0]) + var err C.virError + ptr :=3D C.virNWFilterLookupByUUIDWrapper(c.ptr, &cUuid[0], &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NWFilter{ptr: ptr}, nil } @@ -1271,9 +1339,10 @@ func (c *Connect) LookupNWFilterBindingByPortDev(nam= e string) (*NWFilterBinding, } cName :=3D C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr :=3D C.virNWFilterBindingLookupByPortDevWrapper(c.ptr, cName) + var err C.virError + ptr :=3D C.virNWFilterBindingLookupByPortDevWrapper(c.ptr, cName, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NWFilterBinding{ptr: ptr}, nil } @@ -1282,9 +1351,10 @@ func (c *Connect) LookupNWFilterBindingByPortDev(nam= e string) (*NWFilterBinding, func (c *Connect) LookupStorageVolByKey(key string) (*StorageVol, error) { cKey :=3D C.CString(key) defer C.free(unsafe.Pointer(cKey)) - ptr :=3D C.virStorageVolLookupByKey(c.ptr, cKey) + var err C.virError + ptr :=3D C.virStorageVolLookupByKeyWrapper(c.ptr, cKey, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StorageVol{ptr: ptr}, nil } @@ -1293,9 +1363,10 @@ func (c *Connect) LookupStorageVolByKey(key string) = (*StorageVol, error) { func (c *Connect) LookupStorageVolByPath(path string) (*StorageVol, error)= { cPath :=3D C.CString(path) defer C.free(unsafe.Pointer(cPath)) - ptr :=3D C.virStorageVolLookupByPath(c.ptr, cPath) + var err C.virError + ptr :=3D C.virStorageVolLookupByPathWrapper(c.ptr, cPath, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StorageVol{ptr: ptr}, nil } @@ -1304,9 +1375,10 @@ func (c *Connect) LookupStorageVolByPath(path string= ) (*StorageVol, error) { func (c *Connect) SecretDefineXML(xmlConfig string, flags uint32) (*Secret= , error) { cXml :=3D C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr :=3D C.virSecretDefineXML(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr :=3D C.virSecretDefineXMLWrapper(c.ptr, cXml, C.uint(flags), &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Secret{ptr: ptr}, nil } @@ -1321,9 +1393,10 @@ func (c *Connect) LookupSecretByUUID(uuid []byte) (*= Secret, error) { for i :=3D 0; i < C.VIR_UUID_BUFLEN; i++ { cUuid[i] =3D C.uchar(uuid[i]) } - ptr :=3D C.virSecretLookupByUUID(c.ptr, &cUuid[0]) + var err C.virError + ptr :=3D C.virSecretLookupByUUIDWrapper(c.ptr, &cUuid[0], &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Secret{ptr: ptr}, nil } @@ -1332,9 +1405,10 @@ func (c *Connect) LookupSecretByUUID(uuid []byte) (*= Secret, error) { func (c *Connect) LookupSecretByUUIDString(uuid string) (*Secret, error) { cUuid :=3D C.CString(uuid) defer C.free(unsafe.Pointer(cUuid)) - ptr :=3D C.virSecretLookupByUUIDString(c.ptr, cUuid) + var err C.virError + ptr :=3D C.virSecretLookupByUUIDStringWrapper(c.ptr, cUuid, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Secret{ptr: ptr}, nil } @@ -1343,9 +1417,10 @@ func (c *Connect) LookupSecretByUUIDString(uuid stri= ng) (*Secret, error) { func (c *Connect) LookupSecretByUsage(usageType SecretUsageType, usageID s= tring) (*Secret, error) { cUsageID :=3D C.CString(usageID) defer C.free(unsafe.Pointer(cUsageID)) - ptr :=3D C.virSecretLookupByUsage(c.ptr, C.int(usageType), cUsageID) + var err C.virError + ptr :=3D C.virSecretLookupByUsageWrapper(c.ptr, C.int(usageType), cUsageI= D, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Secret{ptr: ptr}, nil } @@ -1354,9 +1429,10 @@ func (c *Connect) LookupSecretByUsage(usageType Secr= etUsageType, usageID string) func (c *Connect) LookupDeviceByName(id string) (*NodeDevice, error) { cName :=3D C.CString(id) defer C.free(unsafe.Pointer(cName)) - ptr :=3D C.virNodeDeviceLookupByName(c.ptr, cName) + var err C.virError + ptr :=3D C.virNodeDeviceLookupByNameWrapper(c.ptr, cName, &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NodeDevice{ptr: ptr}, nil } @@ -1367,9 +1443,10 @@ func (c *Connect) LookupDeviceSCSIHostByWWN(wwnn, ww= pn string, flags uint32) (*N cWwpn :=3D C.CString(wwpn) defer C.free(unsafe.Pointer(cWwnn)) defer C.free(unsafe.Pointer(cWwpn)) - ptr :=3D C.virNodeDeviceLookupSCSIHostByWWN(c.ptr, cWwnn, cWwpn, C.uint(f= lags)) + var err C.virError + ptr :=3D C.virNodeDeviceLookupSCSIHostByWWNWrapper(c.ptr, cWwnn, cWwpn, C= .uint(flags), &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NodeDevice{ptr: ptr}, nil } @@ -1378,9 +1455,10 @@ func (c *Connect) LookupDeviceSCSIHostByWWN(wwnn, ww= pn string, flags uint32) (*N func (c *Connect) DeviceCreateXML(xmlConfig string, flags uint32) (*NodeDe= vice, error) { cXml :=3D C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr :=3D C.virNodeDeviceCreateXML(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr :=3D C.virNodeDeviceCreateXMLWrapper(c.ptr, cXml, C.uint(flags), &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NodeDevice{ptr: ptr}, nil } @@ -1388,9 +1466,10 @@ func (c *Connect) DeviceCreateXML(xmlConfig string, = flags uint32) (*NodeDevice, // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virCon= nectListAllInterfaces func (c *Connect) ListAllInterfaces(flags ConnectListAllInterfacesFlags) (= []Interface, error) { var cList *C.virInterfacePtr - numIfaces :=3D C.virConnectListAllInterfaces(c.ptr, (**C.virInterfacePtr)= (&cList), C.uint(flags)) + var err C.virError + numIfaces :=3D C.virConnectListAllInterfacesWrapper(c.ptr, (**C.virInterf= acePtr)(&cList), C.uint(flags), &err) if numIfaces =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr :=3D reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1409,9 +1488,10 @@ func (c *Connect) ListAllInterfaces(flags ConnectLis= tAllInterfacesFlags) ([]Inte // See also https://libvirt.org/html/libvirt-libvirt-network.html#virConne= ctListAllNetworks func (c *Connect) ListAllNetworks(flags ConnectListAllNetworksFlags) ([]Ne= twork, error) { var cList *C.virNetworkPtr - numNets :=3D C.virConnectListAllNetworks(c.ptr, (**C.virNetworkPtr)(&cLis= t), C.uint(flags)) + var err C.virError + numNets :=3D C.virConnectListAllNetworksWrapper(c.ptr, (**C.virNetworkPtr= )(&cList), C.uint(flags), &err) if numNets =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr :=3D reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1430,9 +1510,10 @@ func (c *Connect) ListAllNetworks(flags ConnectListA= llNetworksFlags) ([]Network, // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virConnec= tListAllDomains func (c *Connect) ListAllDomains(flags ConnectListAllDomainsFlags) ([]Doma= in, error) { var cList *C.virDomainPtr - numDomains :=3D C.virConnectListAllDomains(c.ptr, (**C.virDomainPtr)(&cLi= st), C.uint(flags)) + var err C.virError + numDomains :=3D C.virConnectListAllDomainsWrapper(c.ptr, (**C.virDomainPt= r)(&cList), C.uint(flags), &err) if numDomains =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr :=3D reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1451,9 +1532,10 @@ func (c *Connect) ListAllDomains(flags ConnectListAl= lDomainsFlags) ([]Domain, er // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virConn= ectListAllNWFilters func (c *Connect) ListAllNWFilters(flags uint32) ([]NWFilter, error) { var cList *C.virNWFilterPtr - numNWFilters :=3D C.virConnectListAllNWFilters(c.ptr, (**C.virNWFilterPtr= )(&cList), C.uint(flags)) + var err C.virError + numNWFilters :=3D C.virConnectListAllNWFiltersWrapper(c.ptr, (**C.virNWFi= lterPtr)(&cList), C.uint(flags), &err) if numNWFilters =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr :=3D reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1475,9 +1557,10 @@ func (c *Connect) ListAllNWFilterBindings(flags uint= 32) ([]NWFilterBinding, erro if C.LIBVIR_VERSION_NUMBER < 4005000 { return []NWFilterBinding{}, GetNotImplementedError("virConnectListAllNWF= ilterBindings") } - numNWFilters :=3D C.virConnectListAllNWFilterBindingsWrapper(c.ptr, (**C.= virNWFilterBindingPtr)(&cList), C.uint(flags)) + var err C.virError + numNWFilters :=3D C.virConnectListAllNWFilterBindingsWrapper(c.ptr, (**C.= virNWFilterBindingPtr)(&cList), C.uint(flags), &err) if numNWFilters =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr :=3D reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1496,9 +1579,10 @@ func (c *Connect) ListAllNWFilterBindings(flags uint= 32) ([]NWFilterBinding, erro // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virConne= ctListAllStoragePools func (c *Connect) ListAllStoragePools(flags ConnectListAllStoragePoolsFlag= s) ([]StoragePool, error) { var cList *C.virStoragePoolPtr - numPools :=3D C.virConnectListAllStoragePools(c.ptr, (**C.virStoragePoolP= tr)(&cList), C.uint(flags)) + var err C.virError + numPools :=3D C.virConnectListAllStoragePoolsWrapper(c.ptr, (**C.virStora= gePoolPtr)(&cList), C.uint(flags), &err) if numPools =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr :=3D reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1517,9 +1601,10 @@ func (c *Connect) ListAllStoragePools(flags ConnectL= istAllStoragePoolsFlags) ([] // See also https://libvirt.org/html/libvirt-libvirt-secret.html#virConnec= tListAllSecrets func (c *Connect) ListAllSecrets(flags ConnectListAllSecretsFlags) ([]Secr= et, error) { var cList *C.virSecretPtr - numPools :=3D C.virConnectListAllSecrets(c.ptr, (**C.virSecretPtr)(&cList= ), C.uint(flags)) + var err C.virError + numPools :=3D C.virConnectListAllSecretsWrapper(c.ptr, (**C.virSecretPtr)= (&cList), C.uint(flags), &err) if numPools =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr :=3D reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1538,9 +1623,10 @@ func (c *Connect) ListAllSecrets(flags ConnectListAl= lSecretsFlags) ([]Secret, er // See also https://libvirt.org/html/libvirt-libvirt-nodedev.html#virConne= ctListAllNodeDevices func (c *Connect) ListAllNodeDevices(flags ConnectListAllNodeDeviceFlags) = ([]NodeDevice, error) { var cList *C.virNodeDevicePtr - numPools :=3D C.virConnectListAllNodeDevices(c.ptr, (**C.virNodeDevicePtr= )(&cList), C.uint(flags)) + var err C.virError + numPools :=3D C.virConnectListAllNodeDevicesWrapper(c.ptr, (**C.virNodeDe= vicePtr)(&cList), C.uint(flags), &err) if numPools =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr :=3D reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1558,27 +1644,30 @@ func (c *Connect) ListAllNodeDevices(flags ConnectL= istAllNodeDeviceFlags) ([]Nod =20 // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInt= erfaceChangeBegin func (c *Connect) InterfaceChangeBegin(flags uint32) error { - ret :=3D C.virInterfaceChangeBegin(c.ptr, C.uint(flags)) + var err C.virError + ret :=3D C.virInterfaceChangeBeginWrapper(c.ptr, C.uint(flags), &err) if ret =3D=3D -1 { - return GetLastError() + return makeError(&err) } return nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInt= erfaceChangeCommit func (c *Connect) InterfaceChangeCommit(flags uint32) error { - ret :=3D C.virInterfaceChangeCommit(c.ptr, C.uint(flags)) + var err C.virError + ret :=3D C.virInterfaceChangeCommitWrapper(c.ptr, C.uint(flags), &err) if ret =3D=3D -1 { - return GetLastError() + return makeError(&err) } return nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInt= erfaceChangeRollback func (c *Connect) InterfaceChangeRollback(flags uint32) error { - ret :=3D C.virInterfaceChangeRollback(c.ptr, C.uint(flags)) + var err C.virError + ret :=3D C.virInterfaceChangeRollbackWrapper(c.ptr, C.uint(flags), &err) if ret =3D=3D -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -1598,10 +1687,11 @@ func (c *Connect) AllocPages(pageSizes map[int]int6= 4, startCell int, cellCount u i++ } =20 + var err C.virError ret :=3D C.virNodeAllocPagesWrapper(c.ptr, C.uint(len(pageSizes)), (*C.ui= nt)(unsafe.Pointer(&cpages)), - (*C.ulonglong)(unsafe.Pointer(&ccounts)), C.int(startCell), C.uint(cellC= ount), C.uint(flags)) + (*C.ulonglong)(unsafe.Pointer(&ccounts)), C.int(startCell), C.uint(cellC= ount), C.uint(flags), &err) if ret =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } =20 return int(ret), nil @@ -1611,9 +1701,10 @@ func (c *Connect) AllocPages(pageSizes map[int]int64= , startCell int, cellCount u func (c *Connect) GetCPUMap(flags uint32) (map[int]bool, uint, error) { var ccpumap *C.uchar var conline C.uint - ret :=3D C.virNodeGetCPUMap(c.ptr, &ccpumap, &conline, C.uint(flags)) + var err C.virError + ret :=3D C.virNodeGetCPUMapWrapper(c.ptr, &ccpumap, &conline, C.uint(flag= s), &err) if ret =3D=3D -1 { - return map[int]bool{}, 0, GetLastError() + return map[int]bool{}, 0, makeError(&err) } defer C.free(unsafe.Pointer(ccpumap)) =20 @@ -1649,15 +1740,16 @@ type NodeCPUStats struct { func (c *Connect) GetCPUStats(cpuNum int, flags uint32) (*NodeCPUStats, er= ror) { var nparams C.int =20 - ret :=3D C.virNodeGetCPUStats(c.ptr, C.int(cpuNum), nil, &nparams, C.uint= (0)) + var err C.virError + ret :=3D C.virNodeGetCPUStatsWrapper(c.ptr, C.int(cpuNum), nil, &nparams,= C.uint(0), &err) if ret =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } =20 params :=3D make([]C.virNodeCPUStats, nparams) - ret =3D C.virNodeGetCPUStats(c.ptr, C.int(cpuNum), (*C.virNodeCPUStats)(u= nsafe.Pointer(¶ms[0])), &nparams, C.uint(flags)) + ret =3D C.virNodeGetCPUStatsWrapper(c.ptr, C.int(cpuNum), (*C.virNodeCPUS= tats)(unsafe.Pointer(¶ms[0])), &nparams, C.uint(flags), &err) if ret =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } =20 stats :=3D &NodeCPUStats{} @@ -1692,9 +1784,10 @@ func (c *Connect) GetCPUStats(cpuNum int, flags uint= 32) (*NodeCPUStats, error) { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virNodeGetC= ellsFreeMemory func (c *Connect) GetCellsFreeMemory(startCell int, maxCells int) ([]uint6= 4, error) { cmem :=3D make([]C.ulonglong, maxCells) - ret :=3D C.virNodeGetCellsFreeMemory(c.ptr, (*C.ulonglong)(unsafe.Pointer= (&cmem[0])), C.int(startCell), C.int(maxCells)) + var err C.virError + ret :=3D C.virNodeGetCellsFreeMemoryWrapper(c.ptr, (*C.ulonglong)(unsafe.= Pointer(&cmem[0])), C.int(startCell), C.int(maxCells), &err) if ret =3D=3D -1 { - return []uint64{}, GetLastError() + return []uint64{}, makeError(&err) } =20 mem :=3D make([]uint64, ret) @@ -1707,9 +1800,10 @@ func (c *Connect) GetCellsFreeMemory(startCell int, = maxCells int) ([]uint64, err =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virNodeGetF= reeMemory func (c *Connect) GetFreeMemory() (uint64, error) { - ret :=3D C.virNodeGetFreeMemory(c.ptr) + var err C.virError + ret :=3D C.virNodeGetFreeMemoryWrapper(c.ptr, &err) if ret =3D=3D 0 { - return 0, GetLastError() + return 0, makeError(&err) } =20 return (uint64)(ret), nil @@ -1727,10 +1821,11 @@ func (c *Connect) GetFreePages(pageSizes []uint64, = startCell int, maxCells uint, cpageSizes[i] =3D C.uint(pageSizes[i]) } =20 + var err C.virError ret :=3D C.virNodeGetFreePagesWrapper(c.ptr, C.uint(len(pageSizes)), (*C.= uint)(unsafe.Pointer(&cpageSizes)), C.int(startCell), - C.uint(maxCells), (*C.ulonglong)(unsafe.Pointer(&ccounts)), C.uint(flags= )) + C.uint(maxCells), (*C.ulonglong)(unsafe.Pointer(&ccounts)), C.uint(flags= ), &err) if ret =3D=3D -1 { - return []uint64{}, GetLastError() + return []uint64{}, makeError(&err) } =20 counts :=3D make([]uint64, ret) @@ -1804,22 +1899,23 @@ func (c *Connect) GetMemoryParameters(flags uint32)= (*NodeMemoryParameters, erro =20 var nparams C.int =20 - ret :=3D C.virNodeGetMemoryParameters(c.ptr, nil, &nparams, C.uint(0)) + var err C.virError + ret :=3D C.virNodeGetMemoryParametersWrapper(c.ptr, nil, &nparams, C.uint= (0), &err) if ret =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } =20 cparams :=3D make([]C.virTypedParameter, nparams) - ret =3D C.virNodeGetMemoryParameters(c.ptr, (*C.virTypedParameter)(unsafe= .Pointer(&cparams[0])), &nparams, C.uint(flags)) + ret =3D C.virNodeGetMemoryParametersWrapper(c.ptr, (*C.virTypedParameter)= (unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags), &err) if ret =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } =20 defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparam= s[0])), nparams) =20 - _, err :=3D typedParamsUnpack(cparams, info) - if err !=3D nil { - return nil, err + _, gerr :=3D typedParamsUnpack(cparams, info) + if gerr !=3D nil { + return nil, gerr } =20 return params, nil @@ -1840,15 +1936,16 @@ type NodeMemoryStats struct { func (c *Connect) GetMemoryStats(cellNum int, flags uint32) (*NodeMemorySt= ats, error) { var nparams C.int =20 - ret :=3D C.virNodeGetMemoryStats(c.ptr, C.int(cellNum), nil, &nparams, 0) + var err C.virError + ret :=3D C.virNodeGetMemoryStatsWrapper(c.ptr, C.int(cellNum), nil, &npar= ams, 0, &err) if ret =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } =20 params :=3D make([]C.virNodeMemoryStats, nparams) - ret =3D C.virNodeGetMemoryStats(c.ptr, C.int(cellNum), (*C.virNodeMemoryS= tats)(unsafe.Pointer(¶ms[0])), &nparams, C.uint(flags)) + ret =3D C.virNodeGetMemoryStatsWrapper(c.ptr, C.int(cellNum), (*C.virNode= MemoryStats)(unsafe.Pointer(¶ms[0])), &nparams, C.uint(flags), &err) if ret =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } =20 stats :=3D &NodeMemoryStats{} @@ -1882,9 +1979,10 @@ type NodeSecurityModel struct { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virNodeGetS= ecurityModel func (c *Connect) GetSecurityModel() (*NodeSecurityModel, error) { var cmodel C.virSecurityModel - ret :=3D C.virNodeGetSecurityModel(c.ptr, &cmodel) + var err C.virError + ret :=3D C.virNodeGetSecurityModelWrapper(c.ptr, &cmodel, &err) if ret =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } =20 return &NodeSecurityModel{ @@ -1899,34 +1997,36 @@ func (c *Connect) SetMemoryParameters(params *NodeM= emoryParameters, flags uint32 =20 var nparams C.int =20 - ret :=3D C.virNodeGetMemoryParameters(c.ptr, nil, &nparams, 0) + var err C.virError + ret :=3D C.virNodeGetMemoryParametersWrapper(c.ptr, nil, &nparams, 0, &er= r) if ret =3D=3D -1 { - return GetLastError() + return makeError(&err) } =20 cparams :=3D make([]C.virTypedParameter, nparams) - ret =3D C.virNodeGetMemoryParameters(c.ptr, (*C.virTypedParameter)(unsafe= .Pointer(&cparams[0])), &nparams, 0) + ret =3D C.virNodeGetMemoryParametersWrapper(c.ptr, (*C.virTypedParameter)= (unsafe.Pointer(&cparams[0])), &nparams, 0, &err) if ret =3D=3D -1 { - return GetLastError() + return makeError(&err) } =20 defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparam= s[0])), nparams) =20 - err :=3D typedParamsPack(cparams, info) - if err !=3D nil { - return err + gerr :=3D typedParamsPack(cparams, info) + if gerr !=3D nil { + return gerr } =20 - ret =3D C.virNodeSetMemoryParameters(c.ptr, (*C.virTypedParameter)(unsafe= .Pointer(&cparams[0])), nparams, C.uint(flags)) + ret =3D C.virNodeSetMemoryParametersWrapper(c.ptr, (*C.virTypedParameter)= (unsafe.Pointer(&cparams[0])), nparams, C.uint(flags), &err) =20 return nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-host.html#virNodeSusp= endForDuration func (c *Connect) SuspendForDuration(target NodeSuspendTarget, duration ui= nt64, flags uint32) error { - ret :=3D C.virNodeSuspendForDuration(c.ptr, C.uint(target), C.ulonglong(d= uration), C.uint(flags)) + var err C.virError + ret :=3D C.virNodeSuspendForDurationWrapper(c.ptr, C.uint(target), C.ulon= glong(duration), C.uint(flags), &err) if ret =3D=3D -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -1938,10 +2038,11 @@ func (c *Connect) DomainSaveImageDefineXML(file str= ing, xml string, flags Domain cxml :=3D C.CString(xml) defer C.free(unsafe.Pointer(cxml)) =20 - ret :=3D C.virDomainSaveImageDefineXML(c.ptr, cfile, cxml, C.uint(flags)) + var err C.virError + ret :=3D C.virDomainSaveImageDefineXMLWrapper(c.ptr, cfile, cxml, C.uint(= flags), &err) =20 if ret =3D=3D -1 { - return GetLastError() + return makeError(&err) } =20 return nil @@ -1952,10 +2053,11 @@ func (c *Connect) DomainSaveImageGetXMLDesc(file st= ring, flags DomainXMLFlags) ( cfile :=3D C.CString(file) defer C.free(unsafe.Pointer(cfile)) =20 - ret :=3D C.virDomainSaveImageGetXMLDesc(c.ptr, cfile, C.uint(flags)) + var err C.virError + ret :=3D C.virDomainSaveImageGetXMLDescWrapper(c.ptr, cfile, C.uint(flags= ), &err) =20 if ret =3D=3D nil { - return "", GetLastError() + return "", makeError(&err) } =20 defer C.free(unsafe.Pointer(ret)) @@ -1971,9 +2073,10 @@ func (c *Connect) BaselineCPU(xmlCPUs []string, flag= s ConnectBaselineCPUFlags) ( defer C.free(unsafe.Pointer(cxmlCPUs[i])) } =20 - ret :=3D C.virConnectBaselineCPU(c.ptr, &cxmlCPUs[0], C.uint(len(xmlCPUs)= ), C.uint(flags)) + var err C.virError + ret :=3D C.virConnectBaselineCPUWrapper(c.ptr, &cxmlCPUs[0], C.uint(len(x= mlCPUs)), C.uint(flags), &err) if ret =3D=3D nil { - return "", GetLastError() + return "", makeError(&err) } =20 defer C.free(unsafe.Pointer(ret)) @@ -2010,10 +2113,11 @@ func (c *Connect) BaselineHypervisorCPU(emulator st= ring, arch string, machine st defer C.free(unsafe.Pointer(cxmlCPUs[i])) } =20 + var err C.virError ret :=3D C.virConnectBaselineHypervisorCPUWrapper(c.ptr, cemulator, carch= , cmachine, cvirttype, - &cxmlCPUs[0], C.uint(len(xmlCPUs)), C.uint(flags)) + &cxmlCPUs[0], C.uint(len(xmlCPUs)), C.uint(flags), &err) if ret =3D=3D nil { - return "", GetLastError() + return "", makeError(&err) } =20 defer C.free(unsafe.Pointer(ret)) @@ -2026,9 +2130,10 @@ func (c *Connect) CompareCPU(xmlDesc string, flags C= onnectCompareCPUFlags) (CPUC cxmlDesc :=3D C.CString(xmlDesc) defer C.free(unsafe.Pointer(cxmlDesc)) =20 - ret :=3D C.virConnectCompareCPU(c.ptr, cxmlDesc, C.uint(flags)) + var err C.virError + ret :=3D C.virConnectCompareCPUWrapper(c.ptr, cxmlDesc, C.uint(flags), &e= rr) if ret =3D=3D C.VIR_CPU_COMPARE_ERROR { - return CPU_COMPARE_ERROR, GetLastError() + return CPU_COMPARE_ERROR, makeError(&err) } =20 return CPUCompareResult(ret), nil @@ -2061,9 +2166,10 @@ func (c *Connect) CompareHypervisorCPU(emulator stri= ng, arch string, machine str cxmlDesc :=3D C.CString(xmlDesc) defer C.free(unsafe.Pointer(cxmlDesc)) =20 - ret :=3D C.virConnectCompareHypervisorCPUWrapper(c.ptr, cemulator, carch,= cmachine, cvirttype, cxmlDesc, C.uint(flags)) + var err C.virError + ret :=3D C.virConnectCompareHypervisorCPUWrapper(c.ptr, cemulator, carch,= cmachine, cvirttype, cxmlDesc, C.uint(flags), &err) if ret =3D=3D C.VIR_CPU_COMPARE_ERROR { - return CPU_COMPARE_ERROR, GetLastError() + return CPU_COMPARE_ERROR, makeError(&err) } =20 return CPUCompareResult(ret), nil @@ -2076,9 +2182,10 @@ func (c *Connect) DomainXMLFromNative(nativeFormat s= tring, nativeConfig string, cnativeConfig :=3D C.CString(nativeConfig) defer C.free(unsafe.Pointer(cnativeConfig)) =20 - ret :=3D C.virConnectDomainXMLFromNative(c.ptr, cnativeFormat, cnativeCon= fig, C.uint(flags)) + var err C.virError + ret :=3D C.virConnectDomainXMLFromNativeWrapper(c.ptr, cnativeFormat, cna= tiveConfig, C.uint(flags), &err) if ret =3D=3D nil { - return "", GetLastError() + return "", makeError(&err) } =20 defer C.free(unsafe.Pointer(ret)) @@ -2093,9 +2200,10 @@ func (c *Connect) DomainXMLToNative(nativeFormat str= ing, domainXml string, flags cdomainXml :=3D C.CString(domainXml) defer C.free(unsafe.Pointer(cdomainXml)) =20 - ret :=3D C.virConnectDomainXMLToNative(c.ptr, cnativeFormat, cdomainXml, = C.uint(flags)) + var err C.virError + ret :=3D C.virConnectDomainXMLToNativeWrapper(c.ptr, cnativeFormat, cdoma= inXml, C.uint(flags), &err) if ret =3D=3D nil { - return "", GetLastError() + return "", makeError(&err) } =20 defer C.free(unsafe.Pointer(ret)) @@ -2109,9 +2217,10 @@ func (c *Connect) GetCPUModelNames(arch string, flag= s uint32) ([]string, error) defer C.free(unsafe.Pointer(carch)) =20 var cmodels **C.char - ret :=3D C.virConnectGetCPUModelNames(c.ptr, carch, &cmodels, C.uint(flag= s)) + var err C.virError + ret :=3D C.virConnectGetCPUModelNamesWrapper(c.ptr, carch, &cmodels, C.ui= nt(flags), &err) if ret =3D=3D -1 { - return []string{}, GetLastError() + return []string{}, makeError(&err) } =20 models :=3D make([]string, int(ret)) @@ -2152,9 +2261,10 @@ func (c *Connect) GetDomainCapabilities(emulatorbin = string, arch string, machine defer C.free(unsafe.Pointer(cvirttype)) } =20 - ret :=3D C.virConnectGetDomainCapabilitiesWrapper(c.ptr, cemulatorbin, ca= rch, cmachine, cvirttype, C.uint(flags)) + var err C.virError + ret :=3D C.virConnectGetDomainCapabilitiesWrapper(c.ptr, cemulatorbin, ca= rch, cmachine, cvirttype, C.uint(flags), &err) if ret =3D=3D nil { - return "", GetLastError() + return "", makeError(&err) } =20 defer C.free(unsafe.Pointer(ret)) @@ -2165,9 +2275,10 @@ func (c *Connect) GetDomainCapabilities(emulatorbin = string, arch string, machine // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectG= etVersion func (c *Connect) GetVersion() (uint32, error) { var hvVer C.ulong - ret :=3D C.virConnectGetVersion(c.ptr, &hvVer) + var err C.virError + ret :=3D C.virConnectGetVersionWrapper(c.ptr, &hvVer, &err) if ret =3D=3D -1 { - return 0, GetLastError() + return 0, makeError(&err) } =20 return uint32(hvVer), nil @@ -2182,9 +2293,10 @@ func (c *Connect) FindStoragePoolSources(pooltype st= ring, srcSpec string, flags csrcSpec :=3D C.CString(srcSpec) defer C.free(unsafe.Pointer(csrcSpec)) } - ret :=3D C.virConnectFindStoragePoolSources(c.ptr, cpooltype, csrcSpec, C= .uint(flags)) + var err C.virError + ret :=3D C.virConnectFindStoragePoolSourcesWrapper(c.ptr, cpooltype, csrc= Spec, C.uint(flags), &err) if ret =3D=3D nil { - return "", GetLastError() + return "", makeError(&err) } =20 defer C.free(unsafe.Pointer(ret)) @@ -2196,8 +2308,9 @@ func (c *Connect) FindStoragePoolSources(pooltype str= ing, srcSpec string, flags func (c *Connect) DomainRestore(srcFile string) error { cPath :=3D C.CString(srcFile) defer C.free(unsafe.Pointer(cPath)) - if result :=3D C.virDomainRestore(c.ptr, cPath); result =3D=3D -1 { - return GetLastError() + var err C.virError + if result :=3D C.virDomainRestoreWrapper(c.ptr, cPath, &err); result =3D= =3D -1 { + return makeError(&err) } return nil } @@ -2211,17 +2324,19 @@ func (c *Connect) DomainRestoreFlags(srcFile, xmlCo= nf string, flags DomainSaveRe cXmlConf =3D C.CString(xmlConf) defer C.free(unsafe.Pointer(cXmlConf)) } - if result :=3D C.virDomainRestoreFlags(c.ptr, cPath, cXmlConf, C.uint(fla= gs)); result =3D=3D -1 { - return GetLastError() + var err C.virError + if result :=3D C.virDomainRestoreFlagsWrapper(c.ptr, cPath, cXmlConf, C.u= int(flags), &err); result =3D=3D -1 { + return makeError(&err) } return nil } =20 // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStream= New func (c *Connect) NewStream(flags StreamFlags) (*Stream, error) { - virStream :=3D C.virStreamNew(c.ptr, C.uint(flags)) + var err C.virError + virStream :=3D C.virStreamNewWrapper(c.ptr, C.uint(flags), &err) if virStream =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } =20 return &Stream{ @@ -2665,18 +2780,19 @@ func (c *Connect) GetAllDomainStats(doms []*Domain,= statsTypes DomainStatsTypes, } var ret C.int var cstats *C.virDomainStatsRecordPtr + var err C.virError if len(doms) > 0 { cdoms :=3D make([]C.virDomainPtr, len(doms)+1) for i :=3D 0; i < len(doms); i++ { cdoms[i] =3D doms[i].ptr } =20 - ret =3D C.virDomainListGetStatsWrapper(&cdoms[0], C.uint(statsTypes), &c= stats, C.uint(flags)) + ret =3D C.virDomainListGetStatsWrapper(&cdoms[0], C.uint(statsTypes), &c= stats, C.uint(flags), &err) } else { - ret =3D C.virConnectGetAllDomainStatsWrapper(c.ptr, C.uint(statsTypes), = &cstats, C.uint(flags)) + ret =3D C.virConnectGetAllDomainStatsWrapper(c.ptr, C.uint(statsTypes), = &cstats, C.uint(flags), &err) } if ret =3D=3D -1 { - return []DomainStats{}, GetLastError() + return []DomainStats{}, makeError(&err) } =20 defer C.virDomainStatsRecordListFreeWrapper(cstats) @@ -2692,9 +2808,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, s= tatsTypes DomainStatsTypes, state :=3D &DomainStatsState{} stateInfo :=3D getDomainStatsStateFieldInfo(state) =20 - count, err :=3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.npa= rams), stateInfo) - if err !=3D nil { - return []DomainStats{}, err + count, gerr :=3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.np= arams), stateInfo) + if gerr !=3D nil { + return []DomainStats{}, gerr } if count !=3D 0 { domstats.State =3D state @@ -2703,9 +2819,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, s= tatsTypes DomainStatsTypes, cpu :=3D &DomainStatsCPU{} cpuInfo :=3D getDomainStatsCPUFieldInfo(cpu) =20 - count, err =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.npar= ams), cpuInfo) - if err !=3D nil { - return []DomainStats{}, err + count, gerr =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.npa= rams), cpuInfo) + if gerr !=3D nil { + return []DomainStats{}, gerr } if count !=3D 0 { domstats.Cpu =3D cpu @@ -2714,9 +2830,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, s= tatsTypes DomainStatsTypes, balloon :=3D &DomainStatsBalloon{} balloonInfo :=3D getDomainStatsBalloonFieldInfo(balloon) =20 - count, err =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.npar= ams), balloonInfo) - if err !=3D nil { - return []DomainStats{}, err + count, gerr =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.npa= rams), balloonInfo) + if gerr !=3D nil { + return []DomainStats{}, gerr } if count !=3D 0 { domstats.Balloon =3D balloon @@ -2725,9 +2841,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, s= tatsTypes DomainStatsTypes, perf :=3D &DomainStatsPerf{} perfInfo :=3D getDomainStatsPerfFieldInfo(perf) =20 - count, err =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.npar= ams), perfInfo) - if err !=3D nil { - return []DomainStats{}, err + count, gerr =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.npa= rams), perfInfo) + if gerr !=3D nil { + return []DomainStats{}, gerr } if count !=3D 0 { domstats.Perf =3D perf @@ -2736,9 +2852,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, s= tatsTypes DomainStatsTypes, lengths :=3D domainStatsLengths{} lengthsInfo :=3D getDomainStatsLengthsFieldInfo(&lengths) =20 - count, err =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.npar= ams), lengthsInfo) - if err !=3D nil { - return []DomainStats{}, err + count, gerr =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.npa= rams), lengthsInfo) + if gerr !=3D nil { + return []DomainStats{}, gerr } =20 if !lengths.VcpuMaximumSet && lengths.VcpuCurrentSet { @@ -2752,9 +2868,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, s= tatsTypes DomainStatsTypes, vcpu :=3D DomainStatsVcpu{} vcpuInfo :=3D getDomainStatsVcpuFieldInfo(j, &vcpu) =20 - count, err =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.np= arams), vcpuInfo) - if err !=3D nil { - return []DomainStats{}, err + count, gerr =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.n= params), vcpuInfo) + if gerr !=3D nil { + return []DomainStats{}, gerr } if count =3D=3D 0 { vcpu.StateSet =3D true @@ -2770,9 +2886,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, s= tatsTypes DomainStatsTypes, block :=3D DomainStatsBlock{} blockInfo :=3D getDomainStatsBlockFieldInfo(j, &block) =20 - count, err =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.np= arams), blockInfo) - if err !=3D nil { - return []DomainStats{}, err + count, gerr =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.n= params), blockInfo) + if gerr !=3D nil { + return []DomainStats{}, gerr } if count !=3D 0 { domstats.Block[j] =3D block @@ -2786,9 +2902,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, s= tatsTypes DomainStatsTypes, net :=3D DomainStatsNet{} netInfo :=3D getDomainStatsNetFieldInfo(j, &net) =20 - count, err =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.np= arams), netInfo) - if err !=3D nil { - return []DomainStats{}, err + count, gerr =3D typedParamsUnpackLen(cdomstats.params, int(cdomstats.n= params), netInfo) + if gerr !=3D nil { + return []DomainStats{}, gerr } if count !=3D 0 { domstats.Net[j] =3D net @@ -2846,16 +2962,17 @@ func (c *Connect) GetSEVInfo(flags uint32) (*NodeSE= VParameters, error) { var cparams *C.virTypedParameter var nparams C.int =20 - ret :=3D C.virNodeGetSEVInfoWrapper(c.ptr, (*C.virTypedParameterPtr)(unsa= fe.Pointer(&cparams)), &nparams, C.uint(flags)) + var err C.virError + ret :=3D C.virNodeGetSEVInfoWrapper(c.ptr, (*C.virTypedParameterPtr)(unsa= fe.Pointer(&cparams)), &nparams, C.uint(flags), &err) if ret =3D=3D -1 { - return nil, GetLastError() + return nil, makeError(&err) } =20 defer C.virTypedParamsFree(cparams, nparams) =20 - _, err :=3D typedParamsUnpackLen(cparams, int(nparams), info) - if err !=3D nil { - return nil, err + _, gerr :=3D typedParamsUnpackLen(cparams, int(nparams), info) + if gerr !=3D nil { + return nil, gerr } =20 return params, nil @@ -2868,9 +2985,10 @@ func (c *Connect) NWFilterBindingCreateXML(xmlConfig= string, flags uint32) (*NWF } cXml :=3D C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr :=3D C.virNWFilterBindingCreateXMLWrapper(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr :=3D C.virNWFilterBindingCreateXMLWrapper(c.ptr, cXml, C.uint(flags),= &err) if ptr =3D=3D nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NWFilterBinding{ptr: ptr}, nil } diff --git a/connect_wrapper.go b/connect_wrapper.go index d714fb9..17800a2 100644 --- a/connect_wrapper.go +++ b/connect_wrapper.go @@ -29,6 +29,7 @@ package libvirt /* #cgo pkg-config: libvirt #include +#include #include "connect_wrapper.h" #include "callbacks_wrapper.h" =20 @@ -38,14 +39,6 @@ void closeCallbackHelper(virConnectPtr conn, int reason,= void *opaque) closeCallback(conn, reason, (long)opaque); } =20 -int virConnectRegisterCloseCallbackHelper(virConnectPtr c, virConnectClose= Func cb, long goCallbackId) -{ - void *id =3D (void*)goCallbackId; - return virConnectRegisterCloseCallback(c, cb, id, freeGoCallbackHelper= ); -} - -#include - extern int connectAuthCallback(virConnectCredentialPtr, unsigned int, int); int connectAuthCallbackHelper(virConnectCredentialPtr cred, unsigned int n= cred, void *cbdata) { @@ -54,188 +47,1720 @@ int connectAuthCallbackHelper(virConnectCredentialPt= r cred, unsigned int ncred, return connectAuthCallback(cred, ncred, *callbackID); } =20 -virConnectPtr virConnectOpenAuthWrapper(const char *name, int *credtype, u= int ncredtype, int callbackID, unsigned int flags) -{ - virConnectAuth auth =3D { - .credtype =3D credtype, - .ncredtype =3D ncredtype, - .cb =3D connectAuthCallbackHelper, - .cbdata =3D &callbackID, - }; =20 - return virConnectOpenAuth(name, &auth, flags); +char * +virConnectBaselineCPUWrapper(virConnectPtr conn, + const char **xmlCPUs, + unsigned int ncpus, + unsigned int flags, + virErrorPtr err) +{ + char * ret =3D virConnectBaselineCPU(conn, xmlCPUs, ncpus, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; } =20 =20 -int virNodeGetFreePagesWrapper(virConnectPtr conn, - unsigned int npages, - unsigned int *pages, - int startcell, - unsigned int cellcount, - unsigned long long *counts, - unsigned int flags) +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 < 1002006 +#if LIBVIR_VERSION_NUMBER < 4004000 assert(0); // Caller should have checked version #else - return virNodeGetFreePages(conn, npages, pages, startcell, cellcount, = counts, flags); + char * ret =3D virConnectBaselineHypervisorCPU(conn, emulator, arch, m= achine, virttype, xmlCPUs, ncpus, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } =20 -char * virConnectGetDomainCapabilitiesWrapper(virConnectPtr conn, - const char *emulatorbin, - const char *arch, - const char *machine, - const char *virttype, - unsigned int flags) + +int +virConnectCloseWrapper(virConnectPtr conn, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002007 + int ret =3D virConnectClose(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectCompareCPUWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err) +{ + int ret =3D 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 - return virConnectGetDomainCapabilities(conn, emulatorbin, arch, machin= e, virttype, flags); + int ret =3D virConnectCompareHypervisorCPU(conn, emulator, arch, machi= ne, virttype, xmlCPU, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } =20 -int virConnectGetAllDomainStatsWrapper(virConnectPtr conn, - unsigned int stats, - virDomainStatsRecordPtr **retStats, - unsigned int flags) + +char * +virConnectDomainXMLFromNativeWrapper(virConnectPtr conn, + const char *nativeFormat, + const char *nativeConfig, + unsigned int flags, + virErrorPtr err) +{ + char * ret =3D virConnectDomainXMLFromNative(conn, nativeFormat, nativ= eConfig, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virConnectDomainXMLToNativeWrapper(virConnectPtr conn, + const char *nativeFormat, + const char *domainXml, + unsigned int flags, + virErrorPtr err) +{ + char * ret =3D virConnectDomainXMLToNative(conn, nativeFormat, domainX= ml, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virConnectFindStoragePoolSourcesWrapper(virConnectPtr conn, + const char *type, + const char *srcSpec, + unsigned int flags, + virErrorPtr err) +{ + char * ret =3D virConnectFindStoragePoolSources(conn, type, srcSpec, f= lags); + 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 - return virConnectGetAllDomainStats(conn, stats, retStats, flags); + int ret =3D virConnectGetAllDomainStats(conn, stats, retStats, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } =20 -int virDomainListGetStatsWrapper(virDomainPtr *doms, - unsigned int stats, - virDomainStatsRecordPtr **retStats, - unsigned int flags) + +int +virConnectGetCPUModelNamesWrapper(virConnectPtr conn, + const char *arch, + char ** *models, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002008 + int ret =3D virConnectGetCPUModelNames(conn, arch, models, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virConnectGetCapabilitiesWrapper(virConnectPtr conn, + virErrorPtr err) +{ + char * ret =3D 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 - return virDomainListGetStats(doms, stats, retStats, flags); + char * ret =3D virConnectGetDomainCapabilities(conn, emulatorbin, arch= , machine, virttype, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } =20 -void virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats) + +char * +virConnectGetHostnameWrapper(virConnectPtr conn, + virErrorPtr err) { + char * ret =3D virConnectGetHostname(conn); + if (!ret) { + virCopyLastError(err); + } + return ret; } =20 -int virNodeAllocPagesWrapper(virConnectPtr conn, - unsigned int npages, - unsigned int *pageSizes, - unsigned long long *pageCounts, - int startCell, - unsigned int cellCount, - unsigned int flags) + +int +virConnectGetLibVersionWrapper(virConnectPtr conn, + unsigned long *libVer, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002009 + int ret =3D virConnectGetLibVersion(conn, libVer); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectGetMaxVcpusWrapper(virConnectPtr conn, + const char *type, + virErrorPtr err) +{ + int ret =3D virConnectGetMaxVcpus(conn, type); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virConnectGetSysinfoWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err) +{ + char * ret =3D virConnectGetSysinfo(conn, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +const char * +virConnectGetTypeWrapper(virConnectPtr conn, + virErrorPtr err) +{ + const char * ret =3D virConnectGetType(conn); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virConnectGetURIWrapper(virConnectPtr conn, + virErrorPtr err) +{ + char * ret =3D virConnectGetURI(conn); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectGetVersionWrapper(virConnectPtr conn, + unsigned long *hvVer, + virErrorPtr err) +{ + int ret =3D virConnectGetVersion(conn, hvVer); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectIsAliveWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectIsAlive(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectIsEncryptedWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectIsEncrypted(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectIsSecureWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectIsSecure(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllDomainsWrapper(virConnectPtr conn, + virDomainPtr **domains, + unsigned int flags, + virErrorPtr err) +{ + int ret =3D virConnectListAllDomains(conn, domains, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllInterfacesWrapper(virConnectPtr conn, + virInterfacePtr **ifaces, + unsigned int flags, + virErrorPtr err) +{ + int ret =3D 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 - return virNodeAllocPages(conn, npages, pageSizes, pageCounts, startCel= l, cellCount, flags); + int ret =3D virConnectListAllNWFilterBindings(conn, bindings, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } =20 =20 -virDomainPtr virDomainDefineXMLFlagsWrapper(virConnectPtr conn, - const char *xml, - unsigned int flags) +int +virConnectListAllNWFiltersWrapper(virConnectPtr conn, + virNWFilterPtr **filters, + unsigned int flags, + virErrorPtr err) +{ + int ret =3D virConnectListAllNWFilters(conn, filters, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllNetworksWrapper(virConnectPtr conn, + virNetworkPtr **nets, + unsigned int flags, + virErrorPtr err) +{ + int ret =3D virConnectListAllNetworks(conn, nets, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllNodeDevicesWrapper(virConnectPtr conn, + virNodeDevicePtr **devices, + unsigned int flags, + virErrorPtr err) +{ + int ret =3D virConnectListAllNodeDevices(conn, devices, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllSecretsWrapper(virConnectPtr conn, + virSecretPtr **secrets, + unsigned int flags, + virErrorPtr err) +{ + int ret =3D virConnectListAllSecrets(conn, secrets, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllStoragePoolsWrapper(virConnectPtr conn, + virStoragePoolPtr **pools, + unsigned int flags, + virErrorPtr err) +{ + int ret =3D virConnectListAllStoragePools(conn, pools, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListDefinedDomainsWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret =3D virConnectListDefinedDomains(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListDefinedInterfacesWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret =3D virConnectListDefinedInterfaces(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListDefinedNetworksWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret =3D virConnectListDefinedNetworks(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListDefinedStoragePoolsWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret =3D virConnectListDefinedStoragePools(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListDomainsWrapper(virConnectPtr conn, + int *ids, + int maxids, + virErrorPtr err) +{ + int ret =3D virConnectListDomains(conn, ids, maxids); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListInterfacesWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret =3D virConnectListInterfaces(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListNWFiltersWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret =3D virConnectListNWFilters(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListNetworksWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret =3D virConnectListNetworks(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListSecretsWrapper(virConnectPtr conn, + char **uuids, + int maxuuids, + virErrorPtr err) +{ + int ret =3D virConnectListSecrets(conn, uuids, maxuuids); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListStoragePoolsWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret =3D virConnectListStoragePools(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfDefinedDomainsWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectNumOfDefinedDomains(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfDefinedInterfacesWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectNumOfDefinedInterfaces(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfDefinedNetworksWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectNumOfDefinedNetworks(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfDefinedStoragePoolsWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectNumOfDefinedStoragePools(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfDomainsWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectNumOfDomains(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfInterfacesWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectNumOfInterfaces(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfNWFiltersWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectNumOfNWFilters(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfNetworksWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectNumOfNetworks(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfSecretsWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectNumOfSecrets(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfStoragePoolsWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectNumOfStoragePools(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virConnectOpenWrapper(const char *name, + virErrorPtr err) +{ + virConnectPtr ret =3D virConnectOpen(name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virConnectOpenAuthWrapper(const char *name, + int *credtype, + uint ncredtype, + int callbackID, + unsigned int flags, + virErrorPtr err) +{ + virConnectAuth auth =3D { + .credtype =3D credtype, + .ncredtype =3D ncredtype, + .cb =3D connectAuthCallbackHelper, + .cbdata =3D &callbackID, + }; + + virConnectPtr ret =3D virConnectOpenAuth(name, &auth, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virConnectOpenReadOnlyWrapper(const char *name, + virErrorPtr err) +{ + virConnectPtr ret =3D virConnectOpenReadOnly(name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectRefWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectRef(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectRegisterCloseCallbackWrapper(virConnectPtr conn, + long goCallbackId, + virErrorPtr err) +{ + void *id =3D (void*)goCallbackId; + int ret =3D 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 =3D virConnectSetKeepAlive(conn, interval, count); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectUnregisterCloseCallbackWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret =3D virConnectUnregisterCloseCallback(conn, closeCallbackHelpe= r); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainCreateLinuxWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err) +{ + virDomainPtr ret =3D virDomainCreateLinux(conn, xmlDesc, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err) +{ + virDomainPtr ret =3D 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 =3D virDomainCreateXMLWithFiles(conn, xmlDesc, nfiles= , files, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainDefineXMLWrapper(virConnectPtr conn, + const char *xml, + virErrorPtr err) +{ + virDomainPtr ret =3D 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 - return virDomainDefineXMLFlags(conn, xml, flags); + virDomainPtr ret =3D virDomainDefineXMLFlags(conn, xml, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } =20 -virStoragePoolPtr virStoragePoolLookupByTargetPathWrapper(virConnectPtr co= nn, - const char *path) + +int +virDomainListGetStatsWrapper(virDomainPtr *doms, + unsigned int stats, + virDomainStatsRecordPtr **retStats, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 4001000 +#if LIBVIR_VERSION_NUMBER < 1002008 assert(0); // Caller should have checked version #else - return virStoragePoolLookupByTargetPath(conn, path); + int ret =3D virDomainListGetStats(doms, stats, retStats, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } =20 -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) + +virDomainPtr +virDomainLookupByIDWrapper(virConnectPtr conn, + int id, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 4004000 + virDomainPtr ret =3D virDomainLookupByID(conn, id); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err) +{ + virDomainPtr ret =3D virDomainLookupByName(conn, name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err) +{ + virDomainPtr ret =3D virDomainLookupByUUID(conn, uuid); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err) +{ + virDomainPtr ret =3D virDomainLookupByUUIDString(conn, uuidstr); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainRestoreWrapper(virConnectPtr conn, + const char *from, + virErrorPtr err) +{ + int ret =3D 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 =3D 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 =3D 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 =3D 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 - return virConnectBaselineHypervisorCPU(conn, emulator, arch, machine, = virttype, xmlCPUs, ncpus, flags); + virDomainStatsRecordListFree(stats); #endif } =20 -int virConnectCompareHypervisorCPUWrapper(virConnectPtr conn, - const char *emulator, - const char *arch, - const char *machine, - const char *virttype, - const char *xmlCPU, - unsigned int flags) + +int +virGetVersionWrapper(unsigned long *libVer, + const char *type, + unsigned long *typeVer, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 4004000 + int ret =3D virGetVersion(libVer, type, typeVer); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virInterfaceChangeBeginWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err) +{ + int ret =3D virInterfaceChangeBegin(conn, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virInterfaceChangeCommitWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err) +{ + int ret =3D virInterfaceChangeCommit(conn, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virInterfaceChangeRollbackWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err) +{ + int ret =3D virInterfaceChangeRollback(conn, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virInterfacePtr +virInterfaceDefineXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags, + virErrorPtr err) +{ + virInterfacePtr ret =3D virInterfaceDefineXML(conn, xml, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virInterfacePtr +virInterfaceLookupByMACStringWrapper(virConnectPtr conn, + const char *macstr, + virErrorPtr err) +{ + virInterfacePtr ret =3D virInterfaceLookupByMACString(conn, macstr); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virInterfacePtr +virInterfaceLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err) +{ + virInterfacePtr ret =3D 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 - return virConnectCompareHypervisorCPU(conn, emulator, arch, machine, v= irttype, xmlCPU, flags); + virNWFilterBindingPtr ret =3D virNWFilterBindingCreateXML(conn, xml, f= lags); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } =20 -int virNodeGetSEVInfoWrapper(virConnectPtr conn, - virTypedParameterPtr *params, - int *nparams, - unsigned int flags) + +virNWFilterBindingPtr +virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, + const char *portdev, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version #else - return virNodeGetSEVInfo(conn, params, nparams, flags); + virNWFilterBindingPtr ret =3D virNWFilterBindingLookupByPortDev(conn, = portdev); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } =20 -int virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, - virNWFilterBindingPtr **bindi= ngs, - unsigned int flags) + +virNWFilterPtr +virNWFilterDefineXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 4005000 + virNWFilterPtr ret =3D virNWFilterDefineXML(conn, xmlDesc); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNWFilterPtr +virNWFilterLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err) +{ + virNWFilterPtr ret =3D virNWFilterLookupByName(conn, name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNWFilterPtr +virNWFilterLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err) +{ + virNWFilterPtr ret =3D virNWFilterLookupByUUID(conn, uuid); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNWFilterPtr +virNWFilterLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err) +{ + virNWFilterPtr ret =3D virNWFilterLookupByUUIDString(conn, uuidstr); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNetworkPtr +virNetworkCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + virErrorPtr err) +{ + virNetworkPtr ret =3D virNetworkCreateXML(conn, xmlDesc); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNetworkPtr +virNetworkDefineXMLWrapper(virConnectPtr conn, + const char *xml, + virErrorPtr err) +{ + virNetworkPtr ret =3D virNetworkDefineXML(conn, xml); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNetworkPtr +virNetworkLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err) +{ + virNetworkPtr ret =3D virNetworkLookupByName(conn, name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNetworkPtr +virNetworkLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err) +{ + virNetworkPtr ret =3D virNetworkLookupByUUID(conn, uuid); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNetworkPtr +virNetworkLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err) +{ + virNetworkPtr ret =3D 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 - return virConnectListAllNWFilterBindings(conn, bindings, flags); + int ret =3D virNodeAllocPages(conn, npages, pageSizes, pageCounts, sta= rtCell, cellCount, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } =20 -virNWFilterBindingPtr virNWFilterBindingCreateXMLWrapper(virConnectPtr con= n, - const char *xml, - unsigned int flag= s) + +virNodeDevicePtr +virNodeDeviceCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 4005000 + virNodeDevicePtr ret =3D virNodeDeviceCreateXML(conn, xmlDesc, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNodeDevicePtr +virNodeDeviceLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err) +{ + virNodeDevicePtr ret =3D 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 =3D 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 =3D 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 =3D 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 =3D virNodeGetCellsFreeMemory(conn, freeMems, startCell, maxCe= lls); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +unsigned long long +virNodeGetFreeMemoryWrapper(virConnectPtr conn, + virErrorPtr err) +{ + unsigned long long ret =3D virNodeGetFreeMemory(conn); + if (ret =3D=3D 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 - return virNWFilterBindingCreateXML(conn, xml, flags); + int ret =3D virNodeGetFreePages(conn, npages, pages, startCell, cellCo= unt, counts, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } =20 -virNWFilterBindingPtr virNWFilterBindingLookupByPortDevWrapper(virConnectP= tr conn, - const char = *portdev) + +int +virNodeGetInfoWrapper(virConnectPtr conn, + virNodeInfoPtr info, + virErrorPtr err) +{ + int ret =3D 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 =3D 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 =3D virNodeGetMemoryStats(conn, cellNum, params, nparams, flag= s); + 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 - return virNWFilterBindingLookupByPortDev(conn, portdev); + int ret =3D virNodeGetSEVInfo(conn, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +int +virNodeGetSecurityModelWrapper(virConnectPtr conn, + virSecurityModelPtr secmodel, + virErrorPtr err) +{ + int ret =3D 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 =3D 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 =3D 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 =3D 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 =3D 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 =3D virSecretDefineXML(conn, xml, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virSecretPtr +virSecretLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err) +{ + virSecretPtr ret =3D virSecretLookupByUUID(conn, uuid); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virSecretPtr +virSecretLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err) +{ + virSecretPtr ret =3D virSecretLookupByUUIDString(conn, uuidstr); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virSecretPtr +virSecretLookupByUsageWrapper(virConnectPtr conn, + int usageType, + const char *usageID, + virErrorPtr err) +{ + virSecretPtr ret =3D virSecretLookupByUsage(conn, usageType, usageID); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStoragePoolPtr +virStoragePoolCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err) +{ + virStoragePoolPtr ret =3D virStoragePoolCreateXML(conn, xmlDesc, flags= ); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStoragePoolPtr +virStoragePoolDefineXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags, + virErrorPtr err) +{ + virStoragePoolPtr ret =3D virStoragePoolDefineXML(conn, xml, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStoragePoolPtr +virStoragePoolLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err) +{ + virStoragePoolPtr ret =3D 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 =3D virStoragePoolLookupByTargetPath(conn, path); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } =20 =20 +virStoragePoolPtr +virStoragePoolLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err) +{ + virStoragePoolPtr ret =3D virStoragePoolLookupByUUID(conn, uuid); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStoragePoolPtr +virStoragePoolLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err) +{ + virStoragePoolPtr ret =3D virStoragePoolLookupByUUIDString(conn, uuids= tr); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStorageVolPtr +virStorageVolLookupByKeyWrapper(virConnectPtr conn, + const char *key, + virErrorPtr err) +{ + virStorageVolPtr ret =3D virStorageVolLookupByKey(conn, key); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStorageVolPtr +virStorageVolLookupByPathWrapper(virConnectPtr conn, + const char *path, + virErrorPtr err) +{ + virStorageVolPtr ret =3D virStorageVolLookupByPath(conn, path); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStreamPtr +virStreamNewWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err) +{ + virStreamPtr ret =3D virStreamNew(conn, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +//////////////////////////////////////////////// */ import "C" diff --git a/connect_wrapper.h b/connect_wrapper.h index 726d29c..e91811f 100644 --- a/connect_wrapper.h +++ b/connect_wrapper.h @@ -41,21 +41,82 @@ virConnectRegisterCloseCallbackHelper(virConnectPtr c, virConnectCloseFunc cb, long goCallbackId); =20 -virConnectPtr -virConnectOpenAuthWrapper(const char *name, - int *credtype, - uint ncredtype, - int callbackID, - unsigned int flags); +char * +virConnectBaselineCPUWrapper(virConnectPtr conn, + const char **xmlCPUs, + unsigned int ncpus, + unsigned int flags, + virErrorPtr err); + +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); =20 int -virNodeGetFreePagesWrapper(virConnectPtr conn, - unsigned int npages, - unsigned int *pages, - int startcell, - unsigned int cellcount, - unsigned long long *counts, - unsigned int flags); +virConnectCloseWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectCompareCPUWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err); + +int +virConnectCompareHypervisorCPUWrapper(virConnectPtr conn, + const char *emulator, + const char *arch, + const char *machine, + const char *virttype, + const char *xmlCPU, + unsigned int flags, + virErrorPtr err); + +char * +virConnectDomainXMLFromNativeWrapper(virConnectPtr conn, + const char *nativeFormat, + const char *nativeConfig, + unsigned int flags, + virErrorPtr err); + +char * +virConnectDomainXMLToNativeWrapper(virConnectPtr conn, + const char *nativeFormat, + const char *domainXml, + unsigned int flags, + virErrorPtr err); + +char * +virConnectFindStoragePoolSourcesWrapper(virConnectPtr conn, + const char *type, + const char *srcSpec, + unsigned int flags, + virErrorPtr err); + +int +virConnectGetAllDomainStatsWrapper(virConnectPtr conn, + unsigned int stats, + virDomainStatsRecordPtr **retStats, + unsigned int flags, + virErrorPtr err); + +int +virConnectGetCPUModelNamesWrapper(virConnectPtr conn, + const char *arch, + char ***models, + unsigned int flags, + virErrorPtr err); + +char * +virConnectGetCapabilitiesWrapper(virConnectPtr conn, + virErrorPtr err); =20 char * virConnectGetDomainCapabilitiesWrapper(virConnectPtr conn, @@ -63,24 +124,415 @@ virConnectGetDomainCapabilitiesWrapper(virConnectPtr = conn, const char *arch, const char *machine, const char *virttype, - unsigned int flags); + unsigned int flags, + virErrorPtr err); + +char * +virConnectGetHostnameWrapper(virConnectPtr conn, + virErrorPtr err); =20 int -virConnectGetAllDomainStatsWrapper(virConnectPtr conn, - unsigned int stats, - virDomainStatsRecordPtr **retStats, - unsigned int flags); +virConnectGetLibVersionWrapper(virConnectPtr conn, + unsigned long *libVer, + virErrorPtr err); =20 int +virConnectGetMaxVcpusWrapper(virConnectPtr conn, + const char *type, + virErrorPtr err); + +char * +virConnectGetSysinfoWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err); =20 +const char * +virConnectGetTypeWrapper(virConnectPtr conn, + virErrorPtr err); + +char * +virConnectGetURIWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectGetVersionWrapper(virConnectPtr conn, + unsigned long *hvVer, + virErrorPtr err); + +int +virConnectIsAliveWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectIsEncryptedWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectIsSecureWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectListAllDomainsWrapper(virConnectPtr conn, + virDomainPtr **domains, + unsigned int flags, + virErrorPtr err); + +int +virConnectListAllInterfacesWrapper(virConnectPtr conn, + virInterfacePtr **ifaces, + unsigned int flags, + virErrorPtr err); + +int +virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, + virNWFilterBindingPtr **bindings, + unsigned int flags, + virErrorPtr err); + +int +virConnectListAllNWFiltersWrapper(virConnectPtr conn, + virNWFilterPtr **filters, + unsigned int flags, + virErrorPtr err); + +int +virConnectListAllNetworksWrapper(virConnectPtr conn, + virNetworkPtr **nets, + unsigned int flags, + virErrorPtr err); + +int +virConnectListAllNodeDevicesWrapper(virConnectPtr conn, + virNodeDevicePtr **devices, + unsigned int flags, + virErrorPtr err); + +int +virConnectListAllSecretsWrapper(virConnectPtr conn, + virSecretPtr **secrets, + unsigned int flags, + virErrorPtr err); + +int +virConnectListAllStoragePoolsWrapper(virConnectPtr conn, + virStoragePoolPtr **pools, + unsigned int flags, + virErrorPtr err); + +int +virConnectListDefinedDomainsWrapper(virConnectPtr conn, + char **const names, + int maxnames, + virErrorPtr err); + +int +virConnectListDefinedInterfacesWrapper(virConnectPtr conn, + char **const names, + int maxnames, + virErrorPtr err); + +int +virConnectListDefinedNetworksWrapper(virConnectPtr conn, + char **const names, + int maxnames, + virErrorPtr err); + +int +virConnectListDefinedStoragePoolsWrapper(virConnectPtr conn, + char **const names, + int maxnames, + virErrorPtr err); + +int +virConnectListDomainsWrapper(virConnectPtr conn, + int *ids, + int maxids, + virErrorPtr err); + +int +virConnectListInterfacesWrapper(virConnectPtr conn, + char **const names, + int maxnames, + virErrorPtr err); + +int +virConnectListNWFiltersWrapper(virConnectPtr conn, + char **const names, + int maxnames, + virErrorPtr err); + +int +virConnectListNetworksWrapper(virConnectPtr conn, + char **const names, + int maxnames, + virErrorPtr err); + +int +virConnectListSecretsWrapper(virConnectPtr conn, + char **uuids, + int maxuuids, + virErrorPtr err); + +int +virConnectListStoragePoolsWrapper(virConnectPtr conn, + char **const names, + int maxnames, + virErrorPtr err); + +int +virConnectNumOfDefinedDomainsWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectNumOfDefinedInterfacesWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectNumOfDefinedNetworksWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectNumOfDefinedStoragePoolsWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectNumOfDomainsWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectNumOfInterfacesWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectNumOfNWFiltersWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectNumOfNetworksWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectNumOfSecretsWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectNumOfStoragePoolsWrapper(virConnectPtr conn, + virErrorPtr err); + +virConnectPtr +virConnectOpenWrapper(const char *name, + virErrorPtr err); + +virConnectPtr +virConnectOpenAuthWrapper(const char *name, + int *credtype, + uint ncredtype, + int callbackID, + unsigned int flags, + virErrorPtr err); + +virConnectPtr +virConnectOpenReadOnlyWrapper(const char *name, + virErrorPtr err); + +int +virConnectRefWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virConnectRegisterCloseCallbackWrapper(virConnectPtr conn, + long goCallbackId, + virErrorPtr err); + +int +virConnectSetKeepAliveWrapper(virConnectPtr conn, + int interval, + unsigned int count, + virErrorPtr err); + +int +virConnectUnregisterCloseCallbackWrapper(virConnectPtr conn, + virErrorPtr err); + +virDomainPtr +virDomainCreateLinuxWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err); + +virDomainPtr +virDomainCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err); + +virDomainPtr +virDomainCreateXMLWithFilesWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int nfiles, + int *files, + unsigned int flags, + virErrorPtr err); + +virDomainPtr +virDomainDefineXMLWrapper(virConnectPtr conn, + const char *xml, + virErrorPtr err); + +virDomainPtr +virDomainDefineXMLFlagsWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags, + virErrorPtr err); + +int virDomainListGetStatsWrapper(virDomainPtr *doms, unsigned int stats, virDomainStatsRecordPtr **retStats, - unsigned int flags); + unsigned int flags, + virErrorPtr err); + +virDomainPtr +virDomainLookupByIDWrapper(virConnectPtr conn, + int id, + virErrorPtr err); + +virDomainPtr +virDomainLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err); + +virDomainPtr +virDomainLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err); + +virDomainPtr +virDomainLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err); + +int +virDomainRestoreWrapper(virConnectPtr conn, + const char *from, + virErrorPtr err); + +int +virDomainRestoreFlagsWrapper(virConnectPtr conn, + const char *from, + const char *dxml, + unsigned int flags, + virErrorPtr err); + +int +virDomainSaveImageDefineXMLWrapper(virConnectPtr conn, + const char *file, + const char *dxml, + unsigned int flags, + virErrorPtr err); + +char * +virDomainSaveImageGetXMLDescWrapper(virConnectPtr conn, + const char *file, + unsigned int flags, + virErrorPtr err); =20 void virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats); =20 +int +virGetVersionWrapper(unsigned long *libVer, + const char *type, + unsigned long *typeVer, + virErrorPtr err); + +int +virInterfaceChangeBeginWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err); + +int +virInterfaceChangeCommitWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err); + +int +virInterfaceChangeRollbackWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err); + +virInterfacePtr +virInterfaceDefineXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags, + virErrorPtr err); + +virInterfacePtr +virInterfaceLookupByMACStringWrapper(virConnectPtr conn, + const char *macstr, + virErrorPtr err); + +virInterfacePtr +virInterfaceLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err); + +virNWFilterBindingPtr +virNWFilterBindingCreateXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags, + virErrorPtr err); + +virNWFilterBindingPtr +virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, + const char *portdev, + virErrorPtr err); + +virNWFilterPtr +virNWFilterDefineXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + virErrorPtr err); + +virNWFilterPtr +virNWFilterLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err); + +virNWFilterPtr +virNWFilterLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err); + +virNWFilterPtr +virNWFilterLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err); + +virNetworkPtr +virNetworkCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + virErrorPtr err); + +virNetworkPtr +virNetworkDefineXMLWrapper(virConnectPtr conn, + const char *xml, + virErrorPtr err); + +virNetworkPtr +virNetworkLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err); + +virNetworkPtr +virNetworkLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err); + +virNetworkPtr +virNetworkLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err); + int virNodeAllocPagesWrapper(virConnectPtr conn, unsigned int npages, @@ -88,54 +540,191 @@ virNodeAllocPagesWrapper(virConnectPtr conn, unsigned long long *pageCounts, int startCell, unsigned int cellCount, - unsigned int flags); + unsigned int flags, + virErrorPtr err); =20 -virDomainPtr -virDomainDefineXMLFlagsWrapper(virConnectPtr conn, - const char *xml, - unsigned int flags); +virNodeDevicePtr +virNodeDeviceCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err); =20 -virStoragePoolPtr -virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, - const char *path); +virNodeDevicePtr +virNodeDeviceLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err); =20 -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); +virNodeDevicePtr +virNodeDeviceLookupSCSIHostByWWNWrapper(virConnectPtr conn, + const char *wwnn, + const char *wwpn, + unsigned int flags, + virErrorPtr err); =20 int -virConnectCompareHypervisorCPUWrapper(virConnectPtr conn, - const char *emulator, - const char *arch, - const char *machine, - const char *virttype, - const char *xmlCPU, - unsigned int flags); +virNodeGetCPUMapWrapper(virConnectPtr conn, + unsigned char **cpumap, + unsigned int *online, + unsigned int flags, + virErrorPtr err); + +int +virNodeGetCPUStatsWrapper(virConnectPtr conn, + int cpuNum, + virNodeCPUStatsPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err); + +int +virNodeGetCellsFreeMemoryWrapper(virConnectPtr conn, + unsigned long long *freeMems, + int startCell, + int maxCells, + virErrorPtr err); + +unsigned long long +virNodeGetFreeMemoryWrapper(virConnectPtr conn, + virErrorPtr err); + +int +virNodeGetFreePagesWrapper(virConnectPtr conn, + unsigned int npages, + unsigned int *pages, + int startCell, + unsigned int cellCount, + unsigned long long *counts, + unsigned int flags, + virErrorPtr err); + +int +virNodeGetInfoWrapper(virConnectPtr conn, + virNodeInfoPtr info, + virErrorPtr err); + +int +virNodeGetMemoryParametersWrapper(virConnectPtr conn, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err); + +int +virNodeGetMemoryStatsWrapper(virConnectPtr conn, + int cellNum, + virNodeMemoryStatsPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err); =20 int virNodeGetSEVInfoWrapper(virConnectPtr conn, virTypedParameterPtr *params, int *nparams, - unsigned int flags); + unsigned int flags, + virErrorPtr err); =20 int -virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, - virNWFilterBindingPtr **bindings, - unsigned int flags); +virNodeGetSecurityModelWrapper(virConnectPtr conn, + virSecurityModelPtr secmodel, + virErrorPtr err); =20 -virNWFilterBindingPtr -virNWFilterBindingCreateXMLWrapper(virConnectPtr conn, - const char *xml, - unsigned int flags); +int +virNodeListDevicesWrapper(virConnectPtr conn, + const char *cap, + char **const names, + int maxnames, + unsigned int flags, + virErrorPtr err); + +int +virNodeNumOfDevicesWrapper(virConnectPtr conn, + const char *cap, + unsigned int flags, + virErrorPtr err); + +int +virNodeSetMemoryParametersWrapper(virConnectPtr conn, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err); + +int +virNodeSuspendForDurationWrapper(virConnectPtr conn, + unsigned int target, + unsigned long long duration, + unsigned int flags, + virErrorPtr err); + +virSecretPtr +virSecretDefineXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags, + virErrorPtr err); + +virSecretPtr +virSecretLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err); + +virSecretPtr +virSecretLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err); + +virSecretPtr +virSecretLookupByUsageWrapper(virConnectPtr conn, + int usageType, + const char *usageID, + virErrorPtr err); + +virStoragePoolPtr +virStoragePoolCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err); + +virStoragePoolPtr +virStoragePoolDefineXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags, + virErrorPtr err); + +virStoragePoolPtr +virStoragePoolLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err); + +virStoragePoolPtr +virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, + const char *path, + virErrorPtr err); + +virStoragePoolPtr +virStoragePoolLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err); + +virStoragePoolPtr +virStoragePoolLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err); + +virStorageVolPtr +virStorageVolLookupByKeyWrapper(virConnectPtr conn, + const char *key, + virErrorPtr err); + +virStorageVolPtr +virStorageVolLookupByPathWrapper(virConnectPtr conn, + const char *path, + virErrorPtr err); + +virStreamPtr +virStreamNewWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err); =20 -virNWFilterBindingPtr -virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, - const char *portdev); =20 #endif /* LIBVIRT_GO_CONNECT_WRAPPER_H__ */ diff --git a/error_test.go b/error_test.go deleted file mode 100644 index c2ea462..0000000 --- a/error_test.go +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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"), t= o deal - * in the Software without restriction, including without limitation the r= ights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll - * 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 - -import ( - "reflect" - "testing" -) - -func TestGetLastError(t *testing.T) { - _, err :=3D NewConnect("invalid_transport:///default") - if err =3D=3D nil { - t.Fatalf("Expected an error when creating invalid connection") - } - got :=3D GetLastError() - expected :=3D Error{0, 0, "Missing error", 0} - if !reflect.DeepEqual(got, expected) { - t.Errorf("Expected error %+v, got %+v", expected, got) - } -} --=20 2.17.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list