[libvirt] [go PATCH 00/37] Fix error reporting thread safety wrt goroutine rescheduling

The Libvirt C API provides the virGetLastError() function to let callers aquire the error information after a function fails. This function uses a thread local, and so must be called in the same OS thread as the function that failed originally. eg you could call char *xml = virDomainGetXMLDesc(dom); if (!xml) { virErrorPtr err = virGetLastError(); ....do stuff with err... } This is all fine, but there is a subtle problem that was overlooked when the Go bindings were first created. Specifically a native C API call is a goroutine re-scheduling point. So when the Go code does var xml = C.virDomainGetXMLDesc(dom); if (xml == nil) { C.virErrorPtr err = C.virGetLastError(); ....do stuff with err... } All that code runs in the same goroutine, but at the call entry to C.virGetLastError, the goroutine might get switched to a different OS level thread. As a result virGetLastError() will return either no error at all, or an error from a completely different libvirt API call. We need to prevent the OS level thread being changed in between the call to the real function and the virGetLastError() function. Naively you might think we could put a LockOSThread() / UnlockOSThread() call around this block of Go code, but that is a very bad idea in reality. Until Go 1.10, the LockOSThread() calls did not ref count, so if some other code has already locked the thread, when libvirt called UnlockOSThread it could do bad things. In addition, after calling UnlockOSThread() the Go runtime doesn't trust the OS thread state anymore, so will terminate the thread and spawn a new one. IOW using LockOSThread() would mean every single libvirt API call would create and destroy a new thread which is horrible for performance. Thus this patch series takes a different approach. We create a wrapper function for every C API exposed by libvirt, that has a 'virErrorPtr' parameter. So the Go code can do var C.virErrorPtr err var xml = C.virDomainGetXMLDescWrapper(dom, &err) if (xml == nil) { ...do stuff with err... } The wrapper function is responsible for calling virGetLastError() and since this is C code, we're guaranteed its all in the same OS level thread. Daniel P. Berrangé (37): error: add helper for converting libvirt to go error objects storage volume: add missin blank line Rename *cfuncs.{go,h} to *wrapper.{go,h} Use "Wrapper" or "Helper" as suffix for C functions Change "Compat" suffix to "Wrapper" to have standard naming scheme connect: move wrapper functions out of compat header network: move wrapper functions out of compat header nwfilter binding: move wrapper functions out of compat header node device: move wrapper functions out of compat header secret: move wrapper functions out of compat header stream: move wrapper functions out of compat header storage volume: move wrapper functions out of compat header storage pool: move wrapper functions out of compat header qemu: move wrapper functions out of compat header lxc: move wrapper functions out of compat header domain: move wrapper functions out of compat header make the XXX_wrapper.h header files self-contained Add XXX_wrapper.{h,go} for every remaining file Standardize formatting in all wrapper headers storage vol: fix error reporting thread safety storage pool: fix error reporting thread safety stream: fix error reporting thread safety secret: fix error reporting thread safety nwfilter: fix error reporting thread safety nwfilter binding: fix error reporting thread safety node device: fix error reporting thread safety network: fix error reporting thread safety interface: fix error reporting thread safety domain snapshot: fix error reporting thread safety connect: fix error reporting thread safety domain: fix error reporting thread safety qemu: fix error reporting thread safety lxc: fix error reporting thread safety events: fix error reporting thread safety error: remove GetLastError() function error: make GetNotImplementedError private connect: add missing references on domain object in stats records api_test.go | 5 +- callbacks.go | 4 +- callbacks_cfuncs.go => callbacks_wrapper.go | 6 +- callbacks_cfuncs.h => callbacks_wrapper.h | 8 +- connect.go | 741 +++--- connect_cfuncs.h | 34 - connect_compat.go | 206 -- connect_compat.h | 81 - connect_wrapper.go | 1766 +++++++++++++ connect_wrapper.h | 730 ++++++ domain.go | 1083 ++++---- domain_compat.go | 384 --- domain_compat.h | 141 - domain_events.go | 235 +- domain_events_cfuncs.h | 124 - ...ents_cfuncs.go => domain_events_wrapper.go | 85 +- domain_events_wrapper.h | 207 ++ domain_snapshot.go | 65 +- domain_snapshot_wrapper.go | 215 ++ domain_snapshot_wrapper.h | 102 + domain_wrapper.go | 2330 +++++++++++++++++ domain_wrapper.h | 986 +++++++ error.go | 17 +- error_test.go | 44 - events.go | 45 +- events_cfuncs.h | 39 - events_cfuncs.go => events_wrapper.go | 89 +- events_wrapper.h | 82 + interface.go | 48 +- interface_wrapper.go | 158 ++ interface_wrapper.h | 76 + lxc.go | 27 +- lxc_compat.go | 51 - lxc_wrapper.go | 101 + lxc_compat.h => lxc_wrapper.h | 33 +- network.go | 88 +- network_compat.h | 10 - network_events.go | 23 +- network_events_cfuncs.h | 38 - ...nts_cfuncs.go => network_events_wrapper.go | 41 +- network_compat.go => network_events_wrapper.h | 51 +- network_wrapper.go | 267 ++ network_wrapper.h | 119 + node_device.go | 66 +- node_device_compat.go | 46 - node_device_compat.h | 3 - node_device_events.go | 32 +- node_device_events_cfuncs.h | 40 - ...cfuncs.go => node_device_events_wrapper.go | 46 +- ..._cfuncs.go => node_device_events_wrapper.h | 73 +- node_device_wrapper.go | 184 ++ node_device_wrapper.h | 88 + nwfilter.go | 38 +- nwfilter_binding.go | 46 +- nwfilter_binding_compat.h | 11 - ...g_compat.go => nwfilter_binding_wrapper.go | 66 +- nwfilter_binding_wrapper.h | 60 + nwfilter_wrapper.go | 122 + nwfilter_wrapper.h | 65 + qemu.go | 43 +- qemu_cfuncs.go | 64 - qemu_cfuncs.h | 39 - qemu_compat.go | 48 - qemu_compat.h | 3 - qemu_wrapper.go | 133 + qemu_wrapper.h | 78 + secret.go | 54 +- secret_compat.h | 3 - secret_events.go | 34 +- secret_events_cfuncs.h | 40 - ...ents_cfuncs.go => secret_events_wrapper.go | 45 +- secret_compat.go => secret_events_wrapper.h | 41 +- secret_wrapper.go | 175 ++ secret_wrapper.h | 86 + storage_pool.go | 121 +- storage_pool_compat.h | 4 - storage_pool_events.go | 34 +- storage_pool_events_cfuncs.h | 40 - ...funcs.go => storage_pool_events_wrapper.go | 46 +- ...compat.go => storage_pool_events_wrapper.h | 43 +- storage_pool_wrapper.go | 343 +++ storage_pool_wrapper.h | 150 ++ storage_volume.go | 86 +- storage_volume_compat.go | 47 - storage_volume_compat.h | 4 - storage_volume_wrapper.go | 249 ++ storage_volume_wrapper.h | 116 + stream.go | 95 +- stream_cfuncs.go | 132 - stream_cfuncs.h | 37 - stream_compat.go | 69 - stream_compat.h | 13 - stream_wrapper.go | 331 +++ stream_wrapper.h | 120 + 94 files changed, 11619 insertions(+), 3318 deletions(-) rename callbacks_cfuncs.go => callbacks_wrapper.go (90%) rename callbacks_cfuncs.h => callbacks_wrapper.h (87%) delete mode 100644 connect_cfuncs.h delete mode 100644 connect_compat.go create mode 100644 connect_wrapper.go create mode 100644 connect_wrapper.h delete mode 100644 domain_compat.go delete mode 100644 domain_events_cfuncs.h rename domain_events_cfuncs.go => domain_events_wrapper.go (75%) create mode 100644 domain_events_wrapper.h create mode 100644 domain_snapshot_wrapper.go create mode 100644 domain_snapshot_wrapper.h create mode 100644 domain_wrapper.go create mode 100644 domain_wrapper.h delete mode 100644 error_test.go delete mode 100644 events_cfuncs.h rename events_cfuncs.go => events_wrapper.go (72%) create mode 100644 events_wrapper.h create mode 100644 interface_wrapper.go create mode 100644 interface_wrapper.h delete mode 100644 lxc_compat.go create mode 100644 lxc_wrapper.go rename lxc_compat.h => lxc_wrapper.h (53%) delete mode 100644 network_events_cfuncs.h rename network_events_cfuncs.go => network_events_wrapper.go (59%) rename network_compat.go => network_events_wrapper.h (57%) create mode 100644 network_wrapper.go create mode 100644 network_wrapper.h delete mode 100644 node_device_compat.go delete mode 100644 node_device_events_cfuncs.h rename node_device_events_cfuncs.go => node_device_events_wrapper.go (59%) rename connect_cfuncs.go => node_device_events_wrapper.h (52%) create mode 100644 node_device_wrapper.go create mode 100644 node_device_wrapper.h rename nwfilter_binding_compat.go => nwfilter_binding_wrapper.go (54%) create mode 100644 nwfilter_binding_wrapper.h create mode 100644 nwfilter_wrapper.go create mode 100644 nwfilter_wrapper.h delete mode 100644 qemu_cfuncs.go delete mode 100644 qemu_cfuncs.h delete mode 100644 qemu_compat.go create mode 100644 qemu_wrapper.go create mode 100644 qemu_wrapper.h delete mode 100644 secret_events_cfuncs.h rename secret_events_cfuncs.go => secret_events_wrapper.go (61%) rename secret_compat.go => secret_events_wrapper.h (54%) create mode 100644 secret_wrapper.go create mode 100644 secret_wrapper.h delete mode 100644 storage_pool_events_cfuncs.h rename storage_pool_events_cfuncs.go => storage_pool_events_wrapper.go (60%) rename storage_pool_compat.go => storage_pool_events_wrapper.h (51%) create mode 100644 storage_pool_wrapper.go create mode 100644 storage_pool_wrapper.h delete mode 100644 storage_volume_compat.go create mode 100644 storage_volume_wrapper.go create mode 100644 storage_volume_wrapper.h delete mode 100644 stream_cfuncs.go delete mode 100644 stream_cfuncs.h delete mode 100644 stream_compat.go create mode 100644 stream_wrapper.go create mode 100644 stream_wrapper.h -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- error.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/error.go b/error.go index bee8b70..b8e2900 100644 --- a/error.go +++ b/error.go @@ -583,6 +583,17 @@ func (err Error) Error() string { err.Code, err.Domain, err.Message) } +func makeError(err *C.virError) Error { + ret := Error{ + Code: ErrorNumber(err.code), + Domain: ErrorDomain(err.domain), + Message: C.GoString(err.message), + Level: ErrorLevel(err.level), + } + C.virResetError(err) + return ret +} + func GetLastError() Error { err := C.virGetLastError() if err == nil { -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- storage_volume.go | 1 + 1 file changed, 1 insertion(+) diff --git a/storage_volume.go b/storage_volume.go index 22dd284..739cdb2 100644 --- a/storage_volume.go +++ b/storage_volume.go @@ -239,6 +239,7 @@ func (v *StorageVol) Wipe(flags uint32) error { } return nil } + // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolWipePatte... func (v *StorageVol) WipePattern(algorithm StorageVolWipeAlgorithm, flags uint32) error { result := C.virStorageVolWipePattern(v.ptr, C.uint(algorithm), C.uint(flags)) -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- api_test.go | 2 +- callbacks_cfuncs.go => callbacks_wrapper.go | 2 +- callbacks_cfuncs.h => callbacks_wrapper.h | 6 +++--- connect.go | 2 +- connect_cfuncs.go => connect_wrapper.go | 4 ++-- connect_cfuncs.h => connect_wrapper.h | 6 +++--- domain_events.go | 2 +- domain_events_cfuncs.go => domain_events_wrapper.go | 4 ++-- domain_events_cfuncs.h => domain_events_wrapper.h | 6 +++--- events.go | 2 +- events_cfuncs.go => events_wrapper.go | 2 +- events_cfuncs.h => events_wrapper.h | 6 +++--- network_events.go | 2 +- network_events_cfuncs.go => network_events_wrapper.go | 4 ++-- network_events_cfuncs.h => network_events_wrapper.h | 6 +++--- node_device_events.go | 2 +- ...device_events_cfuncs.go => node_device_events_wrapper.go | 4 ++-- node_device_events_cfuncs.h => node_device_events_wrapper.h | 6 +++--- qemu.go | 2 +- qemu_cfuncs.go => qemu_wrapper.go | 4 ++-- qemu_cfuncs.h => qemu_wrapper.h | 6 +++--- secret_events.go | 2 +- secret_events_cfuncs.go => secret_events_wrapper.go | 4 ++-- secret_events_cfuncs.h => secret_events_wrapper.h | 6 +++--- storage_pool_events.go | 2 +- ..._pool_events_cfuncs.go => storage_pool_events_wrapper.go | 4 ++-- ...ge_pool_events_cfuncs.h => storage_pool_events_wrapper.h | 6 +++--- stream.go | 2 +- stream_cfuncs.go => stream_wrapper.go | 2 +- stream_cfuncs.h => stream_wrapper.h | 6 +++--- 30 files changed, 57 insertions(+), 57 deletions(-) rename callbacks_cfuncs.go => callbacks_wrapper.go (97%) rename callbacks_cfuncs.h => callbacks_wrapper.h (90%) rename connect_cfuncs.go => connect_wrapper.go (97%) rename connect_cfuncs.h => connect_wrapper.h (92%) rename domain_events_cfuncs.go => domain_events_wrapper.go (99%) rename domain_events_cfuncs.h => domain_events_wrapper.h (97%) rename events_cfuncs.go => events_wrapper.go (99%) rename events_cfuncs.h => events_wrapper.h (93%) rename network_events_cfuncs.go => network_events_wrapper.go (97%) rename network_events_cfuncs.h => network_events_wrapper.h (91%) rename node_device_events_cfuncs.go => node_device_events_wrapper.go (97%) rename node_device_events_cfuncs.h => node_device_events_wrapper.h (91%) rename qemu_cfuncs.go => qemu_wrapper.go (97%) rename qemu_cfuncs.h => qemu_wrapper.h (91%) rename secret_events_cfuncs.go => secret_events_wrapper.go (97%) rename secret_events_cfuncs.h => secret_events_wrapper.h (92%) rename storage_pool_events_cfuncs.go => storage_pool_events_wrapper.go (97%) rename storage_pool_events_cfuncs.h => storage_pool_events_wrapper.h (91%) rename stream_cfuncs.go => stream_wrapper.go (99%) rename stream_cfuncs.h => stream_wrapper.h (93%) diff --git a/api_test.go b/api_test.go index 53632df..06938a6 100644 --- a/api_test.go +++ b/api_test.go @@ -52,7 +52,7 @@ var ( /* Obsolete we use virConnectDomainEventRegisterAny instead */ "virConnectDomainEventRegister", - /* Wrapped in connect_cfuncs.go instead */ + /* Wrapped in connect_wrapper.go instead */ "virConnectOpenAuth", "virConnectRegisterCloseCallback", diff --git a/callbacks_cfuncs.go b/callbacks_wrapper.go similarity index 97% rename from callbacks_cfuncs.go rename to callbacks_wrapper.go index 2cef0e4..967aaab 100644 --- a/callbacks_cfuncs.go +++ b/callbacks_wrapper.go @@ -30,7 +30,7 @@ package libvirt #cgo pkg-config: libvirt #include <libvirt/libvirt.h> #include <libvirt/virterror.h> -#include "callbacks_cfuncs.h" +#include "callbacks_wrapper.h" extern void freeCallbackId(long); void freeGoCallback_cgo(void* goCallbackId) { diff --git a/callbacks_cfuncs.h b/callbacks_wrapper.h similarity index 90% rename from callbacks_cfuncs.h rename to callbacks_wrapper.h index 689a777..f37aba4 100644 --- a/callbacks_cfuncs.h +++ b/callbacks_wrapper.h @@ -24,9 +24,9 @@ * */ -#ifndef LIBVIRT_GO_CALLBACKS_CFUNCS_H__ -#define LIBVIRT_GO_CALLBACKS_CFUNCS_H__ +#ifndef LIBVIRT_GO_CALLBACKS_WRAPPER_H__ +#define LIBVIRT_GO_CALLBACKS_WRAPPER_H__ void freeGoCallback_cgo(void* goCallbackId); -#endif /* LIBVIRT_GO_CALLBACKS_CFUNCS_H__ */ +#endif /* LIBVIRT_GO_CALLBACKS_WRAPPER_H__ */ diff --git a/connect.go b/connect.go index c608658..5c6d6ff 100644 --- a/connect.go +++ b/connect.go @@ -40,7 +40,7 @@ import ( #include <libvirt/virterror.h> #include <stdlib.h> #include "connect_compat.h" -#include "connect_cfuncs.h" +#include "connect_wrapper.h" */ import "C" diff --git a/connect_cfuncs.go b/connect_wrapper.go similarity index 97% rename from connect_cfuncs.go rename to connect_wrapper.go index cb0467d..a686e29 100644 --- a/connect_cfuncs.go +++ b/connect_wrapper.go @@ -30,8 +30,8 @@ package libvirt #cgo pkg-config: libvirt #include <libvirt/libvirt.h> #include <libvirt/virterror.h> -#include "connect_cfuncs.h" -#include "callbacks_cfuncs.h" +#include "connect_wrapper.h" +#include "callbacks_wrapper.h" extern void closeCallback(virConnectPtr, int, long); void closeCallback_cgo(virConnectPtr conn, int reason, void *opaque) diff --git a/connect_cfuncs.h b/connect_wrapper.h similarity index 92% rename from connect_cfuncs.h rename to connect_wrapper.h index 592fe98..5c59320 100644 --- a/connect_cfuncs.h +++ b/connect_wrapper.h @@ -24,11 +24,11 @@ * */ -#ifndef LIBVIRT_GO_CONNECT_CFUNCS_H__ -#define LIBVIRT_GO_CONNECT_CFUNCS_H__ +#ifndef LIBVIRT_GO_CONNECT_WRAPPER_H__ +#define LIBVIRT_GO_CONNECT_WRAPPER_H__ void closeCallback_cgo(virConnectPtr conn, int reason, void *opaque); int virConnectRegisterCloseCallback_cgo(virConnectPtr c, virConnectCloseFunc cb, long goCallbackId); virConnectPtr virConnectOpenAuthWrap(const char *name, int *credtype, uint ncredtype, int callbackID, unsigned int flags); -#endif /* LIBVIRT_GO_CONNECT_CFUNCS_H__ */ +#endif /* LIBVIRT_GO_CONNECT_WRAPPER_H__ */ diff --git a/domain_events.go b/domain_events.go index 738c902..6d4ff24 100644 --- a/domain_events.go +++ b/domain_events.go @@ -34,7 +34,7 @@ import ( /* #cgo pkg-config: libvirt #include <libvirt/libvirt.h> -#include "domain_events_cfuncs.h" +#include "domain_events_wrapper.h" #include "domain_compat.h" */ import "C" diff --git a/domain_events_cfuncs.go b/domain_events_wrapper.go similarity index 99% rename from domain_events_cfuncs.go rename to domain_events_wrapper.go index c9de165..ad0f803 100644 --- a/domain_events_cfuncs.go +++ b/domain_events_wrapper.go @@ -30,8 +30,8 @@ package libvirt #cgo pkg-config: libvirt #include <libvirt/libvirt.h> #include <libvirt/virterror.h> -#include "domain_events_cfuncs.h" -#include "callbacks_cfuncs.h" +#include "domain_events_wrapper.h" +#include "callbacks_wrapper.h" #include <stdint.h> extern void domainEventLifecycleCallback(virConnectPtr, virDomainPtr, int, int, int); diff --git a/domain_events_cfuncs.h b/domain_events_wrapper.h similarity index 97% rename from domain_events_cfuncs.h rename to domain_events_wrapper.h index 423a1cc..a0e494e 100644 --- a/domain_events_cfuncs.h +++ b/domain_events_wrapper.h @@ -24,8 +24,8 @@ * */ -#ifndef LIBVIRT_GO_DOMAIN_EVENTS_CFUNCS_H__ -#define LIBVIRT_GO_DOMAIN_EVENTS_CFUNCS_H__ +#ifndef LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ +#define LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ void domainEventLifecycleCallback_cgo(virConnectPtr c, virDomainPtr d, int event, int detail, void* data); @@ -121,4 +121,4 @@ int virConnectDomainEventRegisterAny_cgo(virConnectPtr c, virDomainPtr d, long goCallbackId); -#endif /* LIBVIRT_GO_DOMAIN_EVENTS_CFUNCS_H__ */ +#endif /* LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ */ diff --git a/events.go b/events.go index ef80d82..74d480a 100644 --- a/events.go +++ b/events.go @@ -30,7 +30,7 @@ package libvirt #cgo pkg-config: libvirt #include <libvirt/libvirt.h> #include <stdint.h> -#include "events_cfuncs.h" +#include "events_wrapper.h" */ import "C" diff --git a/events_cfuncs.go b/events_wrapper.go similarity index 99% rename from events_cfuncs.go rename to events_wrapper.go index acd7b45..d17b054 100644 --- a/events_cfuncs.go +++ b/events_wrapper.go @@ -32,7 +32,7 @@ package libvirt #include <libvirt/virterror.h> #include <stdint.h> #include <stdlib.h> -#include "events_cfuncs.h" +#include "events_wrapper.h" void eventHandleCallback(int watch, int fd, int events, int callbackID); diff --git a/events_cfuncs.h b/events_wrapper.h similarity index 93% rename from events_cfuncs.h rename to events_wrapper.h index 79e70ee..d3e78d8 100644 --- a/events_cfuncs.h +++ b/events_wrapper.h @@ -24,8 +24,8 @@ * */ -#ifndef LIBVIRT_GO_EVENTS_CFUNCS_H__ -#define LIBVIRT_GO_EVENTS_CFUNCS_H__ +#ifndef LIBVIRT_GO_EVENTS_WRAPPER_H__ +#define LIBVIRT_GO_EVENTS_WRAPPER_H__ int virEventAddHandle_cgo(int fd, int events, int callbackID); int virEventAddTimeout_cgo(int freq, int callbackID); @@ -36,4 +36,4 @@ void eventTimeoutCallbackInvoke(int timer, uintptr_t callback, uintptr_t opaque) void eventHandleCallbackFree(uintptr_t callback, uintptr_t opaque); void eventTimeoutCallbackFree(uintptr_t callback, uintptr_t opaque); -#endif /* LIBVIRT_GO_EVENTS_CFUNCS_H__ */ +#endif /* LIBVIRT_GO_EVENTS_WRAPPER_H__ */ diff --git a/network_events.go b/network_events.go index 6c1423d..15b2f55 100644 --- a/network_events.go +++ b/network_events.go @@ -35,7 +35,7 @@ import ( #cgo pkg-config: libvirt #include <libvirt/libvirt.h> #include "network_compat.h" -#include "network_events_cfuncs.h" +#include "network_events_wrapper.h" */ import "C" diff --git a/network_events_cfuncs.go b/network_events_wrapper.go similarity index 97% rename from network_events_cfuncs.go rename to network_events_wrapper.go index c4920ea..613e32b 100644 --- a/network_events_cfuncs.go +++ b/network_events_wrapper.go @@ -32,8 +32,8 @@ package libvirt #include <libvirt/virterror.h> #include <assert.h> #include "network_compat.h" -#include "network_events_cfuncs.h" -#include "callbacks_cfuncs.h" +#include "network_events_wrapper.h" +#include "callbacks_wrapper.h" #include <stdint.h> extern void networkEventLifecycleCallback(virConnectPtr, virNetworkPtr, int, int, int); diff --git a/network_events_cfuncs.h b/network_events_wrapper.h similarity index 91% rename from network_events_cfuncs.h rename to network_events_wrapper.h index 58a684a..13ffce1 100644 --- a/network_events_cfuncs.h +++ b/network_events_wrapper.h @@ -24,8 +24,8 @@ * */ -#ifndef LIBVIRT_GO_NETWORK_EVENTS_CFUNCS_H__ -#define LIBVIRT_GO_NETWORK_EVENTS_CFUNCS_H__ +#ifndef LIBVIRT_GO_NETWORK_EVENTS_WRAPPER_H__ +#define LIBVIRT_GO_NETWORK_EVENTS_WRAPPER_H__ void networkEventLifecycleCallback_cgo(virConnectPtr c, virNetworkPtr d, int event, int detail, void* data); @@ -35,4 +35,4 @@ int virConnectNetworkEventRegisterAny_cgo(virConnectPtr c, virNetworkPtr d, long goCallbackId); -#endif /* LIBVIRT_GO_NETWORK_EVENTS_CFUNCS_H__ */ +#endif /* LIBVIRT_GO_NETWORK_EVENTS_WRAPPER_H__ */ diff --git a/node_device_events.go b/node_device_events.go index a43d9f2..01c2245 100644 --- a/node_device_events.go +++ b/node_device_events.go @@ -35,7 +35,7 @@ import ( #cgo pkg-config: libvirt #include <libvirt/libvirt.h> #include "node_device_compat.h" -#include "node_device_events_cfuncs.h" +#include "node_device_events_wrapper.h" */ import "C" diff --git a/node_device_events_cfuncs.go b/node_device_events_wrapper.go similarity index 97% rename from node_device_events_cfuncs.go rename to node_device_events_wrapper.go index 12aaf60..a34fa6f 100644 --- a/node_device_events_cfuncs.go +++ b/node_device_events_wrapper.go @@ -32,8 +32,8 @@ package libvirt #include <libvirt/virterror.h> #include <assert.h> #include "node_device_compat.h" -#include "node_device_events_cfuncs.h" -#include "callbacks_cfuncs.h" +#include "node_device_events_wrapper.h" +#include "callbacks_wrapper.h" #include <stdint.h> extern void nodeDeviceEventLifecycleCallback(virConnectPtr, virNodeDevicePtr, int, int, int); diff --git a/node_device_events_cfuncs.h b/node_device_events_wrapper.h similarity index 91% rename from node_device_events_cfuncs.h rename to node_device_events_wrapper.h index 0d01075..38b1036 100644 --- a/node_device_events_cfuncs.h +++ b/node_device_events_wrapper.h @@ -24,8 +24,8 @@ * */ -#ifndef LIBVIRT_GO_NODE_DEVICE_EVENTS_CFUNCS_H__ -#define LIBVIRT_GO_NODE_DEVICE_EVENTS_CFUNCS_H__ +#ifndef LIBVIRT_GO_NODE_DEVICE_EVENTS_WRAPPER_H__ +#define LIBVIRT_GO_NODE_DEVICE_EVENTS_WRAPPER_H__ void nodeDeviceEventLifecycleCallback_cgo(virConnectPtr c, virNodeDevicePtr d, int event, int detail, void* data); @@ -37,4 +37,4 @@ int virConnectNodeDeviceEventRegisterAny_cgo(virConnectPtr c, virNodeDevicePtr long goCallbackId); -#endif /* LIBVIRT_GO_NODE_DEVICE_EVENTS_CFUNCS_H__ */ +#endif /* LIBVIRT_GO_NODE_DEVICE_EVENTS_WRAPPER_H__ */ diff --git a/qemu.go b/qemu.go index 38f3eaf..dd30a7d 100644 --- a/qemu.go +++ b/qemu.go @@ -38,7 +38,7 @@ package libvirt #include <libvirt/virterror.h> #include <stdlib.h> #include "qemu_compat.h" -#include "qemu_cfuncs.h" +#include "qemu_wrapper.h" */ import "C" diff --git a/qemu_cfuncs.go b/qemu_wrapper.go similarity index 97% rename from qemu_cfuncs.go rename to qemu_wrapper.go index 83bb67a..41fe0cf 100644 --- a/qemu_cfuncs.go +++ b/qemu_wrapper.go @@ -35,8 +35,8 @@ package libvirt #include <libvirt/libvirt-qemu.h> #include <libvirt/virterror.h> #include "qemu_compat.h" -#include "qemu_cfuncs.h" -#include "callbacks_cfuncs.h" +#include "qemu_wrapper.h" +#include "callbacks_wrapper.h" #include <assert.h> #include <stdint.h> diff --git a/qemu_cfuncs.h b/qemu_wrapper.h similarity index 91% rename from qemu_cfuncs.h rename to qemu_wrapper.h index f1f48b0..4495cc4 100644 --- a/qemu_cfuncs.h +++ b/qemu_wrapper.h @@ -24,8 +24,8 @@ * */ -#ifndef LIBVIRT_GO_DOMAIN_EVENTS_CFUNCS_H__ -#define LIBVIRT_GO_DOMAIN_EVENTS_CFUNCS_H__ +#ifndef LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ +#define LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ void domainQemuMonitorEventCallback_cgo(virConnectPtr c, virDomainPtr d, const char *event, long long secs, @@ -36,4 +36,4 @@ int virConnectDomainQemuMonitorEventRegister_cgo(virConnectPtr c, virDomainPtr long goCallbackId, unsigned int flags); -#endif /* LIBVIRT_GO_DOMAIN_EVENTS_CFUNCS_H__ */ +#endif /* LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ */ diff --git a/secret_events.go b/secret_events.go index 7da9428..92c86a2 100644 --- a/secret_events.go +++ b/secret_events.go @@ -35,7 +35,7 @@ import ( #cgo pkg-config: libvirt #include <libvirt/libvirt.h> #include "secret_compat.h" -#include "secret_events_cfuncs.h" +#include "secret_events_wrapper.h" */ import "C" diff --git a/secret_events_cfuncs.go b/secret_events_wrapper.go similarity index 97% rename from secret_events_cfuncs.go rename to secret_events_wrapper.go index 158008b..55d3394 100644 --- a/secret_events_cfuncs.go +++ b/secret_events_wrapper.go @@ -32,8 +32,8 @@ package libvirt #include <libvirt/virterror.h> #include <assert.h> #include "secret_compat.h" -#include "secret_events_cfuncs.h" -#include "callbacks_cfuncs.h" +#include "secret_events_wrapper.h" +#include "callbacks_wrapper.h" #include <stdint.h> extern void secretEventLifecycleCallback(virConnectPtr, virSecretPtr, int, int, int); diff --git a/secret_events_cfuncs.h b/secret_events_wrapper.h similarity index 92% rename from secret_events_cfuncs.h rename to secret_events_wrapper.h index 96401d5..4ad299c 100644 --- a/secret_events_cfuncs.h +++ b/secret_events_wrapper.h @@ -24,8 +24,8 @@ * */ -#ifndef LIBVIRT_GO_SECRET_EVENTS_CFUNCS_H__ -#define LIBVIRT_GO_SECRET_EVENTS_CFUNCS_H__ +#ifndef LIBVIRT_GO_SECRET_EVENTS_WRAPPER_H__ +#define LIBVIRT_GO_SECRET_EVENTS_WRAPPER_H__ void secretEventLifecycleCallback_cgo(virConnectPtr c, virSecretPtr d, int event, int detail, void* data); @@ -37,4 +37,4 @@ int virConnectSecretEventRegisterAny_cgo(virConnectPtr c, virSecretPtr d, long goCallbackId); -#endif /* LIBVIRT_GO_SECRET_EVENTS_CFUNCS_H__ */ +#endif /* LIBVIRT_GO_SECRET_EVENTS_WRAPPER_H__ */ diff --git a/storage_pool_events.go b/storage_pool_events.go index 2a37114..5be9191 100644 --- a/storage_pool_events.go +++ b/storage_pool_events.go @@ -35,7 +35,7 @@ import ( #cgo pkg-config: libvirt #include <libvirt/libvirt.h> #include "storage_pool_compat.h" -#include "storage_pool_events_cfuncs.h" +#include "storage_pool_events_wrapper.h" */ import "C" diff --git a/storage_pool_events_cfuncs.go b/storage_pool_events_wrapper.go similarity index 97% rename from storage_pool_events_cfuncs.go rename to storage_pool_events_wrapper.go index 52ec553..0d99909 100644 --- a/storage_pool_events_cfuncs.go +++ b/storage_pool_events_wrapper.go @@ -32,8 +32,8 @@ package libvirt #include <libvirt/virterror.h> #include <assert.h> #include "storage_pool_compat.h" -#include "storage_pool_events_cfuncs.h" -#include "callbacks_cfuncs.h" +#include "storage_pool_events_wrapper.h" +#include "callbacks_wrapper.h" #include <stdint.h> extern void storagePoolEventLifecycleCallback(virConnectPtr, virStoragePoolPtr, int, int, int); diff --git a/storage_pool_events_cfuncs.h b/storage_pool_events_wrapper.h similarity index 91% rename from storage_pool_events_cfuncs.h rename to storage_pool_events_wrapper.h index 0087d6f..c8a10c9 100644 --- a/storage_pool_events_cfuncs.h +++ b/storage_pool_events_wrapper.h @@ -24,8 +24,8 @@ * */ -#ifndef LIBVIRT_GO_STORAGE_POOL_EVENTS_CFUNCS_H__ -#define LIBVIRT_GO_STORAGE_POOL_EVENTS_CFUNCS_H__ +#ifndef LIBVIRT_GO_STORAGE_POOL_EVENTS_WRAPPER_H__ +#define LIBVIRT_GO_STORAGE_POOL_EVENTS_WRAPPER_H__ void storagePoolEventLifecycleCallback_cgo(virConnectPtr c, virStoragePoolPtr d, int event, int detail, void* data); @@ -37,4 +37,4 @@ int virConnectStoragePoolEventRegisterAny_cgo(virConnectPtr c, virStoragePoolPt long goCallbackId); -#endif /* LIBVIRT_GO_STORAGE_POOL_EVENTS_CFUNCS_H__ */ +#endif /* LIBVIRT_GO_STORAGE_POOL_EVENTS_WRAPPER_H__ */ diff --git a/stream.go b/stream.go index fcd1cd3..b26e8e9 100644 --- a/stream.go +++ b/stream.go @@ -31,7 +31,7 @@ package libvirt #include <libvirt/libvirt.h> #include <libvirt/virterror.h> #include <stdlib.h> -#include "stream_cfuncs.h" +#include "stream_wrapper.h" #include "stream_compat.h" */ import "C" diff --git a/stream_cfuncs.go b/stream_wrapper.go similarity index 99% rename from stream_cfuncs.go rename to stream_wrapper.go index 99cde0e..ea2e0cb 100644 --- a/stream_cfuncs.go +++ b/stream_wrapper.go @@ -33,7 +33,7 @@ package libvirt #include <stdint.h> #include <stdlib.h> #include <assert.h> -#include "stream_cfuncs.h" +#include "stream_wrapper.h" int streamSourceCallback(virStreamPtr st, char *cdata, size_t nbytes, int callbackID); int streamSourceHoleCallback(virStreamPtr st, int *inData, long long *length, int callbackID); diff --git a/stream_cfuncs.h b/stream_wrapper.h similarity index 93% rename from stream_cfuncs.h rename to stream_wrapper.h index d5696ec..778e457 100644 --- a/stream_cfuncs.h +++ b/stream_wrapper.h @@ -24,8 +24,8 @@ * */ -#ifndef LIBVIRT_GO_STREAM_CFUNCS_H__ -#define LIBVIRT_GO_STREAM_CFUNCS_H__ +#ifndef LIBVIRT_GO_STREAM_WRAPPER_H__ +#define LIBVIRT_GO_STREAM_WRAPPER_H__ int virStreamSendAll_cgo(virStreamPtr st, int callbackID); int virStreamRecvAll_cgo(virStreamPtr st, int callbackID); @@ -34,4 +34,4 @@ int virStreamSparseRecvAll_cgo(virStreamPtr st, int callbackID, int holeCallback int virStreamEventAddCallback_cgo(virStreamPtr st, int events, int callbackID); -#endif /* LIBVIRT_GO_STREAM_CFUNCS_H__ */ +#endif /* LIBVIRT_GO_STREAM_WRAPPER_H__ */ -- 2.17.1

Instead of using "_cgo" for multiple scenarios, use "Wrapper" as suffix where a libvirt API is being wrapped, and "Helper" as a suffix where we are implementing a helper function (eg an event callback). Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- api_test.go | 2 +- callbacks.go | 4 +- callbacks_wrapper.go | 2 +- callbacks_wrapper.h | 2 +- connect.go | 6 +- connect_wrapper.go | 10 ++-- connect_wrapper.h | 4 +- domain_events.go | 100 ++++++++++++++++----------------- domain_events_wrapper.go | 50 ++++++++--------- domain_events_wrapper.h | 48 ++++++++-------- events.go | 6 +- events_wrapper.go | 6 +- events_wrapper.h | 6 +- network_events.go | 4 +- network_events_wrapper.go | 6 +- network_events_wrapper.h | 4 +- node_device_events.go | 8 +-- node_device_events_wrapper.go | 8 +-- node_device_events_wrapper.h | 6 +- qemu.go | 4 +- qemu_wrapper.go | 6 +- qemu_wrapper.h | 4 +- secret_events.go | 8 +-- secret_events_wrapper.go | 8 +-- secret_events_wrapper.h | 6 +- storage_pool_events.go | 8 +-- storage_pool_events_wrapper.go | 8 +-- storage_pool_events_wrapper.h | 6 +- stream.go | 10 ++-- stream_wrapper.go | 10 ++-- stream_wrapper.h | 10 ++-- 31 files changed, 185 insertions(+), 185 deletions(-) diff --git a/api_test.go b/api_test.go index 06938a6..ad94335 100644 --- a/api_test.go +++ b/api_test.go @@ -394,7 +394,7 @@ func ProcessFile(path string) []string { defer file.Close() - re, err := regexp.Compile("C\\.((vir|VIR|LIBVIR)[a-zA-Z0-9_]+?)(Compat|_cgo)?\\b") + re, err := regexp.Compile("C\\.((vir|VIR|LIBVIR)[a-zA-Z0-9_]+?)(Compat|Wrapper)?\\b") if err != nil { panic(err) } diff --git a/callbacks.go b/callbacks.go index 05a755b..7b2d11b 100644 --- a/callbacks.go +++ b/callbacks.go @@ -40,13 +40,13 @@ package libvirt // // - Create a CGO function similar to the above function but with the // appropriate signature to be registered as a callback in C code -// (connErrCallback_cgo). Notably, it will have a void* argument +// (connErrCallbackHelper). Notably, it will have a void* argument // that should be cast to long to retrieve the callback ID. It // should be just a thin wrapper to transform the opaque argument to // a callback ID. // // - Create a CGO function which will be a wrapper around the C -// function to register the callback (virConnSetErrorFunc_cgo). Its +// function to register the callback (virConnSetErrorFuncWrapper). Its // only role is to transform a callback ID (long) to an opaque (void*) // and call the C function. // diff --git a/callbacks_wrapper.go b/callbacks_wrapper.go index 967aaab..64caf69 100644 --- a/callbacks_wrapper.go +++ b/callbacks_wrapper.go @@ -33,7 +33,7 @@ package libvirt #include "callbacks_wrapper.h" extern void freeCallbackId(long); -void freeGoCallback_cgo(void* goCallbackId) { +void freeGoCallbackHelper(void* goCallbackId) { freeCallbackId((long)goCallbackId); } diff --git a/callbacks_wrapper.h b/callbacks_wrapper.h index f37aba4..4b91f7a 100644 --- a/callbacks_wrapper.h +++ b/callbacks_wrapper.h @@ -27,6 +27,6 @@ #ifndef LIBVIRT_GO_CALLBACKS_WRAPPER_H__ #define LIBVIRT_GO_CALLBACKS_WRAPPER_H__ -void freeGoCallback_cgo(void* goCallbackId); +void freeGoCallbackHelper(void* goCallbackId); #endif /* LIBVIRT_GO_CALLBACKS_WRAPPER_H__ */ diff --git a/connect.go b/connect.go index 5c6d6ff..793e3c4 100644 --- a/connect.go +++ b/connect.go @@ -452,8 +452,8 @@ type CloseCallback func(conn *Connect, reason ConnectCloseReason) func (c *Connect) RegisterCloseCallback(callback CloseCallback) error { c.UnregisterCloseCallback() goCallbackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.closeCallback_cgo) - res := C.virConnectRegisterCloseCallback_cgo(c.ptr, C.virConnectCloseFunc(callbackPtr), C.long(goCallbackId)) + callbackPtr := unsafe.Pointer(C.closeCallbackHelper) + res := C.virConnectRegisterCloseCallbackHelper(c.ptr, C.virConnectCloseFunc(callbackPtr), C.long(goCallbackId)) if res != 0 { freeCallbackId(goCallbackId) return GetLastError() @@ -469,7 +469,7 @@ func (c *Connect) UnregisterCloseCallback() error { if connData.closeCallbackId == nil { return nil } - callbackPtr := unsafe.Pointer(C.closeCallback_cgo) + callbackPtr := unsafe.Pointer(C.closeCallbackHelper) res := C.virConnectUnregisterCloseCallback(c.ptr, C.virConnectCloseFunc(callbackPtr)) if res != 0 { return GetLastError() diff --git a/connect_wrapper.go b/connect_wrapper.go index a686e29..ec2da69 100644 --- a/connect_wrapper.go +++ b/connect_wrapper.go @@ -34,21 +34,21 @@ package libvirt #include "callbacks_wrapper.h" extern void closeCallback(virConnectPtr, int, long); -void closeCallback_cgo(virConnectPtr conn, int reason, void *opaque) +void closeCallbackHelper(virConnectPtr conn, int reason, void *opaque) { closeCallback(conn, reason, (long)opaque); } -int virConnectRegisterCloseCallback_cgo(virConnectPtr c, virConnectCloseFunc cb, long goCallbackId) +int virConnectRegisterCloseCallbackHelper(virConnectPtr c, virConnectCloseFunc cb, long goCallbackId) { void *id = (void*)goCallbackId; - return virConnectRegisterCloseCallback(c, cb, id, freeGoCallback_cgo); + return virConnectRegisterCloseCallback(c, cb, id, freeGoCallbackHelper); } #include <stdio.h> extern int connectAuthCallback(virConnectCredentialPtr, unsigned int, int); -int connectAuthCallback_cgo(virConnectCredentialPtr cred, unsigned int ncred, void *cbdata) +int connectAuthCallbackHelper(virConnectCredentialPtr cred, unsigned int ncred, void *cbdata) { int *callbackID = cbdata; @@ -60,7 +60,7 @@ virConnectPtr virConnectOpenAuthWrap(const char *name, int *credtype, uint ncred virConnectAuth auth = { .credtype = credtype, .ncredtype = ncredtype, - .cb = connectAuthCallback_cgo, + .cb = connectAuthCallbackHelper, .cbdata = &callbackID, }; diff --git a/connect_wrapper.h b/connect_wrapper.h index 5c59320..60374c7 100644 --- a/connect_wrapper.h +++ b/connect_wrapper.h @@ -26,8 +26,8 @@ #ifndef LIBVIRT_GO_CONNECT_WRAPPER_H__ #define LIBVIRT_GO_CONNECT_WRAPPER_H__ -void closeCallback_cgo(virConnectPtr conn, int reason, void *opaque); -int virConnectRegisterCloseCallback_cgo(virConnectPtr c, virConnectCloseFunc cb, long goCallbackId); +void closeCallbackHelper(virConnectPtr conn, int reason, void *opaque); +int virConnectRegisterCloseCallbackHelper(virConnectPtr c, virConnectCloseFunc cb, long goCallbackId); virConnectPtr virConnectOpenAuthWrap(const char *name, int *credtype, uint ncredtype, int callbackID, unsigned int flags); diff --git a/domain_events.go b/domain_events.go index 6d4ff24..5d21b01 100644 --- a/domain_events.go +++ b/domain_events.go @@ -963,12 +963,12 @@ func domainEventBlockThresholdCallback(c C.virConnectPtr, d C.virDomainPtr, dev func (c *Connect) DomainEventLifecycleRegister(dom *Domain, callback DomainEventLifecycleCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventLifecycleCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventLifecycleCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_LIFECYCLE, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -982,12 +982,12 @@ func (c *Connect) DomainEventLifecycleRegister(dom *Domain, callback DomainEvent func (c *Connect) DomainEventRebootRegister(dom *Domain, callback DomainEventGenericCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventGenericCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventGenericCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_REBOOT, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1001,12 +1001,12 @@ func (c *Connect) DomainEventRebootRegister(dom *Domain, callback DomainEventGen func (c *Connect) DomainEventRTCChangeRegister(dom *Domain, callback DomainEventRTCChangeCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventRTCChangeCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventRTCChangeCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_RTC_CHANGE, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1020,12 +1020,12 @@ func (c *Connect) DomainEventRTCChangeRegister(dom *Domain, callback DomainEvent func (c *Connect) DomainEventWatchdogRegister(dom *Domain, callback DomainEventWatchdogCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventWatchdogCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventWatchdogCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_WATCHDOG, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1039,12 +1039,12 @@ func (c *Connect) DomainEventWatchdogRegister(dom *Domain, callback DomainEventW func (c *Connect) DomainEventIOErrorRegister(dom *Domain, callback DomainEventIOErrorCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventIOErrorCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventIOErrorCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_IO_ERROR, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1058,12 +1058,12 @@ func (c *Connect) DomainEventIOErrorRegister(dom *Domain, callback DomainEventIO func (c *Connect) DomainEventGraphicsRegister(dom *Domain, callback DomainEventGraphicsCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventGraphicsCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventGraphicsCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_GRAPHICS, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1077,12 +1077,12 @@ func (c *Connect) DomainEventGraphicsRegister(dom *Domain, callback DomainEventG func (c *Connect) DomainEventIOErrorReasonRegister(dom *Domain, callback DomainEventIOErrorReasonCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventIOErrorReasonCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventIOErrorReasonCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1096,12 +1096,12 @@ func (c *Connect) DomainEventIOErrorReasonRegister(dom *Domain, callback DomainE func (c *Connect) DomainEventControlErrorRegister(dom *Domain, callback DomainEventGenericCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventGenericCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventGenericCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_CONTROL_ERROR, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1115,12 +1115,12 @@ func (c *Connect) DomainEventControlErrorRegister(dom *Domain, callback DomainEv func (c *Connect) DomainEventBlockJobRegister(dom *Domain, callback DomainEventBlockJobCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventBlockJobCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventBlockJobCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_BLOCK_JOB, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1134,12 +1134,12 @@ func (c *Connect) DomainEventBlockJobRegister(dom *Domain, callback DomainEventB func (c *Connect) DomainEventDiskChangeRegister(dom *Domain, callback DomainEventDiskChangeCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventDiskChangeCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventDiskChangeCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_DISK_CHANGE, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1153,12 +1153,12 @@ func (c *Connect) DomainEventDiskChangeRegister(dom *Domain, callback DomainEven func (c *Connect) DomainEventTrayChangeRegister(dom *Domain, callback DomainEventTrayChangeCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventTrayChangeCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventTrayChangeCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_TRAY_CHANGE, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1172,12 +1172,12 @@ func (c *Connect) DomainEventTrayChangeRegister(dom *Domain, callback DomainEven func (c *Connect) DomainEventPMWakeupRegister(dom *Domain, callback DomainEventPMWakeupCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventPMWakeupCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventPMWakeupCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_PMWAKEUP, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1191,12 +1191,12 @@ func (c *Connect) DomainEventPMWakeupRegister(dom *Domain, callback DomainEventP func (c *Connect) DomainEventPMSuspendRegister(dom *Domain, callback DomainEventPMSuspendCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventPMSuspendCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventPMSuspendCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_PMSUSPEND, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1210,12 +1210,12 @@ func (c *Connect) DomainEventPMSuspendRegister(dom *Domain, callback DomainEvent func (c *Connect) DomainEventBalloonChangeRegister(dom *Domain, callback DomainEventBalloonChangeCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventBalloonChangeCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventBalloonChangeCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1229,12 +1229,12 @@ func (c *Connect) DomainEventBalloonChangeRegister(dom *Domain, callback DomainE func (c *Connect) DomainEventPMSuspendDiskRegister(dom *Domain, callback DomainEventPMSuspendDiskCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventPMSuspendDiskCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventPMSuspendDiskCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1248,12 +1248,12 @@ func (c *Connect) DomainEventPMSuspendDiskRegister(dom *Domain, callback DomainE func (c *Connect) DomainEventDeviceRemovedRegister(dom *Domain, callback DomainEventDeviceRemovedCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventDeviceRemovedCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventDeviceRemovedCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1267,12 +1267,12 @@ func (c *Connect) DomainEventDeviceRemovedRegister(dom *Domain, callback DomainE func (c *Connect) DomainEventBlockJob2Register(dom *Domain, callback DomainEventBlockJobCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventBlockJobCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventBlockJobCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1286,12 +1286,12 @@ func (c *Connect) DomainEventBlockJob2Register(dom *Domain, callback DomainEvent func (c *Connect) DomainEventTunableRegister(dom *Domain, callback DomainEventTunableCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventTunableCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventTunableCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_TUNABLE, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1305,12 +1305,12 @@ func (c *Connect) DomainEventTunableRegister(dom *Domain, callback DomainEventTu func (c *Connect) DomainEventAgentLifecycleRegister(dom *Domain, callback DomainEventAgentLifecycleCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventAgentLifecycleCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventAgentLifecycleCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1324,12 +1324,12 @@ func (c *Connect) DomainEventAgentLifecycleRegister(dom *Domain, callback Domain func (c *Connect) DomainEventDeviceAddedRegister(dom *Domain, callback DomainEventDeviceAddedCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventDeviceAddedCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventDeviceAddedCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_DEVICE_ADDED, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1343,12 +1343,12 @@ func (c *Connect) DomainEventDeviceAddedRegister(dom *Domain, callback DomainEve func (c *Connect) DomainEventMigrationIterationRegister(dom *Domain, callback DomainEventMigrationIterationCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventMigrationIterationCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventMigrationIterationCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1362,12 +1362,12 @@ func (c *Connect) DomainEventMigrationIterationRegister(dom *Domain, callback Do func (c *Connect) DomainEventJobCompletedRegister(dom *Domain, callback DomainEventJobCompletedCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventJobCompletedCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventJobCompletedCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_JOB_COMPLETED, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1381,12 +1381,12 @@ func (c *Connect) DomainEventJobCompletedRegister(dom *Domain, callback DomainEv func (c *Connect) DomainEventDeviceRemovalFailedRegister(dom *Domain, callback DomainEventDeviceRemovalFailedCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventDeviceRemovalFailedCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventDeviceRemovalFailedCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1400,12 +1400,12 @@ func (c *Connect) DomainEventDeviceRemovalFailedRegister(dom *Domain, callback D func (c *Connect) DomainEventMetadataChangeRegister(dom *Domain, callback DomainEventMetadataChangeCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventMetadataChangeCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventMetadataChangeCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_METADATA_CHANGE, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -1419,12 +1419,12 @@ func (c *Connect) DomainEventMetadataChangeRegister(dom *Domain, callback Domain func (c *Connect) DomainEventBlockThresholdRegister(dom *Domain, callback DomainEventBlockThresholdCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainEventBlockThresholdCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainEventBlockThresholdCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainEventRegisterAny_cgo(c.ptr, cdom, + ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD, C.virConnectDomainEventGenericCallback(callbackPtr), C.long(goCallBackId)) diff --git a/domain_events_wrapper.go b/domain_events_wrapper.go index ad0f803..799945b 100644 --- a/domain_events_wrapper.go +++ b/domain_events_wrapper.go @@ -35,34 +35,34 @@ package libvirt #include <stdint.h> extern void domainEventLifecycleCallback(virConnectPtr, virDomainPtr, int, int, int); -void domainEventLifecycleCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventLifecycleCallbackHelper(virConnectPtr c, virDomainPtr d, int event, int detail, void *data) { domainEventLifecycleCallback(c, d, event, detail, (int)(intptr_t)data); } extern void domainEventGenericCallback(virConnectPtr, virDomainPtr, int); -void domainEventGenericCallback_cgo(virConnectPtr c, virDomainPtr d, void *data) +void domainEventGenericCallbackHelper(virConnectPtr c, virDomainPtr d, void *data) { domainEventGenericCallback(c, d, (int)(intptr_t)data); } extern void domainEventRTCChangeCallback(virConnectPtr, virDomainPtr, long long, int); -void domainEventRTCChangeCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventRTCChangeCallbackHelper(virConnectPtr c, virDomainPtr d, long long utcoffset, void *data) { domainEventRTCChangeCallback(c, d, utcoffset, (int)(intptr_t)data); } extern void domainEventWatchdogCallback(virConnectPtr, virDomainPtr, int, int); -void domainEventWatchdogCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventWatchdogCallbackHelper(virConnectPtr c, virDomainPtr d, int action, void *data) { domainEventWatchdogCallback(c, d, action, (int)(intptr_t)data); } extern void domainEventIOErrorCallback(virConnectPtr, virDomainPtr, const char *, const char *, int, int); -void domainEventIOErrorCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventIOErrorCallbackHelper(virConnectPtr c, virDomainPtr d, const char *srcPath, const char *devAlias, int action, void *data) { @@ -72,7 +72,7 @@ void domainEventIOErrorCallback_cgo(virConnectPtr c, virDomainPtr d, extern void domainEventGraphicsCallback(virConnectPtr, virDomainPtr, int, const virDomainEventGraphicsAddress *, const virDomainEventGraphicsAddress *, const char *, const virDomainEventGraphicsSubject *, int); -void domainEventGraphicsCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventGraphicsCallbackHelper(virConnectPtr c, virDomainPtr d, int phase, const virDomainEventGraphicsAddress *local, const virDomainEventGraphicsAddress *remote, const char *authScheme, @@ -83,7 +83,7 @@ void domainEventGraphicsCallback_cgo(virConnectPtr c, virDomainPtr d, extern void domainEventIOErrorReasonCallback(virConnectPtr, virDomainPtr, const char *, const char *, int, const char *, int); -void domainEventIOErrorReasonCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventIOErrorReasonCallbackHelper(virConnectPtr c, virDomainPtr d, const char *srcPath, const char *devAlias, int action, const char *reason, void *data) { @@ -91,7 +91,7 @@ void domainEventIOErrorReasonCallback_cgo(virConnectPtr c, virDomainPtr d, } extern void domainEventBlockJobCallback(virConnectPtr, virDomainPtr, const char *, int, int, int); -void domainEventBlockJobCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventBlockJobCallbackHelper(virConnectPtr c, virDomainPtr d, const char *disk, int type, int status, void *data) { domainEventBlockJobCallback(c, d, disk, type, status, (int)(intptr_t)data); @@ -99,7 +99,7 @@ void domainEventBlockJobCallback_cgo(virConnectPtr c, virDomainPtr d, extern void domainEventDiskChangeCallback(virConnectPtr, virDomainPtr, const char *, const char *, const char *, int, int); -void domainEventDiskChangeCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventDiskChangeCallbackHelper(virConnectPtr c, virDomainPtr d, const char *oldSrcPath, const char *newSrcPath, const char *devAlias, int reason, void *data) { @@ -107,49 +107,49 @@ void domainEventDiskChangeCallback_cgo(virConnectPtr c, virDomainPtr d, } extern void domainEventTrayChangeCallback(virConnectPtr, virDomainPtr, const char *, int, int); -void domainEventTrayChangeCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventTrayChangeCallbackHelper(virConnectPtr c, virDomainPtr d, const char *devAlias, int reason, void *data) { domainEventTrayChangeCallback(c, d, devAlias, reason, (int)(intptr_t)data); } extern void domainEventPMSuspendCallback(virConnectPtr, virDomainPtr, int, int); -void domainEventPMSuspendCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventPMSuspendCallbackHelper(virConnectPtr c, virDomainPtr d, int reason, void *data) { domainEventPMSuspendCallback(c, d, reason, (int)(intptr_t)data); } extern void domainEventPMWakeupCallback(virConnectPtr, virDomainPtr, int, int); -void domainEventPMWakeupCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventPMWakeupCallbackHelper(virConnectPtr c, virDomainPtr d, int reason, void *data) { domainEventPMWakeupCallback(c, d, reason, (int)(intptr_t)data); } extern void domainEventPMSuspendDiskCallback(virConnectPtr, virDomainPtr, int, int); -void domainEventPMSuspendDiskCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventPMSuspendDiskCallbackHelper(virConnectPtr c, virDomainPtr d, int reason, void *data) { domainEventPMSuspendDiskCallback(c, d, reason, (int)(intptr_t)data); } extern void domainEventBalloonChangeCallback(virConnectPtr, virDomainPtr, unsigned long long, int); -void domainEventBalloonChangeCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventBalloonChangeCallbackHelper(virConnectPtr c, virDomainPtr d, unsigned long long actual, void *data) { domainEventBalloonChangeCallback(c, d, actual, (int)(intptr_t)data); } extern void domainEventDeviceRemovedCallback(virConnectPtr, virDomainPtr, const char *, int); -void domainEventDeviceRemovedCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventDeviceRemovedCallbackHelper(virConnectPtr c, virDomainPtr d, const char *devAlias, void *data) { domainEventDeviceRemovedCallback(c, d, devAlias, (int)(intptr_t)data); } extern void domainEventTunableCallback(virConnectPtr, virDomainPtr, virTypedParameterPtr, int, int); -void domainEventTunableCallback_cgo(virConnectPtr conn, +void domainEventTunableCallbackHelper(virConnectPtr conn, virDomainPtr dom, virTypedParameterPtr params, int nparams, @@ -159,7 +159,7 @@ void domainEventTunableCallback_cgo(virConnectPtr conn, } extern void domainEventAgentLifecycleCallback(virConnectPtr, virDomainPtr, int, int, int); -void domainEventAgentLifecycleCallback_cgo(virConnectPtr conn, +void domainEventAgentLifecycleCallbackHelper(virConnectPtr conn, virDomainPtr dom, int state, int reason, @@ -169,7 +169,7 @@ void domainEventAgentLifecycleCallback_cgo(virConnectPtr conn, } extern void domainEventDeviceAddedCallback(virConnectPtr, virDomainPtr, const char *, int); -void domainEventDeviceAddedCallback_cgo(virConnectPtr conn, +void domainEventDeviceAddedCallbackHelper(virConnectPtr conn, virDomainPtr dom, const char *devAlias, void *opaque) @@ -178,7 +178,7 @@ void domainEventDeviceAddedCallback_cgo(virConnectPtr conn, } extern void domainEventMigrationIterationCallback(virConnectPtr, virDomainPtr, int, int); -void domainEventMigrationIterationCallback_cgo(virConnectPtr conn, +void domainEventMigrationIterationCallbackHelper(virConnectPtr conn, virDomainPtr dom, int iteration, void *opaque) @@ -187,7 +187,7 @@ void domainEventMigrationIterationCallback_cgo(virConnectPtr conn, } extern void domainEventJobCompletedCallback(virConnectPtr, virDomainPtr, virTypedParameterPtr, int, int); -void domainEventJobCompletedCallback_cgo(virConnectPtr conn, +void domainEventJobCompletedCallbackHelper(virConnectPtr conn, virDomainPtr dom, virTypedParameterPtr params, int nparams, @@ -197,7 +197,7 @@ void domainEventJobCompletedCallback_cgo(virConnectPtr conn, } extern void domainEventDeviceRemovalFailedCallback(virConnectPtr, virDomainPtr, const char *, int); -void domainEventDeviceRemovalFailedCallback_cgo(virConnectPtr conn, +void domainEventDeviceRemovalFailedCallbackHelper(virConnectPtr conn, virDomainPtr dom, const char *devAlias, void *opaque) @@ -206,7 +206,7 @@ void domainEventDeviceRemovalFailedCallback_cgo(virConnectPtr conn, } extern void domainEventMetadataChangeCallback(virConnectPtr, virDomainPtr, int, const char *, int); -void domainEventMetadataChangeCallback_cgo(virConnectPtr conn, +void domainEventMetadataChangeCallbackHelper(virConnectPtr conn, virDomainPtr dom, int type, const char *nsuri, @@ -216,7 +216,7 @@ void domainEventMetadataChangeCallback_cgo(virConnectPtr conn, } extern void domainEventBlockThresholdCallback(virConnectPtr, virDomainPtr, const char *, const char *, unsigned long long, unsigned long long, int); -void domainEventBlockThresholdCallback_cgo(virConnectPtr conn, +void domainEventBlockThresholdCallbackHelper(virConnectPtr conn, virDomainPtr dom, const char *dev, const char *path, @@ -227,11 +227,11 @@ void domainEventBlockThresholdCallback_cgo(virConnectPtr conn, domainEventBlockThresholdCallback(conn, dom, dev, path, threshold, excess, (int)(intptr_t)opaque); } -int virConnectDomainEventRegisterAny_cgo(virConnectPtr c, virDomainPtr d, +int virConnectDomainEventRegisterAnyWrapper(virConnectPtr c, virDomainPtr d, int eventID, virConnectDomainEventGenericCallback cb, long goCallbackId) { void* id = (void*)goCallbackId; - return virConnectDomainEventRegisterAny(c, d, eventID, cb, id, freeGoCallback_cgo); + return virConnectDomainEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); } */ diff --git a/domain_events_wrapper.h b/domain_events_wrapper.h index a0e494e..55cf48e 100644 --- a/domain_events_wrapper.h +++ b/domain_events_wrapper.h @@ -27,88 +27,88 @@ #ifndef LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ -void domainEventLifecycleCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventLifecycleCallbackHelper(virConnectPtr c, virDomainPtr d, int event, int detail, void* data); -void domainEventGenericCallback_cgo(virConnectPtr c, virDomainPtr d, void* data); +void domainEventGenericCallbackHelper(virConnectPtr c, virDomainPtr d, void* data); -void domainEventRTCChangeCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventRTCChangeCallbackHelper(virConnectPtr c, virDomainPtr d, long long utcoffset, void* data); -void domainEventWatchdogCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventWatchdogCallbackHelper(virConnectPtr c, virDomainPtr d, int action, void* data); -void domainEventIOErrorCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventIOErrorCallbackHelper(virConnectPtr c, virDomainPtr d, const char *srcPath, const char *devAlias, int action, void* data); -void domainEventGraphicsCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventGraphicsCallbackHelper(virConnectPtr c, virDomainPtr d, int phase, const virDomainEventGraphicsAddress *local, const virDomainEventGraphicsAddress *remote, const char *authScheme, const virDomainEventGraphicsSubject *subject, void* data); -void domainEventIOErrorReasonCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventIOErrorReasonCallbackHelper(virConnectPtr c, virDomainPtr d, const char *srcPath, const char *devAlias, int action, const char *reason, void* data); -void domainEventBlockJobCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventBlockJobCallbackHelper(virConnectPtr c, virDomainPtr d, const char *disk, int type, int status, void* data); -void domainEventDiskChangeCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventDiskChangeCallbackHelper(virConnectPtr c, virDomainPtr d, const char *oldSrcPath, const char *newSrcPath, const char *devAlias, int reason, void* data); -void domainEventTrayChangeCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventTrayChangeCallbackHelper(virConnectPtr c, virDomainPtr d, const char *devAlias, int reason, void* data); -void domainEventPMSuspendCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventPMSuspendCallbackHelper(virConnectPtr c, virDomainPtr d, int reason, void* data); -void domainEventPMWakeupCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventPMWakeupCallbackHelper(virConnectPtr c, virDomainPtr d, int reason, void* data); -void domainEventPMSuspendDiskCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventPMSuspendDiskCallbackHelper(virConnectPtr c, virDomainPtr d, int reason, void* data); -void domainEventBalloonChangeCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventBalloonChangeCallbackHelper(virConnectPtr c, virDomainPtr d, unsigned long long actual, void* data); -void domainEventDeviceRemovedCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainEventDeviceRemovedCallbackHelper(virConnectPtr c, virDomainPtr d, const char *devAlias, void* data); -void domainEventTunableCallback_cgo(virConnectPtr conn, +void domainEventTunableCallbackHelper(virConnectPtr conn, virDomainPtr dom, virTypedParameterPtr params, int nparams, void *opaque); -void domainEventAgentLifecycleCallback_cgo(virConnectPtr conn, +void domainEventAgentLifecycleCallbackHelper(virConnectPtr conn, virDomainPtr dom, int state, int reason, void *opaque); -void domainEventDeviceAddedCallback_cgo(virConnectPtr conn, +void domainEventDeviceAddedCallbackHelper(virConnectPtr conn, virDomainPtr dom, const char *devAlias, void *opaque); -void domainEventMigrationIterationCallback_cgo(virConnectPtr conn, +void domainEventMigrationIterationCallbackHelper(virConnectPtr conn, virDomainPtr dom, int iteration, void *opaque); -void domainEventJobCompletedCallback_cgo(virConnectPtr conn, +void domainEventJobCompletedCallbackHelper(virConnectPtr conn, virDomainPtr dom, virTypedParameterPtr params, int nparams, void *opaque); -void domainEventDeviceRemovalFailedCallback_cgo(virConnectPtr conn, +void domainEventDeviceRemovalFailedCallbackHelper(virConnectPtr conn, virDomainPtr dom, const char *devAlias, void *opaque); -void domainEventMetadataChangeCallback_cgo(virConnectPtr conn, +void domainEventMetadataChangeCallbackHelper(virConnectPtr conn, virDomainPtr dom, int type, const char *nsuri, void *opaque); -void domainEventBlockThresholdCallback_cgo(virConnectPtr conn, +void domainEventBlockThresholdCallbackHelper(virConnectPtr conn, virDomainPtr dom, const char *dev, const char *path, @@ -116,7 +116,7 @@ void domainEventBlockThresholdCallback_cgo(virConnectPtr conn, unsigned long long excess, void *opaque); -int virConnectDomainEventRegisterAny_cgo(virConnectPtr c, virDomainPtr d, +int virConnectDomainEventRegisterAnyWrapper(virConnectPtr c, virDomainPtr d, int eventID, virConnectDomainEventGenericCallback cb, long goCallbackId); diff --git a/events.go b/events.go index 74d480a..3f8d3a9 100644 --- a/events.go +++ b/events.go @@ -77,7 +77,7 @@ func eventHandleCallback(watch int, fd int, events int, callbackID int) { func EventAddHandle(fd int, events EventHandleType, callback EventHandleCallback) (int, error) { callbackID := registerCallbackId(callback) - ret := C.virEventAddHandle_cgo((C.int)(fd), (C.int)(events), (C.int)(callbackID)) + ret := C.virEventAddHandleWrapper((C.int)(fd), (C.int)(events), (C.int)(callbackID)) if ret == -1 { return 0, GetLastError() } @@ -113,7 +113,7 @@ func eventTimeoutCallback(timer int, callbackID int) { func EventAddTimeout(freq int, callback EventTimeoutCallback) (int, error) { callbackID := registerCallbackId(callback) - ret := C.virEventAddTimeout_cgo((C.int)(freq), (C.int)(callbackID)) + ret := C.virEventAddTimeoutWrapper((C.int)(freq), (C.int)(callbackID)) if ret == -1 { return 0, GetLastError() } @@ -173,7 +173,7 @@ var eventLoopImpl EventLoop // See also https://libvirt.org/html/libvirt-libvirt-event.html#virEventRegisterImpl func EventRegisterImpl(impl EventLoop) { eventLoopImpl = impl - C.virEventRegisterImpl_cgo() + C.virEventRegisterImplWrapper() } //export eventAddHandleFunc diff --git a/events_wrapper.go b/events_wrapper.go index d17b054..6e3416f 100644 --- a/events_wrapper.go +++ b/events_wrapper.go @@ -41,7 +41,7 @@ static void eventAddHandleHelper(int watch, int fd, int events, void *opaque) eventHandleCallback(watch, fd, events, (int)(intptr_t)opaque); } -int virEventAddHandle_cgo(int fd, int events, int callbackID) +int virEventAddHandleWrapper(int fd, int events, int callbackID) { return virEventAddHandle(fd, events, eventAddHandleHelper, (void *)(intptr_t)callbackID, NULL); } @@ -53,7 +53,7 @@ static void eventAddTimeoutHelper(int timer, void *opaque) eventTimeoutCallback(timer, (int)(intptr_t)opaque); } -int virEventAddTimeout_cgo(int freq, int callbackID) +int virEventAddTimeoutWrapper(int freq, int callbackID) { return virEventAddTimeout(freq, eventAddTimeoutHelper, (void *)(intptr_t)callbackID, NULL); } @@ -96,7 +96,7 @@ int eventRemoveTimeoutFuncHelper(int timer) } -void virEventRegisterImpl_cgo(void) +void virEventRegisterImplWrapper(void) { virEventRegisterImpl(eventAddHandleFuncHelper, eventUpdateHandleFuncHelper, diff --git a/events_wrapper.h b/events_wrapper.h index d3e78d8..8420909 100644 --- a/events_wrapper.h +++ b/events_wrapper.h @@ -27,9 +27,9 @@ #ifndef LIBVIRT_GO_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_EVENTS_WRAPPER_H__ -int virEventAddHandle_cgo(int fd, int events, int callbackID); -int virEventAddTimeout_cgo(int freq, int callbackID); -void virEventRegisterImpl_cgo(void); +int virEventAddHandleWrapper(int fd, int events, int callbackID); +int virEventAddTimeoutWrapper(int freq, int callbackID); +void virEventRegisterImplWrapper(void); void eventHandleCallbackInvoke(int watch, int fd, int events, uintptr_t callback, uintptr_t opaque); void eventTimeoutCallbackInvoke(int timer, uintptr_t callback, uintptr_t opaque); diff --git a/network_events.go b/network_events.go index 15b2f55..39cc62b 100644 --- a/network_events.go +++ b/network_events.go @@ -74,12 +74,12 @@ func (c *Connect) NetworkEventLifecycleRegister(net *Network, callback NetworkEv return 0, GetNotImplementedError("virConnectNetworkEventRegisterAny") } - callbackPtr := unsafe.Pointer(C.networkEventLifecycleCallback_cgo) + callbackPtr := unsafe.Pointer(C.networkEventLifecycleCallbackHelper) var cnet C.virNetworkPtr if net != nil { cnet = net.ptr } - ret := C.virConnectNetworkEventRegisterAny_cgo(c.ptr, cnet, + ret := C.virConnectNetworkEventRegisterAnyWrapper(c.ptr, cnet, C.VIR_NETWORK_EVENT_ID_LIFECYCLE, C.virConnectNetworkEventGenericCallback(callbackPtr), C.long(goCallBackId)) diff --git a/network_events_wrapper.go b/network_events_wrapper.go index 613e32b..ea892cf 100644 --- a/network_events_wrapper.go +++ b/network_events_wrapper.go @@ -37,20 +37,20 @@ package libvirt #include <stdint.h> extern void networkEventLifecycleCallback(virConnectPtr, virNetworkPtr, int, int, int); -void networkEventLifecycleCallback_cgo(virConnectPtr c, virNetworkPtr d, +void networkEventLifecycleCallbackHelper(virConnectPtr c, virNetworkPtr d, int event, int detail, void *data) { networkEventLifecycleCallback(c, d, event, detail, (int)(intptr_t)data); } -int virConnectNetworkEventRegisterAny_cgo(virConnectPtr c, virNetworkPtr d, +int virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, virNetworkPtr d, int eventID, virConnectNetworkEventGenericCallback cb, long goCallbackId) { void* id = (void*)goCallbackId; #if LIBVIR_VERSION_NUMBER < 1002001 assert(0); // Caller should have checked version #else - return virConnectNetworkEventRegisterAny(c, d, eventID, cb, id, freeGoCallback_cgo); + return virConnectNetworkEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); #endif } diff --git a/network_events_wrapper.h b/network_events_wrapper.h index 13ffce1..1b73369 100644 --- a/network_events_wrapper.h +++ b/network_events_wrapper.h @@ -27,10 +27,10 @@ #ifndef LIBVIRT_GO_NETWORK_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_NETWORK_EVENTS_WRAPPER_H__ -void networkEventLifecycleCallback_cgo(virConnectPtr c, virNetworkPtr d, +void networkEventLifecycleCallbackHelper(virConnectPtr c, virNetworkPtr d, int event, int detail, void* data); -int virConnectNetworkEventRegisterAny_cgo(virConnectPtr c, virNetworkPtr d, +int virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, virNetworkPtr d, int eventID, virConnectNetworkEventGenericCallback cb, long goCallbackId); diff --git a/node_device_events.go b/node_device_events.go index 01c2245..1be2c73 100644 --- a/node_device_events.go +++ b/node_device_events.go @@ -91,12 +91,12 @@ func (c *Connect) NodeDeviceEventLifecycleRegister(device *NodeDevice, callback } goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.nodeDeviceEventLifecycleCallback_cgo) + callbackPtr := unsafe.Pointer(C.nodeDeviceEventLifecycleCallbackHelper) var cdevice C.virNodeDevicePtr if device != nil { cdevice = device.ptr } - ret := C.virConnectNodeDeviceEventRegisterAny_cgo(c.ptr, cdevice, + ret := C.virConnectNodeDeviceEventRegisterAnyWrapper(c.ptr, cdevice, C.VIR_NODE_DEVICE_EVENT_ID_LIFECYCLE, C.virConnectNodeDeviceEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -110,12 +110,12 @@ func (c *Connect) NodeDeviceEventLifecycleRegister(device *NodeDevice, callback func (c *Connect) NodeDeviceEventUpdateRegister(device *NodeDevice, callback NodeDeviceEventGenericCallback) (int, error) { goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.nodeDeviceEventGenericCallback_cgo) + callbackPtr := unsafe.Pointer(C.nodeDeviceEventGenericCallbackHelper) var cdevice C.virNodeDevicePtr if device != nil { cdevice = device.ptr } - ret := C.virConnectNodeDeviceEventRegisterAny_cgo(c.ptr, cdevice, + ret := C.virConnectNodeDeviceEventRegisterAnyWrapper(c.ptr, cdevice, C.VIR_NODE_DEVICE_EVENT_ID_UPDATE, C.virConnectNodeDeviceEventGenericCallback(callbackPtr), C.long(goCallBackId)) diff --git a/node_device_events_wrapper.go b/node_device_events_wrapper.go index a34fa6f..ff7b6e4 100644 --- a/node_device_events_wrapper.go +++ b/node_device_events_wrapper.go @@ -37,26 +37,26 @@ package libvirt #include <stdint.h> extern void nodeDeviceEventLifecycleCallback(virConnectPtr, virNodeDevicePtr, int, int, int); -void nodeDeviceEventLifecycleCallback_cgo(virConnectPtr c, virNodeDevicePtr d, +void nodeDeviceEventLifecycleCallbackHelper(virConnectPtr c, virNodeDevicePtr d, int event, int detail, void *data) { nodeDeviceEventLifecycleCallback(c, d, event, detail, (int)(intptr_t)data); } extern void nodeDeviceEventGenericCallback(virConnectPtr, virNodeDevicePtr, int); -void nodeDeviceEventGenericCallback_cgo(virConnectPtr c, virNodeDevicePtr d, void *data) +void nodeDeviceEventGenericCallbackHelper(virConnectPtr c, virNodeDevicePtr d, void *data) { nodeDeviceEventGenericCallback(c, d, (int)(intptr_t)data); } -int virConnectNodeDeviceEventRegisterAny_cgo(virConnectPtr c, virNodeDevicePtr d, +int virConnectNodeDeviceEventRegisterAnyWrapper(virConnectPtr c, virNodeDevicePtr d, int eventID, virConnectNodeDeviceEventGenericCallback cb, long goCallbackId) { void* id = (void*)goCallbackId; #if LIBVIR_VERSION_NUMBER < 2002000 assert(0); // Caller should have checked version #else - return virConnectNodeDeviceEventRegisterAny(c, d, eventID, cb, id, freeGoCallback_cgo); + return virConnectNodeDeviceEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); #endif } diff --git a/node_device_events_wrapper.h b/node_device_events_wrapper.h index 38b1036..ae76b3e 100644 --- a/node_device_events_wrapper.h +++ b/node_device_events_wrapper.h @@ -27,12 +27,12 @@ #ifndef LIBVIRT_GO_NODE_DEVICE_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_NODE_DEVICE_EVENTS_WRAPPER_H__ -void nodeDeviceEventLifecycleCallback_cgo(virConnectPtr c, virNodeDevicePtr d, +void nodeDeviceEventLifecycleCallbackHelper(virConnectPtr c, virNodeDevicePtr d, int event, int detail, void* data); -void nodeDeviceEventGenericCallback_cgo(virConnectPtr c, virNodeDevicePtr d, void* data); +void nodeDeviceEventGenericCallbackHelper(virConnectPtr c, virNodeDevicePtr d, void* data); -int virConnectNodeDeviceEventRegisterAny_cgo(virConnectPtr c, virNodeDevicePtr d, +int virConnectNodeDeviceEventRegisterAnyWrapper(virConnectPtr c, virNodeDevicePtr d, int eventID, virConnectNodeDeviceEventGenericCallback cb, long goCallbackId); diff --git a/qemu.go b/qemu.go index dd30a7d..b8679dc 100644 --- a/qemu.go +++ b/qemu.go @@ -160,12 +160,12 @@ func (c *Connect) DomainQemuMonitorEventRegister(dom *Domain, event string, call defer C.free(unsafe.Pointer(cEvent)) goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainQemuMonitorEventCallback_cgo) + callbackPtr := unsafe.Pointer(C.domainQemuMonitorEventCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } - ret := C.virConnectDomainQemuMonitorEventRegister_cgo(c.ptr, cdom, + ret := C.virConnectDomainQemuMonitorEventRegisterWrapper(c.ptr, cdom, cEvent, C.virConnectDomainQemuMonitorEventCallback(callbackPtr), C.long(goCallBackId), diff --git a/qemu_wrapper.go b/qemu_wrapper.go index 41fe0cf..bbd95cc 100644 --- a/qemu_wrapper.go +++ b/qemu_wrapper.go @@ -42,21 +42,21 @@ package libvirt extern void domainQemuMonitorEventCallback(virConnectPtr, virDomainPtr, const char *, long long, unsigned int, const char *, int); -void domainQemuMonitorEventCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainQemuMonitorEventCallbackHelper(virConnectPtr c, virDomainPtr d, const char *event, long long secs, unsigned int micros, const char *details, void *data) { domainQemuMonitorEventCallback(c, d, event, secs, micros, details, (int)(intptr_t)data); } -int virConnectDomainQemuMonitorEventRegister_cgo(virConnectPtr c, virDomainPtr d, +int virConnectDomainQemuMonitorEventRegisterWrapper(virConnectPtr c, virDomainPtr d, const char *event, virConnectDomainQemuMonitorEventCallback cb, long goCallbackId, unsigned int flags) { #if LIBVIR_VERSION_NUMBER < 1002003 assert(0); // Caller should have checked version #else void* id = (void*)goCallbackId; - return virConnectDomainQemuMonitorEventRegister(c, d, event, cb, id, freeGoCallback_cgo, flags); + return virConnectDomainQemuMonitorEventRegister(c, d, event, cb, id, freeGoCallbackHelper, flags); #endif } diff --git a/qemu_wrapper.h b/qemu_wrapper.h index 4495cc4..9284256 100644 --- a/qemu_wrapper.h +++ b/qemu_wrapper.h @@ -27,11 +27,11 @@ #ifndef LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ -void domainQemuMonitorEventCallback_cgo(virConnectPtr c, virDomainPtr d, +void domainQemuMonitorEventCallbackHelper(virConnectPtr c, virDomainPtr d, const char *event, long long secs, unsigned int micros, const char *details, void *data); -int virConnectDomainQemuMonitorEventRegister_cgo(virConnectPtr c, virDomainPtr d, +int virConnectDomainQemuMonitorEventRegisterWrapper(virConnectPtr c, virDomainPtr d, const char *event, virConnectDomainQemuMonitorEventCallback cb, long goCallbackId, unsigned int flags); diff --git a/secret_events.go b/secret_events.go index 92c86a2..0dd2708 100644 --- a/secret_events.go +++ b/secret_events.go @@ -91,12 +91,12 @@ func (c *Connect) SecretEventLifecycleRegister(secret *Secret, callback SecretEv return 0, GetNotImplementedError("virConnectSecretEventRegisterAny") } - callbackPtr := unsafe.Pointer(C.secretEventLifecycleCallback_cgo) + callbackPtr := unsafe.Pointer(C.secretEventLifecycleCallbackHelper) var csecret C.virSecretPtr if secret != nil { csecret = secret.ptr } - ret := C.virConnectSecretEventRegisterAny_cgo(c.ptr, csecret, + ret := C.virConnectSecretEventRegisterAnyWrapper(c.ptr, csecret, C.VIR_SECRET_EVENT_ID_LIFECYCLE, C.virConnectSecretEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -113,12 +113,12 @@ func (c *Connect) SecretEventValueChangedRegister(secret *Secret, callback Secre return 0, GetNotImplementedError("virConnectSecretEventRegisterAny") } - callbackPtr := unsafe.Pointer(C.secretEventGenericCallback_cgo) + callbackPtr := unsafe.Pointer(C.secretEventGenericCallbackHelper) var csecret C.virSecretPtr if secret != nil { csecret = secret.ptr } - ret := C.virConnectSecretEventRegisterAny_cgo(c.ptr, csecret, + ret := C.virConnectSecretEventRegisterAnyWrapper(c.ptr, csecret, C.VIR_SECRET_EVENT_ID_VALUE_CHANGED, C.virConnectSecretEventGenericCallback(callbackPtr), C.long(goCallBackId)) diff --git a/secret_events_wrapper.go b/secret_events_wrapper.go index 55d3394..3366065 100644 --- a/secret_events_wrapper.go +++ b/secret_events_wrapper.go @@ -37,27 +37,27 @@ package libvirt #include <stdint.h> extern void secretEventLifecycleCallback(virConnectPtr, virSecretPtr, int, int, int); -void secretEventLifecycleCallback_cgo(virConnectPtr c, virSecretPtr d, +void secretEventLifecycleCallbackHelper(virConnectPtr c, virSecretPtr d, int event, int detail, void *data) { secretEventLifecycleCallback(c, d, event, detail, (int)(intptr_t)data); } extern void secretEventGenericCallback(virConnectPtr, virSecretPtr, int); -void secretEventGenericCallback_cgo(virConnectPtr c, virSecretPtr d, +void secretEventGenericCallbackHelper(virConnectPtr c, virSecretPtr d, void *data) { secretEventGenericCallback(c, d, (int)(intptr_t)data); } -int virConnectSecretEventRegisterAny_cgo(virConnectPtr c, virSecretPtr d, +int virConnectSecretEventRegisterAnyWrapper(virConnectPtr c, virSecretPtr d, int eventID, virConnectSecretEventGenericCallback cb, long goCallbackId) { void* id = (void*)goCallbackId; #if LIBVIR_VERSION_NUMBER < 3000000 assert(0); // Caller should have checked version #else - return virConnectSecretEventRegisterAny(c, d, eventID, cb, id, freeGoCallback_cgo); + return virConnectSecretEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); #endif } diff --git a/secret_events_wrapper.h b/secret_events_wrapper.h index 4ad299c..1b5b527 100644 --- a/secret_events_wrapper.h +++ b/secret_events_wrapper.h @@ -27,12 +27,12 @@ #ifndef LIBVIRT_GO_SECRET_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_SECRET_EVENTS_WRAPPER_H__ -void secretEventLifecycleCallback_cgo(virConnectPtr c, virSecretPtr d, +void secretEventLifecycleCallbackHelper(virConnectPtr c, virSecretPtr d, int event, int detail, void* data); -void secretEventGenericCallback_cgo(virConnectPtr c, virSecretPtr d, +void secretEventGenericCallbackHelper(virConnectPtr c, virSecretPtr d, void* data); -int virConnectSecretEventRegisterAny_cgo(virConnectPtr c, virSecretPtr d, +int virConnectSecretEventRegisterAnyWrapper(virConnectPtr c, virSecretPtr d, int eventID, virConnectSecretEventGenericCallback cb, long goCallbackId); diff --git a/storage_pool_events.go b/storage_pool_events.go index 5be9191..cf98616 100644 --- a/storage_pool_events.go +++ b/storage_pool_events.go @@ -92,12 +92,12 @@ func (c *Connect) StoragePoolEventLifecycleRegister(pool *StoragePool, callback goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.storagePoolEventLifecycleCallback_cgo) + callbackPtr := unsafe.Pointer(C.storagePoolEventLifecycleCallbackHelper) var cpool C.virStoragePoolPtr if pool != nil { cpool = pool.ptr } - ret := C.virConnectStoragePoolEventRegisterAny_cgo(c.ptr, cpool, + ret := C.virConnectStoragePoolEventRegisterAnyWrapper(c.ptr, cpool, C.VIR_STORAGE_POOL_EVENT_ID_LIFECYCLE, C.virConnectStoragePoolEventGenericCallback(callbackPtr), C.long(goCallBackId)) @@ -115,12 +115,12 @@ func (c *Connect) StoragePoolEventRefreshRegister(pool *StoragePool, callback St goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.storagePoolEventGenericCallback_cgo) + callbackPtr := unsafe.Pointer(C.storagePoolEventGenericCallbackHelper) var cpool C.virStoragePoolPtr if pool != nil { cpool = pool.ptr } - ret := C.virConnectStoragePoolEventRegisterAny_cgo(c.ptr, cpool, + ret := C.virConnectStoragePoolEventRegisterAnyWrapper(c.ptr, cpool, C.VIR_STORAGE_POOL_EVENT_ID_REFRESH, C.virConnectStoragePoolEventGenericCallback(callbackPtr), C.long(goCallBackId)) diff --git a/storage_pool_events_wrapper.go b/storage_pool_events_wrapper.go index 0d99909..9670440 100644 --- a/storage_pool_events_wrapper.go +++ b/storage_pool_events_wrapper.go @@ -37,27 +37,27 @@ package libvirt #include <stdint.h> extern void storagePoolEventLifecycleCallback(virConnectPtr, virStoragePoolPtr, int, int, int); -void storagePoolEventLifecycleCallback_cgo(virConnectPtr c, virStoragePoolPtr d, +void storagePoolEventLifecycleCallbackHelper(virConnectPtr c, virStoragePoolPtr d, int event, int detail, void *data) { storagePoolEventLifecycleCallback(c, d, event, detail, (int)(intptr_t)data); } extern void storagePoolEventGenericCallback(virConnectPtr, virStoragePoolPtr, int); -void storagePoolEventGenericCallback_cgo(virConnectPtr c, virStoragePoolPtr d, +void storagePoolEventGenericCallbackHelper(virConnectPtr c, virStoragePoolPtr d, void *data) { storagePoolEventGenericCallback(c, d, (int)(intptr_t)data); } -int virConnectStoragePoolEventRegisterAny_cgo(virConnectPtr c, virStoragePoolPtr d, +int virConnectStoragePoolEventRegisterAnyWrapper(virConnectPtr c, virStoragePoolPtr d, int eventID, virConnectStoragePoolEventGenericCallback cb, long goCallbackId) { #if LIBVIR_VERSION_NUMBER < 2000000 assert(0); // Caller should have checked version #else void* id = (void*)goCallbackId; - return virConnectStoragePoolEventRegisterAny(c, d, eventID, cb, id, freeGoCallback_cgo); + return virConnectStoragePoolEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); #endif } diff --git a/storage_pool_events_wrapper.h b/storage_pool_events_wrapper.h index c8a10c9..c82abb2 100644 --- a/storage_pool_events_wrapper.h +++ b/storage_pool_events_wrapper.h @@ -27,12 +27,12 @@ #ifndef LIBVIRT_GO_STORAGE_POOL_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_STORAGE_POOL_EVENTS_WRAPPER_H__ -void storagePoolEventLifecycleCallback_cgo(virConnectPtr c, virStoragePoolPtr d, +void storagePoolEventLifecycleCallbackHelper(virConnectPtr c, virStoragePoolPtr d, int event, int detail, void* data); -void storagePoolEventGenericCallback_cgo(virConnectPtr c, virStoragePoolPtr d, +void storagePoolEventGenericCallbackHelper(virConnectPtr c, virStoragePoolPtr d, void* data); -int virConnectStoragePoolEventRegisterAny_cgo(virConnectPtr c, virStoragePoolPtr d, +int virConnectStoragePoolEventRegisterAnyWrapper(virConnectPtr c, virStoragePoolPtr d, int eventID, virConnectStoragePoolEventGenericCallback cb, long goCallbackId); diff --git a/stream.go b/stream.go index b26e8e9..1282aef 100644 --- a/stream.go +++ b/stream.go @@ -223,7 +223,7 @@ func (v *Stream) RecvAll(handler StreamSinkFunc) error { callbackID := registerCallbackId(handler) - ret := C.virStreamRecvAll_cgo(v.ptr, (C.int)(callbackID)) + ret := C.virStreamRecvAllWrapper(v.ptr, (C.int)(callbackID)) freeCallbackId(callbackID) if ret == -1 { return GetLastError() @@ -241,7 +241,7 @@ func (v *Stream) SparseRecvAll(handler StreamSinkFunc, holeHandler StreamSinkHol callbackID := registerCallbackId(handler) holeCallbackID := registerCallbackId(holeHandler) - ret := C.virStreamSparseRecvAll_cgo(v.ptr, (C.int)(callbackID), (C.int)(holeCallbackID)) + ret := C.virStreamSparseRecvAllWrapper(v.ptr, (C.int)(callbackID), (C.int)(holeCallbackID)) freeCallbackId(callbackID) freeCallbackId(holeCallbackID) if ret == -1 { @@ -328,7 +328,7 @@ func (v *Stream) SendAll(handler StreamSourceFunc) error { callbackID := registerCallbackId(handler) - ret := C.virStreamSendAll_cgo(v.ptr, (C.int)(callbackID)) + ret := C.virStreamSendAllWrapper(v.ptr, (C.int)(callbackID)) freeCallbackId(callbackID) if ret == -1 { return GetLastError() @@ -347,7 +347,7 @@ func (v *Stream) SparseSendAll(handler StreamSourceFunc, holeHandler StreamSourc holeCallbackID := registerCallbackId(holeHandler) skipCallbackID := registerCallbackId(skipHandler) - ret := C.virStreamSparseSendAll_cgo(v.ptr, (C.int)(callbackID), (C.int)(holeCallbackID), (C.int)(skipCallbackID)) + ret := C.virStreamSparseSendAllWrapper(v.ptr, (C.int)(callbackID), (C.int)(holeCallbackID), (C.int)(skipCallbackID)) freeCallbackId(callbackID) freeCallbackId(holeCallbackID) freeCallbackId(skipCallbackID) @@ -364,7 +364,7 @@ type StreamEventCallback func(*Stream, StreamEventType) func (v *Stream) EventAddCallback(events StreamEventType, callback StreamEventCallback) error { callbackID := registerCallbackId(callback) - ret := C.virStreamEventAddCallback_cgo(v.ptr, (C.int)(events), (C.int)(callbackID)) + ret := C.virStreamEventAddCallbackWrapper(v.ptr, (C.int)(events), (C.int)(callbackID)) if ret == -1 { return GetLastError() } diff --git a/stream_wrapper.go b/stream_wrapper.go index ea2e0cb..4e1c2c9 100644 --- a/stream_wrapper.go +++ b/stream_wrapper.go @@ -83,13 +83,13 @@ static int streamSinkHoleCallbackHelper(virStreamPtr st, long long length, void return streamSinkHoleCallback(st, length, cbdata->holeCallbackID); } -int virStreamSendAll_cgo(virStreamPtr st, int callbackID) +int virStreamSendAllWrapper(virStreamPtr st, int callbackID) { struct CallbackData cbdata = { .callbackID = callbackID }; return virStreamSendAll(st, streamSourceCallbackHelper, &cbdata); } -int virStreamSparseSendAll_cgo(virStreamPtr st, int callbackID, int holeCallbackID, int skipCallbackID) +int virStreamSparseSendAllWrapper(virStreamPtr st, int callbackID, int holeCallbackID, int skipCallbackID) { struct CallbackData cbdata = { .callbackID = callbackID, .holeCallbackID = holeCallbackID, .skipCallbackID = skipCallbackID }; #if LIBVIR_VERSION_NUMBER < 3004000 @@ -100,13 +100,13 @@ int virStreamSparseSendAll_cgo(virStreamPtr st, int callbackID, int holeCallback } -int virStreamRecvAll_cgo(virStreamPtr st, int callbackID) +int virStreamRecvAllWrapper(virStreamPtr st, int callbackID) { struct CallbackData cbdata = { .callbackID = callbackID }; return virStreamRecvAll(st, streamSinkCallbackHelper, &cbdata); } -int virStreamSparseRecvAll_cgo(virStreamPtr st, int callbackID, int holeCallbackID) +int virStreamSparseRecvAllWrapper(virStreamPtr st, int callbackID, int holeCallbackID) { struct CallbackData cbdata = { .callbackID = callbackID, .holeCallbackID = holeCallbackID }; #if LIBVIR_VERSION_NUMBER < 3004000 @@ -123,7 +123,7 @@ static void streamEventCallbackHelper(virStreamPtr st, int events, void *opaque) streamEventCallback(st, events, (int)(intptr_t)opaque); } -int virStreamEventAddCallback_cgo(virStreamPtr st, int events, int callbackID) +int virStreamEventAddCallbackWrapper(virStreamPtr st, int events, int callbackID) { return virStreamEventAddCallback(st, events, streamEventCallbackHelper, (void *)(intptr_t)callbackID, NULL); } diff --git a/stream_wrapper.h b/stream_wrapper.h index 778e457..c064423 100644 --- a/stream_wrapper.h +++ b/stream_wrapper.h @@ -27,11 +27,11 @@ #ifndef LIBVIRT_GO_STREAM_WRAPPER_H__ #define LIBVIRT_GO_STREAM_WRAPPER_H__ -int virStreamSendAll_cgo(virStreamPtr st, int callbackID); -int virStreamRecvAll_cgo(virStreamPtr st, int callbackID); -int virStreamSparseSendAll_cgo(virStreamPtr st, int callbackID, int holeCallbackID, int skipCallbackID); -int virStreamSparseRecvAll_cgo(virStreamPtr st, int callbackID, int holeCallbackID); +int virStreamSendAllWrapper(virStreamPtr st, int callbackID); +int virStreamRecvAllWrapper(virStreamPtr st, int callbackID); +int virStreamSparseSendAllWrapper(virStreamPtr st, int callbackID, int holeCallbackID, int skipCallbackID); +int virStreamSparseRecvAllWrapper(virStreamPtr st, int callbackID, int holeCallbackID); -int virStreamEventAddCallback_cgo(virStreamPtr st, int events, int callbackID); +int virStreamEventAddCallbackWrapper(virStreamPtr st, int events, int callbackID); #endif /* LIBVIRT_GO_STREAM_WRAPPER_H__ */ -- 2.17.1

There are many reasons why we need to create wrappers around the native libvirt public APIs, and multiple reasons may apply to the same function. Using a standard "Wrapper" suffix will clarify it. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- api_test.go | 2 +- connect.go | 28 ++++++++--------- connect_compat.go | 28 ++++++++--------- connect_compat.h | 28 ++++++++--------- domain.go | 64 +++++++++++++++++++------------------- domain_compat.go | 62 ++++++++++++++++++------------------ domain_compat.h | 62 ++++++++++++++++++------------------ lxc.go | 2 +- lxc_compat.go | 2 +- lxc_compat.h | 2 +- network.go | 4 +-- network_compat.go | 6 ++-- network_compat.h | 6 ++-- network_events.go | 2 +- node_device_compat.go | 2 +- node_device_compat.h | 2 +- node_device_events.go | 2 +- nwfilter_binding.go | 12 +++---- nwfilter_binding_compat.go | 12 +++---- nwfilter_binding_compat.h | 12 +++---- qemu.go | 2 +- qemu_compat.go | 2 +- qemu_compat.h | 2 +- secret_compat.go | 2 +- secret_compat.h | 2 +- secret_events.go | 2 +- storage_pool_compat.go | 2 +- storage_pool_compat.h | 2 +- storage_pool_events.go | 2 +- storage_volume.go | 2 +- storage_volume_compat.go | 2 +- storage_volume_compat.h | 2 +- stream.go | 6 ++-- stream_compat.go | 6 ++-- stream_compat.h | 6 ++-- 35 files changed, 191 insertions(+), 191 deletions(-) diff --git a/api_test.go b/api_test.go index ad94335..a16a1eb 100644 --- a/api_test.go +++ b/api_test.go @@ -394,7 +394,7 @@ func ProcessFile(path string) []string { defer file.Close() - re, err := regexp.Compile("C\\.((vir|VIR|LIBVIR)[a-zA-Z0-9_]+?)(Compat|Wrapper)?\\b") + re, err := regexp.Compile("C\\.((vir|VIR|LIBVIR)[a-zA-Z0-9_]+?)(Wrapper)?\\b") if err != nil { panic(err) } diff --git a/connect.go b/connect.go index 793e3c4..98ab7ab 100644 --- a/connect.go +++ b/connect.go @@ -833,7 +833,7 @@ func (c *Connect) DomainDefineXMLFlags(xmlConfig string, flags DomainDefineFlags } cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virDomainDefineXMLFlagsCompat(c.ptr, cXml, C.uint(flags)) + ptr := C.virDomainDefineXMLFlagsWrapper(c.ptr, cXml, C.uint(flags)) if ptr == nil { return nil, GetLastError() } @@ -1210,7 +1210,7 @@ func (c *Connect) LookupStoragePoolByTargetPath(path string) (*StoragePool, erro } cPath := C.CString(path) defer C.free(unsafe.Pointer(cPath)) - ptr := C.virStoragePoolLookupByTargetPathCompat(c.ptr, cPath) + ptr := C.virStoragePoolLookupByTargetPathWrapper(c.ptr, cPath) if ptr == nil { return nil, GetLastError() } @@ -1274,7 +1274,7 @@ func (c *Connect) LookupNWFilterBindingByPortDev(name string) (*NWFilterBinding, } cName := C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr := C.virNWFilterBindingLookupByPortDevCompat(c.ptr, cName) + ptr := C.virNWFilterBindingLookupByPortDevWrapper(c.ptr, cName) if ptr == nil { return nil, GetLastError() } @@ -1478,7 +1478,7 @@ func (c *Connect) ListAllNWFilterBindings(flags uint32) ([]NWFilterBinding, erro if C.LIBVIR_VERSION_NUMBER < 4005000 { return []NWFilterBinding{}, GetNotImplementedError("virConnectListAllNWFilterBindings") } - numNWFilters := C.virConnectListAllNWFilterBindingsCompat(c.ptr, (**C.virNWFilterBindingPtr)(&cList), C.uint(flags)) + numNWFilters := C.virConnectListAllNWFilterBindingsWrapper(c.ptr, (**C.virNWFilterBindingPtr)(&cList), C.uint(flags)) if numNWFilters == -1 { return nil, GetLastError() } @@ -1601,7 +1601,7 @@ func (c *Connect) AllocPages(pageSizes map[int]int64, startCell int, cellCount u i++ } - ret := C.virNodeAllocPagesCompat(c.ptr, C.uint(len(pageSizes)), (*C.uint)(unsafe.Pointer(&cpages)), + ret := C.virNodeAllocPagesWrapper(c.ptr, C.uint(len(pageSizes)), (*C.uint)(unsafe.Pointer(&cpages)), (*C.ulonglong)(unsafe.Pointer(&ccounts)), C.int(startCell), C.uint(cellCount), C.uint(flags)) if ret == -1 { return 0, GetLastError() @@ -1730,7 +1730,7 @@ func (c *Connect) GetFreePages(pageSizes []uint64, startCell int, maxCells uint, cpageSizes[i] = C.uint(pageSizes[i]) } - ret := C.virNodeGetFreePagesCompat(c.ptr, C.uint(len(pageSizes)), (*C.uint)(unsafe.Pointer(&cpageSizes)), C.int(startCell), + ret := 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)) if ret == -1 { return []uint64{}, GetLastError() @@ -2013,7 +2013,7 @@ func (c *Connect) BaselineHypervisorCPU(emulator string, arch string, machine st defer C.free(unsafe.Pointer(cxmlCPUs[i])) } - ret := C.virConnectBaselineHypervisorCPUCompat(c.ptr, cemulator, carch, cmachine, cvirttype, + ret := C.virConnectBaselineHypervisorCPUWrapper(c.ptr, cemulator, carch, cmachine, cvirttype, &cxmlCPUs[0], C.uint(len(xmlCPUs)), C.uint(flags)) if ret == nil { return "", GetLastError() @@ -2064,7 +2064,7 @@ func (c *Connect) CompareHypervisorCPU(emulator string, arch string, machine str cxmlDesc := C.CString(xmlDesc) defer C.free(unsafe.Pointer(cxmlDesc)) - ret := C.virConnectCompareHypervisorCPUCompat(c.ptr, cemulator, carch, cmachine, cvirttype, cxmlDesc, C.uint(flags)) + ret := C.virConnectCompareHypervisorCPUWrapper(c.ptr, cemulator, carch, cmachine, cvirttype, cxmlDesc, C.uint(flags)) if ret == C.VIR_CPU_COMPARE_ERROR { return CPU_COMPARE_ERROR, GetLastError() } @@ -2155,7 +2155,7 @@ func (c *Connect) GetDomainCapabilities(emulatorbin string, arch string, machine defer C.free(unsafe.Pointer(cvirttype)) } - ret := C.virConnectGetDomainCapabilitiesCompat(c.ptr, cemulatorbin, carch, cmachine, cvirttype, C.uint(flags)) + ret := C.virConnectGetDomainCapabilitiesWrapper(c.ptr, cemulatorbin, carch, cmachine, cvirttype, C.uint(flags)) if ret == nil { return "", GetLastError() } @@ -2674,15 +2674,15 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, statsTypes DomainStatsTypes, cdoms[i] = doms[i].ptr } - ret = C.virDomainListGetStatsCompat(&cdoms[0], C.uint(statsTypes), &cstats, C.uint(flags)) + ret = C.virDomainListGetStatsWrapper(&cdoms[0], C.uint(statsTypes), &cstats, C.uint(flags)) } else { - ret = C.virConnectGetAllDomainStatsCompat(c.ptr, C.uint(statsTypes), &cstats, C.uint(flags)) + ret = C.virConnectGetAllDomainStatsWrapper(c.ptr, C.uint(statsTypes), &cstats, C.uint(flags)) } if ret == -1 { return []DomainStats{}, GetLastError() } - defer C.virDomainStatsRecordListFreeCompat(cstats) + defer C.virDomainStatsRecordListFreeWrapper(cstats) stats := make([]DomainStats, ret) for i := 0; i < int(ret); i++ { @@ -2849,7 +2849,7 @@ func (c *Connect) GetSEVInfo(flags uint32) (*NodeSEVParameters, error) { var cparams *C.virTypedParameter var nparams C.int - ret := C.virNodeGetSEVInfoCompat(c.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) + ret := C.virNodeGetSEVInfoWrapper(c.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) if ret == -1 { return nil, GetLastError() } @@ -2871,7 +2871,7 @@ func (c *Connect) NWFilterBindingCreateXML(xmlConfig string, flags uint32) (*NWF } cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virNWFilterBindingCreateXMLCompat(c.ptr, cXml, C.uint(flags)) + ptr := C.virNWFilterBindingCreateXMLWrapper(c.ptr, cXml, C.uint(flags)) if ptr == nil { return nil, GetLastError() } diff --git a/connect_compat.go b/connect_compat.go index 6220eef..1ecbef2 100644 --- a/connect_compat.go +++ b/connect_compat.go @@ -32,7 +32,7 @@ package libvirt #include <assert.h> #include "connect_compat.h" -int virNodeGetFreePagesCompat(virConnectPtr conn, +int virNodeGetFreePagesWrapper(virConnectPtr conn, unsigned int npages, unsigned int *pages, int startcell, @@ -47,7 +47,7 @@ int virNodeGetFreePagesCompat(virConnectPtr conn, #endif } -char * virConnectGetDomainCapabilitiesCompat(virConnectPtr conn, +char * virConnectGetDomainCapabilitiesWrapper(virConnectPtr conn, const char *emulatorbin, const char *arch, const char *machine, @@ -61,7 +61,7 @@ char * virConnectGetDomainCapabilitiesCompat(virConnectPtr conn, #endif } -int virConnectGetAllDomainStatsCompat(virConnectPtr conn, +int virConnectGetAllDomainStatsWrapper(virConnectPtr conn, unsigned int stats, virDomainStatsRecordPtr **retStats, unsigned int flags) @@ -73,7 +73,7 @@ int virConnectGetAllDomainStatsCompat(virConnectPtr conn, #endif } -int virDomainListGetStatsCompat(virDomainPtr *doms, +int virDomainListGetStatsWrapper(virDomainPtr *doms, unsigned int stats, virDomainStatsRecordPtr **retStats, unsigned int flags) @@ -85,11 +85,11 @@ int virDomainListGetStatsCompat(virDomainPtr *doms, #endif } -void virDomainStatsRecordListFreeCompat(virDomainStatsRecordPtr *stats) +void virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats) { } -int virNodeAllocPagesCompat(virConnectPtr conn, +int virNodeAllocPagesWrapper(virConnectPtr conn, unsigned int npages, unsigned int *pageSizes, unsigned long long *pageCounts, @@ -105,7 +105,7 @@ int virNodeAllocPagesCompat(virConnectPtr conn, } -virDomainPtr virDomainDefineXMLFlagsCompat(virConnectPtr conn, +virDomainPtr virDomainDefineXMLFlagsWrapper(virConnectPtr conn, const char *xml, unsigned int flags) { @@ -116,7 +116,7 @@ virDomainPtr virDomainDefineXMLFlagsCompat(virConnectPtr conn, #endif } -virStoragePoolPtr virStoragePoolLookupByTargetPathCompat(virConnectPtr conn, +virStoragePoolPtr virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, const char *path) { #if LIBVIR_VERSION_NUMBER < 4001000 @@ -126,7 +126,7 @@ virStoragePoolPtr virStoragePoolLookupByTargetPathCompat(virConnectPtr conn, #endif } -char *virConnectBaselineHypervisorCPUCompat(virConnectPtr conn, +char *virConnectBaselineHypervisorCPUWrapper(virConnectPtr conn, const char *emulator, const char *arch, const char *machine, @@ -142,7 +142,7 @@ char *virConnectBaselineHypervisorCPUCompat(virConnectPtr conn, #endif } -int virConnectCompareHypervisorCPUCompat(virConnectPtr conn, +int virConnectCompareHypervisorCPUWrapper(virConnectPtr conn, const char *emulator, const char *arch, const char *machine, @@ -157,7 +157,7 @@ int virConnectCompareHypervisorCPUCompat(virConnectPtr conn, #endif } -int virNodeGetSEVInfoCompat(virConnectPtr conn, +int virNodeGetSEVInfoWrapper(virConnectPtr conn, virTypedParameterPtr *params, int *nparams, unsigned int flags) @@ -169,7 +169,7 @@ int virNodeGetSEVInfoCompat(virConnectPtr conn, #endif } -int virConnectListAllNWFilterBindingsCompat(virConnectPtr conn, +int virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, virNWFilterBindingPtr **bindings, unsigned int flags) { @@ -180,7 +180,7 @@ int virConnectListAllNWFilterBindingsCompat(virConnectPtr conn, #endif } -virNWFilterBindingPtr virNWFilterBindingCreateXMLCompat(virConnectPtr conn, +virNWFilterBindingPtr virNWFilterBindingCreateXMLWrapper(virConnectPtr conn, const char *xml, unsigned int flags) { @@ -191,7 +191,7 @@ virNWFilterBindingPtr virNWFilterBindingCreateXMLCompat(virConnectPtr conn, #endif } -virNWFilterBindingPtr virNWFilterBindingLookupByPortDevCompat(virConnectPtr conn, +virNWFilterBindingPtr virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, const char *portdev) { #if LIBVIR_VERSION_NUMBER < 4005000 diff --git a/connect_compat.h b/connect_compat.h index 4696e46..09cbe22 100644 --- a/connect_compat.h +++ b/connect_compat.h @@ -47,7 +47,7 @@ #define VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE 1 << 0 #endif -int virNodeGetFreePagesCompat(virConnectPtr conn, +int virNodeGetFreePagesWrapper(virConnectPtr conn, unsigned int npages, unsigned int *pages, int startcell, @@ -58,7 +58,7 @@ int virNodeGetFreePagesCompat(virConnectPtr conn, /* 1.2.7 */ -char * virConnectGetDomainCapabilitiesCompat(virConnectPtr conn, +char * virConnectGetDomainCapabilitiesWrapper(virConnectPtr conn, const char *emulatorbin, const char *arch, const char *machine, @@ -118,17 +118,17 @@ struct _virDomainStatsRecord { }; #endif -int virConnectGetAllDomainStatsCompat(virConnectPtr conn, +int virConnectGetAllDomainStatsWrapper(virConnectPtr conn, unsigned int stats, virDomainStatsRecordPtr **retStats, unsigned int flags); -int virDomainListGetStatsCompat(virDomainPtr *doms, +int virDomainListGetStatsWrapper(virDomainPtr *doms, unsigned int stats, virDomainStatsRecordPtr **retStats, unsigned int flags); -void virDomainStatsRecordListFreeCompat(virDomainStatsRecordPtr *stats); +void virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats); /* 1.2.9 */ @@ -140,7 +140,7 @@ void virDomainStatsRecordListFreeCompat(virDomainStatsRecordPtr *stats); #define VIR_NODE_ALLOC_PAGES_SET 1 << 0 #endif -int virNodeAllocPagesCompat(virConnectPtr conn, +int virNodeAllocPagesWrapper(virConnectPtr conn, unsigned int npages, unsigned int *pageSizes, unsigned long long *pageCounts, @@ -178,7 +178,7 @@ int virNodeAllocPagesCompat(virConnectPtr conn, #define VIR_CONNECT_GET_ALL_DOMAINS_STATS_BACKING 1 << 30 #endif -virDomainPtr virDomainDefineXMLFlagsCompat(virConnectPtr conn, +virDomainPtr virDomainDefineXMLFlagsWrapper(virConnectPtr conn, const char *xml, unsigned int flags); @@ -214,12 +214,12 @@ virDomainPtr virDomainDefineXMLFlagsCompat(virConnectPtr conn, /* 4.1.0 */ -virStoragePoolPtr virStoragePoolLookupByTargetPathCompat(virConnectPtr conn, +virStoragePoolPtr virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, const char *path); /* 4.4.0 */ -char *virConnectBaselineHypervisorCPUCompat(virConnectPtr conn, +char *virConnectBaselineHypervisorCPUWrapper(virConnectPtr conn, const char *emulator, const char *arch, const char *machine, @@ -228,7 +228,7 @@ char *virConnectBaselineHypervisorCPUCompat(virConnectPtr conn, unsigned int ncpus, unsigned int flags); -int virConnectCompareHypervisorCPUCompat(virConnectPtr conn, +int virConnectCompareHypervisorCPUWrapper(virConnectPtr conn, const char *emulator, const char *arch, const char *machine, @@ -238,7 +238,7 @@ int virConnectCompareHypervisorCPUCompat(virConnectPtr conn, /* 4.5.0 */ -int virNodeGetSEVInfoCompat(virConnectPtr conn, +int virNodeGetSEVInfoWrapper(virConnectPtr conn, virTypedParameterPtr *params, int *nparams, unsigned int flags); @@ -263,15 +263,15 @@ int virNodeGetSEVInfoCompat(virConnectPtr conn, typedef struct _virNWFilterBinding *virNWFilterBindingPtr; #endif -int virConnectListAllNWFilterBindingsCompat(virConnectPtr conn, +int virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, virNWFilterBindingPtr **bindings, unsigned int flags); -virNWFilterBindingPtr virNWFilterBindingCreateXMLCompat(virConnectPtr conn, +virNWFilterBindingPtr virNWFilterBindingCreateXMLWrapper(virConnectPtr conn, const char *xml, unsigned int flags); -virNWFilterBindingPtr virNWFilterBindingLookupByPortDevCompat(virConnectPtr conn, +virNWFilterBindingPtr virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, const char *portdev); #ifndef VIR_CONNECT_GET_ALL_DOMAINS_STATS_NOWAIT diff --git a/domain.go b/domain.go index cc0285b..75c3458 100644 --- a/domain.go +++ b/domain.go @@ -1502,7 +1502,7 @@ func (d *Domain) DetachDeviceAlias(alias string, flags DomainDeviceModifyFlags) cAlias := C.CString(alias) defer C.free(unsafe.Pointer(cAlias)) - result := C.virDomainDetachDeviceAliasCompat(d.ptr, cAlias, C.uint(flags)) + result := C.virDomainDetachDeviceAliasWrapper(d.ptr, cAlias, C.uint(flags)) if result == -1 { return GetLastError() } @@ -1873,7 +1873,7 @@ func (d *Domain) ListAllInterfaceAddresses(src DomainInterfaceAddressesSource) ( } var cList *C.virDomainInterfacePtr - numIfaces := int(C.virDomainInterfaceAddressesCompat(d.ptr, (**C.virDomainInterfacePtr)(&cList), C.uint(src), 0)) + numIfaces := int(C.virDomainInterfaceAddressesWrapper(d.ptr, (**C.virDomainInterfacePtr)(&cList), C.uint(src), 0)) if numIfaces == -1 { return nil, GetLastError() } @@ -1900,7 +1900,7 @@ func (d *Domain) ListAllInterfaceAddresses(src DomainInterfaceAddressesSource) ( ifaces[i].Addrs[k].Prefix = uint(caddr.prefix) } - C.virDomainInterfaceFreeCompat(ciface) + C.virDomainInterfaceFreeWrapper(ciface) } C.free(unsafe.Pointer(cList)) return ifaces, nil @@ -2044,7 +2044,7 @@ func (d *Domain) BlockCopy(disk string, destxml string, params *DomainBlockCopyP defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&(*cparams)[0])), C.int(nparams)) - ret := C.virDomainBlockCopyCompat(d.ptr, cdisk, cdestxml, (*C.virTypedParameter)(unsafe.Pointer(&(*cparams)[0])), C.int(nparams), C.uint(flags)) + ret := C.virDomainBlockCopyWrapper(d.ptr, cdisk, cdestxml, (*C.virTypedParameter)(unsafe.Pointer(&(*cparams)[0])), C.int(nparams), C.uint(flags)) if ret == -1 { return GetLastError() } @@ -2452,7 +2452,7 @@ func (d *Domain) MigrateGetMaxDowntime(flags uint32) (uint64, error) { return 0, GetNotImplementedError("virDomainMigrateGetMaxDowntime") } - ret := C.virDomainMigrateGetMaxDowntimeCompat(d.ptr, &downtimeLen, C.uint(flags)) + ret := C.virDomainMigrateGetMaxDowntimeWrapper(d.ptr, &downtimeLen, C.uint(flags)) if ret == -1 { return 0, GetLastError() } @@ -2466,7 +2466,7 @@ func (d *Domain) MigrateStartPostCopy(flags uint32) error { return GetNotImplementedError("virDomainMigrateStartPostCopy") } - ret := C.virDomainMigrateStartPostCopyCompat(d.ptr, C.uint(flags)) + ret := C.virDomainMigrateStartPostCopyWrapper(d.ptr, C.uint(flags)) if ret == -1 { return GetLastError() } @@ -3456,7 +3456,7 @@ func (d *Domain) GetPerfEvents(flags DomainModificationImpact) (*DomainPerfEvent var cparams *C.virTypedParameter var nparams C.int - ret := C.virDomainGetPerfEventsCompat(d.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) + ret := C.virDomainGetPerfEventsWrapper(d.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) if ret == -1 { return nil, GetLastError() } @@ -3481,7 +3481,7 @@ func (d *Domain) SetPerfEvents(params *DomainPerfEvents, flags DomainModificatio var cparams *C.virTypedParameter var nparams C.int - ret := C.virDomainGetPerfEventsCompat(d.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) + ret := C.virDomainGetPerfEventsWrapper(d.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) if ret == -1 { return GetLastError() } @@ -3493,7 +3493,7 @@ func (d *Domain) SetPerfEvents(params *DomainPerfEvents, flags DomainModificatio return err } - ret = C.virDomainSetPerfEventsCompat(d.ptr, cparams, nparams, C.uint(flags)) + ret = C.virDomainSetPerfEventsWrapper(d.ptr, cparams, nparams, C.uint(flags)) return nil } @@ -3770,7 +3770,7 @@ func (d *Domain) GetTime(flags uint32) (int64, uint, error) { } var secs C.longlong var nsecs C.uint - ret := C.virDomainGetTimeCompat(d.ptr, &secs, &nsecs, C.uint(flags)) + ret := C.virDomainGetTimeWrapper(d.ptr, &secs, &nsecs, C.uint(flags)) if ret == -1 { return 0, 0, GetLastError() } @@ -3784,7 +3784,7 @@ func (d *Domain) SetTime(secs int64, nsecs uint, flags DomainSetTimeFlags) error return GetNotImplementedError("virDomainSetTime") } - ret := C.virDomainSetTimeCompat(d.ptr, C.longlong(secs), C.uint(nsecs), C.uint(flags)) + ret := C.virDomainSetTimeWrapper(d.ptr, C.longlong(secs), C.uint(nsecs), C.uint(flags)) if ret == -1 { return GetLastError() } @@ -3803,7 +3803,7 @@ func (d *Domain) SetUserPassword(user string, password string, flags DomainSetUs defer C.free(unsafe.Pointer(cuser)) defer C.free(unsafe.Pointer(cpassword)) - ret := C.virDomainSetUserPasswordCompat(d.ptr, cuser, cpassword, C.uint(flags)) + ret := C.virDomainSetUserPasswordWrapper(d.ptr, cuser, cpassword, C.uint(flags)) if ret == -1 { return GetLastError() } @@ -3850,7 +3850,7 @@ func (d *Domain) Rename(name string, flags uint32) error { } cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) - ret := C.virDomainRenameCompat(d.ptr, cname, C.uint(flags)) + ret := C.virDomainRenameWrapper(d.ptr, cname, C.uint(flags)) if ret == -1 { return GetLastError() } @@ -3909,7 +3909,7 @@ func (d *Domain) CoreDumpWithFormat(to string, format DomainCoreDumpFormat, flag cto := C.CString(to) defer C.free(unsafe.Pointer(cto)) - ret := C.virDomainCoreDumpWithFormatCompat(d.ptr, cto, C.uint(format), C.uint(flags)) + ret := C.virDomainCoreDumpWithFormatWrapper(d.ptr, cto, C.uint(format), C.uint(flags)) if ret == -1 { return GetLastError() } @@ -3942,7 +3942,7 @@ func (d *Domain) FSFreeze(mounts []string, flags uint32) error { } nmounts := len(mounts) - ret := C.virDomainFSFreezeCompat(d.ptr, (**C.char)(unsafe.Pointer(&cmounts[0])), C.uint(nmounts), C.uint(flags)) + ret := C.virDomainFSFreezeWrapper(d.ptr, (**C.char)(unsafe.Pointer(&cmounts[0])), C.uint(nmounts), C.uint(flags)) if ret == -1 { return GetLastError() } @@ -3963,7 +3963,7 @@ func (d *Domain) FSThaw(mounts []string, flags uint32) error { } nmounts := len(mounts) - ret := C.virDomainFSThawCompat(d.ptr, (**C.char)(unsafe.Pointer(&cmounts[0])), C.uint(nmounts), C.uint(flags)) + ret := C.virDomainFSThawWrapper(d.ptr, (**C.char)(unsafe.Pointer(&cmounts[0])), C.uint(nmounts), C.uint(flags)) if ret == -1 { return GetLastError() } @@ -4001,7 +4001,7 @@ func (d *Domain) GetFSInfo(flags uint32) ([]DomainFSInfo, error) { } var cfsinfolist **C.virDomainFSInfo - ret := C.virDomainGetFSInfoCompat(d.ptr, (**C.virDomainFSInfoPtr)(unsafe.Pointer(&cfsinfolist)), C.uint(flags)) + ret := C.virDomainGetFSInfoWrapper(d.ptr, (**C.virDomainFSInfoPtr)(unsafe.Pointer(&cfsinfolist)), C.uint(flags)) if ret == -1 { return []DomainFSInfo{}, GetLastError() } @@ -4023,7 +4023,7 @@ func (d *Domain) GetFSInfo(flags uint32) ([]DomainFSInfo, error) { DevAlias: aliases, } - C.virDomainFSInfoFreeCompat(cfsinfo) + C.virDomainFSInfoFreeWrapper(cfsinfo) } C.free(unsafe.Pointer(cfsinfolist)) @@ -4055,7 +4055,7 @@ func (d *Domain) AddIOThread(id uint, flags DomainModificationImpact) error { if C.LIBVIR_VERSION_NUMBER < 1002015 { return GetNotImplementedError("virDomainAddIOThread") } - ret := C.virDomainAddIOThreadCompat(d.ptr, C.uint(id), C.uint(flags)) + ret := C.virDomainAddIOThreadWrapper(d.ptr, C.uint(id), C.uint(flags)) if ret == -1 { return GetLastError() } @@ -4068,7 +4068,7 @@ func (d *Domain) DelIOThread(id uint, flags DomainModificationImpact) error { if C.LIBVIR_VERSION_NUMBER < 1002015 { return GetNotImplementedError("virDomainDelIOThread") } - ret := C.virDomainDelIOThreadCompat(d.ptr, C.uint(id), C.uint(flags)) + ret := C.virDomainDelIOThreadWrapper(d.ptr, C.uint(id), C.uint(flags)) if ret == -1 { return GetLastError() } @@ -4114,7 +4114,7 @@ func (d *Domain) GetIOThreadInfo(flags DomainModificationImpact) ([]DomainIOThre } var cinfolist **C.virDomainIOThreadInfo - ret := C.virDomainGetIOThreadInfoCompat(d.ptr, (**C.virDomainIOThreadInfoPtr)(unsafe.Pointer(&cinfolist)), C.uint(flags)) + ret := C.virDomainGetIOThreadInfoWrapper(d.ptr, (**C.virDomainIOThreadInfoPtr)(unsafe.Pointer(&cinfolist)), C.uint(flags)) if ret == -1 { return []DomainIOThreadInfo{}, GetLastError() } @@ -4139,7 +4139,7 @@ func (d *Domain) GetIOThreadInfo(flags DomainModificationImpact) ([]DomainIOThre CpuMap: cpumap, } - C.virDomainIOThreadInfoFreeCompat(cinfo) + C.virDomainIOThreadInfoFreeWrapper(cinfo) } C.free(unsafe.Pointer(cinfolist)) @@ -4225,7 +4225,7 @@ func (d *Domain) PinIOThread(iothreadid uint, cpumap []bool, flags DomainModific } } - ret := C.virDomainPinIOThreadCompat(d.ptr, C.uint(iothreadid), &ccpumaps[0], C.int(maplen), C.uint(flags)) + ret := C.virDomainPinIOThreadWrapper(d.ptr, C.uint(iothreadid), &ccpumaps[0], C.int(maplen), C.uint(flags)) if ret == -1 { return GetLastError() } @@ -4277,7 +4277,7 @@ func (d *Domain) OpenGraphicsFD(idx uint, flags DomainOpenGraphicsFlags) (*os.Fi if C.LIBVIR_VERSION_NUMBER < 1002008 { return nil, GetNotImplementedError("virDomainOpenGraphicsFD") } - ret := C.virDomainOpenGraphicsFDCompat(d.ptr, C.uint(idx), C.uint(flags)) + ret := C.virDomainOpenGraphicsFDWrapper(d.ptr, C.uint(idx), C.uint(flags)) if ret == -1 { return nil, GetLastError() } @@ -4412,7 +4412,7 @@ func (d *Domain) GetGuestVcpus(flags uint32) (*DomainGuestVcpus, error) { var cparams C.virTypedParameterPtr var nparams C.uint - ret := C.virDomainGetGuestVcpusCompat(d.ptr, &cparams, &nparams, C.uint(flags)) + ret := C.virDomainGetGuestVcpusWrapper(d.ptr, &cparams, &nparams, C.uint(flags)) if ret == -1 { return nil, GetLastError() } @@ -4452,7 +4452,7 @@ func (d *Domain) SetGuestVcpus(cpus []bool, state bool, flags uint32) error { } ccpumap := C.CString(cpumap) defer C.free(unsafe.Pointer(ccpumap)) - ret := C.virDomainSetGuestVcpusCompat(d.ptr, ccpumap, cstate, C.uint(flags)) + ret := C.virDomainSetGuestVcpusWrapper(d.ptr, ccpumap, cstate, C.uint(flags)) if ret == -1 { return GetLastError() } @@ -4485,7 +4485,7 @@ func (d *Domain) SetVcpu(cpus []bool, state bool, flags uint32) error { } ccpumap := C.CString(cpumap) defer C.free(unsafe.Pointer(ccpumap)) - ret := C.virDomainSetVcpuCompat(d.ptr, ccpumap, cstate, C.uint(flags)) + ret := C.virDomainSetVcpuWrapper(d.ptr, ccpumap, cstate, C.uint(flags)) if ret == -1 { return GetLastError() } @@ -4501,7 +4501,7 @@ func (d *Domain) SetBlockThreshold(dev string, threshold uint64, flags uint32) e cdev := C.CString(dev) defer C.free(unsafe.Pointer(cdev)) - ret := C.virDomainSetBlockThresholdCompat(d.ptr, cdev, C.ulonglong(threshold), C.uint(flags)) + ret := C.virDomainSetBlockThresholdWrapper(d.ptr, cdev, C.ulonglong(threshold), C.uint(flags)) if ret == -1 { return GetLastError() } @@ -4517,7 +4517,7 @@ func (d *Domain) ManagedSaveDefineXML(xml string, flags uint32) error { cxml := C.CString(xml) defer C.free(unsafe.Pointer(cxml)) - ret := C.virDomainManagedSaveDefineXMLCompat(d.ptr, cxml, C.uint(flags)) + ret := C.virDomainManagedSaveDefineXMLWrapper(d.ptr, cxml, C.uint(flags)) if ret == -1 { return GetLastError() } @@ -4531,7 +4531,7 @@ func (d *Domain) ManagedSaveGetXMLDesc(flags uint32) (string, error) { return "", GetNotImplementedError("virDomainManagedSaveGetXMLDesc") } - ret := C.virDomainManagedSaveGetXMLDescCompat(d.ptr, C.uint(flags)) + ret := C.virDomainManagedSaveGetXMLDescWrapper(d.ptr, C.uint(flags)) if ret == nil { return "", GetLastError() } @@ -4566,7 +4566,7 @@ func (d *Domain) SetLifecycleAction(lifecycleType uint32, action uint32, flags u return GetNotImplementedError("virDomainSetLifecycleAction") } - ret := C.virDomainSetLifecycleActionCompat(d.ptr, C.uint(lifecycleType), C.uint(action), C.uint(flags)) + ret := C.virDomainSetLifecycleActionWrapper(d.ptr, C.uint(lifecycleType), C.uint(action), C.uint(flags)) if ret == -1 { return GetLastError() } @@ -4600,7 +4600,7 @@ func (d *Domain) GetLaunchSecurityInfo(flags uint32) (*DomainLaunchSecurityParam var cparams *C.virTypedParameter var nparams C.int - ret := C.virDomainGetLaunchSecurityInfoCompat(d.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) + ret := C.virDomainGetLaunchSecurityInfoWrapper(d.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) if ret == -1 { return nil, GetLastError() } diff --git a/domain_compat.go b/domain_compat.go index 73a6db9..345c28a 100644 --- a/domain_compat.go +++ b/domain_compat.go @@ -32,7 +32,7 @@ package libvirt #include <assert.h> #include "domain_compat.h" -int virDomainCoreDumpWithFormatCompat(virDomainPtr domain, +int virDomainCoreDumpWithFormatWrapper(virDomainPtr domain, const char *to, unsigned int dumpformat, unsigned int flags) @@ -45,7 +45,7 @@ int virDomainCoreDumpWithFormatCompat(virDomainPtr domain, } -int virDomainGetTimeCompat(virDomainPtr dom, +int virDomainGetTimeWrapper(virDomainPtr dom, long long *seconds, unsigned int *nseconds, unsigned int flags) @@ -57,7 +57,7 @@ int virDomainGetTimeCompat(virDomainPtr dom, #endif } -int virDomainSetTimeCompat(virDomainPtr dom, +int virDomainSetTimeWrapper(virDomainPtr dom, long long seconds, unsigned int nseconds, unsigned int flags) @@ -69,7 +69,7 @@ int virDomainSetTimeCompat(virDomainPtr dom, #endif } -int virDomainFSFreezeCompat(virDomainPtr dom, +int virDomainFSFreezeWrapper(virDomainPtr dom, const char **mountpoints, unsigned int nmountpoints, unsigned int flags) @@ -81,7 +81,7 @@ int virDomainFSFreezeCompat(virDomainPtr dom, #endif } -int virDomainFSThawCompat(virDomainPtr dom, +int virDomainFSThawWrapper(virDomainPtr dom, const char **mountpoints, unsigned int nmountpoints, unsigned int flags) @@ -93,7 +93,7 @@ int virDomainFSThawCompat(virDomainPtr dom, #endif } -int virDomainBlockCopyCompat(virDomainPtr dom, const char *disk, +int virDomainBlockCopyWrapper(virDomainPtr dom, const char *disk, const char *destxml, virTypedParameterPtr params, int nparams, @@ -106,7 +106,7 @@ int virDomainBlockCopyCompat(virDomainPtr dom, const char *disk, #endif } -int virDomainOpenGraphicsFDCompat(virDomainPtr dom, +int virDomainOpenGraphicsFDWrapper(virDomainPtr dom, unsigned int idx, unsigned int flags) { @@ -117,11 +117,11 @@ int virDomainOpenGraphicsFDCompat(virDomainPtr dom, #endif } -void virDomainFSInfoFreeCompat(virDomainFSInfoPtr info) +void virDomainFSInfoFreeWrapper(virDomainFSInfoPtr info) { } -int virDomainGetFSInfoCompat(virDomainPtr dom, +int virDomainGetFSInfoWrapper(virDomainPtr dom, virDomainFSInfoPtr **info, unsigned int flags) { @@ -132,7 +132,7 @@ int virDomainGetFSInfoCompat(virDomainPtr dom, #endif } -int virDomainInterfaceAddressesCompat(virDomainPtr dom, +int virDomainInterfaceAddressesWrapper(virDomainPtr dom, virDomainInterfacePtr **ifaces, unsigned int source, unsigned int flags) @@ -144,15 +144,15 @@ int virDomainInterfaceAddressesCompat(virDomainPtr dom, #endif } -void virDomainInterfaceFreeCompat(virDomainInterfacePtr iface) +void virDomainInterfaceFreeWrapper(virDomainInterfacePtr iface) { } -void virDomainIOThreadInfoFreeCompat(virDomainIOThreadInfoPtr info) +void virDomainIOThreadInfoFreeWrapper(virDomainIOThreadInfoPtr info) { } -int virDomainGetIOThreadInfoCompat(virDomainPtr domain, +int virDomainGetIOThreadInfoWrapper(virDomainPtr domain, virDomainIOThreadInfoPtr **info, unsigned int flags) { @@ -162,7 +162,7 @@ int virDomainGetIOThreadInfoCompat(virDomainPtr domain, return virDomainGetIOThreadInfo(domain, info, flags); #endif } -int virDomainPinIOThreadCompat(virDomainPtr domain, +int virDomainPinIOThreadWrapper(virDomainPtr domain, unsigned int iothread_id, unsigned char *cpumap, int maplen, @@ -175,7 +175,7 @@ int virDomainPinIOThreadCompat(virDomainPtr domain, #endif } -int virDomainAddIOThreadCompat(virDomainPtr domain, +int virDomainAddIOThreadWrapper(virDomainPtr domain, unsigned int iothread_id, unsigned int flags) { @@ -187,7 +187,7 @@ int virDomainAddIOThreadCompat(virDomainPtr domain, } -int virDomainDelIOThreadCompat(virDomainPtr domain, +int virDomainDelIOThreadWrapper(virDomainPtr domain, unsigned int iothread_id, unsigned int flags) { @@ -199,7 +199,7 @@ int virDomainDelIOThreadCompat(virDomainPtr domain, } -int virDomainSetUserPasswordCompat(virDomainPtr dom, +int virDomainSetUserPasswordWrapper(virDomainPtr dom, const char *user, const char *password, unsigned int flags) @@ -212,7 +212,7 @@ int virDomainSetUserPasswordCompat(virDomainPtr dom, } -int virDomainRenameCompat(virDomainPtr dom, +int virDomainRenameWrapper(virDomainPtr dom, const char *new_name, unsigned int flags) { @@ -224,7 +224,7 @@ int virDomainRenameCompat(virDomainPtr dom, } -int virDomainGetPerfEventsCompat(virDomainPtr dom, +int virDomainGetPerfEventsWrapper(virDomainPtr dom, virTypedParameterPtr *params, int *nparams, unsigned int flags) @@ -237,7 +237,7 @@ int virDomainGetPerfEventsCompat(virDomainPtr dom, } -int virDomainSetPerfEventsCompat(virDomainPtr dom, +int virDomainSetPerfEventsWrapper(virDomainPtr dom, virTypedParameterPtr params, int nparams, unsigned int flags) @@ -250,7 +250,7 @@ int virDomainSetPerfEventsCompat(virDomainPtr dom, } -int virDomainMigrateStartPostCopyCompat(virDomainPtr domain, +int virDomainMigrateStartPostCopyWrapper(virDomainPtr domain, unsigned int flags) { #if LIBVIR_VERSION_NUMBER < 1003003 @@ -261,7 +261,7 @@ int virDomainMigrateStartPostCopyCompat(virDomainPtr domain, } -int virDomainGetGuestVcpusCompat(virDomainPtr domain, +int virDomainGetGuestVcpusWrapper(virDomainPtr domain, virTypedParameterPtr *params, unsigned int *nparams, unsigned int flags) @@ -274,7 +274,7 @@ int virDomainGetGuestVcpusCompat(virDomainPtr domain, } -int virDomainSetGuestVcpusCompat(virDomainPtr domain, +int virDomainSetGuestVcpusWrapper(virDomainPtr domain, const char *cpumap, int state, unsigned int flags) @@ -286,7 +286,7 @@ int virDomainSetGuestVcpusCompat(virDomainPtr domain, #endif } -int virDomainSetVcpuCompat(virDomainPtr domain, +int virDomainSetVcpuWrapper(virDomainPtr domain, const char *cpumap, int state, unsigned int flags) @@ -299,7 +299,7 @@ int virDomainSetVcpuCompat(virDomainPtr domain, } -int virDomainSetBlockThresholdCompat(virDomainPtr domain, +int virDomainSetBlockThresholdWrapper(virDomainPtr domain, const char *dev, unsigned long long threshold, unsigned int flags) @@ -311,7 +311,7 @@ int virDomainSetBlockThresholdCompat(virDomainPtr domain, #endif } -int virDomainMigrateGetMaxDowntimeCompat(virDomainPtr domain, +int virDomainMigrateGetMaxDowntimeWrapper(virDomainPtr domain, unsigned long long *downtime, unsigned int flags) { @@ -323,7 +323,7 @@ int virDomainMigrateGetMaxDowntimeCompat(virDomainPtr domain, } -char *virDomainManagedSaveGetXMLDescCompat(virDomainPtr domain, +char *virDomainManagedSaveGetXMLDescWrapper(virDomainPtr domain, unsigned int flags) { #if LIBVIR_VERSION_NUMBER < 3007000 @@ -334,7 +334,7 @@ char *virDomainManagedSaveGetXMLDescCompat(virDomainPtr domain, } -int virDomainManagedSaveDefineXMLCompat(virDomainPtr domain, +int virDomainManagedSaveDefineXMLWrapper(virDomainPtr domain, const char *dxml, unsigned int flags) { @@ -345,7 +345,7 @@ int virDomainManagedSaveDefineXMLCompat(virDomainPtr domain, #endif } -int virDomainSetLifecycleActionCompat(virDomainPtr domain, +int virDomainSetLifecycleActionWrapper(virDomainPtr domain, unsigned int type, unsigned int action, unsigned int flags) @@ -357,7 +357,7 @@ int virDomainSetLifecycleActionCompat(virDomainPtr domain, #endif } -int virDomainDetachDeviceAliasCompat(virDomainPtr domain, +int virDomainDetachDeviceAliasWrapper(virDomainPtr domain, const char *alias, unsigned int flags) { @@ -368,7 +368,7 @@ int virDomainDetachDeviceAliasCompat(virDomainPtr domain, #endif } -int virDomainGetLaunchSecurityInfoCompat(virDomainPtr domain, +int virDomainGetLaunchSecurityInfoWrapper(virDomainPtr domain, virTypedParameterPtr *params, int *nparams, unsigned int flags) diff --git a/domain_compat.h b/domain_compat.h index 345505c..3a868fe 100644 --- a/domain_compat.h +++ b/domain_compat.h @@ -68,7 +68,7 @@ #define VIR_MIGRATE_AUTO_CONVERGE 1 << 13 #endif -int virDomainCoreDumpWithFormatCompat(virDomainPtr domain, +int virDomainCoreDumpWithFormatWrapper(virDomainPtr domain, const char *to, unsigned int dumpformat, unsigned int flags); @@ -88,22 +88,22 @@ int virDomainCoreDumpWithFormatCompat(virDomainPtr domain, #define VIR_DOMAIN_TIME_SYNC 1 << 0 #endif -int virDomainGetTimeCompat(virDomainPtr dom, +int virDomainGetTimeWrapper(virDomainPtr dom, long long *seconds, unsigned int *nseconds, unsigned int flags); -int virDomainSetTimeCompat(virDomainPtr dom, +int virDomainSetTimeWrapper(virDomainPtr dom, long long seconds, unsigned int nseconds, unsigned int flags); -int virDomainFSFreezeCompat(virDomainPtr dom, +int virDomainFSFreezeWrapper(virDomainPtr dom, const char **mountpoints, unsigned int nmountpoints, unsigned int flags); -int virDomainFSThawCompat(virDomainPtr dom, +int virDomainFSThawWrapper(virDomainPtr dom, const char **mountpoints, unsigned int nmountpoints, unsigned int flags); @@ -161,13 +161,13 @@ int virDomainFSThawCompat(virDomainPtr dom, #define VIR_DOMAIN_STATS_STATE 1 << 0 #endif -int virDomainBlockCopyCompat(virDomainPtr dom, const char *disk, +int virDomainBlockCopyWrapper(virDomainPtr dom, const char *disk, const char *destxml, virTypedParameterPtr params, int nparams, unsigned int flags); -int virDomainOpenGraphicsFDCompat(virDomainPtr dom, +int virDomainOpenGraphicsFDWrapper(virDomainPtr dom, unsigned int idx, unsigned int flags); @@ -374,9 +374,9 @@ struct _virDomainFSInfo { }; #endif -void virDomainFSInfoFreeCompat(virDomainFSInfoPtr info); +void virDomainFSInfoFreeWrapper(virDomainFSInfoPtr info); -int virDomainGetFSInfoCompat(virDomainPtr dom, +int virDomainGetFSInfoWrapper(virDomainPtr dom, virDomainFSInfoPtr **info, unsigned int flags); @@ -450,19 +450,19 @@ struct _virDomainInterface { }; #endif -int virDomainInterfaceAddressesCompat(virDomainPtr dom, +int virDomainInterfaceAddressesWrapper(virDomainPtr dom, virDomainInterfacePtr **ifaces, unsigned int source, unsigned int flags); -void virDomainInterfaceFreeCompat(virDomainInterfacePtr iface); +void virDomainInterfaceFreeWrapper(virDomainInterfacePtr iface); -void virDomainIOThreadInfoFreeCompat(virDomainIOThreadInfoPtr info); +void virDomainIOThreadInfoFreeWrapper(virDomainIOThreadInfoPtr info); -int virDomainGetIOThreadInfoCompat(virDomainPtr domain, +int virDomainGetIOThreadInfoWrapper(virDomainPtr domain, virDomainIOThreadInfoPtr **info, unsigned int flags); -int virDomainPinIOThreadCompat(virDomainPtr domain, +int virDomainPinIOThreadWrapper(virDomainPtr domain, unsigned int iothread_id, unsigned char *cpumap, int maplen, @@ -483,10 +483,10 @@ int virDomainPinIOThreadCompat(virDomainPtr domain, #define VIR_DOMAIN_EVENT_ID_DEVICE_ADDED 19 #endif -int virDomainAddIOThreadCompat(virDomainPtr domain, +int virDomainAddIOThreadWrapper(virDomainPtr domain, unsigned int iothread_id, unsigned int flags); -int virDomainDelIOThreadCompat(virDomainPtr domain, +int virDomainDelIOThreadWrapper(virDomainPtr domain, unsigned int iothread_id, unsigned int flags); @@ -497,7 +497,7 @@ int virDomainDelIOThreadCompat(virDomainPtr domain, #define VIR_DOMAIN_PASSWORD_ENCRYPTED 1 << 0 #endif -int virDomainSetUserPasswordCompat(virDomainPtr dom, +int virDomainSetUserPasswordWrapper(virDomainPtr dom, const char *user, const char *password, unsigned int flags); @@ -528,7 +528,7 @@ int virDomainSetUserPasswordCompat(virDomainPtr dom, #define VIR_DOMAIN_EVENT_UNDEFINED_RENAMED 1 #endif -int virDomainRenameCompat(virDomainPtr dom, +int virDomainRenameWrapper(virDomainPtr dom, const char *new_name, unsigned int flags); @@ -617,15 +617,15 @@ int virDomainRenameCompat(virDomainPtr dom, #define VIR_DOMAIN_TUNABLE_CPU_GLOBAL_QUOTA "cputune.global_quota" #endif -int virDomainGetPerfEventsCompat(virDomainPtr dom, +int virDomainGetPerfEventsWrapper(virDomainPtr dom, virTypedParameterPtr *params, int *nparams, unsigned int flags); -int virDomainSetPerfEventsCompat(virDomainPtr dom, +int virDomainSetPerfEventsWrapper(virDomainPtr dom, virTypedParameterPtr params, int nparams, unsigned int flags); -int virDomainMigrateStartPostCopyCompat(virDomainPtr domain, +int virDomainMigrateStartPostCopyWrapper(virDomainPtr domain, unsigned int flags); @@ -685,12 +685,12 @@ int virDomainMigrateStartPostCopyCompat(virDomainPtr domain, #define VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT "auto_converge.increment" #endif -int virDomainGetGuestVcpusCompat(virDomainPtr domain, +int virDomainGetGuestVcpusWrapper(virDomainPtr domain, virTypedParameterPtr *params, unsigned int *nparams, unsigned int flags); -int virDomainSetGuestVcpusCompat(virDomainPtr domain, +int virDomainSetGuestVcpusWrapper(virDomainPtr domain, const char *cpumap, int state, unsigned int flags); @@ -878,7 +878,7 @@ int virDomainSetGuestVcpusCompat(virDomainPtr domain, /* 3.1.0 */ -int virDomainSetVcpuCompat(virDomainPtr domain, +int virDomainSetVcpuWrapper(virDomainPtr domain, const char *cpumap, int state, unsigned int flags); @@ -893,7 +893,7 @@ int virDomainSetVcpuCompat(virDomainPtr domain, #define VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD 24 #endif -int virDomainSetBlockThresholdCompat(virDomainPtr domain, +int virDomainSetBlockThresholdWrapper(virDomainPtr domain, const char *dev, unsigned long long threshold, unsigned int flags); @@ -961,13 +961,13 @@ int virDomainSetBlockThresholdCompat(virDomainPtr domain, /* 3.7.0 */ -int virDomainMigrateGetMaxDowntimeCompat(virDomainPtr domain, +int virDomainMigrateGetMaxDowntimeWrapper(virDomainPtr domain, unsigned long long *downtime, unsigned int flags); -char *virDomainManagedSaveGetXMLDescCompat(virDomainPtr domain, +char *virDomainManagedSaveGetXMLDescWrapper(virDomainPtr domain, unsigned int flags); -int virDomainManagedSaveDefineXMLCompat(virDomainPtr domain, +int virDomainManagedSaveDefineXMLWrapper(virDomainPtr domain, const char *dxml, unsigned int flags); @@ -1013,7 +1013,7 @@ int virDomainManagedSaveDefineXMLCompat(virDomainPtr domain, #define VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_RESTART 5 #endif -int virDomainSetLifecycleActionCompat(virDomainPtr domain, +int virDomainSetLifecycleActionWrapper(virDomainPtr domain, unsigned int type, unsigned int action, unsigned int flags); @@ -1031,13 +1031,13 @@ int virDomainSetLifecycleActionCompat(virDomainPtr domain, /* 4.4.0 */ -int virDomainDetachDeviceAliasCompat(virDomainPtr domain, +int virDomainDetachDeviceAliasWrapper(virDomainPtr domain, const char *alias, unsigned int flags); /* 4.5.0 */ -int virDomainGetLaunchSecurityInfoCompat(virDomainPtr domain, +int virDomainGetLaunchSecurityInfoWrapper(virDomainPtr domain, virTypedParameterPtr *params, int *nparams, unsigned int flags); diff --git a/lxc.go b/lxc.go index cf1c67b..d121231 100644 --- a/lxc.go +++ b/lxc.go @@ -144,7 +144,7 @@ func (d *Domain) DomainLxcEnterCGroup(flags uint32) error { return GetNotImplementedError("virDomainLxcEnterCGroup") } - ret := C.virDomainLxcEnterCGroupCompat(d.ptr, C.uint(flags)) + ret := C.virDomainLxcEnterCGroupWrapper(d.ptr, C.uint(flags)) if ret == -1 { return GetLastError() diff --git a/lxc_compat.go b/lxc_compat.go index a130144..cc4420c 100644 --- a/lxc_compat.go +++ b/lxc_compat.go @@ -36,7 +36,7 @@ package libvirt #include <assert.h> #include "lxc_compat.h" -int virDomainLxcEnterCGroupCompat(virDomainPtr domain, +int virDomainLxcEnterCGroupWrapper(virDomainPtr domain, unsigned int flags) { #if LIBVIR_VERSION_NUMBER < 2000000 diff --git a/lxc_compat.h b/lxc_compat.h index 088485c..4004baf 100644 --- a/lxc_compat.h +++ b/lxc_compat.h @@ -29,7 +29,7 @@ /* 2.0.0 */ -int virDomainLxcEnterCGroupCompat(virDomainPtr domain, +int virDomainLxcEnterCGroupWrapper(virDomainPtr domain, unsigned int flags); diff --git a/network.go b/network.go index 8b19c6a..fe54bf1 100644 --- a/network.go +++ b/network.go @@ -291,7 +291,7 @@ func (n *Network) GetDHCPLeases() ([]NetworkDHCPLease, error) { return []NetworkDHCPLease{}, GetNotImplementedError("virNetworkGetDHCPLeases") } var cLeases *C.virNetworkDHCPLeasePtr - numLeases := C.virNetworkGetDHCPLeasesCompat(n.ptr, nil, (**C.virNetworkDHCPLeasePtr)(&cLeases), C.uint(0)) + numLeases := C.virNetworkGetDHCPLeasesWrapper(n.ptr, nil, (**C.virNetworkDHCPLeasePtr)(&cLeases), C.uint(0)) if numLeases == -1 { return nil, GetLastError() } @@ -314,7 +314,7 @@ func (n *Network) GetDHCPLeases() ([]NetworkDHCPLease, error) { Hostname: C.GoString(clease.hostname), Clientid: C.GoString(clease.clientid), }) - C.virNetworkDHCPLeaseFreeCompat(clease) + C.virNetworkDHCPLeaseFreeWrapper(clease) } C.free(unsafe.Pointer(cLeases)) return leases, nil diff --git a/network_compat.go b/network_compat.go index 744b41a..56e9749 100644 --- a/network_compat.go +++ b/network_compat.go @@ -32,7 +32,7 @@ package libvirt #include <assert.h> #include "network_compat.h" -int virConnectNetworkEventDeregisterAnyCompat(virConnectPtr conn, +int virConnectNetworkEventDeregisterAnyWrapper(virConnectPtr conn, int callbackID) { #if LIBVIR_VERSION_NUMBER < 1002001 @@ -42,11 +42,11 @@ int virConnectNetworkEventDeregisterAnyCompat(virConnectPtr conn, #endif } -void virNetworkDHCPLeaseFreeCompat(virNetworkDHCPLeasePtr lease) +void virNetworkDHCPLeaseFreeWrapper(virNetworkDHCPLeasePtr lease) { } -int virNetworkGetDHCPLeasesCompat(virNetworkPtr network, +int virNetworkGetDHCPLeasesWrapper(virNetworkPtr network, const char *mac, virNetworkDHCPLeasePtr **leases, unsigned int flags) diff --git a/network_compat.h b/network_compat.h index fea9e37..97c8ad5 100644 --- a/network_compat.h +++ b/network_compat.h @@ -56,7 +56,7 @@ typedef void (*virConnectNetworkEventGenericCallback)(virConnectPtr conn, void *opaque); #endif -int virConnectNetworkEventDeregisterAnyCompat(virConnectPtr conn, +int virConnectNetworkEventDeregisterAnyWrapper(virConnectPtr conn, int callbackID); @@ -86,9 +86,9 @@ struct _virNetworkDHCPLease { }; #endif -void virNetworkDHCPLeaseFreeCompat(virNetworkDHCPLeasePtr lease); +void virNetworkDHCPLeaseFreeWrapper(virNetworkDHCPLeasePtr lease); -int virNetworkGetDHCPLeasesCompat(virNetworkPtr network, +int virNetworkGetDHCPLeasesWrapper(virNetworkPtr network, const char *mac, virNetworkDHCPLeasePtr **leases, unsigned int flags); diff --git a/network_events.go b/network_events.go index 39cc62b..fee2253 100644 --- a/network_events.go +++ b/network_events.go @@ -95,7 +95,7 @@ func (c *Connect) NetworkEventDeregister(callbackId int) error { return GetNotImplementedError("virConnectNetworkEventDeregisterAny") } // Deregister the callback - if i := int(C.virConnectNetworkEventDeregisterAnyCompat(c.ptr, C.int(callbackId))); i != 0 { + if i := int(C.virConnectNetworkEventDeregisterAnyWrapper(c.ptr, C.int(callbackId))); i != 0 { return GetLastError() } return nil diff --git a/node_device_compat.go b/node_device_compat.go index 1f69c7e..f2d32d9 100644 --- a/node_device_compat.go +++ b/node_device_compat.go @@ -32,7 +32,7 @@ package libvirt #include <assert.h> #include "node_device_compat.h" -int virConnectNodeDeviceEventDeregisterAnyCompat(virConnectPtr conn, +int virConnectNodeDeviceEventDeregisterAnyWrapper(virConnectPtr conn, int callbackID) { #if LIBVIR_VERSION_NUMBER < 2002000 diff --git a/node_device_compat.h b/node_device_compat.h index ca849da..e214bd6 100644 --- a/node_device_compat.h +++ b/node_device_compat.h @@ -51,7 +51,7 @@ typedef void (*virConnectNodeDeviceEventGenericCallback)(virConnectPtr conn, void *opaque); #endif -int virConnectNodeDeviceEventDeregisterAnyCompat(virConnectPtr conn, +int virConnectNodeDeviceEventDeregisterAnyWrapper(virConnectPtr conn, int callbackID); diff --git a/node_device_events.go b/node_device_events.go index 1be2c73..969a134 100644 --- a/node_device_events.go +++ b/node_device_events.go @@ -131,7 +131,7 @@ func (c *Connect) NodeDeviceEventDeregister(callbackId int) error { return GetNotImplementedError("virConnectNodeDeviceEventDeregisterAny") } // Deregister the callback - if i := int(C.virConnectNodeDeviceEventDeregisterAnyCompat(c.ptr, C.int(callbackId))); i != 0 { + if i := int(C.virConnectNodeDeviceEventDeregisterAnyWrapper(c.ptr, C.int(callbackId))); i != 0 { return GetLastError() } return nil diff --git a/nwfilter_binding.go b/nwfilter_binding.go index e4d9cd3..256ac19 100644 --- a/nwfilter_binding.go +++ b/nwfilter_binding.go @@ -47,7 +47,7 @@ func (f *NWFilterBinding) Free() error { if C.LIBVIR_VERSION_NUMBER < 4005000 { return GetNotImplementedError("virNWFilterBindingFree") } - ret := C.virNWFilterBindingFreeCompat(f.ptr) + ret := C.virNWFilterBindingFreeWrapper(f.ptr) if ret == -1 { return GetLastError() } @@ -59,7 +59,7 @@ func (c *NWFilterBinding) Ref() error { if C.LIBVIR_VERSION_NUMBER < 4005000 { return GetNotImplementedError("virNWFilterBindingRef") } - ret := C.virNWFilterBindingRefCompat(c.ptr) + ret := C.virNWFilterBindingRefWrapper(c.ptr) if ret == -1 { return GetLastError() } @@ -71,7 +71,7 @@ func (f *NWFilterBinding) Delete() error { if C.LIBVIR_VERSION_NUMBER < 4005000 { return GetNotImplementedError("virNWFilterBindingDelete") } - result := C.virNWFilterBindingDeleteCompat(f.ptr) + result := C.virNWFilterBindingDeleteWrapper(f.ptr) if result == -1 { return GetLastError() } @@ -83,7 +83,7 @@ func (f *NWFilterBinding) GetPortDev() (string, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { return "", GetNotImplementedError("virNWFilterBindingGetPortDev") } - result := C.virNWFilterBindingGetPortDevCompat(f.ptr) + result := C.virNWFilterBindingGetPortDevWrapper(f.ptr) if result == nil { return "", GetLastError() } @@ -97,7 +97,7 @@ func (f *NWFilterBinding) GetFilterName() (string, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { return "", GetNotImplementedError("virNWFilterBindingGetFilterName") } - result := C.virNWFilterBindingGetFilterNameCompat(f.ptr) + result := C.virNWFilterBindingGetFilterNameWrapper(f.ptr) if result == nil { return "", GetLastError() } @@ -111,7 +111,7 @@ func (f *NWFilterBinding) GetXMLDesc(flags uint32) (string, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { return "", GetNotImplementedError("virNWFilterBindingGetXMLDesc") } - result := C.virNWFilterBindingGetXMLDescCompat(f.ptr, C.uint(flags)) + result := C.virNWFilterBindingGetXMLDescWrapper(f.ptr, C.uint(flags)) if result == nil { return "", GetLastError() } diff --git a/nwfilter_binding_compat.go b/nwfilter_binding_compat.go index 89b457a..37fcce0 100644 --- a/nwfilter_binding_compat.go +++ b/nwfilter_binding_compat.go @@ -31,7 +31,7 @@ package libvirt #include <assert.h> #include "nwfilter_binding_compat.h" -const char *virNWFilterBindingGetPortDevCompat(virNWFilterBindingPtr binding) +const char *virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version @@ -41,7 +41,7 @@ const char *virNWFilterBindingGetPortDevCompat(virNWFilterBindingPtr binding) } -const char *virNWFilterBindingGetFilterNameCompat(virNWFilterBindingPtr binding) +const char *virNWFilterBindingGetFilterNameWrapper(virNWFilterBindingPtr binding) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version @@ -51,7 +51,7 @@ const char *virNWFilterBindingGetFilterNameCompat(virNWFilterBindingPtr binding) } -char *virNWFilterBindingGetXMLDescCompat(virNWFilterBindingPtr binding, +char *virNWFilterBindingGetXMLDescWrapper(virNWFilterBindingPtr binding, unsigned int flags) { #if LIBVIR_VERSION_NUMBER < 4005000 @@ -62,7 +62,7 @@ char *virNWFilterBindingGetXMLDescCompat(virNWFilterBindingPtr binding, } -int virNWFilterBindingDeleteCompat(virNWFilterBindingPtr binding) +int virNWFilterBindingDeleteWrapper(virNWFilterBindingPtr binding) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version @@ -72,7 +72,7 @@ int virNWFilterBindingDeleteCompat(virNWFilterBindingPtr binding) } -int virNWFilterBindingRefCompat(virNWFilterBindingPtr binding) +int virNWFilterBindingRefWrapper(virNWFilterBindingPtr binding) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version @@ -82,7 +82,7 @@ int virNWFilterBindingRefCompat(virNWFilterBindingPtr binding) } -int virNWFilterBindingFreeCompat(virNWFilterBindingPtr binding) +int virNWFilterBindingFreeWrapper(virNWFilterBindingPtr binding) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version diff --git a/nwfilter_binding_compat.h b/nwfilter_binding_compat.h index 5669462..4aa138d 100644 --- a/nwfilter_binding_compat.h +++ b/nwfilter_binding_compat.h @@ -30,15 +30,15 @@ typedef struct _virNWFilterBinding *virNWFilterBindingPtr; #endif -const char *virNWFilterBindingGetPortDevCompat(virNWFilterBindingPtr binding); -const char *virNWFilterBindingGetFilterNameCompat(virNWFilterBindingPtr binding); +const char *virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding); +const char *virNWFilterBindingGetFilterNameWrapper(virNWFilterBindingPtr binding); -char *virNWFilterBindingGetXMLDescCompat(virNWFilterBindingPtr binding, +char *virNWFilterBindingGetXMLDescWrapper(virNWFilterBindingPtr binding, unsigned int flags); -int virNWFilterBindingDeleteCompat(virNWFilterBindingPtr binding); -int virNWFilterBindingRefCompat(virNWFilterBindingPtr binding); -int virNWFilterBindingFreeCompat(virNWFilterBindingPtr binding); +int virNWFilterBindingDeleteWrapper(virNWFilterBindingPtr binding); +int virNWFilterBindingRefWrapper(virNWFilterBindingPtr binding); +int virNWFilterBindingFreeWrapper(virNWFilterBindingPtr binding); #endif /* LIBVIRT_GO_NWFILTER_BINDING_COMPAT_H__ */ diff --git a/qemu.go b/qemu.go index b8679dc..678991f 100644 --- a/qemu.go +++ b/qemu.go @@ -183,7 +183,7 @@ func (c *Connect) DomainQemuEventDeregister(callbackId int) error { } // Deregister the callback - if i := int(C.virConnectDomainQemuMonitorEventDeregisterCompat(c.ptr, C.int(callbackId))); i != 0 { + if i := int(C.virConnectDomainQemuMonitorEventDeregisterWrapper(c.ptr, C.int(callbackId))); i != 0 { return GetLastError() } return nil diff --git a/qemu_compat.go b/qemu_compat.go index a24abf3..6cd28b0 100644 --- a/qemu_compat.go +++ b/qemu_compat.go @@ -34,7 +34,7 @@ package libvirt #include "qemu_compat.h" -int virConnectDomainQemuMonitorEventDeregisterCompat(virConnectPtr conn, +int virConnectDomainQemuMonitorEventDeregisterWrapper(virConnectPtr conn, int callbackID) { #if LIBVIR_VERSION_NUMBER < 1002003 diff --git a/qemu_compat.h b/qemu_compat.h index f889391..ad556cc 100644 --- a/qemu_compat.h +++ b/qemu_compat.h @@ -39,7 +39,7 @@ typedef void (*virConnectDomainQemuMonitorEventCallback)(virConnectPtr conn, void *opaque); #endif -int virConnectDomainQemuMonitorEventDeregisterCompat(virConnectPtr conn, +int virConnectDomainQemuMonitorEventDeregisterWrapper(virConnectPtr conn, int callbackID); #ifndef VIR_CONNECT_DOMAIN_QEMU_MONITOR_EVENT_REGISTER_REGEX diff --git a/secret_compat.go b/secret_compat.go index b68b9d1..4444f6b 100644 --- a/secret_compat.go +++ b/secret_compat.go @@ -32,7 +32,7 @@ package libvirt #include <assert.h> #include "secret_compat.h" -int virConnectSecretEventDeregisterAnyCompat(virConnectPtr conn, +int virConnectSecretEventDeregisterAnyWrapper(virConnectPtr conn, int callbackID) { #if LIBVIR_VERSION_NUMBER < 3000000 diff --git a/secret_compat.h b/secret_compat.h index 745e672..d1e1b8a 100644 --- a/secret_compat.h +++ b/secret_compat.h @@ -52,7 +52,7 @@ typedef void (*virConnectSecretEventGenericCallback)(virConnectPtr conn, void *opaque); #endif -int virConnectSecretEventDeregisterAnyCompat(virConnectPtr conn, +int virConnectSecretEventDeregisterAnyWrapper(virConnectPtr conn, int callbackID); /* 2.2.1 */ diff --git a/secret_events.go b/secret_events.go index 0dd2708..5860033 100644 --- a/secret_events.go +++ b/secret_events.go @@ -134,7 +134,7 @@ func (c *Connect) SecretEventDeregister(callbackId int) error { return GetNotImplementedError("virConnectSecretEventDeregisterAny") } // Deregister the callback - if i := int(C.virConnectSecretEventDeregisterAnyCompat(c.ptr, C.int(callbackId))); i != 0 { + if i := int(C.virConnectSecretEventDeregisterAnyWrapper(c.ptr, C.int(callbackId))); i != 0 { return GetLastError() } return nil diff --git a/storage_pool_compat.go b/storage_pool_compat.go index 04ad85a..7ad66b3 100644 --- a/storage_pool_compat.go +++ b/storage_pool_compat.go @@ -32,7 +32,7 @@ package libvirt #include <assert.h> #include "storage_pool_compat.h" -int virConnectStoragePoolEventDeregisterAnyCompat(virConnectPtr conn, +int virConnectStoragePoolEventDeregisterAnyWrapper(virConnectPtr conn, int callbackID) { #if LIBVIR_VERSION_NUMBER < 2000000 diff --git a/storage_pool_compat.h b/storage_pool_compat.h index 175904e..cad74fd 100644 --- a/storage_pool_compat.h +++ b/storage_pool_compat.h @@ -78,7 +78,7 @@ typedef void (*virConnectStoragePoolEventGenericCallback)(virConnectPtr conn, void *opaque); #endif -int virConnectStoragePoolEventDeregisterAnyCompat(virConnectPtr conn, +int virConnectStoragePoolEventDeregisterAnyWrapper(virConnectPtr conn, int callbackID); diff --git a/storage_pool_events.go b/storage_pool_events.go index cf98616..6bd4a2f 100644 --- a/storage_pool_events.go +++ b/storage_pool_events.go @@ -137,7 +137,7 @@ func (c *Connect) StoragePoolEventDeregister(callbackId int) error { } // Deregister the callback - if i := int(C.virConnectStoragePoolEventDeregisterAnyCompat(c.ptr, C.int(callbackId))); i != 0 { + if i := int(C.virConnectStoragePoolEventDeregisterAnyWrapper(c.ptr, C.int(callbackId))); i != 0 { return GetLastError() } return nil diff --git a/storage_volume.go b/storage_volume.go index 739cdb2..56a3026 100644 --- a/storage_volume.go +++ b/storage_volume.go @@ -171,7 +171,7 @@ func (v *StorageVol) GetInfoFlags(flags StorageVolInfoFlags) (*StorageVolInfo, e } var cinfo C.virStorageVolInfo - result := C.virStorageVolGetInfoFlagsCompat(v.ptr, &cinfo, C.uint(flags)) + result := C.virStorageVolGetInfoFlagsWrapper(v.ptr, &cinfo, C.uint(flags)) if result == -1 { return nil, GetLastError() } diff --git a/storage_volume_compat.go b/storage_volume_compat.go index 46f0e0b..a1f622e 100644 --- a/storage_volume_compat.go +++ b/storage_volume_compat.go @@ -32,7 +32,7 @@ package libvirt #include <assert.h> #include "storage_volume_compat.h" -int virStorageVolGetInfoFlagsCompat(virStorageVolPtr vol, +int virStorageVolGetInfoFlagsWrapper(virStorageVolPtr vol, virStorageVolInfoPtr info, unsigned int flags) { diff --git a/storage_volume_compat.h b/storage_volume_compat.h index a20d04a..69e2dd8 100644 --- a/storage_volume_compat.h +++ b/storage_volume_compat.h @@ -29,7 +29,7 @@ /* 3.0.0 */ -int virStorageVolGetInfoFlagsCompat(virStorageVolPtr vol, +int virStorageVolGetInfoFlagsWrapper(virStorageVolPtr vol, virStorageVolInfoPtr info, unsigned int flags); diff --git a/stream.go b/stream.go index 1282aef..3fc89ab 100644 --- a/stream.go +++ b/stream.go @@ -122,7 +122,7 @@ func (v *Stream) RecvFlags(p []byte, flags StreamRecvFlagsValues) (int, error) { return 0, GetNotImplementedError("virStreamRecvFlags") } - n := C.virStreamRecvFlagsCompat(v.ptr, (*C.char)(unsafe.Pointer(&p[0])), C.size_t(len(p)), C.uint(flags)) + n := C.virStreamRecvFlagsWrapper(v.ptr, (*C.char)(unsafe.Pointer(&p[0])), C.size_t(len(p)), C.uint(flags)) if n < 0 { return 0, GetLastError() } @@ -140,7 +140,7 @@ func (v *Stream) RecvHole(flags uint) (int64, error) { } var len C.longlong - ret := C.virStreamRecvHoleCompat(v.ptr, &len, C.uint(flags)) + ret := C.virStreamRecvHoleWrapper(v.ptr, &len, C.uint(flags)) if ret < 0 { return 0, GetLastError() } @@ -167,7 +167,7 @@ func (v *Stream) SendHole(len int64, flags uint32) error { return GetNotImplementedError("virStreamSendHole") } - ret := C.virStreamSendHoleCompat(v.ptr, C.longlong(len), C.uint(flags)) + ret := C.virStreamSendHoleWrapper(v.ptr, C.longlong(len), C.uint(flags)) if ret < 0 { return GetLastError() } diff --git a/stream_compat.go b/stream_compat.go index c5a3f2f..d718ae1 100644 --- a/stream_compat.go +++ b/stream_compat.go @@ -31,7 +31,7 @@ package libvirt #include <assert.h> #include "stream_compat.h" -int virStreamRecvFlagsCompat(virStreamPtr st, +int virStreamRecvFlagsWrapper(virStreamPtr st, char *data, size_t nbytes, unsigned int flags) @@ -43,7 +43,7 @@ int virStreamRecvFlagsCompat(virStreamPtr st, #endif } -int virStreamSendHoleCompat(virStreamPtr st, +int virStreamSendHoleWrapper(virStreamPtr st, long long length, unsigned int flags) { @@ -54,7 +54,7 @@ int virStreamSendHoleCompat(virStreamPtr st, #endif } -int virStreamRecvHoleCompat(virStreamPtr st, +int virStreamRecvHoleWrapper(virStreamPtr st, long long *length, unsigned int flags) { diff --git a/stream_compat.h b/stream_compat.h index 1488d8f..9db2184 100644 --- a/stream_compat.h +++ b/stream_compat.h @@ -33,16 +33,16 @@ #define VIR_STREAM_RECV_STOP_AT_HOLE (1 << 0) #endif -int virStreamRecvFlagsCompat(virStreamPtr st, +int virStreamRecvFlagsWrapper(virStreamPtr st, char *data, size_t nbytes, unsigned int flags); -int virStreamSendHoleCompat(virStreamPtr st, +int virStreamSendHoleWrapper(virStreamPtr st, long long length, unsigned int flags); -int virStreamRecvHoleCompat(virStreamPtr, +int virStreamRecvHoleWrapper(virStreamPtr, long long *length, unsigned int flags); -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- connect_compat.go | 206 --------------------------------------------- connect_compat.h | 81 ------------------ connect_wrapper.go | 172 +++++++++++++++++++++++++++++++++++++ connect_wrapper.h | 75 +++++++++++++++++ 4 files changed, 247 insertions(+), 287 deletions(-) delete mode 100644 connect_compat.go diff --git a/connect_compat.go b/connect_compat.go deleted file mode 100644 index 1ecbef2..0000000 --- a/connect_compat.go +++ /dev/null @@ -1,206 +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"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * Copyright (c) 2013 Alex Zorin - * Copyright (C) 2016 Red Hat, Inc. - * - */ - -package libvirt - -/* -#cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <assert.h> -#include "connect_compat.h" - -int virNodeGetFreePagesWrapper(virConnectPtr conn, - unsigned int npages, - unsigned int *pages, - int startcell, - unsigned int cellcount, - unsigned long long *counts, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 1002006 - assert(0); // Caller should have checked version -#else - return virNodeGetFreePages(conn, npages, pages, startcell, cellcount, counts, flags); -#endif -} - -char * virConnectGetDomainCapabilitiesWrapper(virConnectPtr conn, - const char *emulatorbin, - const char *arch, - const char *machine, - const char *virttype, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 1002007 - assert(0); // Caller should have checked version -#else - return virConnectGetDomainCapabilities(conn, emulatorbin, arch, machine, virttype, flags); -#endif -} - -int virConnectGetAllDomainStatsWrapper(virConnectPtr conn, - unsigned int stats, - virDomainStatsRecordPtr **retStats, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 1002008 - assert(0); // Caller should have checked version -#else - return virConnectGetAllDomainStats(conn, stats, retStats, flags); -#endif -} - -int virDomainListGetStatsWrapper(virDomainPtr *doms, - unsigned int stats, - virDomainStatsRecordPtr **retStats, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 1002008 - assert(0); // Caller should have checked version -#else - return virDomainListGetStats(doms, stats, retStats, flags); -#endif -} - -void virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats) -{ -} - -int virNodeAllocPagesWrapper(virConnectPtr conn, - unsigned int npages, - unsigned int *pageSizes, - unsigned long long *pageCounts, - int startCell, - unsigned int cellCount, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 1002009 - assert(0); // Caller should have checked version -#else - return virNodeAllocPages(conn, npages, pageSizes, pageCounts, startCell, cellCount, flags); -#endif -} - - -virDomainPtr virDomainDefineXMLFlagsWrapper(virConnectPtr conn, - const char *xml, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 1002012 - assert(0); // Caller should have checked version -#else - return virDomainDefineXMLFlags(conn, xml, flags); -#endif -} - -virStoragePoolPtr virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, - const char *path) -{ -#if LIBVIR_VERSION_NUMBER < 4001000 - assert(0); // Caller should have checked version -#else - return virStoragePoolLookupByTargetPath(conn, path); -#endif -} - -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) -{ -#if LIBVIR_VERSION_NUMBER < 4004000 - assert(0); // Caller should have checked version -#else - return virConnectBaselineHypervisorCPU(conn, emulator, arch, machine, virttype, xmlCPUs, ncpus, flags); -#endif -} - -int virConnectCompareHypervisorCPUWrapper(virConnectPtr conn, - const char *emulator, - const char *arch, - const char *machine, - const char *virttype, - const char *xmlCPU, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 4004000 - assert(0); // Caller should have checked version -#else - return virConnectCompareHypervisorCPU(conn, emulator, arch, machine, virttype, xmlCPU, flags); -#endif -} - -int virNodeGetSEVInfoWrapper(virConnectPtr conn, - virTypedParameterPtr *params, - int *nparams, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 4005000 - assert(0); // Caller should have checked version -#else - return virNodeGetSEVInfo(conn, params, nparams, flags); -#endif -} - -int virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, - virNWFilterBindingPtr **bindings, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 4005000 - assert(0); // Caller should have checked version -#else - return virConnectListAllNWFilterBindings(conn, bindings, flags); -#endif -} - -virNWFilterBindingPtr virNWFilterBindingCreateXMLWrapper(virConnectPtr conn, - const char *xml, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 4005000 - assert(0); // Caller should have checked version -#else - return virNWFilterBindingCreateXML(conn, xml, flags); -#endif -} - -virNWFilterBindingPtr virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, - const char *portdev) -{ -#if LIBVIR_VERSION_NUMBER < 4005000 - assert(0); // Caller should have checked version -#else - return virNWFilterBindingLookupByPortDev(conn, portdev); -#endif -} - - -*/ -import "C" diff --git a/connect_compat.h b/connect_compat.h index 09cbe22..924b07d 100644 --- a/connect_compat.h +++ b/connect_compat.h @@ -47,24 +47,6 @@ #define VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE 1 << 0 #endif -int virNodeGetFreePagesWrapper(virConnectPtr conn, - unsigned int npages, - unsigned int *pages, - int startcell, - unsigned int cellcount, - unsigned long long *counts, - unsigned int flags); - - -/* 1.2.7 */ - -char * virConnectGetDomainCapabilitiesWrapper(virConnectPtr conn, - const char *emulatorbin, - const char *arch, - const char *machine, - const char *virttype, - unsigned int flags); - /* 1.2.8 */ @@ -118,18 +100,6 @@ struct _virDomainStatsRecord { }; #endif -int virConnectGetAllDomainStatsWrapper(virConnectPtr conn, - unsigned int stats, - virDomainStatsRecordPtr **retStats, - unsigned int flags); - -int virDomainListGetStatsWrapper(virDomainPtr *doms, - unsigned int stats, - virDomainStatsRecordPtr **retStats, - unsigned int flags); - -void virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats); - /* 1.2.9 */ #ifndef VIR_NODE_ALLOC_PAGES_ADD @@ -140,14 +110,6 @@ void virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats); #define VIR_NODE_ALLOC_PAGES_SET 1 << 0 #endif -int virNodeAllocPagesWrapper(virConnectPtr conn, - unsigned int npages, - unsigned int *pageSizes, - unsigned long long *pageCounts, - int startCell, - unsigned int cellCount, - unsigned int flags); - /* 1.2.11 */ @@ -178,10 +140,6 @@ int virNodeAllocPagesWrapper(virConnectPtr conn, #define VIR_CONNECT_GET_ALL_DOMAINS_STATS_BACKING 1 << 30 #endif -virDomainPtr virDomainDefineXMLFlagsWrapper(virConnectPtr conn, - const char *xml, - unsigned int flags); - /* 1.2.14 */ #ifndef VIR_CONNECT_BASELINE_CPU_MIGRATABLE @@ -212,37 +170,9 @@ virDomainPtr virDomainDefineXMLFlagsWrapper(virConnectPtr conn, #define VIR_CONNECT_LIST_NODE_DEVICES_CAP_CCW_DEV 1 << 15 #endif -/* 4.1.0 */ - -virStoragePoolPtr virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, - const char *path); - -/* 4.4.0 */ - -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); - -int virConnectCompareHypervisorCPUWrapper(virConnectPtr conn, - const char *emulator, - const char *arch, - const char *machine, - const char *virttype, - const char *xmlCPU, - unsigned int flags); /* 4.5.0 */ -int virNodeGetSEVInfoWrapper(virConnectPtr conn, - virTypedParameterPtr *params, - int *nparams, - unsigned int flags); - #ifndef VIR_NODE_SEV_CBITPOS #define VIR_NODE_SEV_CBITPOS "cbitpos" #endif @@ -263,17 +193,6 @@ int virNodeGetSEVInfoWrapper(virConnectPtr conn, typedef struct _virNWFilterBinding *virNWFilterBindingPtr; #endif -int virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, - virNWFilterBindingPtr **bindings, - unsigned int flags); - -virNWFilterBindingPtr virNWFilterBindingCreateXMLWrapper(virConnectPtr conn, - const char *xml, - unsigned int flags); - -virNWFilterBindingPtr virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, - const char *portdev); - #ifndef VIR_CONNECT_GET_ALL_DOMAINS_STATS_NOWAIT #define VIR_CONNECT_GET_ALL_DOMAINS_STATS_NOWAIT 1 << 29 #endif diff --git a/connect_wrapper.go b/connect_wrapper.go index ec2da69..cbafc53 100644 --- a/connect_wrapper.go +++ b/connect_wrapper.go @@ -30,6 +30,7 @@ package libvirt #cgo pkg-config: libvirt #include <libvirt/libvirt.h> #include <libvirt/virterror.h> +#include <assert.h> #include "connect_wrapper.h" #include "callbacks_wrapper.h" @@ -67,5 +68,176 @@ virConnectPtr virConnectOpenAuthWrap(const char *name, int *credtype, uint ncred return virConnectOpenAuth(name, &auth, flags); } + +int virNodeGetFreePagesWrapper(virConnectPtr conn, + unsigned int npages, + unsigned int *pages, + int startcell, + unsigned int cellcount, + unsigned long long *counts, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 1002006 + assert(0); // Caller should have checked version +#else + return virNodeGetFreePages(conn, npages, pages, startcell, cellcount, counts, flags); +#endif +} + +char * virConnectGetDomainCapabilitiesWrapper(virConnectPtr conn, + const char *emulatorbin, + const char *arch, + const char *machine, + const char *virttype, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 1002007 + assert(0); // Caller should have checked version +#else + return virConnectGetDomainCapabilities(conn, emulatorbin, arch, machine, virttype, flags); +#endif +} + +int virConnectGetAllDomainStatsWrapper(virConnectPtr conn, + unsigned int stats, + virDomainStatsRecordPtr **retStats, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 1002008 + assert(0); // Caller should have checked version +#else + return virConnectGetAllDomainStats(conn, stats, retStats, flags); +#endif +} + +int virDomainListGetStatsWrapper(virDomainPtr *doms, + unsigned int stats, + virDomainStatsRecordPtr **retStats, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 1002008 + assert(0); // Caller should have checked version +#else + return virDomainListGetStats(doms, stats, retStats, flags); +#endif +} + +void virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats) +{ +} + +int virNodeAllocPagesWrapper(virConnectPtr conn, + unsigned int npages, + unsigned int *pageSizes, + unsigned long long *pageCounts, + int startCell, + unsigned int cellCount, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 1002009 + assert(0); // Caller should have checked version +#else + return virNodeAllocPages(conn, npages, pageSizes, pageCounts, startCell, cellCount, flags); +#endif +} + + +virDomainPtr virDomainDefineXMLFlagsWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 1002012 + assert(0); // Caller should have checked version +#else + return virDomainDefineXMLFlags(conn, xml, flags); +#endif +} + +virStoragePoolPtr virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, + const char *path) +{ +#if LIBVIR_VERSION_NUMBER < 4001000 + assert(0); // Caller should have checked version +#else + return virStoragePoolLookupByTargetPath(conn, path); +#endif +} + +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) +{ +#if LIBVIR_VERSION_NUMBER < 4004000 + assert(0); // Caller should have checked version +#else + return virConnectBaselineHypervisorCPU(conn, emulator, arch, machine, virttype, xmlCPUs, ncpus, flags); +#endif +} + +int virConnectCompareHypervisorCPUWrapper(virConnectPtr conn, + const char *emulator, + const char *arch, + const char *machine, + const char *virttype, + const char *xmlCPU, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 4004000 + assert(0); // Caller should have checked version +#else + return virConnectCompareHypervisorCPU(conn, emulator, arch, machine, virttype, xmlCPU, flags); +#endif +} + +int virNodeGetSEVInfoWrapper(virConnectPtr conn, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 4005000 + assert(0); // Caller should have checked version +#else + return virNodeGetSEVInfo(conn, params, nparams, flags); +#endif +} + +int virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, + virNWFilterBindingPtr **bindings, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 4005000 + assert(0); // Caller should have checked version +#else + return virConnectListAllNWFilterBindings(conn, bindings, flags); +#endif +} + +virNWFilterBindingPtr virNWFilterBindingCreateXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 4005000 + assert(0); // Caller should have checked version +#else + return virNWFilterBindingCreateXML(conn, xml, flags); +#endif +} + +virNWFilterBindingPtr virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, + const char *portdev) +{ +#if LIBVIR_VERSION_NUMBER < 4005000 + assert(0); // Caller should have checked version +#else + return virNWFilterBindingLookupByPortDev(conn, portdev); +#endif +} + + */ import "C" diff --git a/connect_wrapper.h b/connect_wrapper.h index 60374c7..7af88f1 100644 --- a/connect_wrapper.h +++ b/connect_wrapper.h @@ -31,4 +31,79 @@ int virConnectRegisterCloseCallbackHelper(virConnectPtr c, virConnectCloseFunc c virConnectPtr virConnectOpenAuthWrap(const char *name, int *credtype, uint ncredtype, int callbackID, unsigned int flags); +int virNodeGetFreePagesWrapper(virConnectPtr conn, + unsigned int npages, + unsigned int *pages, + int startcell, + unsigned int cellcount, + unsigned long long *counts, + unsigned int flags); + +char * virConnectGetDomainCapabilitiesWrapper(virConnectPtr conn, + const char *emulatorbin, + const char *arch, + const char *machine, + const char *virttype, + unsigned int flags); + +int virConnectGetAllDomainStatsWrapper(virConnectPtr conn, + unsigned int stats, + virDomainStatsRecordPtr **retStats, + unsigned int flags); + +int virDomainListGetStatsWrapper(virDomainPtr *doms, + unsigned int stats, + virDomainStatsRecordPtr **retStats, + unsigned int flags); + +void virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats); + +int virNodeAllocPagesWrapper(virConnectPtr conn, + unsigned int npages, + unsigned int *pageSizes, + unsigned long long *pageCounts, + int startCell, + unsigned int cellCount, + unsigned int flags); + +virDomainPtr virDomainDefineXMLFlagsWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags); + +virStoragePoolPtr virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, + const char *path); + +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); + +int virConnectCompareHypervisorCPUWrapper(virConnectPtr conn, + const char *emulator, + const char *arch, + const char *machine, + const char *virttype, + const char *xmlCPU, + unsigned int flags); + +int virNodeGetSEVInfoWrapper(virConnectPtr conn, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags); + +int virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, + virNWFilterBindingPtr **bindings, + unsigned int flags); + +virNWFilterBindingPtr virNWFilterBindingCreateXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags); + +virNWFilterBindingPtr virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, + const char *portdev); + #endif /* LIBVIRT_GO_CONNECT_WRAPPER_H__ */ -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- network.go | 1 + network_compat.h | 10 ------- network_events_wrapper.go | 10 +++++++ network_events_wrapper.h | 8 ++++++ network_compat.go => network_wrapper.go | 11 +------- network_wrapper.h | 37 +++++++++++++++++++++++++ 6 files changed, 57 insertions(+), 20 deletions(-) rename network_compat.go => network_wrapper.go (86%) create mode 100644 network_wrapper.h diff --git a/network.go b/network.go index fe54bf1..26bf24e 100644 --- a/network.go +++ b/network.go @@ -32,6 +32,7 @@ package libvirt #include <libvirt/virterror.h> #include <stdlib.h> #include "network_compat.h" +#include "network_wrapper.h" */ import "C" diff --git a/network_compat.h b/network_compat.h index 97c8ad5..08f0778 100644 --- a/network_compat.h +++ b/network_compat.h @@ -56,9 +56,6 @@ typedef void (*virConnectNetworkEventGenericCallback)(virConnectPtr conn, void *opaque); #endif -int virConnectNetworkEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID); - /* 1.2.5 */ @@ -86,11 +83,4 @@ struct _virNetworkDHCPLease { }; #endif -void virNetworkDHCPLeaseFreeWrapper(virNetworkDHCPLeasePtr lease); - -int virNetworkGetDHCPLeasesWrapper(virNetworkPtr network, - const char *mac, - virNetworkDHCPLeasePtr **leases, - unsigned int flags); - #endif /* LIBVIRT_GO_NETWORK_COMPAT_H__ */ diff --git a/network_events_wrapper.go b/network_events_wrapper.go index ea892cf..27bf555 100644 --- a/network_events_wrapper.go +++ b/network_events_wrapper.go @@ -54,5 +54,15 @@ int virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, virNetworkPtr d, #endif } +int virConnectNetworkEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID) +{ +#if LIBVIR_VERSION_NUMBER < 1002001 + assert(0); // Caller should have checked version +#else + return virConnectNetworkEventDeregisterAny(conn, callbackID); +#endif +} + */ import "C" diff --git a/network_events_wrapper.h b/network_events_wrapper.h index 1b73369..8388467 100644 --- a/network_events_wrapper.h +++ b/network_events_wrapper.h @@ -34,5 +34,13 @@ int virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, virNetworkPtr d, int eventID, virConnectNetworkEventGenericCallback cb, long goCallbackId); +int virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, + virNetworkPtr d, + int eventID, + virConnectNetworkEventGenericCallback cb, + long goCallbackId); +int virConnectNetworkEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID); + #endif /* LIBVIRT_GO_NETWORK_EVENTS_WRAPPER_H__ */ diff --git a/network_compat.go b/network_wrapper.go similarity index 86% rename from network_compat.go rename to network_wrapper.go index 56e9749..bd58754 100644 --- a/network_compat.go +++ b/network_wrapper.go @@ -31,16 +31,7 @@ package libvirt #include <libvirt/libvirt.h> #include <assert.h> #include "network_compat.h" - -int virConnectNetworkEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID) -{ -#if LIBVIR_VERSION_NUMBER < 1002001 - assert(0); // Caller should have checked version -#else - return virConnectNetworkEventDeregisterAny(conn, callbackID); -#endif -} +#include "network_wrapper.h" void virNetworkDHCPLeaseFreeWrapper(virNetworkDHCPLeasePtr lease) { diff --git a/network_wrapper.h b/network_wrapper.h new file mode 100644 index 0000000..762fe3b --- /dev/null +++ b/network_wrapper.h @@ -0,0 +1,37 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (c) 2013 Alex Zorin + * Copyright (C) 2016 Red Hat, Inc. + * + */ + +#ifndef LIBVIRT_GO_NETWORK_WRAPPER_H__ +#define LIBVIRT_GO_NETWORK_WRAPPER_H__ + +void virNetworkDHCPLeaseFreeWrapper(virNetworkDHCPLeasePtr lease); + +int virNetworkGetDHCPLeasesWrapper(virNetworkPtr network, + const char *mac, + virNetworkDHCPLeasePtr **leases, + unsigned int flags); + +#endif /* LIBVIRT_GO_NETWORK_WRAPPER_H__ */ -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- nwfilter_binding.go | 1 + nwfilter_binding_compat.h | 11 ------ ...g_compat.go => nwfilter_binding_wrapper.go | 1 + nwfilter_binding_wrapper.h | 38 +++++++++++++++++++ 4 files changed, 40 insertions(+), 11 deletions(-) rename nwfilter_binding_compat.go => nwfilter_binding_wrapper.go (98%) create mode 100644 nwfilter_binding_wrapper.h diff --git a/nwfilter_binding.go b/nwfilter_binding.go index 256ac19..daab598 100644 --- a/nwfilter_binding.go +++ b/nwfilter_binding.go @@ -31,6 +31,7 @@ package libvirt #include <libvirt/virterror.h> #include <stdlib.h> #include "nwfilter_binding_compat.h" +#include "nwfilter_binding_wrapper.h" */ import "C" diff --git a/nwfilter_binding_compat.h b/nwfilter_binding_compat.h index 4aa138d..1d6fd16 100644 --- a/nwfilter_binding_compat.h +++ b/nwfilter_binding_compat.h @@ -30,15 +30,4 @@ typedef struct _virNWFilterBinding *virNWFilterBindingPtr; #endif -const char *virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding); -const char *virNWFilterBindingGetFilterNameWrapper(virNWFilterBindingPtr binding); - -char *virNWFilterBindingGetXMLDescWrapper(virNWFilterBindingPtr binding, - unsigned int flags); - -int virNWFilterBindingDeleteWrapper(virNWFilterBindingPtr binding); -int virNWFilterBindingRefWrapper(virNWFilterBindingPtr binding); -int virNWFilterBindingFreeWrapper(virNWFilterBindingPtr binding); - - #endif /* LIBVIRT_GO_NWFILTER_BINDING_COMPAT_H__ */ diff --git a/nwfilter_binding_compat.go b/nwfilter_binding_wrapper.go similarity index 98% rename from nwfilter_binding_compat.go rename to nwfilter_binding_wrapper.go index 37fcce0..4d0e086 100644 --- a/nwfilter_binding_compat.go +++ b/nwfilter_binding_wrapper.go @@ -30,6 +30,7 @@ package libvirt #include <libvirt/libvirt.h> #include <assert.h> #include "nwfilter_binding_compat.h" +#include "nwfilter_binding_wrapper.h" const char *virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding) { diff --git a/nwfilter_binding_wrapper.h b/nwfilter_binding_wrapper.h new file mode 100644 index 0000000..be09dca --- /dev/null +++ b/nwfilter_binding_wrapper.h @@ -0,0 +1,38 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +#ifndef LIBVIRT_GO_NWFILTER_BINDING_WRAPPER_H__ +#define LIBVIRT_GO_NWFILTER_BINDING_WRAPPER_H__ + +const char *virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding); +const char *virNWFilterBindingGetFilterNameWrapper(virNWFilterBindingPtr binding); +char *virNWFilterBindingGetXMLDescWrapper(virNWFilterBindingPtr binding, + unsigned int flags); +int virNWFilterBindingDeleteWrapper(virNWFilterBindingPtr binding); +int virNWFilterBindingRefWrapper(virNWFilterBindingPtr binding); +int virNWFilterBindingFreeWrapper(virNWFilterBindingPtr binding); + + +#endif /* LIBVIRT_GO_NWFILTER_BINDING_WRAPPER_H__ */ -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- node_device_compat.go | 46 ----------------------------------- node_device_compat.h | 3 --- node_device_events_wrapper.go | 10 ++++++++ node_device_events_wrapper.h | 9 ++++--- 4 files changed, 16 insertions(+), 52 deletions(-) delete mode 100644 node_device_compat.go diff --git a/node_device_compat.go b/node_device_compat.go deleted file mode 100644 index f2d32d9..0000000 --- a/node_device_compat.go +++ /dev/null @@ -1,46 +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"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * Copyright (c) 2013 Alex Zorin - * Copyright (C) 2016 Red Hat, Inc. - * - */ - -package libvirt - -/* -#cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <assert.h> -#include "node_device_compat.h" - -int virConnectNodeDeviceEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID) -{ -#if LIBVIR_VERSION_NUMBER < 2002000 - assert(0); // Caller should have checked version -#else - return virConnectNodeDeviceEventDeregisterAny(conn, callbackID); -#endif -} - -*/ -import "C" diff --git a/node_device_compat.h b/node_device_compat.h index e214bd6..3202039 100644 --- a/node_device_compat.h +++ b/node_device_compat.h @@ -51,8 +51,5 @@ typedef void (*virConnectNodeDeviceEventGenericCallback)(virConnectPtr conn, void *opaque); #endif -int virConnectNodeDeviceEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID); - #endif /* LIBVIRT_GO_NODE_DEVICE_COMPAT_H__ */ diff --git a/node_device_events_wrapper.go b/node_device_events_wrapper.go index ff7b6e4..20441f4 100644 --- a/node_device_events_wrapper.go +++ b/node_device_events_wrapper.go @@ -60,5 +60,15 @@ int virConnectNodeDeviceEventRegisterAnyWrapper(virConnectPtr c, virNodeDeviceP #endif } +int virConnectNodeDeviceEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID) +{ +#if LIBVIR_VERSION_NUMBER < 2002000 + assert(0); // Caller should have checked version +#else + return virConnectNodeDeviceEventDeregisterAny(conn, callbackID); +#endif +} + */ import "C" diff --git a/node_device_events_wrapper.h b/node_device_events_wrapper.h index ae76b3e..a9576e7 100644 --- a/node_device_events_wrapper.h +++ b/node_device_events_wrapper.h @@ -28,13 +28,16 @@ #define LIBVIRT_GO_NODE_DEVICE_EVENTS_WRAPPER_H__ void nodeDeviceEventLifecycleCallbackHelper(virConnectPtr c, virNodeDevicePtr d, - int event, int detail, void* data); + int event, int detail, void* data); void nodeDeviceEventGenericCallbackHelper(virConnectPtr c, virNodeDevicePtr d, void* data); int virConnectNodeDeviceEventRegisterAnyWrapper(virConnectPtr c, virNodeDevicePtr d, - int eventID, virConnectNodeDeviceEventGenericCallback cb, - long goCallbackId); + int eventID, virConnectNodeDeviceEventGenericCallback cb, + long goCallbackId); + +int virConnectNodeDeviceEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID); #endif /* LIBVIRT_GO_NODE_DEVICE_EVENTS_WRAPPER_H__ */ -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- secret_compat.go | 47 ---------------------------------------- secret_compat.h | 3 --- secret_events_wrapper.go | 11 ++++++++++ secret_events_wrapper.h | 6 +++-- 4 files changed, 15 insertions(+), 52 deletions(-) delete mode 100644 secret_compat.go diff --git a/secret_compat.go b/secret_compat.go deleted file mode 100644 index 4444f6b..0000000 --- a/secret_compat.go +++ /dev/null @@ -1,47 +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"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * Copyright (c) 2013 Alex Zorin - * Copyright (C) 2016 Red Hat, Inc. - * - */ - -package libvirt - -/* -#cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <assert.h> -#include "secret_compat.h" - -int virConnectSecretEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID) -{ -#if LIBVIR_VERSION_NUMBER < 3000000 - assert(0); // Caller should have checked version -#else - return virConnectSecretEventDeregisterAny(conn, callbackID); -#endif -} - - -*/ -import "C" diff --git a/secret_compat.h b/secret_compat.h index d1e1b8a..ba38c68 100644 --- a/secret_compat.h +++ b/secret_compat.h @@ -52,9 +52,6 @@ typedef void (*virConnectSecretEventGenericCallback)(virConnectPtr conn, void *opaque); #endif -int virConnectSecretEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID); - /* 2.2.1 */ #ifndef VIR_SECRET_USAGE_TYPE_TLS diff --git a/secret_events_wrapper.go b/secret_events_wrapper.go index 3366065..6e1ef21 100644 --- a/secret_events_wrapper.go +++ b/secret_events_wrapper.go @@ -61,5 +61,16 @@ int virConnectSecretEventRegisterAnyWrapper(virConnectPtr c, virSecretPtr d, #endif } +int virConnectSecretEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID) +{ +#if LIBVIR_VERSION_NUMBER < 3000000 + assert(0); // Caller should have checked version +#else + return virConnectSecretEventDeregisterAny(conn, callbackID); +#endif +} + + */ import "C" diff --git a/secret_events_wrapper.h b/secret_events_wrapper.h index 1b5b527..f388542 100644 --- a/secret_events_wrapper.h +++ b/secret_events_wrapper.h @@ -28,13 +28,15 @@ #define LIBVIRT_GO_SECRET_EVENTS_WRAPPER_H__ void secretEventLifecycleCallbackHelper(virConnectPtr c, virSecretPtr d, - int event, int detail, void* data); + int event, int detail, void* data); void secretEventGenericCallbackHelper(virConnectPtr c, virSecretPtr d, - void* data); + void* data); int virConnectSecretEventRegisterAnyWrapper(virConnectPtr c, virSecretPtr d, int eventID, virConnectSecretEventGenericCallback cb, long goCallbackId); +int virConnectSecretEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID); #endif /* LIBVIRT_GO_SECRET_EVENTS_WRAPPER_H__ */ -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- stream_compat.go | 69 ----------------------------------------------- stream_compat.h | 13 --------- stream_wrapper.go | 34 +++++++++++++++++++++++ stream_wrapper.h | 12 +++++++++ 4 files changed, 46 insertions(+), 82 deletions(-) delete mode 100644 stream_compat.go diff --git a/stream_compat.go b/stream_compat.go deleted file mode 100644 index d718ae1..0000000 --- a/stream_compat.go +++ /dev/null @@ -1,69 +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"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * Copyright (C) 2017 Red Hat, Inc. - * - */ - -package libvirt - -/* -#cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <assert.h> -#include "stream_compat.h" - -int virStreamRecvFlagsWrapper(virStreamPtr st, - char *data, - size_t nbytes, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 3004000 - assert(0); // Caller should have checked version -#else - return virStreamRecvFlags(st, data, nbytes, flags); -#endif -} - -int virStreamSendHoleWrapper(virStreamPtr st, - long long length, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 3004000 - assert(0); // Caller should have checked version -#else - return virStreamSendHole(st, length, flags); -#endif -} - -int virStreamRecvHoleWrapper(virStreamPtr st, - long long *length, - unsigned int flags) -{ -#if LIBVIR_VERSION_NUMBER < 3004000 - assert(0); // Caller should have checked version -#else - return virStreamRecvHole(st, length, flags); -#endif -} - -*/ -import "C" diff --git a/stream_compat.h b/stream_compat.h index 9db2184..92befd5 100644 --- a/stream_compat.h +++ b/stream_compat.h @@ -33,17 +33,4 @@ #define VIR_STREAM_RECV_STOP_AT_HOLE (1 << 0) #endif -int virStreamRecvFlagsWrapper(virStreamPtr st, - char *data, - size_t nbytes, - unsigned int flags); - -int virStreamSendHoleWrapper(virStreamPtr st, - long long length, - unsigned int flags); - -int virStreamRecvHoleWrapper(virStreamPtr, - long long *length, - unsigned int flags); - #endif /* LIBVIRT_GO_STREAM_COMPAT_H__ */ diff --git a/stream_wrapper.go b/stream_wrapper.go index 4e1c2c9..419bb41 100644 --- a/stream_wrapper.go +++ b/stream_wrapper.go @@ -128,5 +128,39 @@ int virStreamEventAddCallbackWrapper(virStreamPtr st, int events, int callbackID return virStreamEventAddCallback(st, events, streamEventCallbackHelper, (void *)(intptr_t)callbackID, NULL); } +int virStreamRecvFlagsWrapper(virStreamPtr st, + char *data, + size_t nbytes, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 3004000 + assert(0); // Caller should have checked version +#else + return virStreamRecvFlags(st, data, nbytes, flags); +#endif +} + +int virStreamSendHoleWrapper(virStreamPtr st, + long long length, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 3004000 + assert(0); // Caller should have checked version +#else + return virStreamSendHole(st, length, flags); +#endif +} + +int virStreamRecvHoleWrapper(virStreamPtr st, + long long *length, + unsigned int flags) +{ +#if LIBVIR_VERSION_NUMBER < 3004000 + assert(0); // Caller should have checked version +#else + return virStreamRecvHole(st, length, flags); +#endif +} + */ import "C" diff --git a/stream_wrapper.h b/stream_wrapper.h index c064423..cfa6c37 100644 --- a/stream_wrapper.h +++ b/stream_wrapper.h @@ -33,5 +33,17 @@ int virStreamSparseSendAllWrapper(virStreamPtr st, int callbackID, int holeCallb int virStreamSparseRecvAllWrapper(virStreamPtr st, int callbackID, int holeCallbackID); int virStreamEventAddCallbackWrapper(virStreamPtr st, int events, int callbackID); +int virStreamRecvFlagsWrapper(virStreamPtr st, + char *data, + size_t nbytes, + unsigned int flags); + +int virStreamSendHoleWrapper(virStreamPtr st, + long long length, + unsigned int flags); + +int virStreamRecvHoleWrapper(virStreamPtr, + long long *length, + unsigned int flags); #endif /* LIBVIRT_GO_STREAM_WRAPPER_H__ */ -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- storage_volume.go | 1 + storage_volume_compat.h | 4 --- ...ume_compat.go => storage_volume_wrapper.go | 1 + storage_volume_wrapper.h | 34 +++++++++++++++++++ 4 files changed, 36 insertions(+), 4 deletions(-) rename storage_volume_compat.go => storage_volume_wrapper.go (97%) create mode 100644 storage_volume_wrapper.h diff --git a/storage_volume.go b/storage_volume.go index 56a3026..3526ed4 100644 --- a/storage_volume.go +++ b/storage_volume.go @@ -32,6 +32,7 @@ package libvirt #include <libvirt/virterror.h> #include <stdlib.h> #include "storage_volume_compat.h" +#include "storage_volume_wrapper.h" */ import "C" diff --git a/storage_volume_compat.h b/storage_volume_compat.h index 69e2dd8..bd3cee9 100644 --- a/storage_volume_compat.h +++ b/storage_volume_compat.h @@ -29,10 +29,6 @@ /* 3.0.0 */ -int virStorageVolGetInfoFlagsWrapper(virStorageVolPtr vol, - virStorageVolInfoPtr info, - unsigned int flags); - #ifndef VIR_STORAGE_VOL_USE_ALLOCATION #define VIR_STORAGE_VOL_USE_ALLOCATION 0 #endif diff --git a/storage_volume_compat.go b/storage_volume_wrapper.go similarity index 97% rename from storage_volume_compat.go rename to storage_volume_wrapper.go index a1f622e..62c5df8 100644 --- a/storage_volume_compat.go +++ b/storage_volume_wrapper.go @@ -31,6 +31,7 @@ package libvirt #include <libvirt/libvirt.h> #include <assert.h> #include "storage_volume_compat.h" +#include "storage_volume_wrapper.h" int virStorageVolGetInfoFlagsWrapper(virStorageVolPtr vol, virStorageVolInfoPtr info, diff --git a/storage_volume_wrapper.h b/storage_volume_wrapper.h new file mode 100644 index 0000000..a97a59a --- /dev/null +++ b/storage_volume_wrapper.h @@ -0,0 +1,34 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (c) 2013 Alex Zorin + * Copyright (C) 2016 Red Hat, Inc. + * + */ + +#ifndef LIBVIRT_GO_STORAGE_VOLUME_WRAPPER_H__ +#define LIBVIRT_GO_STORAGE_VOLUME_WRAPPER_H__ + +int virStorageVolGetInfoFlagsWrapper(virStorageVolPtr vol, + virStorageVolInfoPtr info, + unsigned int flags); + +#endif /* LIBVIRT_GO_STORAGE_VOLUME_WRAPPER_H__ */ -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- storage_pool_compat.go | 46 ---------------------------------- storage_pool_compat.h | 4 --- storage_pool_events_wrapper.go | 10 ++++++++ storage_pool_events_wrapper.h | 2 ++ 4 files changed, 12 insertions(+), 50 deletions(-) delete mode 100644 storage_pool_compat.go diff --git a/storage_pool_compat.go b/storage_pool_compat.go deleted file mode 100644 index 7ad66b3..0000000 --- a/storage_pool_compat.go +++ /dev/null @@ -1,46 +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"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * Copyright (c) 2013 Alex Zorin - * Copyright (C) 2016 Red Hat, Inc. - * - */ - -package libvirt - -/* -#cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <assert.h> -#include "storage_pool_compat.h" - -int virConnectStoragePoolEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID) -{ -#if LIBVIR_VERSION_NUMBER < 2000000 - assert(0); // Caller shouuld have checked version -#else - return virConnectStoragePoolEventDeregisterAny(conn, callbackID); -#endif -} - -*/ -import "C" diff --git a/storage_pool_compat.h b/storage_pool_compat.h index cad74fd..4df1a0d 100644 --- a/storage_pool_compat.h +++ b/storage_pool_compat.h @@ -78,10 +78,6 @@ typedef void (*virConnectStoragePoolEventGenericCallback)(virConnectPtr conn, void *opaque); #endif -int virConnectStoragePoolEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID); - - /* 3.8.0 */ #ifndef VIR_STORAGE_POOL_EVENT_CREATED diff --git a/storage_pool_events_wrapper.go b/storage_pool_events_wrapper.go index 9670440..d03f6c5 100644 --- a/storage_pool_events_wrapper.go +++ b/storage_pool_events_wrapper.go @@ -61,5 +61,15 @@ int virConnectStoragePoolEventRegisterAnyWrapper(virConnectPtr c, virStoragePoo #endif } +int virConnectStoragePoolEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID) +{ +#if LIBVIR_VERSION_NUMBER < 2000000 + assert(0); // Caller shouuld have checked version +#else + return virConnectStoragePoolEventDeregisterAny(conn, callbackID); +#endif +} + */ import "C" diff --git a/storage_pool_events_wrapper.h b/storage_pool_events_wrapper.h index c82abb2..2420dee 100644 --- a/storage_pool_events_wrapper.h +++ b/storage_pool_events_wrapper.h @@ -36,5 +36,7 @@ int virConnectStoragePoolEventRegisterAnyWrapper(virConnectPtr c, virStoragePoo int eventID, virConnectStoragePoolEventGenericCallback cb, long goCallbackId); +int virConnectStoragePoolEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID); #endif /* LIBVIRT_GO_STORAGE_POOL_EVENTS_WRAPPER_H__ */ -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- qemu_compat.go | 48 ------------------------------------------------ qemu_compat.h | 3 --- qemu_wrapper.go | 10 ++++++++++ qemu_wrapper.h | 3 +++ 4 files changed, 13 insertions(+), 51 deletions(-) delete mode 100644 qemu_compat.go diff --git a/qemu_compat.go b/qemu_compat.go deleted file mode 100644 index 6cd28b0..0000000 --- a/qemu_compat.go +++ /dev/null @@ -1,48 +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"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * Copyright (c) 2013 Alex Zorin - * Copyright (C) 2016 Red Hat, Inc. - * - */ - -package libvirt - -/* -#cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/libvirt-qemu.h> -#include <assert.h> -#include "qemu_compat.h" - - -int virConnectDomainQemuMonitorEventDeregisterWrapper(virConnectPtr conn, - int callbackID) -{ -#if LIBVIR_VERSION_NUMBER < 1002003 - assert(0); // Caller should have checked version -#else - return virConnectDomainQemuMonitorEventDeregister(conn, callbackID); -#endif -} - -*/ -import "C" diff --git a/qemu_compat.h b/qemu_compat.h index ad556cc..7756d7f 100644 --- a/qemu_compat.h +++ b/qemu_compat.h @@ -39,9 +39,6 @@ typedef void (*virConnectDomainQemuMonitorEventCallback)(virConnectPtr conn, void *opaque); #endif -int virConnectDomainQemuMonitorEventDeregisterWrapper(virConnectPtr conn, - int callbackID); - #ifndef VIR_CONNECT_DOMAIN_QEMU_MONITOR_EVENT_REGISTER_REGEX #define VIR_CONNECT_DOMAIN_QEMU_MONITOR_EVENT_REGISTER_REGEX (1 << 0) #endif diff --git a/qemu_wrapper.go b/qemu_wrapper.go index bbd95cc..ff837a0 100644 --- a/qemu_wrapper.go +++ b/qemu_wrapper.go @@ -60,5 +60,15 @@ int virConnectDomainQemuMonitorEventRegisterWrapper(virConnectPtr c, virDomainP #endif } +int virConnectDomainQemuMonitorEventDeregisterWrapper(virConnectPtr conn, + int callbackID) +{ +#if LIBVIR_VERSION_NUMBER < 1002003 + assert(0); // Caller should have checked version +#else + return virConnectDomainQemuMonitorEventDeregister(conn, callbackID); +#endif +} + */ import "C" diff --git a/qemu_wrapper.h b/qemu_wrapper.h index 9284256..3f4dd6a 100644 --- a/qemu_wrapper.h +++ b/qemu_wrapper.h @@ -35,5 +35,8 @@ int virConnectDomainQemuMonitorEventRegisterWrapper(virConnectPtr c, virDomainP const char *event, virConnectDomainQemuMonitorEventCallback cb, long goCallbackId, unsigned int flags); +int virConnectDomainQemuMonitorEventDeregisterWrapper(virConnectPtr conn, + int callbackID); + #endif /* LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ */ -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- lxc.go | 2 +- lxc_compat.go => lxc_wrapper.go | 2 +- lxc_compat.h => lxc_wrapper.h | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename lxc_compat.go => lxc_wrapper.go (98%) rename lxc_compat.h => lxc_wrapper.h (100%) diff --git a/lxc.go b/lxc.go index d121231..07ed7ff 100644 --- a/lxc.go +++ b/lxc.go @@ -38,7 +38,7 @@ package libvirt #include <libvirt/virterror.h> #include <stdlib.h> #include <string.h> -#include "lxc_compat.h" +#include "lxc_wrapper.h" */ import "C" diff --git a/lxc_compat.go b/lxc_wrapper.go similarity index 98% rename from lxc_compat.go rename to lxc_wrapper.go index cc4420c..4a49348 100644 --- a/lxc_compat.go +++ b/lxc_wrapper.go @@ -34,7 +34,7 @@ package libvirt #include <libvirt/libvirt.h> #include <libvirt/libvirt-lxc.h> #include <assert.h> -#include "lxc_compat.h" +#include "lxc_wrapper.h" int virDomainLxcEnterCGroupWrapper(virDomainPtr domain, unsigned int flags) diff --git a/lxc_compat.h b/lxc_wrapper.h similarity index 100% rename from lxc_compat.h rename to lxc_wrapper.h -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- domain.go | 1 + domain_compat.h | 141 ----------------------- domain_compat.go => domain_wrapper.go | 2 +- domain_wrapper.h | 157 ++++++++++++++++++++++++++ 4 files changed, 159 insertions(+), 142 deletions(-) rename domain_compat.go => domain_wrapper.go (99%) create mode 100644 domain_wrapper.h diff --git a/domain.go b/domain.go index 75c3458..7253c67 100644 --- a/domain.go +++ b/domain.go @@ -32,6 +32,7 @@ package libvirt #include <libvirt/virterror.h> #include <stdlib.h> #include "domain_compat.h" +#include "domain_wrapper.h" */ import "C" diff --git a/domain_compat.h b/domain_compat.h index 3a868fe..c0d93b6 100644 --- a/domain_compat.h +++ b/domain_compat.h @@ -68,11 +68,6 @@ #define VIR_MIGRATE_AUTO_CONVERGE 1 << 13 #endif -int virDomainCoreDumpWithFormatWrapper(virDomainPtr domain, - const char *to, - unsigned int dumpformat, - unsigned int flags); - /* 1.2.5 */ @@ -88,27 +83,6 @@ int virDomainCoreDumpWithFormatWrapper(virDomainPtr domain, #define VIR_DOMAIN_TIME_SYNC 1 << 0 #endif -int virDomainGetTimeWrapper(virDomainPtr dom, - long long *seconds, - unsigned int *nseconds, - unsigned int flags); - -int virDomainSetTimeWrapper(virDomainPtr dom, - long long seconds, - unsigned int nseconds, - unsigned int flags); - -int virDomainFSFreezeWrapper(virDomainPtr dom, - const char **mountpoints, - unsigned int nmountpoints, - unsigned int flags); - -int virDomainFSThawWrapper(virDomainPtr dom, - const char **mountpoints, - unsigned int nmountpoints, - unsigned int flags); - - /* 1.2.6 */ #ifndef VIR_DOMAIN_BLOCK_COMMIT_ACTIVE @@ -161,17 +135,6 @@ int virDomainFSThawWrapper(virDomainPtr dom, #define VIR_DOMAIN_STATS_STATE 1 << 0 #endif -int virDomainBlockCopyWrapper(virDomainPtr dom, const char *disk, - const char *destxml, - virTypedParameterPtr params, - int nparams, - unsigned int flags); - -int virDomainOpenGraphicsFDWrapper(virDomainPtr dom, - unsigned int idx, - unsigned int flags); - - /* 1.2.9 */ #ifndef VIR_DOMAIN_BLOCK_COMMIT_BANDWIDTH_BYTES @@ -374,13 +337,6 @@ struct _virDomainFSInfo { }; #endif -void virDomainFSInfoFreeWrapper(virDomainFSInfoPtr info); - -int virDomainGetFSInfoWrapper(virDomainPtr dom, - virDomainFSInfoPtr **info, - unsigned int flags); - - /* 1.2.12 */ #ifndef VIR_DOMAIN_DEFINE_VALIDATE @@ -450,24 +406,6 @@ struct _virDomainInterface { }; #endif -int virDomainInterfaceAddressesWrapper(virDomainPtr dom, - virDomainInterfacePtr **ifaces, - unsigned int source, - unsigned int flags); - -void virDomainInterfaceFreeWrapper(virDomainInterfacePtr iface); - -void virDomainIOThreadInfoFreeWrapper(virDomainIOThreadInfoPtr info); - -int virDomainGetIOThreadInfoWrapper(virDomainPtr domain, - virDomainIOThreadInfoPtr **info, - unsigned int flags); -int virDomainPinIOThreadWrapper(virDomainPtr domain, - unsigned int iothread_id, - unsigned char *cpumap, - int maplen, - unsigned int flags); - /* 1.2.15 */ @@ -483,13 +421,6 @@ int virDomainPinIOThreadWrapper(virDomainPtr domain, #define VIR_DOMAIN_EVENT_ID_DEVICE_ADDED 19 #endif -int virDomainAddIOThreadWrapper(virDomainPtr domain, - unsigned int iothread_id, - unsigned int flags); -int virDomainDelIOThreadWrapper(virDomainPtr domain, - unsigned int iothread_id, - unsigned int flags); - /* 1.2.16 */ @@ -497,11 +428,6 @@ int virDomainDelIOThreadWrapper(virDomainPtr domain, #define VIR_DOMAIN_PASSWORD_ENCRYPTED 1 << 0 #endif -int virDomainSetUserPasswordWrapper(virDomainPtr dom, - const char *user, - const char *password, - unsigned int flags); - /* 1.2.17 */ @@ -528,10 +454,6 @@ int virDomainSetUserPasswordWrapper(virDomainPtr dom, #define VIR_DOMAIN_EVENT_UNDEFINED_RENAMED 1 #endif -int virDomainRenameWrapper(virDomainPtr dom, - const char *new_name, - unsigned int flags); - /* 1.3.1 */ @@ -617,18 +539,6 @@ int virDomainRenameWrapper(virDomainPtr dom, #define VIR_DOMAIN_TUNABLE_CPU_GLOBAL_QUOTA "cputune.global_quota" #endif -int virDomainGetPerfEventsWrapper(virDomainPtr dom, - virTypedParameterPtr *params, - int *nparams, - unsigned int flags); -int virDomainSetPerfEventsWrapper(virDomainPtr dom, - virTypedParameterPtr params, - int nparams, - unsigned int flags); -int virDomainMigrateStartPostCopyWrapper(virDomainPtr domain, - unsigned int flags); - - /* 1.3.4 */ #ifndef VIR_MIGRATE_PARAM_COMPRESSION @@ -685,17 +595,6 @@ int virDomainMigrateStartPostCopyWrapper(virDomainPtr domain, #define VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT "auto_converge.increment" #endif -int virDomainGetGuestVcpusWrapper(virDomainPtr domain, - virTypedParameterPtr *params, - unsigned int *nparams, - unsigned int flags); - -int virDomainSetGuestVcpusWrapper(virDomainPtr domain, - const char *cpumap, - int state, - unsigned int flags); - - /* 2.1.0 */ #ifndef VIR_DOMAIN_MEMORY_STAT_USABLE @@ -876,13 +775,6 @@ int virDomainSetGuestVcpusWrapper(virDomainPtr domain, #define VIR_DOMAIN_TUNABLE_BLKDEV_GROUP_NAME "blkdeviotune.group_name" #endif -/* 3.1.0 */ - -int virDomainSetVcpuWrapper(virDomainPtr domain, - const char *cpumap, - int state, - unsigned int flags); - /* 3.2.0 */ #ifndef VIR_MIGRATE_TLS @@ -893,11 +785,6 @@ int virDomainSetVcpuWrapper(virDomainPtr domain, #define VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD 24 #endif -int virDomainSetBlockThresholdWrapper(virDomainPtr domain, - const char *dev, - unsigned long long threshold, - unsigned int flags); - /* 3.3.0 */ #ifndef VIR_DOMAIN_JOB_OPERATION @@ -959,18 +846,6 @@ int virDomainSetBlockThresholdWrapper(virDomainPtr domain, #endif -/* 3.7.0 */ - -int virDomainMigrateGetMaxDowntimeWrapper(virDomainPtr domain, - unsigned long long *downtime, - unsigned int flags); - -char *virDomainManagedSaveGetXMLDescWrapper(virDomainPtr domain, - unsigned int flags); -int virDomainManagedSaveDefineXMLWrapper(virDomainPtr domain, - const char *dxml, - unsigned int flags); - /* 3.9.0 */ #ifndef VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE @@ -1013,11 +888,6 @@ int virDomainManagedSaveDefineXMLWrapper(virDomainPtr domain, #define VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_RESTART 5 #endif -int virDomainSetLifecycleActionWrapper(virDomainPtr domain, - unsigned int type, - unsigned int action, - unsigned int flags); - /* 4.2.0 */ #ifndef VIR_KEYCODE_SET_QNUM @@ -1028,19 +898,8 @@ int virDomainSetLifecycleActionWrapper(virDomainPtr domain, #define VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP 1 #endif - -/* 4.4.0 */ - -int virDomainDetachDeviceAliasWrapper(virDomainPtr domain, - const char *alias, - unsigned int flags); - /* 4.5.0 */ -int virDomainGetLaunchSecurityInfoWrapper(virDomainPtr domain, - virTypedParameterPtr *params, - int *nparams, - unsigned int flags); #ifndef VIR_DOMAIN_LAUNCH_SECURITY_SEV_MEASUREMENT #define VIR_DOMAIN_LAUNCH_SECURITY_SEV_MEASUREMENT "sev-measurement" diff --git a/domain_compat.go b/domain_wrapper.go similarity index 99% rename from domain_compat.go rename to domain_wrapper.go index 345c28a..209af78 100644 --- a/domain_compat.go +++ b/domain_wrapper.go @@ -30,7 +30,7 @@ package libvirt #cgo pkg-config: libvirt #include <libvirt/libvirt.h> #include <assert.h> -#include "domain_compat.h" +#include "domain_wrapper.h" int virDomainCoreDumpWithFormatWrapper(virDomainPtr domain, const char *to, diff --git a/domain_wrapper.h b/domain_wrapper.h new file mode 100644 index 0000000..ab2138e --- /dev/null +++ b/domain_wrapper.h @@ -0,0 +1,157 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (c) 2013 Alex Zorin + * Copyright (C) 2016 Red Hat, Inc. + * + */ + +#ifndef LIBVIRT_GO_DOMAIN_WRAPPER_H__ +#define LIBVIRT_GO_DOMAIN_WRAPPER_H__ + + +int virDomainCoreDumpWithFormatWrapper(virDomainPtr domain, + const char *to, + unsigned int dumpformat, + unsigned int flags); + + +int virDomainGetTimeWrapper(virDomainPtr dom, + long long *seconds, + unsigned int *nseconds, + unsigned int flags); + +int virDomainSetTimeWrapper(virDomainPtr dom, + long long seconds, + unsigned int nseconds, + unsigned int flags); + +int virDomainFSFreezeWrapper(virDomainPtr dom, + const char **mountpoints, + unsigned int nmountpoints, + unsigned int flags); + +int virDomainFSThawWrapper(virDomainPtr dom, + const char **mountpoints, + unsigned int nmountpoints, + unsigned int flags); + + +int virDomainBlockCopyWrapper(virDomainPtr dom, const char *disk, + const char *destxml, + virTypedParameterPtr params, + int nparams, + unsigned int flags); + +int virDomainOpenGraphicsFDWrapper(virDomainPtr dom, + unsigned int idx, + unsigned int flags); + + +void virDomainFSInfoFreeWrapper(virDomainFSInfoPtr info); + +int virDomainGetFSInfoWrapper(virDomainPtr dom, + virDomainFSInfoPtr **info, + unsigned int flags); + + +int virDomainInterfaceAddressesWrapper(virDomainPtr dom, + virDomainInterfacePtr **ifaces, + unsigned int source, + unsigned int flags); + +void virDomainInterfaceFreeWrapper(virDomainInterfacePtr iface); + +void virDomainIOThreadInfoFreeWrapper(virDomainIOThreadInfoPtr info); + +int virDomainGetIOThreadInfoWrapper(virDomainPtr domain, + virDomainIOThreadInfoPtr **info, + unsigned int flags); +int virDomainPinIOThreadWrapper(virDomainPtr domain, + unsigned int iothread_id, + unsigned char *cpumap, + int maplen, + unsigned int flags); + +int virDomainAddIOThreadWrapper(virDomainPtr domain, + unsigned int iothread_id, + unsigned int flags); +int virDomainDelIOThreadWrapper(virDomainPtr domain, + unsigned int iothread_id, + unsigned int flags); + +int virDomainSetUserPasswordWrapper(virDomainPtr dom, + const char *user, + const char *password, + unsigned int flags); + +int virDomainRenameWrapper(virDomainPtr dom, + const char *new_name, + unsigned int flags); +int virDomainGetPerfEventsWrapper(virDomainPtr dom, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags); +int virDomainSetPerfEventsWrapper(virDomainPtr dom, + virTypedParameterPtr params, + int nparams, + unsigned int flags); +int virDomainMigrateStartPostCopyWrapper(virDomainPtr domain, + unsigned int flags); +int virDomainGetGuestVcpusWrapper(virDomainPtr domain, + virTypedParameterPtr *params, + unsigned int *nparams, + unsigned int flags); + +int virDomainSetGuestVcpusWrapper(virDomainPtr domain, + const char *cpumap, + int state, + unsigned int flags); +int virDomainSetVcpuWrapper(virDomainPtr domain, + const char *cpumap, + int state, + unsigned int flags); +int virDomainSetBlockThresholdWrapper(virDomainPtr domain, + const char *dev, + unsigned long long threshold, + unsigned int flags); +int virDomainMigrateGetMaxDowntimeWrapper(virDomainPtr domain, + unsigned long long *downtime, + unsigned int flags); + +char *virDomainManagedSaveGetXMLDescWrapper(virDomainPtr domain, + unsigned int flags); +int virDomainManagedSaveDefineXMLWrapper(virDomainPtr domain, + const char *dxml, + unsigned int flags); +int virDomainSetLifecycleActionWrapper(virDomainPtr domain, + unsigned int type, + unsigned int action, + unsigned int flags); +int virDomainDetachDeviceAliasWrapper(virDomainPtr domain, + const char *alias, + unsigned int flags); +int virDomainGetLaunchSecurityInfoWrapper(virDomainPtr domain, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags); + +#endif /* LIBVIRT_GO_DOMAIN_WRAPPER_H__ */ -- 2.17.1

Pull in the main libvirt headers and compat headers from XXX_wrapper.h so that they are self-contained Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- callbacks_wrapper.go | 2 -- connect.go | 3 --- connect_wrapper.go | 2 -- connect_wrapper.h | 5 +++++ domain.go | 3 --- domain_events.go | 2 -- domain_events_wrapper.go | 2 -- domain_events_wrapper.h | 4 ++++ domain_wrapper.go | 1 - domain_wrapper.h | 3 +++ events.go | 1 - events_wrapper.go | 2 -- events_wrapper.h | 3 +++ lxc.go | 3 --- lxc_wrapper.go | 2 -- lxc_wrapper.h | 4 +++- network.go | 3 --- network_events.go | 2 -- network_events_wrapper.go | 5 +---- network_events_wrapper.h | 4 ++++ network_wrapper.go | 2 -- network_wrapper.h | 4 ++++ node_device_events.go | 2 -- node_device_events_wrapper.go | 5 +---- node_device_events_wrapper.h | 4 ++++ nwfilter_binding.go | 3 --- nwfilter_binding_wrapper.go | 2 -- nwfilter_binding_wrapper.h | 4 ++++ qemu.go | 4 ---- qemu_wrapper.go | 8 ++------ qemu_wrapper.h | 5 +++++ secret_events.go | 2 -- secret_events_wrapper.go | 5 +---- secret_events_wrapper.h | 4 ++++ storage_pool_events.go | 2 -- storage_pool_events_wrapper.go | 3 --- storage_pool_events_wrapper.h | 4 ++++ storage_volume.go | 3 --- storage_volume_wrapper.go | 2 -- storage_volume_wrapper.h | 4 ++++ stream.go | 3 --- stream_wrapper.go | 2 -- stream_wrapper.h | 4 ++++ 43 files changed, 60 insertions(+), 77 deletions(-) diff --git a/callbacks_wrapper.go b/callbacks_wrapper.go index 64caf69..9716bb1 100644 --- a/callbacks_wrapper.go +++ b/callbacks_wrapper.go @@ -28,8 +28,6 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include "callbacks_wrapper.h" extern void freeCallbackId(long); diff --git a/connect.go b/connect.go index 98ab7ab..639225b 100644 --- a/connect.go +++ b/connect.go @@ -36,10 +36,7 @@ import ( /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdlib.h> -#include "connect_compat.h" #include "connect_wrapper.h" */ import "C" diff --git a/connect_wrapper.go b/connect_wrapper.go index cbafc53..82f0ba7 100644 --- a/connect_wrapper.go +++ b/connect_wrapper.go @@ -28,8 +28,6 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <assert.h> #include "connect_wrapper.h" #include "callbacks_wrapper.h" diff --git a/connect_wrapper.h b/connect_wrapper.h index 7af88f1..0fdde02 100644 --- a/connect_wrapper.h +++ b/connect_wrapper.h @@ -26,6 +26,11 @@ #ifndef LIBVIRT_GO_CONNECT_WRAPPER_H__ #define LIBVIRT_GO_CONNECT_WRAPPER_H__ + +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "connect_compat.h" + void closeCallbackHelper(virConnectPtr conn, int reason, void *opaque); int virConnectRegisterCloseCallbackHelper(virConnectPtr c, virConnectCloseFunc cb, long goCallbackId); diff --git a/domain.go b/domain.go index 7253c67..fad2a41 100644 --- a/domain.go +++ b/domain.go @@ -28,10 +28,7 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdlib.h> -#include "domain_compat.h" #include "domain_wrapper.h" */ import "C" diff --git a/domain_events.go b/domain_events.go index 5d21b01..68dc301 100644 --- a/domain_events.go +++ b/domain_events.go @@ -33,9 +33,7 @@ import ( /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> #include "domain_events_wrapper.h" -#include "domain_compat.h" */ import "C" diff --git a/domain_events_wrapper.go b/domain_events_wrapper.go index 799945b..07b9418 100644 --- a/domain_events_wrapper.go +++ b/domain_events_wrapper.go @@ -28,8 +28,6 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include "domain_events_wrapper.h" #include "callbacks_wrapper.h" #include <stdint.h> diff --git a/domain_events_wrapper.h b/domain_events_wrapper.h index 55cf48e..a9c98c1 100644 --- a/domain_events_wrapper.h +++ b/domain_events_wrapper.h @@ -27,6 +27,10 @@ #ifndef LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "domain_compat.h" + void domainEventLifecycleCallbackHelper(virConnectPtr c, virDomainPtr d, int event, int detail, void* data); diff --git a/domain_wrapper.go b/domain_wrapper.go index 209af78..1596ae5 100644 --- a/domain_wrapper.go +++ b/domain_wrapper.go @@ -28,7 +28,6 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> #include <assert.h> #include "domain_wrapper.h" diff --git a/domain_wrapper.h b/domain_wrapper.h index ab2138e..7f857d7 100644 --- a/domain_wrapper.h +++ b/domain_wrapper.h @@ -27,6 +27,9 @@ #ifndef LIBVIRT_GO_DOMAIN_WRAPPER_H__ #define LIBVIRT_GO_DOMAIN_WRAPPER_H__ +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "domain_compat.h" int virDomainCoreDumpWithFormatWrapper(virDomainPtr domain, const char *to, diff --git a/events.go b/events.go index 3f8d3a9..217b033 100644 --- a/events.go +++ b/events.go @@ -28,7 +28,6 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> #include <stdint.h> #include "events_wrapper.h" */ diff --git a/events_wrapper.go b/events_wrapper.go index 6e3416f..ffcffb9 100644 --- a/events_wrapper.go +++ b/events_wrapper.go @@ -28,8 +28,6 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdint.h> #include <stdlib.h> #include "events_wrapper.h" diff --git a/events_wrapper.h b/events_wrapper.h index 8420909..67b3624 100644 --- a/events_wrapper.h +++ b/events_wrapper.h @@ -27,6 +27,9 @@ #ifndef LIBVIRT_GO_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_EVENTS_WRAPPER_H__ +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> + int virEventAddHandleWrapper(int fd, int events, int callbackID); int virEventAddTimeoutWrapper(int freq, int callbackID); void virEventRegisterImplWrapper(void); diff --git a/lxc.go b/lxc.go index 07ed7ff..ec685b8 100644 --- a/lxc.go +++ b/lxc.go @@ -33,9 +33,6 @@ package libvirt // Can't rely on pkg-config for libvirt-lxc since it was not // installed until 2.6.0 onwards #cgo LDFLAGS: -lvirt-lxc -#include <libvirt/libvirt.h> -#include <libvirt/libvirt-lxc.h> -#include <libvirt/virterror.h> #include <stdlib.h> #include <string.h> #include "lxc_wrapper.h" diff --git a/lxc_wrapper.go b/lxc_wrapper.go index 4a49348..0968870 100644 --- a/lxc_wrapper.go +++ b/lxc_wrapper.go @@ -31,8 +31,6 @@ package libvirt // Can't rely on pkg-config for libvirt-lxc since it was not // installed until 2.6.0 onwards #cgo LDFLAGS: -lvirt-lxc -#include <libvirt/libvirt.h> -#include <libvirt/libvirt-lxc.h> #include <assert.h> #include "lxc_wrapper.h" diff --git a/lxc_wrapper.h b/lxc_wrapper.h index 4004baf..4edef2a 100644 --- a/lxc_wrapper.h +++ b/lxc_wrapper.h @@ -27,7 +27,9 @@ #ifndef LIBVIRT_GO_LXC_COMPAT_H__ #define LIBVIRT_GO_LXC_COMPAT_H__ -/* 2.0.0 */ +#include <libvirt/libvirt.h> +#include <libvirt/libvirt-lxc.h> +#include <libvirt/virterror.h> int virDomainLxcEnterCGroupWrapper(virDomainPtr domain, unsigned int flags); diff --git a/network.go b/network.go index 26bf24e..015fe5e 100644 --- a/network.go +++ b/network.go @@ -28,10 +28,7 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdlib.h> -#include "network_compat.h" #include "network_wrapper.h" */ import "C" diff --git a/network_events.go b/network_events.go index fee2253..7414608 100644 --- a/network_events.go +++ b/network_events.go @@ -33,8 +33,6 @@ import ( /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include "network_compat.h" #include "network_events_wrapper.h" */ import "C" diff --git a/network_events_wrapper.go b/network_events_wrapper.go index 27bf555..a8a5d81 100644 --- a/network_events_wrapper.go +++ b/network_events_wrapper.go @@ -28,13 +28,10 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <assert.h> -#include "network_compat.h" +#include <stdint.h> #include "network_events_wrapper.h" #include "callbacks_wrapper.h" -#include <stdint.h> extern void networkEventLifecycleCallback(virConnectPtr, virNetworkPtr, int, int, int); void networkEventLifecycleCallbackHelper(virConnectPtr c, virNetworkPtr d, diff --git a/network_events_wrapper.h b/network_events_wrapper.h index 8388467..8b08d00 100644 --- a/network_events_wrapper.h +++ b/network_events_wrapper.h @@ -27,6 +27,10 @@ #ifndef LIBVIRT_GO_NETWORK_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_NETWORK_EVENTS_WRAPPER_H__ +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "network_compat.h" + void networkEventLifecycleCallbackHelper(virConnectPtr c, virNetworkPtr d, int event, int detail, void* data); diff --git a/network_wrapper.go b/network_wrapper.go index bd58754..5c797e0 100644 --- a/network_wrapper.go +++ b/network_wrapper.go @@ -28,9 +28,7 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> #include <assert.h> -#include "network_compat.h" #include "network_wrapper.h" void virNetworkDHCPLeaseFreeWrapper(virNetworkDHCPLeasePtr lease) diff --git a/network_wrapper.h b/network_wrapper.h index 762fe3b..66fb730 100644 --- a/network_wrapper.h +++ b/network_wrapper.h @@ -27,6 +27,10 @@ #ifndef LIBVIRT_GO_NETWORK_WRAPPER_H__ #define LIBVIRT_GO_NETWORK_WRAPPER_H__ +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "network_compat.h" + void virNetworkDHCPLeaseFreeWrapper(virNetworkDHCPLeasePtr lease); int virNetworkGetDHCPLeasesWrapper(virNetworkPtr network, diff --git a/node_device_events.go b/node_device_events.go index 969a134..5d66687 100644 --- a/node_device_events.go +++ b/node_device_events.go @@ -33,8 +33,6 @@ import ( /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include "node_device_compat.h" #include "node_device_events_wrapper.h" */ import "C" diff --git a/node_device_events_wrapper.go b/node_device_events_wrapper.go index 20441f4..a8b0c93 100644 --- a/node_device_events_wrapper.go +++ b/node_device_events_wrapper.go @@ -28,13 +28,10 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <assert.h> -#include "node_device_compat.h" +#include <stdint.h> #include "node_device_events_wrapper.h" #include "callbacks_wrapper.h" -#include <stdint.h> extern void nodeDeviceEventLifecycleCallback(virConnectPtr, virNodeDevicePtr, int, int, int); void nodeDeviceEventLifecycleCallbackHelper(virConnectPtr c, virNodeDevicePtr d, diff --git a/node_device_events_wrapper.h b/node_device_events_wrapper.h index a9576e7..04cb71b 100644 --- a/node_device_events_wrapper.h +++ b/node_device_events_wrapper.h @@ -27,6 +27,10 @@ #ifndef LIBVIRT_GO_NODE_DEVICE_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_NODE_DEVICE_EVENTS_WRAPPER_H__ +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "node_device_compat.h" + void nodeDeviceEventLifecycleCallbackHelper(virConnectPtr c, virNodeDevicePtr d, int event, int detail, void* data); diff --git a/nwfilter_binding.go b/nwfilter_binding.go index daab598..722303b 100644 --- a/nwfilter_binding.go +++ b/nwfilter_binding.go @@ -27,10 +27,7 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdlib.h> -#include "nwfilter_binding_compat.h" #include "nwfilter_binding_wrapper.h" */ import "C" diff --git a/nwfilter_binding_wrapper.go b/nwfilter_binding_wrapper.go index 4d0e086..fdafaef 100644 --- a/nwfilter_binding_wrapper.go +++ b/nwfilter_binding_wrapper.go @@ -27,9 +27,7 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> #include <assert.h> -#include "nwfilter_binding_compat.h" #include "nwfilter_binding_wrapper.h" const char *virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding) diff --git a/nwfilter_binding_wrapper.h b/nwfilter_binding_wrapper.h index be09dca..895075f 100644 --- a/nwfilter_binding_wrapper.h +++ b/nwfilter_binding_wrapper.h @@ -26,6 +26,10 @@ #ifndef LIBVIRT_GO_NWFILTER_BINDING_WRAPPER_H__ #define LIBVIRT_GO_NWFILTER_BINDING_WRAPPER_H__ +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "nwfilter_binding_compat.h" + const char *virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding); const char *virNWFilterBindingGetFilterNameWrapper(virNWFilterBindingPtr binding); char *virNWFilterBindingGetXMLDescWrapper(virNWFilterBindingPtr binding, diff --git a/qemu.go b/qemu.go index 678991f..3631b00 100644 --- a/qemu.go +++ b/qemu.go @@ -33,11 +33,7 @@ package libvirt // Can't rely on pkg-config for libvirt-qemu since it was not // installed until 2.6.0 onwards #cgo LDFLAGS: -lvirt-qemu -#include <libvirt/libvirt.h> -#include <libvirt/libvirt-qemu.h> -#include <libvirt/virterror.h> #include <stdlib.h> -#include "qemu_compat.h" #include "qemu_wrapper.h" */ import "C" diff --git a/qemu_wrapper.go b/qemu_wrapper.go index ff837a0..1dda84d 100644 --- a/qemu_wrapper.go +++ b/qemu_wrapper.go @@ -31,14 +31,10 @@ package libvirt // Can't rely on pkg-config for libvirt-qemu since it was not // installed until 2.6.0 onwards #cgo LDFLAGS: -lvirt-qemu -#include <libvirt/libvirt.h> -#include <libvirt/libvirt-qemu.h> -#include <libvirt/virterror.h> -#include "qemu_compat.h" -#include "qemu_wrapper.h" -#include "callbacks_wrapper.h" #include <assert.h> #include <stdint.h> +#include "qemu_wrapper.h" +#include "callbacks_wrapper.h" extern void domainQemuMonitorEventCallback(virConnectPtr, virDomainPtr, const char *, long long, unsigned int, const char *, int); diff --git a/qemu_wrapper.h b/qemu_wrapper.h index 3f4dd6a..228e444 100644 --- a/qemu_wrapper.h +++ b/qemu_wrapper.h @@ -27,6 +27,11 @@ #ifndef LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ +#include <libvirt/libvirt.h> +#include <libvirt/libvirt-qemu.h> +#include <libvirt/virterror.h> +#include "qemu_compat.h" + void domainQemuMonitorEventCallbackHelper(virConnectPtr c, virDomainPtr d, const char *event, long long secs, unsigned int micros, const char *details, void *data); diff --git a/secret_events.go b/secret_events.go index 5860033..d24146f 100644 --- a/secret_events.go +++ b/secret_events.go @@ -33,8 +33,6 @@ import ( /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include "secret_compat.h" #include "secret_events_wrapper.h" */ import "C" diff --git a/secret_events_wrapper.go b/secret_events_wrapper.go index 6e1ef21..04b5f4f 100644 --- a/secret_events_wrapper.go +++ b/secret_events_wrapper.go @@ -28,13 +28,10 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <assert.h> -#include "secret_compat.h" +#include <stdint.h> #include "secret_events_wrapper.h" #include "callbacks_wrapper.h" -#include <stdint.h> extern void secretEventLifecycleCallback(virConnectPtr, virSecretPtr, int, int, int); void secretEventLifecycleCallbackHelper(virConnectPtr c, virSecretPtr d, diff --git a/secret_events_wrapper.h b/secret_events_wrapper.h index f388542..6758b54 100644 --- a/secret_events_wrapper.h +++ b/secret_events_wrapper.h @@ -27,6 +27,10 @@ #ifndef LIBVIRT_GO_SECRET_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_SECRET_EVENTS_WRAPPER_H__ +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "secret_compat.h" + void secretEventLifecycleCallbackHelper(virConnectPtr c, virSecretPtr d, int event, int detail, void* data); void secretEventGenericCallbackHelper(virConnectPtr c, virSecretPtr d, diff --git a/storage_pool_events.go b/storage_pool_events.go index 6bd4a2f..15fb90b 100644 --- a/storage_pool_events.go +++ b/storage_pool_events.go @@ -33,8 +33,6 @@ import ( /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include "storage_pool_compat.h" #include "storage_pool_events_wrapper.h" */ import "C" diff --git a/storage_pool_events_wrapper.go b/storage_pool_events_wrapper.go index d03f6c5..df9b092 100644 --- a/storage_pool_events_wrapper.go +++ b/storage_pool_events_wrapper.go @@ -28,10 +28,7 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <assert.h> -#include "storage_pool_compat.h" #include "storage_pool_events_wrapper.h" #include "callbacks_wrapper.h" #include <stdint.h> diff --git a/storage_pool_events_wrapper.h b/storage_pool_events_wrapper.h index 2420dee..f178951 100644 --- a/storage_pool_events_wrapper.h +++ b/storage_pool_events_wrapper.h @@ -27,6 +27,10 @@ #ifndef LIBVIRT_GO_STORAGE_POOL_EVENTS_WRAPPER_H__ #define LIBVIRT_GO_STORAGE_POOL_EVENTS_WRAPPER_H__ +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "storage_pool_compat.h" + void storagePoolEventLifecycleCallbackHelper(virConnectPtr c, virStoragePoolPtr d, int event, int detail, void* data); void storagePoolEventGenericCallbackHelper(virConnectPtr c, virStoragePoolPtr d, diff --git a/storage_volume.go b/storage_volume.go index 3526ed4..d913c59 100644 --- a/storage_volume.go +++ b/storage_volume.go @@ -28,10 +28,7 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdlib.h> -#include "storage_volume_compat.h" #include "storage_volume_wrapper.h" */ import "C" diff --git a/storage_volume_wrapper.go b/storage_volume_wrapper.go index 62c5df8..63cc2b5 100644 --- a/storage_volume_wrapper.go +++ b/storage_volume_wrapper.go @@ -28,9 +28,7 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> #include <assert.h> -#include "storage_volume_compat.h" #include "storage_volume_wrapper.h" int virStorageVolGetInfoFlagsWrapper(virStorageVolPtr vol, diff --git a/storage_volume_wrapper.h b/storage_volume_wrapper.h index a97a59a..77d75e0 100644 --- a/storage_volume_wrapper.h +++ b/storage_volume_wrapper.h @@ -27,6 +27,10 @@ #ifndef LIBVIRT_GO_STORAGE_VOLUME_WRAPPER_H__ #define LIBVIRT_GO_STORAGE_VOLUME_WRAPPER_H__ +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "storage_volume_compat.h" + int virStorageVolGetInfoFlagsWrapper(virStorageVolPtr vol, virStorageVolInfoPtr info, unsigned int flags); diff --git a/stream.go b/stream.go index 3fc89ab..c5c1ef7 100644 --- a/stream.go +++ b/stream.go @@ -28,11 +28,8 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdlib.h> #include "stream_wrapper.h" -#include "stream_compat.h" */ import "C" import ( diff --git a/stream_wrapper.go b/stream_wrapper.go index 419bb41..90cc110 100644 --- a/stream_wrapper.go +++ b/stream_wrapper.go @@ -28,8 +28,6 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdint.h> #include <stdlib.h> #include <assert.h> diff --git a/stream_wrapper.h b/stream_wrapper.h index cfa6c37..b8417d3 100644 --- a/stream_wrapper.h +++ b/stream_wrapper.h @@ -27,6 +27,10 @@ #ifndef LIBVIRT_GO_STREAM_WRAPPER_H__ #define LIBVIRT_GO_STREAM_WRAPPER_H__ +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "stream_compat.h" + int virStreamSendAllWrapper(virStreamPtr st, int callbackID); int virStreamRecvAllWrapper(virStreamPtr st, int callbackID); int virStreamSparseSendAllWrapper(virStreamPtr st, int callbackID, int holeCallbackID, int skipCallbackID); -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- domain_snapshot_wrapper.go | 34 ++++++++++++++++++++++++++++++++++ domain_snapshot_wrapper.h | 32 ++++++++++++++++++++++++++++++++ interface_wrapper.go | 34 ++++++++++++++++++++++++++++++++++ interface_wrapper.h | 32 ++++++++++++++++++++++++++++++++ node_device_wrapper.go | 34 ++++++++++++++++++++++++++++++++++ node_device_wrapper.h | 33 +++++++++++++++++++++++++++++++++ nwfilter_wrapper.go | 34 ++++++++++++++++++++++++++++++++++ nwfilter_wrapper.h | 32 ++++++++++++++++++++++++++++++++ secret_wrapper.go | 34 ++++++++++++++++++++++++++++++++++ secret_wrapper.h | 33 +++++++++++++++++++++++++++++++++ storage_pool_wrapper.go | 34 ++++++++++++++++++++++++++++++++++ storage_pool_wrapper.h | 33 +++++++++++++++++++++++++++++++++ 12 files changed, 399 insertions(+) create mode 100644 domain_snapshot_wrapper.go create mode 100644 domain_snapshot_wrapper.h create mode 100644 interface_wrapper.go create mode 100644 interface_wrapper.h create mode 100644 node_device_wrapper.go create mode 100644 node_device_wrapper.h create mode 100644 nwfilter_wrapper.go create mode 100644 nwfilter_wrapper.h create mode 100644 secret_wrapper.go create mode 100644 secret_wrapper.h create mode 100644 storage_pool_wrapper.go create mode 100644 storage_pool_wrapper.h diff --git a/domain_snapshot_wrapper.go b/domain_snapshot_wrapper.go new file mode 100644 index 0000000..75e3ea5 --- /dev/null +++ b/domain_snapshot_wrapper.go @@ -0,0 +1,34 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +package libvirt + +/* +#cgo pkg-config: libvirt +#include <assert.h> +#include "domain_snapshot_wrapper.h" + +*/ +import "C" diff --git a/domain_snapshot_wrapper.h b/domain_snapshot_wrapper.h new file mode 100644 index 0000000..45464ce --- /dev/null +++ b/domain_snapshot_wrapper.h @@ -0,0 +1,32 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +#ifndef LIBVIRT_GO_DOMAIN_SNAPSHOT_WRAPPER_H__ +#define LIBVIRT_GO_DOMAIN_SNAPSHOT_WRAPPER_H__ + +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> + +#endif /* LIBVIRT_GO_DOMAIN_SNAPSHOT_WRAPPER_H__ */ diff --git a/interface_wrapper.go b/interface_wrapper.go new file mode 100644 index 0000000..c9618fb --- /dev/null +++ b/interface_wrapper.go @@ -0,0 +1,34 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +package libvirt + +/* +#cgo pkg-config: libvirt +#include <assert.h> +#include "interface_wrapper.h" + +*/ +import "C" diff --git a/interface_wrapper.h b/interface_wrapper.h new file mode 100644 index 0000000..8b1f8f1 --- /dev/null +++ b/interface_wrapper.h @@ -0,0 +1,32 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +#ifndef LIBVIRT_GO_INTERFACE_WRAPPER_H__ +#define LIBVIRT_GO_INTERFACE_WRAPPER_H__ + +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> + +#endif /* LIBVIRT_GO_INTERFACE_WRAPPER_H__ */ diff --git a/node_device_wrapper.go b/node_device_wrapper.go new file mode 100644 index 0000000..bf8f987 --- /dev/null +++ b/node_device_wrapper.go @@ -0,0 +1,34 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +package libvirt + +/* +#cgo pkg-config: libvirt +#include <assert.h> +#include "node_device_wrapper.h" + +*/ +import "C" diff --git a/node_device_wrapper.h b/node_device_wrapper.h new file mode 100644 index 0000000..22fc791 --- /dev/null +++ b/node_device_wrapper.h @@ -0,0 +1,33 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +#ifndef LIBVIRT_GO_NODE_DEVICE_WRAPPER_H__ +#define LIBVIRT_GO_NODE_DEVICE_WRAPPER_H__ + +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "node_device_compat.h" + +#endif /* LIBVIRT_GO_NODE_DEVICE_WRAPPER_H__ */ diff --git a/nwfilter_wrapper.go b/nwfilter_wrapper.go new file mode 100644 index 0000000..78d0487 --- /dev/null +++ b/nwfilter_wrapper.go @@ -0,0 +1,34 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +package libvirt + +/* +#cgo pkg-config: libvirt +#include <assert.h> +#include "nwfilter_wrapper.h" + +*/ +import "C" diff --git a/nwfilter_wrapper.h b/nwfilter_wrapper.h new file mode 100644 index 0000000..c470366 --- /dev/null +++ b/nwfilter_wrapper.h @@ -0,0 +1,32 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +#ifndef LIBVIRT_GO_NWFILTER_WRAPPER_H__ +#define LIBVIRT_GO_NWFILTER_WRAPPER_H__ + +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> + +#endif /* LIBVIRT_GO_NWFILTER_WRAPPER_H__ */ diff --git a/secret_wrapper.go b/secret_wrapper.go new file mode 100644 index 0000000..1bcc74d --- /dev/null +++ b/secret_wrapper.go @@ -0,0 +1,34 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +package libvirt + +/* +#cgo pkg-config: libvirt +#include <assert.h> +#include "secret_wrapper.h" + +*/ +import "C" diff --git a/secret_wrapper.h b/secret_wrapper.h new file mode 100644 index 0000000..478c7d4 --- /dev/null +++ b/secret_wrapper.h @@ -0,0 +1,33 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +#ifndef LIBVIRT_GO_SECRET_WRAPPER_H__ +#define LIBVIRT_GO_SECRET_WRAPPER_H__ + +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "secret_compat.h" + +#endif /* LIBVIRT_GO_SECRET_WRAPPER_H__ */ diff --git a/storage_pool_wrapper.go b/storage_pool_wrapper.go new file mode 100644 index 0000000..cd3c1bc --- /dev/null +++ b/storage_pool_wrapper.go @@ -0,0 +1,34 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +package libvirt + +/* +#cgo pkg-config: libvirt +#include <assert.h> +#include "storage_pool_wrapper.h" + +*/ +import "C" diff --git a/storage_pool_wrapper.h b/storage_pool_wrapper.h new file mode 100644 index 0000000..3e2f60f --- /dev/null +++ b/storage_pool_wrapper.h @@ -0,0 +1,33 @@ +/* + * This file is part of the libvirt-go project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Copyright (C) 2018 Red Hat, Inc. + * + */ + +#ifndef LIBVIRT_GO_STORAGE_POOL_WRAPPER_H__ +#define LIBVIRT_GO_STORAGE_POOL_WRAPPER_H__ + +#include <libvirt/libvirt.h> +#include <libvirt/virterror.h> +#include "storage_pool_compat.h" + +#endif /* LIBVIRT_GO_STORAGE_POOL_WRAPPER_H__ */ -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- connect.go | 2 +- connect_wrapper.go | 2 +- connect_wrapper.h | 169 +++++++++++--------- domain_events_wrapper.h | 258 +++++++++++++++++++----------- domain_snapshot.go | 3 +- domain_wrapper.h | 290 ++++++++++++++++++++-------------- events_wrapper.h | 39 ++++- interface.go | 3 +- lxc_wrapper.h | 5 +- network_events_wrapper.h | 32 ++-- network_wrapper.h | 12 +- node_device.go | 4 +- node_device_events_wrapper.h | 29 ++-- nwfilter.go | 3 +- nwfilter_binding_wrapper.h | 25 ++- qemu_wrapper.h | 26 ++- secret.go | 4 +- secret_events_wrapper.h | 26 ++- storage_pool.go | 4 +- storage_pool_events_wrapper.h | 29 ++-- storage_volume_wrapper.h | 7 +- stream_wrapper.h | 57 ++++--- 22 files changed, 638 insertions(+), 391 deletions(-) diff --git a/connect.go b/connect.go index 639225b..5ea8c48 100644 --- a/connect.go +++ b/connect.go @@ -395,7 +395,7 @@ func NewConnectWithAuth(uri string, auth *ConnectAuth, flags ConnectFlags) (*Con callbackID := registerCallbackId(auth.Callback) - ptr := C.virConnectOpenAuthWrap(cUri, &ccredtype[0], C.uint(len(auth.CredType)), C.int(callbackID), C.uint(flags)) + ptr := C.virConnectOpenAuthWrapper(cUri, &ccredtype[0], C.uint(len(auth.CredType)), C.int(callbackID), C.uint(flags)) freeCallbackId(callbackID) if ptr == nil { return nil, GetLastError() diff --git a/connect_wrapper.go b/connect_wrapper.go index 82f0ba7..d714fb9 100644 --- a/connect_wrapper.go +++ b/connect_wrapper.go @@ -54,7 +54,7 @@ int connectAuthCallbackHelper(virConnectCredentialPtr cred, unsigned int ncred, return connectAuthCallback(cred, ncred, *callbackID); } -virConnectPtr virConnectOpenAuthWrap(const char *name, int *credtype, uint ncredtype, int callbackID, unsigned int flags) +virConnectPtr virConnectOpenAuthWrapper(const char *name, int *credtype, uint ncredtype, int callbackID, unsigned int flags) { virConnectAuth auth = { .credtype = credtype, diff --git a/connect_wrapper.h b/connect_wrapper.h index 0fdde02..726d29c 100644 --- a/connect_wrapper.h +++ b/connect_wrapper.h @@ -31,84 +31,111 @@ #include <libvirt/virterror.h> #include "connect_compat.h" -void closeCallbackHelper(virConnectPtr conn, int reason, void *opaque); -int virConnectRegisterCloseCallbackHelper(virConnectPtr c, virConnectCloseFunc cb, long goCallbackId); - -virConnectPtr virConnectOpenAuthWrap(const char *name, int *credtype, uint ncredtype, int callbackID, unsigned int flags); - -int virNodeGetFreePagesWrapper(virConnectPtr conn, - unsigned int npages, - unsigned int *pages, - int startcell, - unsigned int cellcount, - unsigned long long *counts, - unsigned int flags); - -char * virConnectGetDomainCapabilitiesWrapper(virConnectPtr conn, - const char *emulatorbin, - const char *arch, - const char *machine, - const char *virttype, - unsigned int flags); - -int virConnectGetAllDomainStatsWrapper(virConnectPtr conn, - unsigned int stats, - virDomainStatsRecordPtr **retStats, +void +closeCallbackHelper(virConnectPtr conn, + int reason, + void *opaque); + +int +virConnectRegisterCloseCallbackHelper(virConnectPtr c, + virConnectCloseFunc cb, + long goCallbackId); + +virConnectPtr +virConnectOpenAuthWrapper(const char *name, + int *credtype, + uint ncredtype, + int callbackID, + unsigned int flags); + +int +virNodeGetFreePagesWrapper(virConnectPtr conn, + unsigned int npages, + unsigned int *pages, + int startcell, + unsigned int cellcount, + unsigned long long *counts, + unsigned int flags); + +char * +virConnectGetDomainCapabilitiesWrapper(virConnectPtr conn, + const char *emulatorbin, + const char *arch, + const char *machine, + const char *virttype, unsigned int flags); -int virDomainListGetStatsWrapper(virDomainPtr *doms, - unsigned int stats, - virDomainStatsRecordPtr **retStats, - unsigned int flags); +int +virConnectGetAllDomainStatsWrapper(virConnectPtr conn, + unsigned int stats, + virDomainStatsRecordPtr **retStats, + unsigned int flags); -void virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats); +int -int virNodeAllocPagesWrapper(virConnectPtr conn, - unsigned int npages, - unsigned int *pageSizes, - unsigned long long *pageCounts, - int startCell, - unsigned int cellCount, +virDomainListGetStatsWrapper(virDomainPtr *doms, + unsigned int stats, + virDomainStatsRecordPtr **retStats, unsigned int flags); -virDomainPtr virDomainDefineXMLFlagsWrapper(virConnectPtr conn, - const char *xml, - unsigned int flags); - -virStoragePoolPtr virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, - const char *path); - -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); - -int virConnectCompareHypervisorCPUWrapper(virConnectPtr conn, - const char *emulator, - const char *arch, - const char *machine, - const char *virttype, - const char *xmlCPU, - unsigned int flags); - -int virNodeGetSEVInfoWrapper(virConnectPtr conn, - virTypedParameterPtr *params, - int *nparams, - unsigned int flags); - -int virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, - virNWFilterBindingPtr **bindings, - unsigned int flags); +void +virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats); + +int +virNodeAllocPagesWrapper(virConnectPtr conn, + unsigned int npages, + unsigned int *pageSizes, + unsigned long long *pageCounts, + int startCell, + unsigned int cellCount, + unsigned int flags); + +virDomainPtr +virDomainDefineXMLFlagsWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags); -virNWFilterBindingPtr virNWFilterBindingCreateXMLWrapper(virConnectPtr conn, - const char *xml, - unsigned int flags); +virStoragePoolPtr +virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, + const char *path); + +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); -virNWFilterBindingPtr virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, - const char *portdev); +int +virConnectCompareHypervisorCPUWrapper(virConnectPtr conn, + const char *emulator, + const char *arch, + const char *machine, + const char *virttype, + const char *xmlCPU, + unsigned int flags); + +int +virNodeGetSEVInfoWrapper(virConnectPtr conn, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags); + +int +virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, + virNWFilterBindingPtr **bindings, + unsigned int flags); + +virNWFilterBindingPtr +virNWFilterBindingCreateXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags); + +virNWFilterBindingPtr +virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, + const char *portdev); #endif /* LIBVIRT_GO_CONNECT_WRAPPER_H__ */ diff --git a/domain_events_wrapper.h b/domain_events_wrapper.h index a9c98c1..4016497 100644 --- a/domain_events_wrapper.h +++ b/domain_events_wrapper.h @@ -31,98 +31,172 @@ #include <libvirt/virterror.h> #include "domain_compat.h" -void domainEventLifecycleCallbackHelper(virConnectPtr c, virDomainPtr d, - int event, int detail, void* data); - -void domainEventGenericCallbackHelper(virConnectPtr c, virDomainPtr d, void* data); - -void domainEventRTCChangeCallbackHelper(virConnectPtr c, virDomainPtr d, - long long utcoffset, void* data); - -void domainEventWatchdogCallbackHelper(virConnectPtr c, virDomainPtr d, - int action, void* data); - -void domainEventIOErrorCallbackHelper(virConnectPtr c, virDomainPtr d, - const char *srcPath, const char *devAlias, - int action, void* data); - -void domainEventGraphicsCallbackHelper(virConnectPtr c, virDomainPtr d, - int phase, const virDomainEventGraphicsAddress *local, - const virDomainEventGraphicsAddress *remote, - const char *authScheme, - const virDomainEventGraphicsSubject *subject, void* data); - -void domainEventIOErrorReasonCallbackHelper(virConnectPtr c, virDomainPtr d, - const char *srcPath, const char *devAlias, - int action, const char *reason, void* data); - -void domainEventBlockJobCallbackHelper(virConnectPtr c, virDomainPtr d, - const char *disk, int type, int status, void* data); - -void domainEventDiskChangeCallbackHelper(virConnectPtr c, virDomainPtr d, - const char *oldSrcPath, const char *newSrcPath, - const char *devAlias, int reason, void* data); - -void domainEventTrayChangeCallbackHelper(virConnectPtr c, virDomainPtr d, - const char *devAlias, int reason, void* data); - -void domainEventPMSuspendCallbackHelper(virConnectPtr c, virDomainPtr d, - int reason, void* data); - -void domainEventPMWakeupCallbackHelper(virConnectPtr c, virDomainPtr d, - int reason, void* data); - -void domainEventPMSuspendDiskCallbackHelper(virConnectPtr c, virDomainPtr d, - int reason, void* data); - -void domainEventBalloonChangeCallbackHelper(virConnectPtr c, virDomainPtr d, - unsigned long long actual, void* data); - -void domainEventDeviceRemovedCallbackHelper(virConnectPtr c, virDomainPtr d, - const char *devAlias, void* data); -void domainEventTunableCallbackHelper(virConnectPtr conn, - virDomainPtr dom, - virTypedParameterPtr params, - int nparams, - void *opaque); -void domainEventAgentLifecycleCallbackHelper(virConnectPtr conn, - virDomainPtr dom, - int state, - int reason, - void *opaque); -void domainEventDeviceAddedCallbackHelper(virConnectPtr conn, - virDomainPtr dom, - const char *devAlias, - void *opaque); -void domainEventMigrationIterationCallbackHelper(virConnectPtr conn, - virDomainPtr dom, - int iteration, - void *opaque); -void domainEventJobCompletedCallbackHelper(virConnectPtr conn, - virDomainPtr dom, - virTypedParameterPtr params, - int nparams, - void *opaque); -void domainEventDeviceRemovalFailedCallbackHelper(virConnectPtr conn, - virDomainPtr dom, - const char *devAlias, - void *opaque); -void domainEventMetadataChangeCallbackHelper(virConnectPtr conn, - virDomainPtr dom, - int type, - const char *nsuri, - void *opaque); -void domainEventBlockThresholdCallbackHelper(virConnectPtr conn, - virDomainPtr dom, - const char *dev, - const char *path, - unsigned long long threshold, - unsigned long long excess, - void *opaque); - -int virConnectDomainEventRegisterAnyWrapper(virConnectPtr c, virDomainPtr d, - int eventID, virConnectDomainEventGenericCallback cb, - long goCallbackId); +void +domainEventLifecycleCallbackHelper(virConnectPtr c, + virDomainPtr d, + int event, + int detail, + void *data); + +void +domainEventGenericCallbackHelper(virConnectPtr c, + virDomainPtr d, + void *data); + +void +domainEventRTCChangeCallbackHelper(virConnectPtr c, + virDomainPtr d, + long long utcoffset, + void *data); + +void +domainEventWatchdogCallbackHelper(virConnectPtr c, + virDomainPtr d, + int action, + void *data); + +void +domainEventIOErrorCallbackHelper(virConnectPtr c, + virDomainPtr d, + const char *srcPath, + const char *devAlias, + int action, + void *data); + +void +domainEventGraphicsCallbackHelper(virConnectPtr c, + virDomainPtr d, + int phase, + const virDomainEventGraphicsAddress *local, + const virDomainEventGraphicsAddress *remote, + const char *authScheme, + const virDomainEventGraphicsSubject *subject, + void *data); + +void +domainEventIOErrorReasonCallbackHelper(virConnectPtr c, + virDomainPtr d, + const char *srcPath, + const char *devAlias, + int action, + const char *reason, + void *data); + +void +domainEventBlockJobCallbackHelper(virConnectPtr c, + virDomainPtr d, + const char *disk, + int type, + int status, + void *data); + +void +domainEventDiskChangeCallbackHelper(virConnectPtr c, + virDomainPtr d, + const char *oldSrcPath, + const char *newSrcPath, + const char *devAlias, + int reason, + void *data); + +void +domainEventTrayChangeCallbackHelper(virConnectPtr c, + virDomainPtr d, + const char *devAlias, + int reason, + void *data); + +void +domainEventPMSuspendCallbackHelper(virConnectPtr c, + virDomainPtr d, + int reason, + void *data); + +void +domainEventPMWakeupCallbackHelper(virConnectPtr c, + virDomainPtr d, + int reason, + void *data); + +void +domainEventPMSuspendDiskCallbackHelper(virConnectPtr c, + virDomainPtr d, + int reason, + void *data); + +void +domainEventBalloonChangeCallbackHelper(virConnectPtr c, + virDomainPtr d, + unsigned long long actual, + void *data); + +void +domainEventDeviceRemovedCallbackHelper(virConnectPtr c, + virDomainPtr d, + const char *devAlias, + void *data); + +void +domainEventTunableCallbackHelper(virConnectPtr conn, + virDomainPtr dom, + virTypedParameterPtr params, + int nparams, + void *opaque); + +void +domainEventAgentLifecycleCallbackHelper(virConnectPtr conn, + virDomainPtr dom, + int state, + int reason, + void *opaque); + +void +domainEventDeviceAddedCallbackHelper(virConnectPtr conn, + virDomainPtr dom, + const char *devAlias, + void *opaque); + +void +domainEventMigrationIterationCallbackHelper(virConnectPtr conn, + virDomainPtr dom, + int iteration, + void *opaque); + +void +domainEventJobCompletedCallbackHelper(virConnectPtr conn, + virDomainPtr dom, + virTypedParameterPtr params, + int nparams, + void *opaque); + +void +domainEventDeviceRemovalFailedCallbackHelper(virConnectPtr conn, + virDomainPtr dom, + const char *devAlias, + void *opaque); + +void +domainEventMetadataChangeCallbackHelper(virConnectPtr conn, + virDomainPtr dom, + int type, + const char *nsuri, + void *opaque); + +void +domainEventBlockThresholdCallbackHelper(virConnectPtr conn, + virDomainPtr dom, + const char *dev, + const char *path, + unsigned long long threshold, + unsigned long long excess, + void *opaque); + +int +virConnectDomainEventRegisterAnyWrapper(virConnectPtr c, + virDomainPtr d, + int eventID, + virConnectDomainEventGenericCallback cb, + long goCallbackId); #endif /* LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ */ diff --git a/domain_snapshot.go b/domain_snapshot.go index a133d5f..706c1a9 100644 --- a/domain_snapshot.go +++ b/domain_snapshot.go @@ -28,9 +28,8 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdlib.h> +#include "domain_snapshot_wrapper.h" */ import "C" diff --git a/domain_wrapper.h b/domain_wrapper.h index 7f857d7..c344565 100644 --- a/domain_wrapper.h +++ b/domain_wrapper.h @@ -31,130 +31,174 @@ #include <libvirt/virterror.h> #include "domain_compat.h" -int virDomainCoreDumpWithFormatWrapper(virDomainPtr domain, - const char *to, - unsigned int dumpformat, - unsigned int flags); - - -int virDomainGetTimeWrapper(virDomainPtr dom, - long long *seconds, - unsigned int *nseconds, - unsigned int flags); - -int virDomainSetTimeWrapper(virDomainPtr dom, - long long seconds, - unsigned int nseconds, - unsigned int flags); - -int virDomainFSFreezeWrapper(virDomainPtr dom, - const char **mountpoints, - unsigned int nmountpoints, - unsigned int flags); - -int virDomainFSThawWrapper(virDomainPtr dom, - const char **mountpoints, - unsigned int nmountpoints, - unsigned int flags); - - -int virDomainBlockCopyWrapper(virDomainPtr dom, const char *disk, - const char *destxml, - virTypedParameterPtr params, - int nparams, - unsigned int flags); - -int virDomainOpenGraphicsFDWrapper(virDomainPtr dom, - unsigned int idx, - unsigned int flags); - - -void virDomainFSInfoFreeWrapper(virDomainFSInfoPtr info); - -int virDomainGetFSInfoWrapper(virDomainPtr dom, - virDomainFSInfoPtr **info, - unsigned int flags); - - -int virDomainInterfaceAddressesWrapper(virDomainPtr dom, - virDomainInterfacePtr **ifaces, - unsigned int source, - unsigned int flags); - -void virDomainInterfaceFreeWrapper(virDomainInterfacePtr iface); - -void virDomainIOThreadInfoFreeWrapper(virDomainIOThreadInfoPtr info); - -int virDomainGetIOThreadInfoWrapper(virDomainPtr domain, - virDomainIOThreadInfoPtr **info, - unsigned int flags); -int virDomainPinIOThreadWrapper(virDomainPtr domain, - unsigned int iothread_id, - unsigned char *cpumap, - int maplen, - unsigned int flags); - -int virDomainAddIOThreadWrapper(virDomainPtr domain, - unsigned int iothread_id, - unsigned int flags); -int virDomainDelIOThreadWrapper(virDomainPtr domain, - unsigned int iothread_id, - unsigned int flags); - -int virDomainSetUserPasswordWrapper(virDomainPtr dom, - const char *user, - const char *password, - unsigned int flags); - -int virDomainRenameWrapper(virDomainPtr dom, - const char *new_name, - unsigned int flags); -int virDomainGetPerfEventsWrapper(virDomainPtr dom, - virTypedParameterPtr *params, - int *nparams, - unsigned int flags); -int virDomainSetPerfEventsWrapper(virDomainPtr dom, - virTypedParameterPtr params, - int nparams, - unsigned int flags); -int virDomainMigrateStartPostCopyWrapper(virDomainPtr domain, - unsigned int flags); -int virDomainGetGuestVcpusWrapper(virDomainPtr domain, - virTypedParameterPtr *params, - unsigned int *nparams, - unsigned int flags); - -int virDomainSetGuestVcpusWrapper(virDomainPtr domain, - const char *cpumap, - int state, - unsigned int flags); -int virDomainSetVcpuWrapper(virDomainPtr domain, - const char *cpumap, - int state, - unsigned int flags); -int virDomainSetBlockThresholdWrapper(virDomainPtr domain, - const char *dev, - unsigned long long threshold, +int +virDomainCoreDumpWithFormatWrapper(virDomainPtr domain, + const char *to, + unsigned int dumpformat, + unsigned int flags); + + +int +virDomainGetTimeWrapper(virDomainPtr dom, + long long *seconds, + unsigned int *nseconds, + unsigned int flags); + +int +virDomainSetTimeWrapper(virDomainPtr dom, + long long seconds, + unsigned int nseconds, + unsigned int flags); + +int +virDomainFSFreezeWrapper(virDomainPtr dom, + const char **mountpoints, + unsigned int nmountpoints, + unsigned int flags); + +int +virDomainFSThawWrapper(virDomainPtr dom, + const char **mountpoints, + unsigned int nmountpoints, + unsigned int flags); + + +int +virDomainBlockCopyWrapper(virDomainPtr dom, + const char *disk, + const char *destxml, + virTypedParameterPtr params, + int nparams, + unsigned int flags); + +int +virDomainOpenGraphicsFDWrapper(virDomainPtr dom, + unsigned int idx, + unsigned int flags); + + +void +virDomainFSInfoFreeWrapper(virDomainFSInfoPtr info); + +int +virDomainGetFSInfoWrapper(virDomainPtr dom, + virDomainFSInfoPtr **info, + unsigned int flags); + + +int +virDomainInterfaceAddressesWrapper(virDomainPtr dom, + virDomainInterfacePtr **ifaces, + unsigned int source, + unsigned int flags); + +void +virDomainInterfaceFreeWrapper(virDomainInterfacePtr iface); + +void +virDomainIOThreadInfoFreeWrapper(virDomainIOThreadInfoPtr info); + +int +virDomainGetIOThreadInfoWrapper(virDomainPtr domain, + virDomainIOThreadInfoPtr **info, + unsigned int flags); +int +virDomainPinIOThreadWrapper(virDomainPtr domain, + unsigned int iothread_id, + unsigned char *cpumap, + int maplen, + unsigned int flags); + +int +virDomainAddIOThreadWrapper(virDomainPtr domain, + unsigned int iothread_id, + unsigned int flags); + +int +virDomainDelIOThreadWrapper(virDomainPtr domain, + unsigned int iothread_id, + unsigned int flags); + +int +virDomainSetUserPasswordWrapper(virDomainPtr dom, + const char *user, + const char *password, + unsigned int flags); + +int +virDomainRenameWrapper(virDomainPtr dom, + const char *new_name, + unsigned int flags); + +int +virDomainGetPerfEventsWrapper(virDomainPtr dom, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags); + +int +virDomainSetPerfEventsWrapper(virDomainPtr dom, + virTypedParameterPtr params, + int nparams, + unsigned int flags); + +int +virDomainMigrateStartPostCopyWrapper(virDomainPtr domain, unsigned int flags); -int virDomainMigrateGetMaxDowntimeWrapper(virDomainPtr domain, - unsigned long long *downtime, - unsigned int flags); - -char *virDomainManagedSaveGetXMLDescWrapper(virDomainPtr domain, - unsigned int flags); -int virDomainManagedSaveDefineXMLWrapper(virDomainPtr domain, - const char *dxml, - unsigned int flags); -int virDomainSetLifecycleActionWrapper(virDomainPtr domain, - unsigned int type, - unsigned int action, + +int +virDomainGetGuestVcpusWrapper(virDomainPtr domain, + virTypedParameterPtr *params, + unsigned int *nparams, + unsigned int flags); + +int +virDomainSetGuestVcpusWrapper(virDomainPtr domain, + const char *cpumap, + int state, + unsigned int flags); + +int +virDomainSetVcpuWrapper(virDomainPtr domain, + const char *cpumap, + int state, + unsigned int flags); + +int +virDomainSetBlockThresholdWrapper(virDomainPtr domain, + const char *dev, + unsigned long long threshold, + unsigned int flags); + +int +virDomainMigrateGetMaxDowntimeWrapper(virDomainPtr domain, + unsigned long long *downtime, + unsigned int flags); + +char * +virDomainManagedSaveGetXMLDescWrapper(virDomainPtr domain, + unsigned int flags); + +int +virDomainManagedSaveDefineXMLWrapper(virDomainPtr domain, + const char *dxml, + unsigned int flags); + +int +virDomainSetLifecycleActionWrapper(virDomainPtr domain, + unsigned int type, + unsigned int action, + unsigned int flags); + +int +virDomainDetachDeviceAliasWrapper(virDomainPtr domain, + const char *alias, + unsigned int flags); + +int +virDomainGetLaunchSecurityInfoWrapper(virDomainPtr domain, + virTypedParameterPtr *params, + int *nparams, unsigned int flags); -int virDomainDetachDeviceAliasWrapper(virDomainPtr domain, - const char *alias, - unsigned int flags); -int virDomainGetLaunchSecurityInfoWrapper(virDomainPtr domain, - virTypedParameterPtr *params, - int *nparams, - unsigned int flags); #endif /* LIBVIRT_GO_DOMAIN_WRAPPER_H__ */ diff --git a/events_wrapper.h b/events_wrapper.h index 67b3624..9e9607c 100644 --- a/events_wrapper.h +++ b/events_wrapper.h @@ -30,13 +30,36 @@ #include <libvirt/libvirt.h> #include <libvirt/virterror.h> -int virEventAddHandleWrapper(int fd, int events, int callbackID); -int virEventAddTimeoutWrapper(int freq, int callbackID); -void virEventRegisterImplWrapper(void); - -void eventHandleCallbackInvoke(int watch, int fd, int events, uintptr_t callback, uintptr_t opaque); -void eventTimeoutCallbackInvoke(int timer, uintptr_t callback, uintptr_t opaque); -void eventHandleCallbackFree(uintptr_t callback, uintptr_t opaque); -void eventTimeoutCallbackFree(uintptr_t callback, uintptr_t opaque); +int +virEventAddHandleWrapper(int fd, + int events, + int callbackID); + +int +virEventAddTimeoutWrapper(int freq, + int callbackID); + +void +virEventRegisterImplWrapper(void); + +void +eventHandleCallbackInvoke(int watch, + int fd, + int events, + uintptr_t callback, + uintptr_t opaque); + +void +eventTimeoutCallbackInvoke(int timer, + uintptr_t callback, + uintptr_t opaque); + +void +eventHandleCallbackFree(uintptr_t callback, + uintptr_t opaque); + +void +eventTimeoutCallbackFree(uintptr_t callback, + uintptr_t opaque); #endif /* LIBVIRT_GO_EVENTS_WRAPPER_H__ */ diff --git a/interface.go b/interface.go index 8a0c7e2..bd39ed0 100644 --- a/interface.go +++ b/interface.go @@ -28,9 +28,8 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdlib.h> +#include "interface_wrapper.h" */ import "C" diff --git a/lxc_wrapper.h b/lxc_wrapper.h index 4edef2a..22f2d55 100644 --- a/lxc_wrapper.h +++ b/lxc_wrapper.h @@ -31,8 +31,9 @@ #include <libvirt/libvirt-lxc.h> #include <libvirt/virterror.h> -int virDomainLxcEnterCGroupWrapper(virDomainPtr domain, - unsigned int flags); +int +virDomainLxcEnterCGroupWrapper(virDomainPtr domain, + unsigned int flags); #endif /* LIBVIRT_GO_LXC_COMPAT_H__ */ diff --git a/network_events_wrapper.h b/network_events_wrapper.h index 8b08d00..201be64 100644 --- a/network_events_wrapper.h +++ b/network_events_wrapper.h @@ -31,20 +31,30 @@ #include <libvirt/virterror.h> #include "network_compat.h" -void networkEventLifecycleCallbackHelper(virConnectPtr c, virNetworkPtr d, - int event, int detail, void* data); +void +networkEventLifecycleCallbackHelper(virConnectPtr c, + virNetworkPtr d, + int event, + int detail, + void* data); -int virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, virNetworkPtr d, - int eventID, virConnectNetworkEventGenericCallback cb, +int +virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, + virNetworkPtr d, + int eventID, + virConnectNetworkEventGenericCallback cb, long goCallbackId); -int virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, - virNetworkPtr d, - int eventID, - virConnectNetworkEventGenericCallback cb, - long goCallbackId); -int virConnectNetworkEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID); +int +virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, + virNetworkPtr d, + int eventID, + virConnectNetworkEventGenericCallback cb, + long goCallbackId); + +int +virConnectNetworkEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID); #endif /* LIBVIRT_GO_NETWORK_EVENTS_WRAPPER_H__ */ diff --git a/network_wrapper.h b/network_wrapper.h index 66fb730..8a36d13 100644 --- a/network_wrapper.h +++ b/network_wrapper.h @@ -31,11 +31,13 @@ #include <libvirt/virterror.h> #include "network_compat.h" -void virNetworkDHCPLeaseFreeWrapper(virNetworkDHCPLeasePtr lease); +void +virNetworkDHCPLeaseFreeWrapper(virNetworkDHCPLeasePtr lease); -int virNetworkGetDHCPLeasesWrapper(virNetworkPtr network, - const char *mac, - virNetworkDHCPLeasePtr **leases, - unsigned int flags); +int +virNetworkGetDHCPLeasesWrapper(virNetworkPtr network, + const char *mac, + virNetworkDHCPLeasePtr **leases, + unsigned int flags); #endif /* LIBVIRT_GO_NETWORK_WRAPPER_H__ */ diff --git a/node_device.go b/node_device.go index 01be1e4..0caf98b 100644 --- a/node_device.go +++ b/node_device.go @@ -28,10 +28,8 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdlib.h> -#include "node_device_compat.h" +#include "node_device_wrapper.h" */ import "C" diff --git a/node_device_events_wrapper.h b/node_device_events_wrapper.h index 04cb71b..a3d014d 100644 --- a/node_device_events_wrapper.h +++ b/node_device_events_wrapper.h @@ -31,17 +31,28 @@ #include <libvirt/virterror.h> #include "node_device_compat.h" -void nodeDeviceEventLifecycleCallbackHelper(virConnectPtr c, virNodeDevicePtr d, - int event, int detail, void* data); - -void nodeDeviceEventGenericCallbackHelper(virConnectPtr c, virNodeDevicePtr d, void* data); - -int virConnectNodeDeviceEventRegisterAnyWrapper(virConnectPtr c, virNodeDevicePtr d, - int eventID, virConnectNodeDeviceEventGenericCallback cb, +void +nodeDeviceEventLifecycleCallbackHelper(virConnectPtr c, + virNodeDevicePtr d, + int event, + int detail, + void* data); + +void +nodeDeviceEventGenericCallbackHelper(virConnectPtr c, + virNodeDevicePtr d, + void* data); + +int +virConnectNodeDeviceEventRegisterAnyWrapper(virConnectPtr c, + virNodeDevicePtr d, + int eventID, + virConnectNodeDeviceEventGenericCallback cb, long goCallbackId); -int virConnectNodeDeviceEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID); +int +virConnectNodeDeviceEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID); #endif /* LIBVIRT_GO_NODE_DEVICE_EVENTS_WRAPPER_H__ */ diff --git a/nwfilter.go b/nwfilter.go index 6d0c052..441fcca 100644 --- a/nwfilter.go +++ b/nwfilter.go @@ -28,9 +28,8 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdlib.h> +#include "nwfilter_wrapper.h" */ import "C" diff --git a/nwfilter_binding_wrapper.h b/nwfilter_binding_wrapper.h index 895075f..63942be 100644 --- a/nwfilter_binding_wrapper.h +++ b/nwfilter_binding_wrapper.h @@ -30,13 +30,24 @@ #include <libvirt/virterror.h> #include "nwfilter_binding_compat.h" -const char *virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding); -const char *virNWFilterBindingGetFilterNameWrapper(virNWFilterBindingPtr binding); -char *virNWFilterBindingGetXMLDescWrapper(virNWFilterBindingPtr binding, - unsigned int flags); -int virNWFilterBindingDeleteWrapper(virNWFilterBindingPtr binding); -int virNWFilterBindingRefWrapper(virNWFilterBindingPtr binding); -int virNWFilterBindingFreeWrapper(virNWFilterBindingPtr binding); +const char * +virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding); + +const char * +virNWFilterBindingGetFilterNameWrapper(virNWFilterBindingPtr binding); + +char * +virNWFilterBindingGetXMLDescWrapper(virNWFilterBindingPtr binding, + unsigned int flags); + +int +virNWFilterBindingDeleteWrapper(virNWFilterBindingPtr binding); + +int +virNWFilterBindingRefWrapper(virNWFilterBindingPtr binding); + +int +virNWFilterBindingFreeWrapper(virNWFilterBindingPtr binding); #endif /* LIBVIRT_GO_NWFILTER_BINDING_WRAPPER_H__ */ diff --git a/qemu_wrapper.h b/qemu_wrapper.h index 228e444..e365fbd 100644 --- a/qemu_wrapper.h +++ b/qemu_wrapper.h @@ -32,16 +32,26 @@ #include <libvirt/virterror.h> #include "qemu_compat.h" -void domainQemuMonitorEventCallbackHelper(virConnectPtr c, virDomainPtr d, - const char *event, long long secs, - unsigned int micros, const char *details, void *data); +void +domainQemuMonitorEventCallbackHelper(virConnectPtr c, + virDomainPtr d, + const char *event, + long long secs, + unsigned int micros, + const char *details, + void *data); -int virConnectDomainQemuMonitorEventRegisterWrapper(virConnectPtr c, virDomainPtr d, - const char *event, virConnectDomainQemuMonitorEventCallback cb, - long goCallbackId, unsigned int flags); +int +virConnectDomainQemuMonitorEventRegisterWrapper(virConnectPtr c, + virDomainPtr d, + const char *event, + virConnectDomainQemuMonitorEventCallback cb, + long goCallbackId, + unsigned int flags); -int virConnectDomainQemuMonitorEventDeregisterWrapper(virConnectPtr conn, - int callbackID); +int +virConnectDomainQemuMonitorEventDeregisterWrapper(virConnectPtr conn, + int callbackID); #endif /* LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ */ diff --git a/secret.go b/secret.go index 4507e1e..9bd8b36 100644 --- a/secret.go +++ b/secret.go @@ -28,10 +28,8 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdlib.h> -#include "secret_compat.h" +#include "secret_wrapper.h" */ import "C" diff --git a/secret_events_wrapper.h b/secret_events_wrapper.h index 6758b54..bf1c571 100644 --- a/secret_events_wrapper.h +++ b/secret_events_wrapper.h @@ -31,16 +31,26 @@ #include <libvirt/virterror.h> #include "secret_compat.h" -void secretEventLifecycleCallbackHelper(virConnectPtr c, virSecretPtr d, - int event, int detail, void* data); -void secretEventGenericCallbackHelper(virConnectPtr c, virSecretPtr d, +void +secretEventLifecycleCallbackHelper(virConnectPtr c, + virSecretPtr d, + int event, + int detail, void* data); -int virConnectSecretEventRegisterAnyWrapper(virConnectPtr c, virSecretPtr d, - int eventID, virConnectSecretEventGenericCallback cb, - long goCallbackId); +void secretEventGenericCallbackHelper(virConnectPtr c, + virSecretPtr d, + void* data); -int virConnectSecretEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID); +int +virConnectSecretEventRegisterAnyWrapper(virConnectPtr c, + virSecretPtr d, + int eventID, + virConnectSecretEventGenericCallback cb, + long goCallbackId); + +int +virConnectSecretEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID); #endif /* LIBVIRT_GO_SECRET_EVENTS_WRAPPER_H__ */ diff --git a/storage_pool.go b/storage_pool.go index 87d17d4..a2d1462 100644 --- a/storage_pool.go +++ b/storage_pool.go @@ -28,10 +28,8 @@ package libvirt /* #cgo pkg-config: libvirt -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> #include <stdlib.h> -#include "storage_pool_compat.h" +#include "storage_pool_wrapper.h" */ import "C" diff --git a/storage_pool_events_wrapper.h b/storage_pool_events_wrapper.h index f178951..84dcc8f 100644 --- a/storage_pool_events_wrapper.h +++ b/storage_pool_events_wrapper.h @@ -31,16 +31,27 @@ #include <libvirt/virterror.h> #include "storage_pool_compat.h" -void storagePoolEventLifecycleCallbackHelper(virConnectPtr c, virStoragePoolPtr d, - int event, int detail, void* data); -void storagePoolEventGenericCallbackHelper(virConnectPtr c, virStoragePoolPtr d, - void* data); +void +storagePoolEventLifecycleCallbackHelper(virConnectPtr c, + virStoragePoolPtr d, + int event, + int detail, + void* data); -int virConnectStoragePoolEventRegisterAnyWrapper(virConnectPtr c, virStoragePoolPtr d, - int eventID, virConnectStoragePoolEventGenericCallback cb, - long goCallbackId); +void +storagePoolEventGenericCallbackHelper(virConnectPtr c, + virStoragePoolPtr d, + void* data); -int virConnectStoragePoolEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID); +int +virConnectStoragePoolEventRegisterAnyWrapper(virConnectPtr c, + virStoragePoolPtr d, + int eventID, + virConnectStoragePoolEventGenericCallback cb, + long goCallbackId); + +int +virConnectStoragePoolEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID); #endif /* LIBVIRT_GO_STORAGE_POOL_EVENTS_WRAPPER_H__ */ diff --git a/storage_volume_wrapper.h b/storage_volume_wrapper.h index 77d75e0..6fd8974 100644 --- a/storage_volume_wrapper.h +++ b/storage_volume_wrapper.h @@ -31,8 +31,9 @@ #include <libvirt/virterror.h> #include "storage_volume_compat.h" -int virStorageVolGetInfoFlagsWrapper(virStorageVolPtr vol, - virStorageVolInfoPtr info, - unsigned int flags); +int +virStorageVolGetInfoFlagsWrapper(virStorageVolPtr vol, + virStorageVolInfoPtr info, + unsigned int flags); #endif /* LIBVIRT_GO_STORAGE_VOLUME_WRAPPER_H__ */ diff --git a/stream_wrapper.h b/stream_wrapper.h index b8417d3..5484441 100644 --- a/stream_wrapper.h +++ b/stream_wrapper.h @@ -31,23 +31,44 @@ #include <libvirt/virterror.h> #include "stream_compat.h" -int virStreamSendAllWrapper(virStreamPtr st, int callbackID); -int virStreamRecvAllWrapper(virStreamPtr st, int callbackID); -int virStreamSparseSendAllWrapper(virStreamPtr st, int callbackID, int holeCallbackID, int skipCallbackID); -int virStreamSparseRecvAllWrapper(virStreamPtr st, int callbackID, int holeCallbackID); - -int virStreamEventAddCallbackWrapper(virStreamPtr st, int events, int callbackID); -int virStreamRecvFlagsWrapper(virStreamPtr st, - char *data, - size_t nbytes, - unsigned int flags); - -int virStreamSendHoleWrapper(virStreamPtr st, - long long length, - unsigned int flags); - -int virStreamRecvHoleWrapper(virStreamPtr, - long long *length, - unsigned int flags); +int +virStreamSendAllWrapper(virStreamPtr st, + int callbackID); + +int +virStreamRecvAllWrapper(virStreamPtr st, + int callbackID); + +int +virStreamSparseSendAllWrapper(virStreamPtr st, + int callbackID, + int holeCallbackID, + int skipCallbackID); + +int +virStreamSparseRecvAllWrapper(virStreamPtr st, + int callbackID, + int holeCallbackID); + +int +virStreamEventAddCallbackWrapper(virStreamPtr st, + int events, + int callbackID); + +int +virStreamRecvFlagsWrapper(virStreamPtr st, + char *data, + size_t nbytes, + unsigned int flags); + +int +virStreamSendHoleWrapper(virStreamPtr st, + long long length, + unsigned int flags); + +int +virStreamRecvHoleWrapper(virStreamPtr, + long long *length, + unsigned int flags); #endif /* LIBVIRT_GO_STREAM_WRAPPER_H__ */ -- 2.17.1

Create wrapper functions for each storage volume 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é <berrange@redhat.com> --- storage_volume.go | 79 ++++++++------ storage_volume_wrapper.go | 211 +++++++++++++++++++++++++++++++++++++- storage_volume_wrapper.h | 79 +++++++++++++- 3 files changed, 332 insertions(+), 37 deletions(-) diff --git a/storage_volume.go b/storage_volume.go index d913c59..711c3c1 100644 --- a/storage_volume.go +++ b/storage_volume.go @@ -123,27 +123,30 @@ type StorageVolInfo struct { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolDelete func (v *StorageVol) Delete(flags StorageVolDeleteFlags) error { - result := C.virStorageVolDelete(v.ptr, C.uint(flags)) + var err C.virError + result := C.virStorageVolDeleteWrapper(v.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolFree func (v *StorageVol) Free() error { - ret := C.virStorageVolFree(v.ptr) + var err C.virError + ret := C.virStorageVolFreeWrapper(v.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolRef func (c *StorageVol) Ref() error { - ret := C.virStorageVolRef(c.ptr) + var err C.virError + ret := C.virStorageVolRefWrapper(c.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -151,9 +154,10 @@ func (c *StorageVol) Ref() error { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolGetInfo func (v *StorageVol) GetInfo() (*StorageVolInfo, error) { var cinfo C.virStorageVolInfo - result := C.virStorageVolGetInfo(v.ptr, &cinfo) + var err C.virError + result := C.virStorageVolGetInfoWrapper(v.ptr, &cinfo, &err) if result == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return &StorageVolInfo{ Type: StorageVolType(cinfo._type), @@ -169,9 +173,10 @@ func (v *StorageVol) GetInfoFlags(flags StorageVolInfoFlags) (*StorageVolInfo, e } var cinfo C.virStorageVolInfo - result := C.virStorageVolGetInfoFlagsWrapper(v.ptr, &cinfo, C.uint(flags)) + var err C.virError + result := C.virStorageVolGetInfoFlagsWrapper(v.ptr, &cinfo, C.uint(flags), &err) if result == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return &StorageVolInfo{ Type: StorageVolType(cinfo._type), @@ -182,27 +187,30 @@ func (v *StorageVol) GetInfoFlags(flags StorageVolInfoFlags) (*StorageVolInfo, e // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolGetKey func (v *StorageVol) GetKey() (string, error) { - key := C.virStorageVolGetKey(v.ptr) + var err C.virError + key := C.virStorageVolGetKeyWrapper(v.ptr, &err) if key == nil { - return "", GetLastError() + return "", makeError(&err) } return C.GoString(key), nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolGetName func (v *StorageVol) GetName() (string, error) { - name := C.virStorageVolGetName(v.ptr) + var err C.virError + name := C.virStorageVolGetNameWrapper(v.ptr, &err) if name == nil { - return "", GetLastError() + return "", makeError(&err) } return C.GoString(name), nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolGetPath func (v *StorageVol) GetPath() (string, error) { - result := C.virStorageVolGetPath(v.ptr) + var err C.virError + result := C.virStorageVolGetPathWrapper(v.ptr, &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } path := C.GoString(result) C.free(unsafe.Pointer(result)) @@ -211,9 +219,10 @@ func (v *StorageVol) GetPath() (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolGetXMLDes... func (v *StorageVol) GetXMLDesc(flags uint32) (string, error) { - result := C.virStorageVolGetXMLDesc(v.ptr, C.uint(flags)) + var err C.virError + result := C.virStorageVolGetXMLDescWrapper(v.ptr, C.uint(flags), &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } xml := C.GoString(result) C.free(unsafe.Pointer(result)) @@ -222,54 +231,60 @@ func (v *StorageVol) GetXMLDesc(flags uint32) (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolResize func (v *StorageVol) Resize(capacity uint64, flags StorageVolResizeFlags) error { - result := C.virStorageVolResize(v.ptr, C.ulonglong(capacity), C.uint(flags)) + var err C.virError + result := C.virStorageVolResizeWrapper(v.ptr, C.ulonglong(capacity), C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolWipe func (v *StorageVol) Wipe(flags uint32) error { - result := C.virStorageVolWipe(v.ptr, C.uint(flags)) + var err C.virError + result := C.virStorageVolWipeWrapper(v.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolWipePatte... func (v *StorageVol) WipePattern(algorithm StorageVolWipeAlgorithm, flags uint32) error { - result := C.virStorageVolWipePattern(v.ptr, C.uint(algorithm), C.uint(flags)) + var err C.virError + result := C.virStorageVolWipePatternWrapper(v.ptr, C.uint(algorithm), C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolUpload func (v *StorageVol) Upload(stream *Stream, offset, length uint64, flags StorageVolUploadFlags) error { - if C.virStorageVolUpload(v.ptr, stream.ptr, C.ulonglong(offset), - C.ulonglong(length), C.uint(flags)) == -1 { - return GetLastError() + var err C.virError + if C.virStorageVolUploadWrapper(v.ptr, stream.ptr, C.ulonglong(offset), + C.ulonglong(length), C.uint(flags), &err) == -1 { + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolDownload func (v *StorageVol) Download(stream *Stream, offset, length uint64, flags StorageVolDownloadFlags) error { - if C.virStorageVolDownload(v.ptr, stream.ptr, C.ulonglong(offset), - C.ulonglong(length), C.uint(flags)) == -1 { - return GetLastError() + var err C.virError + if C.virStorageVolDownloadWrapper(v.ptr, stream.ptr, C.ulonglong(offset), + C.ulonglong(length), C.uint(flags), &err) == -1 { + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolLookupBy... func (v *StorageVol) LookupPoolByVolume() (*StoragePool, error) { - poolPtr := C.virStoragePoolLookupByVolume(v.ptr) + var err C.virError + poolPtr := C.virStoragePoolLookupByVolumeWrapper(v.ptr, &err) if poolPtr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StoragePool{ptr: poolPtr}, nil } diff --git a/storage_volume_wrapper.go b/storage_volume_wrapper.go index 63cc2b5..d41a8a7 100644 --- a/storage_volume_wrapper.go +++ b/storage_volume_wrapper.go @@ -31,16 +31,219 @@ package libvirt #include <assert.h> #include "storage_volume_wrapper.h" -int virStorageVolGetInfoFlagsWrapper(virStorageVolPtr vol, - virStorageVolInfoPtr info, - unsigned int flags) +virStoragePoolPtr +virStoragePoolLookupByVolumeWrapper(virStorageVolPtr vol, + virErrorPtr err) +{ + virStoragePoolPtr ret = virStoragePoolLookupByVolume(vol); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virStorageVolDeleteWrapper(virStorageVolPtr vol, + unsigned int flags, + virErrorPtr err) +{ + int ret = virStorageVolDelete(vol, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStorageVolDownloadWrapper(virStorageVolPtr vol, + virStreamPtr stream, + unsigned long long offset, + unsigned long long length, + unsigned int flags, + virErrorPtr err) +{ + int ret = virStorageVolDownload(vol, stream, offset, length, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStorageVolFreeWrapper(virStorageVolPtr vol, + virErrorPtr err) +{ + int ret = virStorageVolFree(vol); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virStorageVolGetConnectWrapper(virStorageVolPtr vol, + virErrorPtr err) +{ + virConnectPtr ret = virStorageVolGetConnect(vol); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virStorageVolGetInfoWrapper(virStorageVolPtr vol, + virStorageVolInfoPtr info, + virErrorPtr err) +{ + int ret = virStorageVolGetInfo(vol, info); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStorageVolGetInfoFlagsWrapper(virStorageVolPtr vol, + virStorageVolInfoPtr info, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 3000000 assert(0); // Caller should have checked version #else - return virStorageVolGetInfoFlags(vol, info, flags); + int ret = virStorageVolGetInfoFlags(vol, info, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } + +const char * +virStorageVolGetKeyWrapper(virStorageVolPtr vol, + virErrorPtr err) +{ + const char *ret = virStorageVolGetKey(vol); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +const char * +virStorageVolGetNameWrapper(virStorageVolPtr vol, + virErrorPtr err) +{ + const char *ret = virStorageVolGetName(vol); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virStorageVolGetPathWrapper(virStorageVolPtr vol, + virErrorPtr err) +{ + char *ret = virStorageVolGetPath(vol); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virStorageVolGetXMLDescWrapper(virStorageVolPtr vol, + unsigned int flags, + virErrorPtr err) +{ + char *ret = virStorageVolGetXMLDesc(vol, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virStorageVolRefWrapper(virStorageVolPtr vol, + virErrorPtr err) +{ + int ret = virStorageVolRef(vol); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStorageVolResizeWrapper(virStorageVolPtr vol, + unsigned long long capacity, + unsigned int flags, + virErrorPtr err) +{ + int ret = virStorageVolResize(vol, capacity, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStorageVolUploadWrapper(virStorageVolPtr vol, + virStreamPtr stream, + unsigned long long offset, + unsigned long long length, + unsigned int flags, + virErrorPtr err) +{ + int ret = virStorageVolUpload(vol, stream, offset, length, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStorageVolWipeWrapper(virStorageVolPtr vol, + unsigned int flags, + virErrorPtr err) +{ + int ret = virStorageVolWipe(vol, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStorageVolWipePatternWrapper(virStorageVolPtr vol, + unsigned int algorithm, + unsigned int flags, + virErrorPtr err) +{ + int ret = virStorageVolWipePattern(vol, algorithm, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + */ import "C" diff --git a/storage_volume_wrapper.h b/storage_volume_wrapper.h index 6fd8974..b3ed2a9 100644 --- a/storage_volume_wrapper.h +++ b/storage_volume_wrapper.h @@ -31,9 +31,86 @@ #include <libvirt/virterror.h> #include "storage_volume_compat.h" +virStoragePoolPtr +virStoragePoolLookupByVolumeWrapper(virStorageVolPtr vol, + virErrorPtr err); + +int +virStorageVolDeleteWrapper(virStorageVolPtr vol, + unsigned int flags, + virErrorPtr err); + +int +virStorageVolDownloadWrapper(virStorageVolPtr vol, + virStreamPtr stream, + unsigned long long offset, + unsigned long long length, + unsigned int flags, + virErrorPtr err); + +int +virStorageVolFreeWrapper(virStorageVolPtr vol, + virErrorPtr err); + +virConnectPtr +virStorageVolGetConnectWrapper(virStorageVolPtr vol, + virErrorPtr err); + +int +virStorageVolGetInfoWrapper(virStorageVolPtr vol, + virStorageVolInfoPtr info, + virErrorPtr err); + int virStorageVolGetInfoFlagsWrapper(virStorageVolPtr vol, virStorageVolInfoPtr info, - unsigned int flags); + unsigned int flags, + virErrorPtr err); + +const char * +virStorageVolGetKeyWrapper(virStorageVolPtr vol, + virErrorPtr err); + +const char * +virStorageVolGetNameWrapper(virStorageVolPtr vol, + virErrorPtr err); + +char * +virStorageVolGetPathWrapper(virStorageVolPtr vol, + virErrorPtr err); + +char * +virStorageVolGetXMLDescWrapper(virStorageVolPtr vol, + unsigned int flags, + virErrorPtr err); + +int +virStorageVolRefWrapper(virStorageVolPtr vol, + virErrorPtr err); + +int +virStorageVolResizeWrapper(virStorageVolPtr vol, + unsigned long long capacity, + unsigned int flags, + virErrorPtr err); + +int +virStorageVolUploadWrapper(virStorageVolPtr vol, + virStreamPtr stream, + unsigned long long offset, + unsigned long long length, + unsigned int flags, + virErrorPtr err); + +int +virStorageVolWipeWrapper(virStorageVolPtr vol, + unsigned int flags, + virErrorPtr err); + +int +virStorageVolWipePatternWrapper(virStorageVolPtr vol, + unsigned int algorithm, + unsigned int flags, + virErrorPtr err); #endif /* LIBVIRT_GO_STORAGE_VOLUME_WRAPPER_H__ */ -- 2.17.1

Create wrapper functions for each storage pool 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é <berrange@redhat.com> --- storage_pool.go | 117 +++++++++------ storage_pool_wrapper.go | 309 ++++++++++++++++++++++++++++++++++++++++ storage_pool_wrapper.h | 117 +++++++++++++++ 3 files changed, 496 insertions(+), 47 deletions(-) diff --git a/storage_pool.go b/storage_pool.go index a2d1462..9bfcc79 100644 --- a/storage_pool.go +++ b/storage_pool.go @@ -105,54 +105,60 @@ type StoragePoolInfo struct { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolBuild func (p *StoragePool) Build(flags StoragePoolBuildFlags) error { - result := C.virStoragePoolBuild(p.ptr, C.uint(flags)) + var err C.virError + result := C.virStoragePoolBuildWrapper(p.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolCreate func (p *StoragePool) Create(flags StoragePoolCreateFlags) error { - result := C.virStoragePoolCreate(p.ptr, C.uint(flags)) + var err C.virError + result := C.virStoragePoolCreateWrapper(p.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolDelete func (p *StoragePool) Delete(flags StoragePoolDeleteFlags) error { - result := C.virStoragePoolDelete(p.ptr, C.uint(flags)) + var err C.virError + result := C.virStoragePoolDeleteWrapper(p.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolDestroy func (p *StoragePool) Destroy() error { - result := C.virStoragePoolDestroy(p.ptr) + var err C.virError + result := C.virStoragePoolDestroyWrapper(p.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolFree func (p *StoragePool) Free() error { - ret := C.virStoragePoolFree(p.ptr) + var err C.virError + ret := C.virStoragePoolFreeWrapper(p.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolRef func (c *StoragePool) Ref() error { - ret := C.virStoragePoolRef(c.ptr) + var err C.virError + ret := C.virStoragePoolRefWrapper(c.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -160,9 +166,10 @@ func (c *StoragePool) Ref() error { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolGetAutos... func (p *StoragePool) GetAutostart() (bool, error) { var out C.int - result := C.virStoragePoolGetAutostart(p.ptr, (*C.int)(unsafe.Pointer(&out))) + var err C.virError + result := C.virStoragePoolGetAutostartWrapper(p.ptr, (*C.int)(unsafe.Pointer(&out)), &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } switch out { case 1: @@ -175,9 +182,10 @@ func (p *StoragePool) GetAutostart() (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolGetInfo func (p *StoragePool) GetInfo() (*StoragePoolInfo, error) { var cinfo C.virStoragePoolInfo - result := C.virStoragePoolGetInfo(p.ptr, &cinfo) + var err C.virError + result := C.virStoragePoolGetInfoWrapper(p.ptr, &cinfo, &err) if result == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return &StoragePoolInfo{ State: StoragePoolState(cinfo.state), @@ -189,9 +197,10 @@ func (p *StoragePool) GetInfo() (*StoragePoolInfo, error) { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolGetName func (p *StoragePool) GetName() (string, error) { - name := C.virStoragePoolGetName(p.ptr) + var err C.virError + name := C.virStoragePoolGetNameWrapper(p.ptr, &err) if name == nil { - return "", GetLastError() + return "", makeError(&err) } return C.GoString(name), nil } @@ -200,9 +209,10 @@ func (p *StoragePool) GetName() (string, error) { func (p *StoragePool) GetUUID() ([]byte, error) { var cUuid [C.VIR_UUID_BUFLEN](byte) cuidPtr := unsafe.Pointer(&cUuid) - result := C.virStoragePoolGetUUID(p.ptr, (*C.uchar)(cuidPtr)) + var err C.virError + result := C.virStoragePoolGetUUIDWrapper(p.ptr, (*C.uchar)(cuidPtr), &err) if result != 0 { - return []byte{}, GetLastError() + return []byte{}, makeError(&err) } return C.GoBytes(cuidPtr, C.VIR_UUID_BUFLEN), nil } @@ -211,18 +221,20 @@ func (p *StoragePool) GetUUID() ([]byte, error) { func (p *StoragePool) GetUUIDString() (string, error) { var cUuid [C.VIR_UUID_STRING_BUFLEN](C.char) cuidPtr := unsafe.Pointer(&cUuid) - result := C.virStoragePoolGetUUIDString(p.ptr, (*C.char)(cuidPtr)) + var err C.virError + result := C.virStoragePoolGetUUIDStringWrapper(p.ptr, (*C.char)(cuidPtr), &err) if result != 0 { - return "", GetLastError() + return "", makeError(&err) } return C.GoString((*C.char)(cuidPtr)), nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolGetXMLDe... func (p *StoragePool) GetXMLDesc(flags StorageXMLFlags) (string, error) { - result := C.virStoragePoolGetXMLDesc(p.ptr, C.uint(flags)) + var err C.virError + result := C.virStoragePoolGetXMLDescWrapper(p.ptr, C.uint(flags), &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } xml := C.GoString(result) C.free(unsafe.Pointer(result)) @@ -231,9 +243,10 @@ func (p *StoragePool) GetXMLDesc(flags StorageXMLFlags) (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolIsActive func (p *StoragePool) IsActive() (bool, error) { - result := C.virStoragePoolIsActive(p.ptr) + var err C.virError + result := C.virStoragePoolIsActiveWrapper(p.ptr, &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -243,9 +256,10 @@ func (p *StoragePool) IsActive() (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolIsPersis... func (p *StoragePool) IsPersistent() (bool, error) { - result := C.virStoragePoolIsPersistent(p.ptr) + var err C.virError + result := C.virStoragePoolIsPersistentWrapper(p.ptr, &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -262,27 +276,30 @@ func (p *StoragePool) SetAutostart(autostart bool) error { default: cAutostart = 0 } - result := C.virStoragePoolSetAutostart(p.ptr, cAutostart) + var err C.virError + result := C.virStoragePoolSetAutostartWrapper(p.ptr, cAutostart, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolRefresh func (p *StoragePool) Refresh(flags uint32) error { - result := C.virStoragePoolRefresh(p.ptr, C.uint(flags)) + var err C.virError + result := C.virStoragePoolRefreshWrapper(p.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolUndefine func (p *StoragePool) Undefine() error { - result := C.virStoragePoolUndefine(p.ptr) + var err C.virError + result := C.virStoragePoolUndefineWrapper(p.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -291,9 +308,10 @@ func (p *StoragePool) Undefine() error { func (p *StoragePool) StorageVolCreateXML(xmlConfig string, flags StorageVolCreateFlags) (*StorageVol, error) { cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virStorageVolCreateXML(p.ptr, cXml, C.uint(flags)) + var err C.virError + ptr := C.virStorageVolCreateXMLWrapper(p.ptr, cXml, C.uint(flags), &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StorageVol{ptr: ptr}, nil } @@ -302,9 +320,10 @@ func (p *StoragePool) StorageVolCreateXML(xmlConfig string, flags StorageVolCrea func (p *StoragePool) StorageVolCreateXMLFrom(xmlConfig string, clonevol *StorageVol, flags StorageVolCreateFlags) (*StorageVol, error) { cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virStorageVolCreateXMLFrom(p.ptr, cXml, clonevol.ptr, C.uint(flags)) + var err C.virError + ptr := C.virStorageVolCreateXMLFromWrapper(p.ptr, cXml, clonevol.ptr, C.uint(flags), &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StorageVol{ptr: ptr}, nil } @@ -313,18 +332,20 @@ func (p *StoragePool) StorageVolCreateXMLFrom(xmlConfig string, clonevol *Storag func (p *StoragePool) LookupStorageVolByName(name string) (*StorageVol, error) { cName := C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr := C.virStorageVolLookupByName(p.ptr, cName) + var err C.virError + ptr := C.virStorageVolLookupByNameWrapper(p.ptr, cName, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StorageVol{ptr: ptr}, nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolNumOfVol... func (p *StoragePool) NumOfStorageVolumes() (int, error) { - result := int(C.virStoragePoolNumOfVolumes(p.ptr)) + var err C.virError + result := int(C.virStoragePoolNumOfVolumesWrapper(p.ptr, &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } @@ -334,12 +355,13 @@ func (p *StoragePool) ListStorageVolumes() ([]string, error) { const maxVols = 1024 var names [maxVols](*C.char) namesPtr := unsafe.Pointer(&names) - numStorageVols := C.virStoragePoolListVolumes( + var err C.virError + numStorageVols := C.virStoragePoolListVolumesWrapper( p.ptr, (**C.char)(namesPtr), - maxVols) + maxVols, &err) if numStorageVols == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames := make([]string, numStorageVols) for k := 0; k < int(numStorageVols); k++ { @@ -352,9 +374,10 @@ func (p *StoragePool) ListStorageVolumes() ([]string, error) { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolListAllV... func (p *StoragePool) ListAllStorageVolumes(flags uint32) ([]StorageVol, error) { var cList *C.virStorageVolPtr - numVols := C.virStoragePoolListAllVolumes(p.ptr, (**C.virStorageVolPtr)(&cList), C.uint(flags)) + var err C.virError + numVols := C.virStoragePoolListAllVolumesWrapper(p.ptr, (**C.virStorageVolPtr)(&cList), C.uint(flags), &err) if numVols == -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr := reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), diff --git a/storage_pool_wrapper.go b/storage_pool_wrapper.go index cd3c1bc..8534f7c 100644 --- a/storage_pool_wrapper.go +++ b/storage_pool_wrapper.go @@ -30,5 +30,314 @@ package libvirt #include <assert.h> #include "storage_pool_wrapper.h" +int +virStoragePoolBuildWrapper(virStoragePoolPtr pool, + unsigned int flags, + virErrorPtr err) +{ + int ret = virStoragePoolBuild(pool, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolCreateWrapper(virStoragePoolPtr pool, + unsigned int flags, + virErrorPtr err) +{ + int ret = virStoragePoolCreate(pool, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolDeleteWrapper(virStoragePoolPtr pool, + unsigned int flags, + virErrorPtr err) +{ + int ret = virStoragePoolDelete(pool, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolDestroyWrapper(virStoragePoolPtr pool, + virErrorPtr err) +{ + int ret = virStoragePoolDestroy(pool); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolFreeWrapper(virStoragePoolPtr pool, + virErrorPtr err) +{ + int ret = virStoragePoolFree(pool); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolGetAutostartWrapper(virStoragePoolPtr pool, + int *autostart, + virErrorPtr err) +{ + int ret = virStoragePoolGetAutostart(pool, autostart); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virStoragePoolGetConnectWrapper(virStoragePoolPtr pool, + virErrorPtr err) +{ + virConnectPtr ret = virStoragePoolGetConnect(pool); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolGetInfoWrapper(virStoragePoolPtr pool, + virStoragePoolInfoPtr info, + virErrorPtr err) +{ + int ret = virStoragePoolGetInfo(pool, info); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +const char * +virStoragePoolGetNameWrapper(virStoragePoolPtr pool, + virErrorPtr err) +{ + const char * ret = virStoragePoolGetName(pool); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolGetUUIDWrapper(virStoragePoolPtr pool, + unsigned char *uuid, + virErrorPtr err) +{ + int ret = virStoragePoolGetUUID(pool, uuid); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolGetUUIDStringWrapper(virStoragePoolPtr pool, + char *buf, + virErrorPtr err) +{ + int ret = virStoragePoolGetUUIDString(pool, buf); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virStoragePoolGetXMLDescWrapper(virStoragePoolPtr pool, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virStoragePoolGetXMLDesc(pool, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolIsActiveWrapper(virStoragePoolPtr pool, + virErrorPtr err) +{ + int ret = virStoragePoolIsActive(pool); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolIsPersistentWrapper(virStoragePoolPtr pool, + virErrorPtr err) +{ + int ret = virStoragePoolIsPersistent(pool); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolListAllVolumesWrapper(virStoragePoolPtr pool, + virStorageVolPtr **vols, + unsigned int flags, + virErrorPtr err) +{ + int ret = virStoragePoolListAllVolumes(pool, vols, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolListVolumesWrapper(virStoragePoolPtr pool, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret = virStoragePoolListVolumes(pool, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolNumOfVolumesWrapper(virStoragePoolPtr pool, + virErrorPtr err) +{ + int ret = virStoragePoolNumOfVolumes(pool); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolRefWrapper(virStoragePoolPtr pool, + virErrorPtr err) +{ + int ret = virStoragePoolRef(pool); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolRefreshWrapper(virStoragePoolPtr pool, + unsigned int flags, + virErrorPtr err) +{ + int ret = virStoragePoolRefresh(pool, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolSetAutostartWrapper(virStoragePoolPtr pool, + int autostart, + virErrorPtr err) +{ + int ret = virStoragePoolSetAutostart(pool, autostart); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStoragePoolUndefineWrapper(virStoragePoolPtr pool, + virErrorPtr err) +{ + int ret = virStoragePoolUndefine(pool); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virStorageVolPtr +virStorageVolCreateXMLWrapper(virStoragePoolPtr pool, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err) +{ + virStorageVolPtr ret = virStorageVolCreateXML(pool, xmlDesc, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStorageVolPtr +virStorageVolCreateXMLFromWrapper(virStoragePoolPtr pool, + const char *xmlDesc, + virStorageVolPtr clonevol, + unsigned int flags, + virErrorPtr err) +{ + virStorageVolPtr ret = virStorageVolCreateXMLFrom(pool, xmlDesc, clonevol, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStorageVolPtr +virStorageVolLookupByNameWrapper(virStoragePoolPtr pool, + const char *name, + virErrorPtr err) +{ + virStorageVolPtr ret = virStorageVolLookupByName(pool, name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + + */ import "C" diff --git a/storage_pool_wrapper.h b/storage_pool_wrapper.h index 3e2f60f..acd121b 100644 --- a/storage_pool_wrapper.h +++ b/storage_pool_wrapper.h @@ -30,4 +30,121 @@ #include <libvirt/virterror.h> #include "storage_pool_compat.h" +int +virStoragePoolBuildWrapper(virStoragePoolPtr pool, + unsigned int flags, + virErrorPtr err); + +int +virStoragePoolCreateWrapper(virStoragePoolPtr pool, + unsigned int flags, + virErrorPtr err); + +int +virStoragePoolDeleteWrapper(virStoragePoolPtr pool, + unsigned int flags, + virErrorPtr err); + +int +virStoragePoolDestroyWrapper(virStoragePoolPtr pool, + virErrorPtr err); + +int +virStoragePoolFreeWrapper(virStoragePoolPtr pool, + virErrorPtr err); + +int +virStoragePoolGetAutostartWrapper(virStoragePoolPtr pool, + int *autostart, + virErrorPtr err); + +virConnectPtr +virStoragePoolGetConnectWrapper(virStoragePoolPtr pool, + virErrorPtr err); + +int +virStoragePoolGetInfoWrapper(virStoragePoolPtr pool, + virStoragePoolInfoPtr info, + virErrorPtr err); + +const char * +virStoragePoolGetNameWrapper(virStoragePoolPtr pool, + virErrorPtr err); + +int +virStoragePoolGetUUIDWrapper(virStoragePoolPtr pool, + unsigned char *uuid, + virErrorPtr err); + +int +virStoragePoolGetUUIDStringWrapper(virStoragePoolPtr pool, + char *buf, + virErrorPtr err); + +char * +virStoragePoolGetXMLDescWrapper(virStoragePoolPtr pool, + unsigned int flags, + virErrorPtr err); + +int +virStoragePoolIsActiveWrapper(virStoragePoolPtr pool, + virErrorPtr err); + +int +virStoragePoolIsPersistentWrapper(virStoragePoolPtr pool, + virErrorPtr err); + +int +virStoragePoolListAllVolumesWrapper(virStoragePoolPtr pool, + virStorageVolPtr **vols, + unsigned int flags, + virErrorPtr err); + +int +virStoragePoolListVolumesWrapper(virStoragePoolPtr pool, + char **const names, + int maxnames, + virErrorPtr err); + +int +virStoragePoolNumOfVolumesWrapper(virStoragePoolPtr pool, + virErrorPtr err); + +int +virStoragePoolRefWrapper(virStoragePoolPtr pool, + virErrorPtr err); + +int +virStoragePoolRefreshWrapper(virStoragePoolPtr pool, + unsigned int flags, + virErrorPtr err); + +int +virStoragePoolSetAutostartWrapper(virStoragePoolPtr pool, + int autostart, + virErrorPtr err); + +int +virStoragePoolUndefineWrapper(virStoragePoolPtr pool, + virErrorPtr err); + +virStorageVolPtr +virStorageVolCreateXMLWrapper(virStoragePoolPtr pool, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err); + +virStorageVolPtr +virStorageVolCreateXMLFromWrapper(virStoragePoolPtr pool, + const char *xmlDesc, + virStorageVolPtr clonevol, + unsigned int flags, + virErrorPtr err); + +virStorageVolPtr +virStorageVolLookupByNameWrapper(virStoragePoolPtr pool, + const char *name, + virErrorPtr err); + + #endif /* LIBVIRT_GO_STORAGE_POOL_WRAPPER_H__ */ -- 2.17.1

Create wrapper functions for each stream 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é <berrange@redhat.com> --- stream.go | 80 +++++++++------- stream_wrapper.go | 231 +++++++++++++++++++++++++++++++++++++++------- stream_wrapper.h | 84 +++++++++++++---- 3 files changed, 312 insertions(+), 83 deletions(-) diff --git a/stream.go b/stream.go index c5c1ef7..515ae08 100644 --- a/stream.go +++ b/stream.go @@ -64,9 +64,10 @@ type Stream struct { // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamAbort func (v *Stream) Abort() error { - result := C.virStreamAbort(v.ptr) + var err C.virError + result := C.virStreamAbortWrapper(v.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -74,9 +75,10 @@ func (v *Stream) Abort() error { // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamFinish func (v *Stream) Finish() error { - result := C.virStreamFinish(v.ptr) + var err C.virError + result := C.virStreamFinishWrapper(v.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -84,27 +86,30 @@ func (v *Stream) Finish() error { // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamFree func (v *Stream) Free() error { - ret := C.virStreamFree(v.ptr) + var err C.virError + ret := C.virStreamFreeWrapper(v.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamRef func (c *Stream) Ref() error { - ret := C.virStreamRef(c.ptr) + var err C.virError + ret := C.virStreamRefWrapper(c.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamRecv func (v *Stream) Recv(p []byte) (int, error) { - n := C.virStreamRecv(v.ptr, (*C.char)(unsafe.Pointer(&p[0])), C.size_t(len(p))) + var err C.virError + n := C.virStreamRecvWrapper(v.ptr, (*C.char)(unsafe.Pointer(&p[0])), C.size_t(len(p)), &err) if n < 0 { - return 0, GetLastError() + return 0, makeError(&err) } if n == 0 { return 0, io.EOF @@ -119,9 +124,10 @@ func (v *Stream) RecvFlags(p []byte, flags StreamRecvFlagsValues) (int, error) { return 0, GetNotImplementedError("virStreamRecvFlags") } - n := C.virStreamRecvFlagsWrapper(v.ptr, (*C.char)(unsafe.Pointer(&p[0])), C.size_t(len(p)), C.uint(flags)) + var err C.virError + n := C.virStreamRecvFlagsWrapper(v.ptr, (*C.char)(unsafe.Pointer(&p[0])), C.size_t(len(p)), C.uint(flags), &err) if n < 0 { - return 0, GetLastError() + return 0, makeError(&err) } if n == 0 { return 0, io.EOF @@ -137,9 +143,10 @@ func (v *Stream) RecvHole(flags uint) (int64, error) { } var len C.longlong - ret := C.virStreamRecvHoleWrapper(v.ptr, &len, C.uint(flags)) + var err C.virError + ret := C.virStreamRecvHoleWrapper(v.ptr, &len, C.uint(flags), &err) if ret < 0 { - return 0, GetLastError() + return 0, makeError(&err) } return int64(len), nil @@ -147,9 +154,10 @@ func (v *Stream) RecvHole(flags uint) (int64, error) { // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamSend func (v *Stream) Send(p []byte) (int, error) { - n := C.virStreamSend(v.ptr, (*C.char)(unsafe.Pointer(&p[0])), C.size_t(len(p))) + var err C.virError + n := C.virStreamSendWrapper(v.ptr, (*C.char)(unsafe.Pointer(&p[0])), C.size_t(len(p)), &err) if n < 0 { - return 0, GetLastError() + return 0, makeError(&err) } if n == 0 { return 0, io.EOF @@ -164,9 +172,10 @@ func (v *Stream) SendHole(len int64, flags uint32) error { return GetNotImplementedError("virStreamSendHole") } - ret := C.virStreamSendHoleWrapper(v.ptr, C.longlong(len), C.uint(flags)) + var err C.virError + ret := C.virStreamSendHoleWrapper(v.ptr, C.longlong(len), C.uint(flags), &err) if ret < 0 { - return GetLastError() + return makeError(&err) } return nil @@ -220,10 +229,11 @@ func (v *Stream) RecvAll(handler StreamSinkFunc) error { callbackID := registerCallbackId(handler) - ret := C.virStreamRecvAllWrapper(v.ptr, (C.int)(callbackID)) + var err C.virError + ret := C.virStreamRecvAllWrapper(v.ptr, (C.int)(callbackID), &err) freeCallbackId(callbackID) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -238,11 +248,12 @@ func (v *Stream) SparseRecvAll(handler StreamSinkFunc, holeHandler StreamSinkHol callbackID := registerCallbackId(handler) holeCallbackID := registerCallbackId(holeHandler) - ret := C.virStreamSparseRecvAllWrapper(v.ptr, (C.int)(callbackID), (C.int)(holeCallbackID)) + var err C.virError + ret := C.virStreamSparseRecvAllWrapper(v.ptr, (C.int)(callbackID), (C.int)(holeCallbackID), &err) freeCallbackId(callbackID) freeCallbackId(holeCallbackID) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -325,10 +336,11 @@ func (v *Stream) SendAll(handler StreamSourceFunc) error { callbackID := registerCallbackId(handler) - ret := C.virStreamSendAllWrapper(v.ptr, (C.int)(callbackID)) + var err C.virError + ret := C.virStreamSendAllWrapper(v.ptr, (C.int)(callbackID), &err) freeCallbackId(callbackID) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -344,12 +356,13 @@ func (v *Stream) SparseSendAll(handler StreamSourceFunc, holeHandler StreamSourc holeCallbackID := registerCallbackId(holeHandler) skipCallbackID := registerCallbackId(skipHandler) - ret := C.virStreamSparseSendAllWrapper(v.ptr, (C.int)(callbackID), (C.int)(holeCallbackID), (C.int)(skipCallbackID)) + var err C.virError + ret := C.virStreamSparseSendAllWrapper(v.ptr, (C.int)(callbackID), (C.int)(holeCallbackID), (C.int)(skipCallbackID), &err) freeCallbackId(callbackID) freeCallbackId(holeCallbackID) freeCallbackId(skipCallbackID) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -361,9 +374,10 @@ type StreamEventCallback func(*Stream, StreamEventType) func (v *Stream) EventAddCallback(events StreamEventType, callback StreamEventCallback) error { callbackID := registerCallbackId(callback) - ret := C.virStreamEventAddCallbackWrapper(v.ptr, (C.int)(events), (C.int)(callbackID)) + var err C.virError + ret := C.virStreamEventAddCallbackWrapper(v.ptr, (C.int)(events), (C.int)(callbackID), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -383,9 +397,10 @@ func streamEventCallback(st C.virStreamPtr, events int, callbackID int) { // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamEventUpdateCal... func (v *Stream) EventUpdateCallback(events StreamEventType) error { - ret := C.virStreamEventUpdateCallback(v.ptr, (C.int)(events)) + var err C.virError + ret := C.virStreamEventUpdateCallbackWrapper(v.ptr, (C.int)(events), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -393,9 +408,10 @@ func (v *Stream) EventUpdateCallback(events StreamEventType) error { // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamEventRemoveCal... func (v *Stream) EventRemoveCallback() error { - ret := C.virStreamEventRemoveCallback(v.ptr) + var err C.virError + ret := C.virStreamEventRemoveCallbackWrapper(v.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil diff --git a/stream_wrapper.go b/stream_wrapper.go index 90cc110..e563a74 100644 --- a/stream_wrapper.go +++ b/stream_wrapper.go @@ -81,84 +81,251 @@ static int streamSinkHoleCallbackHelper(virStreamPtr st, long long length, void return streamSinkHoleCallback(st, length, cbdata->holeCallbackID); } -int virStreamSendAllWrapper(virStreamPtr st, int callbackID) +int +virStreamAbortWrapper(virStreamPtr stream, + virErrorPtr err) +{ + int ret = virStreamAbort(stream); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +void +streamEventCallback(virStreamPtr st, int events, int callbackID); + +static void +streamEventCallbackHelper(virStreamPtr st, int events, void *opaque) +{ + streamEventCallback(st, events, (int)(intptr_t)opaque); +} + +int +virStreamEventAddCallbackWrapper(virStreamPtr stream, + int events, + int callbackID, + virErrorPtr err) +{ + int ret = virStreamEventAddCallback(stream, events, streamEventCallbackHelper, (void *)(intptr_t)callbackID, NULL); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStreamEventRemoveCallbackWrapper(virStreamPtr stream, + virErrorPtr err) +{ + int ret = virStreamEventRemoveCallback(stream); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStreamEventUpdateCallbackWrapper(virStreamPtr stream, + int events, + virErrorPtr err) +{ + int ret = virStreamEventUpdateCallback(stream, events); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStreamFinishWrapper(virStreamPtr stream, + virErrorPtr err) +{ + int ret = virStreamFinish(stream); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStreamFreeWrapper(virStreamPtr stream, + virErrorPtr err) +{ + int ret = virStreamFree(stream); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStreamRecvWrapper(virStreamPtr stream, + char *data, + size_t nbytes, + virErrorPtr err) +{ + int ret = virStreamRecv(stream, data, nbytes); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStreamRecvAllWrapper(virStreamPtr stream, + int callbackID, + virErrorPtr err) { struct CallbackData cbdata = { .callbackID = callbackID }; - return virStreamSendAll(st, streamSourceCallbackHelper, &cbdata); + int ret = virStreamRecvAll(stream, streamSinkCallbackHelper, &cbdata); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virStreamSparseSendAllWrapper(virStreamPtr st, int callbackID, int holeCallbackID, int skipCallbackID) + +int +virStreamRecvFlagsWrapper(virStreamPtr stream, + char *data, + size_t nbytes, + unsigned int flags, + virErrorPtr err) { - struct CallbackData cbdata = { .callbackID = callbackID, .holeCallbackID = holeCallbackID, .skipCallbackID = skipCallbackID }; #if LIBVIR_VERSION_NUMBER < 3004000 assert(0); // Caller should have checked version #else - return virStreamSparseSendAll(st, streamSourceCallbackHelper, streamSourceHoleCallbackHelper, streamSourceSkipCallbackHelper, &cbdata); + int ret = virStreamRecvFlags(stream, data, nbytes, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virStreamRecvAllWrapper(virStreamPtr st, int callbackID) -{ - struct CallbackData cbdata = { .callbackID = callbackID }; - return virStreamRecvAll(st, streamSinkCallbackHelper, &cbdata); -} - -int virStreamSparseRecvAllWrapper(virStreamPtr st, int callbackID, int holeCallbackID) +int +virStreamRecvHoleWrapper(virStreamPtr stream, + long long *length, + unsigned int flags, + virErrorPtr err) { - struct CallbackData cbdata = { .callbackID = callbackID, .holeCallbackID = holeCallbackID }; #if LIBVIR_VERSION_NUMBER < 3004000 assert(0); // Caller should have checked version #else - return virStreamSparseRecvAll(st, streamSinkCallbackHelper, streamSinkHoleCallbackHelper, &cbdata); + int ret = virStreamRecvHole(stream, length, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -void streamEventCallback(virStreamPtr st, int events, int callbackID); -static void streamEventCallbackHelper(virStreamPtr st, int events, void *opaque) +int +virStreamRefWrapper(virStreamPtr stream, + virErrorPtr err) { - streamEventCallback(st, events, (int)(intptr_t)opaque); + int ret = virStreamRef(stream); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virStreamEventAddCallbackWrapper(virStreamPtr st, int events, int callbackID) + +int +virStreamSendWrapper(virStreamPtr stream, + const char *data, + size_t nbytes, + virErrorPtr err) { - return virStreamEventAddCallback(st, events, streamEventCallbackHelper, (void *)(intptr_t)callbackID, NULL); + int ret = virStreamSend(stream, data, nbytes); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virStreamRecvFlagsWrapper(virStreamPtr st, - char *data, - size_t nbytes, - unsigned int flags) + +int +virStreamSendAllWrapper(virStreamPtr stream, + int callbackID, + virErrorPtr err) +{ + struct CallbackData cbdata = { .callbackID = callbackID }; + int ret = virStreamSendAll(stream, streamSourceCallbackHelper, &cbdata); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virStreamSendHoleWrapper(virStreamPtr stream, + long long length, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 3004000 assert(0); // Caller should have checked version #else - return virStreamRecvFlags(st, data, nbytes, flags); + int ret = virStreamSendHole(stream, length, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virStreamSendHoleWrapper(virStreamPtr st, - long long length, - unsigned int flags) + +int +virStreamSparseRecvAllWrapper(virStreamPtr stream, + int callbackID, + int holeCallbackID, + virErrorPtr err) { + struct CallbackData cbdata = { .callbackID = callbackID, .holeCallbackID = holeCallbackID }; #if LIBVIR_VERSION_NUMBER < 3004000 assert(0); // Caller should have checked version #else - return virStreamSendHole(st, length, flags); + int ret = virStreamSparseRecvAll(stream, streamSinkCallbackHelper, streamSinkHoleCallbackHelper, &cbdata); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virStreamRecvHoleWrapper(virStreamPtr st, - long long *length, - unsigned int flags) + +int +virStreamSparseSendAllWrapper(virStreamPtr stream, + int callbackID, + int holeCallbackID, + int skipCallbackID, + virErrorPtr err) { + struct CallbackData cbdata = { .callbackID = callbackID, .holeCallbackID = holeCallbackID, .skipCallbackID = skipCallbackID }; #if LIBVIR_VERSION_NUMBER < 3004000 assert(0); // Caller should have checked version #else - return virStreamRecvHole(st, length, flags); + int ret = virStreamSparseSendAll(stream, streamSourceCallbackHelper, streamSourceHoleCallbackHelper, streamSourceSkipCallbackHelper, &cbdata); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } + */ import "C" diff --git a/stream_wrapper.h b/stream_wrapper.h index 5484441..b9c6e57 100644 --- a/stream_wrapper.h +++ b/stream_wrapper.h @@ -32,43 +32,89 @@ #include "stream_compat.h" int -virStreamSendAllWrapper(virStreamPtr st, - int callbackID); +virStreamAbortWrapper(virStreamPtr stream, + virErrorPtr err); int -virStreamRecvAllWrapper(virStreamPtr st, - int callbackID); +virStreamEventAddCallbackWrapper(virStreamPtr st, + int events, + int callbackID, + virErrorPtr err); int -virStreamSparseSendAllWrapper(virStreamPtr st, - int callbackID, - int holeCallbackID, - int skipCallbackID); +virStreamEventRemoveCallbackWrapper(virStreamPtr stream, + virErrorPtr err); int -virStreamSparseRecvAllWrapper(virStreamPtr st, - int callbackID, - int holeCallbackID); +virStreamEventUpdateCallbackWrapper(virStreamPtr stream, + int events, + virErrorPtr err); int -virStreamEventAddCallbackWrapper(virStreamPtr st, - int events, - int callbackID); +virStreamFinishWrapper(virStreamPtr stream, + virErrorPtr err); + +int +virStreamFreeWrapper(virStreamPtr stream, + virErrorPtr err); + +int +virStreamRecvWrapper(virStreamPtr stream, + char *data, + size_t nbytes, + virErrorPtr err); + +int +virStreamRecvAllWrapper(virStreamPtr st, + int callbackID, + virErrorPtr err); int virStreamRecvFlagsWrapper(virStreamPtr st, char *data, size_t nbytes, - unsigned int flags); + unsigned int flags, + virErrorPtr err); + +int +virStreamRecvHoleWrapper(virStreamPtr, + long long *length, + unsigned int flags, + virErrorPtr err); + +int +virStreamRefWrapper(virStreamPtr stream, + virErrorPtr err); + +int +virStreamSendWrapper(virStreamPtr stream, + const char *data, + size_t nbytes, + virErrorPtr err); + +int +virStreamSendAllWrapper(virStreamPtr st, + int callbackID, + virErrorPtr err); int virStreamSendHoleWrapper(virStreamPtr st, long long length, - unsigned int flags); + unsigned int flags, + virErrorPtr err); int -virStreamRecvHoleWrapper(virStreamPtr, - long long *length, - unsigned int flags); +virStreamSparseRecvAllWrapper(virStreamPtr st, + int callbackID, + int holeCallbackID, + virErrorPtr err); + +int +virStreamSparseSendAllWrapper(virStreamPtr st, + int callbackID, + int holeCallbackID, + int skipCallbackID, + virErrorPtr err); + #endif /* LIBVIRT_GO_STREAM_WRAPPER_H__ */ -- 2.17.1

Create wrapper functions for each secret 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é <berrange@redhat.com> --- secret.go | 50 +++++++++------- secret_wrapper.go | 141 ++++++++++++++++++++++++++++++++++++++++++++++ secret_wrapper.h | 53 +++++++++++++++++ 3 files changed, 224 insertions(+), 20 deletions(-) diff --git a/secret.go b/secret.go index 9bd8b36..c4ef44b 100644 --- a/secret.go +++ b/secret.go @@ -67,27 +67,30 @@ type Secret struct { // See also https://libvirt.org/html/libvirt-libvirt-secret.html#virSecretFree func (s *Secret) Free() error { - ret := C.virSecretFree(s.ptr) + var err C.virError + ret := C.virSecretFreeWrapper(s.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-secret.html#virSecretRef func (c *Secret) Ref() error { - ret := C.virSecretRef(c.ptr) + var err C.virError + ret := C.virSecretRefWrapper(c.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-secret.html#virSecretUndefine func (s *Secret) Undefine() error { - result := C.virSecretUndefine(s.ptr) + var err C.virError + result := C.virSecretUndefineWrapper(s.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -96,9 +99,10 @@ func (s *Secret) Undefine() error { func (s *Secret) GetUUID() ([]byte, error) { var cUuid [C.VIR_UUID_BUFLEN](byte) cuidPtr := unsafe.Pointer(&cUuid) - result := C.virSecretGetUUID(s.ptr, (*C.uchar)(cuidPtr)) + var err C.virError + result := C.virSecretGetUUIDWrapper(s.ptr, (*C.uchar)(cuidPtr), &err) if result != 0 { - return []byte{}, GetLastError() + return []byte{}, makeError(&err) } return C.GoBytes(cuidPtr, C.VIR_UUID_BUFLEN), nil } @@ -107,36 +111,40 @@ func (s *Secret) GetUUID() ([]byte, error) { func (s *Secret) GetUUIDString() (string, error) { var cUuid [C.VIR_UUID_STRING_BUFLEN](C.char) cuidPtr := unsafe.Pointer(&cUuid) - result := C.virSecretGetUUIDString(s.ptr, (*C.char)(cuidPtr)) + var err C.virError + result := C.virSecretGetUUIDStringWrapper(s.ptr, (*C.char)(cuidPtr), &err) if result != 0 { - return "", GetLastError() + return "", makeError(&err) } return C.GoString((*C.char)(cuidPtr)), nil } // See also https://libvirt.org/html/libvirt-libvirt-secret.html#virSecretGetUsageID func (s *Secret) GetUsageID() (string, error) { - result := C.virSecretGetUsageID(s.ptr) + var err C.virError + result := C.virSecretGetUsageIDWrapper(s.ptr, &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } return C.GoString(result), nil } // See also https://libvirt.org/html/libvirt-libvirt-secret.html#virSecretGetUsageType func (s *Secret) GetUsageType() (SecretUsageType, error) { - result := SecretUsageType(C.virSecretGetUsageType(s.ptr)) + var err C.virError + result := SecretUsageType(C.virSecretGetUsageTypeWrapper(s.ptr, &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } // See also https://libvirt.org/html/libvirt-libvirt-secret.html#virSecretGetXMLDesc func (s *Secret) GetXMLDesc(flags uint32) (string, error) { - result := C.virSecretGetXMLDesc(s.ptr, C.uint(flags)) + var err C.virError + result := C.virSecretGetXMLDescWrapper(s.ptr, C.uint(flags), &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } xml := C.GoString(result) C.free(unsafe.Pointer(result)) @@ -147,9 +155,10 @@ func (s *Secret) GetXMLDesc(flags uint32) (string, error) { func (s *Secret) GetValue(flags uint32) ([]byte, error) { var cvalue_size C.size_t - cvalue := C.virSecretGetValue(s.ptr, &cvalue_size, C.uint(flags)) + var err C.virError + cvalue := C.virSecretGetValueWrapper(s.ptr, &cvalue_size, C.uint(flags), &err) if cvalue == nil { - return nil, GetLastError() + return nil, makeError(&err) } defer C.free(unsafe.Pointer(cvalue)) ret := C.GoBytes(unsafe.Pointer(cvalue), C.int(cvalue_size)) @@ -164,10 +173,11 @@ func (s *Secret) SetValue(value []byte, flags uint32) error { cvalue[i] = C.uchar(value[i]) } - result := C.virSecretSetValue(s.ptr, &cvalue[0], C.size_t(len(value)), C.uint(flags)) + var err C.virError + result := C.virSecretSetValueWrapper(s.ptr, &cvalue[0], C.size_t(len(value)), C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil diff --git a/secret_wrapper.go b/secret_wrapper.go index 1bcc74d..96f60f6 100644 --- a/secret_wrapper.go +++ b/secret_wrapper.go @@ -30,5 +30,146 @@ package libvirt #include <assert.h> #include "secret_wrapper.h" + +int +virSecretFreeWrapper(virSecretPtr secret, + virErrorPtr err) +{ + int ret = virSecretFree(secret); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virSecretGetConnectWrapper(virSecretPtr secret, + virErrorPtr err) +{ + virConnectPtr ret = virSecretGetConnect(secret); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virSecretGetUUIDWrapper(virSecretPtr secret, + unsigned char *uuid, + virErrorPtr err) +{ + int ret = virSecretGetUUID(secret, uuid); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virSecretGetUUIDStringWrapper(virSecretPtr secret, + char *buf, + virErrorPtr err) +{ + int ret = virSecretGetUUIDString(secret, buf); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +const char * +virSecretGetUsageIDWrapper(virSecretPtr secret, + virErrorPtr err) +{ + const char * ret = virSecretGetUsageID(secret); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virSecretGetUsageTypeWrapper(virSecretPtr secret, + virErrorPtr err) +{ + int ret = virSecretGetUsageType(secret); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +unsigned char * +virSecretGetValueWrapper(virSecretPtr secret, + size_t *value_size, + unsigned int flags, + virErrorPtr err) +{ + unsigned char * ret = virSecretGetValue(secret, value_size, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virSecretGetXMLDescWrapper(virSecretPtr secret, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virSecretGetXMLDesc(secret, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virSecretRefWrapper(virSecretPtr secret, + virErrorPtr err) +{ + int ret = virSecretRef(secret); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virSecretSetValueWrapper(virSecretPtr secret, + const unsigned char *value, + size_t value_size, + unsigned int flags, + virErrorPtr err) +{ + int ret = virSecretSetValue(secret, value, value_size, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virSecretUndefineWrapper(virSecretPtr secret, + virErrorPtr err) +{ + int ret = virSecretUndefine(secret); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + */ import "C" diff --git a/secret_wrapper.h b/secret_wrapper.h index 478c7d4..eca6f0a 100644 --- a/secret_wrapper.h +++ b/secret_wrapper.h @@ -30,4 +30,57 @@ #include <libvirt/virterror.h> #include "secret_compat.h" +int +virSecretFreeWrapper(virSecretPtr secret, + virErrorPtr err); + +virConnectPtr +virSecretGetConnectWrapper(virSecretPtr secret, + virErrorPtr err); + +int +virSecretGetUUIDWrapper(virSecretPtr secret, + unsigned char *uuid, + virErrorPtr err); + +int +virSecretGetUUIDStringWrapper(virSecretPtr secret, + char *buf, + virErrorPtr err); + +const char * +virSecretGetUsageIDWrapper(virSecretPtr secret, + virErrorPtr err); + +int +virSecretGetUsageTypeWrapper(virSecretPtr secret, + virErrorPtr err); + +unsigned char * +virSecretGetValueWrapper(virSecretPtr secret, + size_t *value_size, + unsigned int flags, + virErrorPtr err); + +char * +virSecretGetXMLDescWrapper(virSecretPtr secret, + unsigned int flags, + virErrorPtr err); + +int +virSecretRefWrapper(virSecretPtr secret, + virErrorPtr err); + +int +virSecretSetValueWrapper(virSecretPtr secret, + const unsigned char *value, + size_t value_size, + unsigned int flags, + virErrorPtr err); + +int +virSecretUndefineWrapper(virSecretPtr secret, + virErrorPtr err); + + #endif /* LIBVIRT_GO_SECRET_WRAPPER_H__ */ -- 2.17.1

Create wrapper functions for each nwfilter 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é <berrange@redhat.com> --- nwfilter.go | 35 ++++++++++-------- nwfilter_wrapper.go | 88 +++++++++++++++++++++++++++++++++++++++++++++ nwfilter_wrapper.h | 33 +++++++++++++++++ 3 files changed, 142 insertions(+), 14 deletions(-) diff --git a/nwfilter.go b/nwfilter.go index 441fcca..0b55c41 100644 --- a/nwfilter.go +++ b/nwfilter.go @@ -43,36 +43,40 @@ type NWFilter struct { // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virNWFilterFree func (f *NWFilter) Free() error { - ret := C.virNWFilterFree(f.ptr) + var err C.virError + ret := C.virNWFilterFreeWrapper(f.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virNWFilterRef func (c *NWFilter) Ref() error { - ret := C.virNWFilterRef(c.ptr) + var err C.virError + ret := C.virNWFilterRefWrapper(c.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virNWFilterGetName func (f *NWFilter) GetName() (string, error) { - name := C.virNWFilterGetName(f.ptr) + var err C.virError + name := C.virNWFilterGetNameWrapper(f.ptr, &err) if name == nil { - return "", GetLastError() + return "", makeError(&err) } return C.GoString(name), nil } // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virNWFilterUndefine func (f *NWFilter) Undefine() error { - result := C.virNWFilterUndefine(f.ptr) + var err C.virError + result := C.virNWFilterUndefineWrapper(f.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -81,9 +85,10 @@ func (f *NWFilter) Undefine() error { func (f *NWFilter) GetUUID() ([]byte, error) { var cUuid [C.VIR_UUID_BUFLEN](byte) cuidPtr := unsafe.Pointer(&cUuid) - result := C.virNWFilterGetUUID(f.ptr, (*C.uchar)(cuidPtr)) + var err C.virError + result := C.virNWFilterGetUUIDWrapper(f.ptr, (*C.uchar)(cuidPtr), &err) if result != 0 { - return []byte{}, GetLastError() + return []byte{}, makeError(&err) } return C.GoBytes(cuidPtr, C.VIR_UUID_BUFLEN), nil } @@ -92,18 +97,20 @@ func (f *NWFilter) GetUUID() ([]byte, error) { func (f *NWFilter) GetUUIDString() (string, error) { var cUuid [C.VIR_UUID_STRING_BUFLEN](C.char) cuidPtr := unsafe.Pointer(&cUuid) - result := C.virNWFilterGetUUIDString(f.ptr, (*C.char)(cuidPtr)) + var err C.virError + result := C.virNWFilterGetUUIDStringWrapper(f.ptr, (*C.char)(cuidPtr), &err) if result != 0 { - return "", GetLastError() + return "", makeError(&err) } return C.GoString((*C.char)(cuidPtr)), nil } // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virNWFilterGetXMLDesc func (f *NWFilter) GetXMLDesc(flags uint32) (string, error) { - result := C.virNWFilterGetXMLDesc(f.ptr, C.uint(flags)) + var err C.virError + result := C.virNWFilterGetXMLDescWrapper(f.ptr, C.uint(flags), &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } xml := C.GoString(result) C.free(unsafe.Pointer(result)) diff --git a/nwfilter_wrapper.go b/nwfilter_wrapper.go index 78d0487..809e527 100644 --- a/nwfilter_wrapper.go +++ b/nwfilter_wrapper.go @@ -30,5 +30,93 @@ package libvirt #include <assert.h> #include "nwfilter_wrapper.h" + +int +virNWFilterFreeWrapper(virNWFilterPtr nwfilter, + virErrorPtr err) +{ + int ret = virNWFilterFree(nwfilter); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +const char * +virNWFilterGetNameWrapper(virNWFilterPtr nwfilter, + virErrorPtr err) +{ + const char * ret = virNWFilterGetName(nwfilter); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virNWFilterGetUUIDWrapper(virNWFilterPtr nwfilter, + unsigned char *uuid, + virErrorPtr err) +{ + int ret = virNWFilterGetUUID(nwfilter, uuid); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNWFilterGetUUIDStringWrapper(virNWFilterPtr nwfilter, + char *buf, + virErrorPtr err) +{ + int ret = virNWFilterGetUUIDString(nwfilter, buf); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virNWFilterGetXMLDescWrapper(virNWFilterPtr nwfilter, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virNWFilterGetXMLDesc(nwfilter, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virNWFilterRefWrapper(virNWFilterPtr nwfilter, + virErrorPtr err) +{ + int ret = virNWFilterRef(nwfilter); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNWFilterUndefineWrapper(virNWFilterPtr nwfilter, + virErrorPtr err) +{ + int ret = virNWFilterUndefine(nwfilter); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + */ import "C" diff --git a/nwfilter_wrapper.h b/nwfilter_wrapper.h index c470366..9a0651c 100644 --- a/nwfilter_wrapper.h +++ b/nwfilter_wrapper.h @@ -29,4 +29,37 @@ #include <libvirt/libvirt.h> #include <libvirt/virterror.h> + +int +virNWFilterFreeWrapper(virNWFilterPtr nwfilter, + virErrorPtr err); + +const char * +virNWFilterGetNameWrapper(virNWFilterPtr nwfilter, + virErrorPtr err); + +int +virNWFilterGetUUIDWrapper(virNWFilterPtr nwfilter, + unsigned char *uuid, + virErrorPtr err); + +int +virNWFilterGetUUIDStringWrapper(virNWFilterPtr nwfilter, + char *buf, + virErrorPtr err); + +char * +virNWFilterGetXMLDescWrapper(virNWFilterPtr nwfilter, + unsigned int flags, + virErrorPtr err); + +int +virNWFilterRefWrapper(virNWFilterPtr nwfilter, + virErrorPtr err); + +int +virNWFilterUndefineWrapper(virNWFilterPtr nwfilter, + virErrorPtr err); + + #endif /* LIBVIRT_GO_NWFILTER_WRAPPER_H__ */ -- 2.17.1

Create wrapper functions for each nwfilter binding 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é <berrange@redhat.com> --- nwfilter_binding.go | 30 +++++++++++------- nwfilter_binding_wrapper.go | 63 +++++++++++++++++++++++++++++-------- nwfilter_binding_wrapper.h | 27 ++++++++++------ 3 files changed, 85 insertions(+), 35 deletions(-) diff --git a/nwfilter_binding.go b/nwfilter_binding.go index 722303b..5999d3e 100644 --- a/nwfilter_binding.go +++ b/nwfilter_binding.go @@ -45,9 +45,10 @@ func (f *NWFilterBinding) Free() error { if C.LIBVIR_VERSION_NUMBER < 4005000 { return GetNotImplementedError("virNWFilterBindingFree") } - ret := C.virNWFilterBindingFreeWrapper(f.ptr) + var err C.virError + ret := C.virNWFilterBindingFreeWrapper(f.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -57,9 +58,10 @@ func (c *NWFilterBinding) Ref() error { if C.LIBVIR_VERSION_NUMBER < 4005000 { return GetNotImplementedError("virNWFilterBindingRef") } - ret := C.virNWFilterBindingRefWrapper(c.ptr) + var err C.virError + ret := C.virNWFilterBindingRefWrapper(c.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -69,9 +71,10 @@ func (f *NWFilterBinding) Delete() error { if C.LIBVIR_VERSION_NUMBER < 4005000 { return GetNotImplementedError("virNWFilterBindingDelete") } - result := C.virNWFilterBindingDeleteWrapper(f.ptr) + var err C.virError + result := C.virNWFilterBindingDeleteWrapper(f.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -81,9 +84,10 @@ func (f *NWFilterBinding) GetPortDev() (string, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { return "", GetNotImplementedError("virNWFilterBindingGetPortDev") } - result := C.virNWFilterBindingGetPortDevWrapper(f.ptr) + var err C.virError + result := C.virNWFilterBindingGetPortDevWrapper(f.ptr, &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } name := C.GoString(result) C.free(unsafe.Pointer(result)) @@ -95,9 +99,10 @@ func (f *NWFilterBinding) GetFilterName() (string, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { return "", GetNotImplementedError("virNWFilterBindingGetFilterName") } - result := C.virNWFilterBindingGetFilterNameWrapper(f.ptr) + var err C.virError + result := C.virNWFilterBindingGetFilterNameWrapper(f.ptr, &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } name := C.GoString(result) C.free(unsafe.Pointer(result)) @@ -109,9 +114,10 @@ func (f *NWFilterBinding) GetXMLDesc(flags uint32) (string, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { return "", GetNotImplementedError("virNWFilterBindingGetXMLDesc") } - result := C.virNWFilterBindingGetXMLDescWrapper(f.ptr, C.uint(flags)) + var err C.virError + result := C.virNWFilterBindingGetXMLDescWrapper(f.ptr, C.uint(flags), &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } xml := C.GoString(result) C.free(unsafe.Pointer(result)) diff --git a/nwfilter_binding_wrapper.go b/nwfilter_binding_wrapper.go index fdafaef..b0950b5 100644 --- a/nwfilter_binding_wrapper.go +++ b/nwfilter_binding_wrapper.go @@ -30,63 +30,100 @@ package libvirt #include <assert.h> #include "nwfilter_binding_wrapper.h" -const char *virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding) + +int +virNWFilterBindingDeleteWrapper(virNWFilterBindingPtr binding, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version #else - return virNWFilterBindingGetPortDev(binding); + int ret = virNWFilterBindingDelete(binding); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -const char *virNWFilterBindingGetFilterNameWrapper(virNWFilterBindingPtr binding) +int +virNWFilterBindingFreeWrapper(virNWFilterBindingPtr binding, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version #else - return virNWFilterBindingGetFilterName(binding); + int ret = virNWFilterBindingFree(binding); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -char *virNWFilterBindingGetXMLDescWrapper(virNWFilterBindingPtr binding, - unsigned int flags) +const char * +virNWFilterBindingGetFilterNameWrapper(virNWFilterBindingPtr binding, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version #else - return virNWFilterBindingGetXMLDesc(binding, flags); + const char * ret = virNWFilterBindingGetFilterName(binding); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } -int virNWFilterBindingDeleteWrapper(virNWFilterBindingPtr binding) +const char * +virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version #else - return virNWFilterBindingDelete(binding); + const char * ret = virNWFilterBindingGetPortDev(binding); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } -int virNWFilterBindingRefWrapper(virNWFilterBindingPtr binding) +char * +virNWFilterBindingGetXMLDescWrapper(virNWFilterBindingPtr binding, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version #else - return virNWFilterBindingRef(binding); + char * ret = virNWFilterBindingGetXMLDesc(binding, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } -int virNWFilterBindingFreeWrapper(virNWFilterBindingPtr binding) +int +virNWFilterBindingRefWrapper(virNWFilterBindingPtr binding, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version #else - return virNWFilterBindingFree(binding); + int ret = virNWFilterBindingRef(binding); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } diff --git a/nwfilter_binding_wrapper.h b/nwfilter_binding_wrapper.h index 63942be..0bcbfb7 100644 --- a/nwfilter_binding_wrapper.h +++ b/nwfilter_binding_wrapper.h @@ -30,24 +30,31 @@ #include <libvirt/virterror.h> #include "nwfilter_binding_compat.h" + +int +virNWFilterBindingDeleteWrapper(virNWFilterBindingPtr binding, + virErrorPtr err); + +int +virNWFilterBindingFreeWrapper(virNWFilterBindingPtr binding, + virErrorPtr err); + const char * -virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding); +virNWFilterBindingGetFilterNameWrapper(virNWFilterBindingPtr binding, + virErrorPtr err); const char * -virNWFilterBindingGetFilterNameWrapper(virNWFilterBindingPtr binding); +virNWFilterBindingGetPortDevWrapper(virNWFilterBindingPtr binding, + virErrorPtr err); char * virNWFilterBindingGetXMLDescWrapper(virNWFilterBindingPtr binding, - unsigned int flags); - -int -virNWFilterBindingDeleteWrapper(virNWFilterBindingPtr binding); - -int -virNWFilterBindingRefWrapper(virNWFilterBindingPtr binding); + unsigned int flags, + virErrorPtr err); int -virNWFilterBindingFreeWrapper(virNWFilterBindingPtr binding); +virNWFilterBindingRefWrapper(virNWFilterBindingPtr binding, + virErrorPtr err); #endif /* LIBVIRT_GO_NWFILTER_BINDING_WRAPPER_H__ */ -- 2.17.1

Create wrapper functions for each node device 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é <berrange@redhat.com> --- node_device.go | 62 ++++++++++------- node_device_wrapper.go | 150 +++++++++++++++++++++++++++++++++++++++++ node_device_wrapper.h | 55 +++++++++++++++ 3 files changed, 242 insertions(+), 25 deletions(-) diff --git a/node_device.go b/node_device.go index 0caf98b..474f288 100644 --- a/node_device.go +++ b/node_device.go @@ -57,45 +57,50 @@ type NodeDevice struct { // See also https://libvirt.org/html/libvirt-libvirt-nodedev.html#virNodeDeviceFree func (n *NodeDevice) Free() error { - ret := C.virNodeDeviceFree(n.ptr) + var err C.virError + ret := C.virNodeDeviceFreeWrapper(n.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-nodedev.html#virNodeDeviceRef func (c *NodeDevice) Ref() error { - ret := C.virNodeDeviceRef(c.ptr) + var err C.virError + ret := C.virNodeDeviceRefWrapper(c.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-nodedev.html#virNodeDeviceDestroy func (n *NodeDevice) Destroy() error { - result := C.virNodeDeviceDestroy(n.ptr) + var err C.virError + result := C.virNodeDeviceDestroyWrapper(n.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-nodedev.html#virNodeDeviceReset func (n *NodeDevice) Reset() error { - result := C.virNodeDeviceReset(n.ptr) + var err C.virError + result := C.virNodeDeviceResetWrapper(n.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-nodedev.html#virNodeDeviceDettach func (n *NodeDevice) Detach() error { - result := C.virNodeDeviceDettach(n.ptr) + var err C.virError + result := C.virNodeDeviceDettachWrapper(n.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -104,36 +109,40 @@ func (n *NodeDevice) Detach() error { func (n *NodeDevice) DetachFlags(driverName string, flags uint32) error { cDriverName := C.CString(driverName) defer C.free(unsafe.Pointer(cDriverName)) - result := C.virNodeDeviceDetachFlags(n.ptr, cDriverName, C.uint(flags)) + var err C.virError + result := C.virNodeDeviceDetachFlagsWrapper(n.ptr, cDriverName, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-nodedev.html#virNodeDeviceReAttach func (n *NodeDevice) ReAttach() error { - result := C.virNodeDeviceReAttach(n.ptr) + var err C.virError + result := C.virNodeDeviceReAttachWrapper(n.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-nodedev.html#virNodeDeviceGetName func (n *NodeDevice) GetName() (string, error) { - name := C.virNodeDeviceGetName(n.ptr) + var err C.virError + name := C.virNodeDeviceGetNameWrapper(n.ptr, &err) if name == nil { - return "", GetLastError() + return "", makeError(&err) } return C.GoString(name), nil } // See also https://libvirt.org/html/libvirt-libvirt-nodedev.html#virNodeDeviceGetXMLDes... func (n *NodeDevice) GetXMLDesc(flags uint32) (string, error) { - result := C.virNodeDeviceGetXMLDesc(n.ptr, C.uint(flags)) + var err C.virError + result := C.virNodeDeviceGetXMLDescWrapper(n.ptr, C.uint(flags), &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } xml := C.GoString(result) C.free(unsafe.Pointer(result)) @@ -142,9 +151,10 @@ func (n *NodeDevice) GetXMLDesc(flags uint32) (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-nodedev.html#virNodeDeviceGetParent func (n *NodeDevice) GetParent() (string, error) { - result := C.virNodeDeviceGetParent(n.ptr) + var err C.virError + result := C.virNodeDeviceGetParentWrapper(n.ptr, &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } defer C.free(unsafe.Pointer(result)) return C.GoString(result), nil @@ -152,9 +162,10 @@ func (n *NodeDevice) GetParent() (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-nodedev.html#virNodeDeviceNumOfCaps func (p *NodeDevice) NumOfCaps() (int, error) { - result := int(C.virNodeDeviceNumOfCaps(p.ptr)) + var err C.virError + result := int(C.virNodeDeviceNumOfCapsWrapper(p.ptr, &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } @@ -164,12 +175,13 @@ func (p *NodeDevice) ListCaps() ([]string, error) { const maxCaps = 1024 var names [maxCaps](*C.char) namesPtr := unsafe.Pointer(&names) - numCaps := C.virNodeDeviceListCaps( + var err C.virError + numCaps := C.virNodeDeviceListCapsWrapper( p.ptr, (**C.char)(namesPtr), - maxCaps) + maxCaps, &err) if numCaps == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames := make([]string, numCaps) for k := 0; k < int(numCaps); k++ { diff --git a/node_device_wrapper.go b/node_device_wrapper.go index bf8f987..c4e173a 100644 --- a/node_device_wrapper.go +++ b/node_device_wrapper.go @@ -30,5 +30,155 @@ package libvirt #include <assert.h> #include "node_device_wrapper.h" + +int +virNodeDeviceDestroyWrapper(virNodeDevicePtr dev, + virErrorPtr err) +{ + int ret = virNodeDeviceDestroy(dev); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeDeviceDetachFlagsWrapper(virNodeDevicePtr dev, + const char *driverName, + unsigned int flags, + virErrorPtr err) +{ + int ret = virNodeDeviceDetachFlags(dev, driverName, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeDeviceDettachWrapper(virNodeDevicePtr dev, + virErrorPtr err) +{ + int ret = virNodeDeviceDettach(dev); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeDeviceFreeWrapper(virNodeDevicePtr dev, + virErrorPtr err) +{ + int ret = virNodeDeviceFree(dev); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +const char * +virNodeDeviceGetNameWrapper(virNodeDevicePtr dev, + virErrorPtr err) +{ + const char * ret = virNodeDeviceGetName(dev); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +const char * +virNodeDeviceGetParentWrapper(virNodeDevicePtr dev, + virErrorPtr err) +{ + const char * ret = virNodeDeviceGetParent(dev); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virNodeDeviceGetXMLDescWrapper(virNodeDevicePtr dev, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virNodeDeviceGetXMLDesc(dev, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeDeviceListCapsWrapper(virNodeDevicePtr dev, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret = virNodeDeviceListCaps(dev, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeDeviceNumOfCapsWrapper(virNodeDevicePtr dev, + virErrorPtr err) +{ + int ret = virNodeDeviceNumOfCaps(dev); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeDeviceReAttachWrapper(virNodeDevicePtr dev, + virErrorPtr err) +{ + int ret = virNodeDeviceReAttach(dev); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeDeviceRefWrapper(virNodeDevicePtr dev, + virErrorPtr err) +{ + int ret = virNodeDeviceRef(dev); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeDeviceResetWrapper(virNodeDevicePtr dev, + virErrorPtr err) +{ + int ret = virNodeDeviceReset(dev); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + */ import "C" diff --git a/node_device_wrapper.h b/node_device_wrapper.h index 22fc791..7670415 100644 --- a/node_device_wrapper.h +++ b/node_device_wrapper.h @@ -30,4 +30,59 @@ #include <libvirt/virterror.h> #include "node_device_compat.h" + +int +virNodeDeviceDestroyWrapper(virNodeDevicePtr dev, + virErrorPtr err); + +int +virNodeDeviceDetachFlagsWrapper(virNodeDevicePtr dev, + const char *driverName, + unsigned int flags, + virErrorPtr err); + +int +virNodeDeviceDettachWrapper(virNodeDevicePtr dev, + virErrorPtr err); + +int +virNodeDeviceFreeWrapper(virNodeDevicePtr dev, + virErrorPtr err); + +const char * +virNodeDeviceGetNameWrapper(virNodeDevicePtr dev, + virErrorPtr err); + +const char * +virNodeDeviceGetParentWrapper(virNodeDevicePtr dev, + virErrorPtr err); + +char * +virNodeDeviceGetXMLDescWrapper(virNodeDevicePtr dev, + unsigned int flags, + virErrorPtr err); + +int +virNodeDeviceListCapsWrapper(virNodeDevicePtr dev, + char **const names, + int maxnames, + virErrorPtr err); + +int +virNodeDeviceNumOfCapsWrapper(virNodeDevicePtr dev, + virErrorPtr err); + +int +virNodeDeviceReAttachWrapper(virNodeDevicePtr dev, + virErrorPtr err); + +int +virNodeDeviceRefWrapper(virNodeDevicePtr dev, + virErrorPtr err); + +int +virNodeDeviceResetWrapper(virNodeDevicePtr dev, + virErrorPtr err); + + #endif /* LIBVIRT_GO_NODE_DEVICE_WRAPPER_H__ */ -- 2.17.1

Create wrapper functions for each network 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é <berrange@redhat.com> --- network.go | 80 +++++++++------- network_wrapper.go | 228 +++++++++++++++++++++++++++++++++++++++++++-- network_wrapper.h | 78 +++++++++++++++- 3 files changed, 347 insertions(+), 39 deletions(-) diff --git a/network.go b/network.go index 015fe5e..d9ec9bf 100644 --- a/network.go +++ b/network.go @@ -121,45 +121,50 @@ type NetworkDHCPLease struct { // See also https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkFree func (n *Network) Free() error { - ret := C.virNetworkFree(n.ptr) + var err C.virError + ret := C.virNetworkFreeWrapper(n.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkRef func (c *Network) Ref() error { - ret := C.virNetworkRef(c.ptr) + var err C.virError + ret := C.virNetworkRefWrapper(c.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkCreate func (n *Network) Create() error { - result := C.virNetworkCreate(n.ptr) + var err C.virError + result := C.virNetworkCreateWrapper(n.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkDestroy func (n *Network) Destroy() error { - result := C.virNetworkDestroy(n.ptr) + var err C.virError + result := C.virNetworkDestroyWrapper(n.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkIsActive func (n *Network) IsActive() (bool, error) { - result := C.virNetworkIsActive(n.ptr) + var err C.virError + result := C.virNetworkIsActiveWrapper(n.ptr, &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -169,9 +174,10 @@ func (n *Network) IsActive() (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkIsPersistent func (n *Network) IsPersistent() (bool, error) { - result := C.virNetworkIsPersistent(n.ptr) + var err C.virError + result := C.virNetworkIsPersistentWrapper(n.ptr, &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -182,9 +188,10 @@ func (n *Network) IsPersistent() (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkGetAutostart func (n *Network) GetAutostart() (bool, error) { var out C.int - result := C.virNetworkGetAutostart(n.ptr, (*C.int)(unsafe.Pointer(&out))) + var err C.virError + result := C.virNetworkGetAutostartWrapper(n.ptr, (*C.int)(unsafe.Pointer(&out)), &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } switch out { case 1: @@ -203,18 +210,20 @@ func (n *Network) SetAutostart(autostart bool) error { default: cAutostart = 0 } - result := C.virNetworkSetAutostart(n.ptr, cAutostart) + var err C.virError + result := C.virNetworkSetAutostartWrapper(n.ptr, cAutostart, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkGetName func (n *Network) GetName() (string, error) { - name := C.virNetworkGetName(n.ptr) + var err C.virError + name := C.virNetworkGetNameWrapper(n.ptr, &err) if name == nil { - return "", GetLastError() + return "", makeError(&err) } return C.GoString(name), nil } @@ -223,9 +232,10 @@ func (n *Network) GetName() (string, error) { func (n *Network) GetUUID() ([]byte, error) { var cUuid [C.VIR_UUID_BUFLEN](byte) cuidPtr := unsafe.Pointer(&cUuid) - result := C.virNetworkGetUUID(n.ptr, (*C.uchar)(cuidPtr)) + var err C.virError + result := C.virNetworkGetUUIDWrapper(n.ptr, (*C.uchar)(cuidPtr), &err) if result != 0 { - return []byte{}, GetLastError() + return []byte{}, makeError(&err) } return C.GoBytes(cuidPtr, C.VIR_UUID_BUFLEN), nil } @@ -234,18 +244,20 @@ func (n *Network) GetUUID() ([]byte, error) { func (n *Network) GetUUIDString() (string, error) { var cUuid [C.VIR_UUID_STRING_BUFLEN](C.char) cuidPtr := unsafe.Pointer(&cUuid) - result := C.virNetworkGetUUIDString(n.ptr, (*C.char)(cuidPtr)) + var err C.virError + result := C.virNetworkGetUUIDStringWrapper(n.ptr, (*C.char)(cuidPtr), &err) if result != 0 { - return "", GetLastError() + return "", makeError(&err) } return C.GoString((*C.char)(cuidPtr)), nil } // See also https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkGetBridgeNam... func (n *Network) GetBridgeName() (string, error) { - result := C.virNetworkGetBridgeName(n.ptr) + var err C.virError + result := C.virNetworkGetBridgeNameWrapper(n.ptr, &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } bridge := C.GoString(result) C.free(unsafe.Pointer(result)) @@ -254,9 +266,10 @@ func (n *Network) GetBridgeName() (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkGetXMLDesc func (n *Network) GetXMLDesc(flags NetworkXMLFlags) (string, error) { - result := C.virNetworkGetXMLDesc(n.ptr, C.uint(flags)) + var err C.virError + result := C.virNetworkGetXMLDescWrapper(n.ptr, C.uint(flags), &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } xml := C.GoString(result) C.free(unsafe.Pointer(result)) @@ -265,9 +278,10 @@ func (n *Network) GetXMLDesc(flags NetworkXMLFlags) (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkUndefine func (n *Network) Undefine() error { - result := C.virNetworkUndefine(n.ptr) + var err C.virError + result := C.virNetworkUndefineWrapper(n.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -276,9 +290,10 @@ func (n *Network) Undefine() error { func (n *Network) Update(cmd NetworkUpdateCommand, section NetworkUpdateSection, parentIndex int, xml string, flags NetworkUpdateFlags) error { cxml := C.CString(xml) defer C.free(unsafe.Pointer(cxml)) - result := C.virNetworkUpdate(n.ptr, C.uint(cmd), C.uint(section), C.int(parentIndex), cxml, C.uint(flags)) + var err C.virError + result := C.virNetworkUpdateWrapper(n.ptr, C.uint(cmd), C.uint(section), C.int(parentIndex), cxml, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -289,9 +304,10 @@ func (n *Network) GetDHCPLeases() ([]NetworkDHCPLease, error) { return []NetworkDHCPLease{}, GetNotImplementedError("virNetworkGetDHCPLeases") } var cLeases *C.virNetworkDHCPLeasePtr - numLeases := C.virNetworkGetDHCPLeasesWrapper(n.ptr, nil, (**C.virNetworkDHCPLeasePtr)(&cLeases), C.uint(0)) + var err C.virError + numLeases := C.virNetworkGetDHCPLeasesWrapper(n.ptr, nil, (**C.virNetworkDHCPLeasePtr)(&cLeases), C.uint(0), &err) if numLeases == -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr := reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cLeases)), diff --git a/network_wrapper.go b/network_wrapper.go index 5c797e0..2fc443f 100644 --- a/network_wrapper.go +++ b/network_wrapper.go @@ -31,21 +31,237 @@ package libvirt #include <assert.h> #include "network_wrapper.h" -void virNetworkDHCPLeaseFreeWrapper(virNetworkDHCPLeasePtr lease) +int +virNetworkCreateWrapper(virNetworkPtr network, + virErrorPtr err) { + int ret = virNetworkCreate(network); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virNetworkGetDHCPLeasesWrapper(virNetworkPtr network, - const char *mac, - virNetworkDHCPLeasePtr **leases, - unsigned int flags) + +void +virNetworkDHCPLeaseFreeWrapper(virNetworkDHCPLeasePtr lease) { #if LIBVIR_VERSION_NUMBER < 1002006 assert(0); // Caller should have checked version #else - return virNetworkGetDHCPLeases(network, mac, leases, flags); + virNetworkDHCPLeaseFree(lease); #endif } + +int +virNetworkDestroyWrapper(virNetworkPtr network, + virErrorPtr err) +{ + int ret = virNetworkDestroy(network); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNetworkFreeWrapper(virNetworkPtr network, + virErrorPtr err) +{ + int ret = virNetworkFree(network); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNetworkGetAutostartWrapper(virNetworkPtr network, + int *autostart, + virErrorPtr err) +{ + int ret = virNetworkGetAutostart(network, autostart); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virNetworkGetBridgeNameWrapper(virNetworkPtr network, + virErrorPtr err) +{ + char * ret = virNetworkGetBridgeName(network); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virNetworkGetConnectWrapper(virNetworkPtr net, + virErrorPtr err) +{ + virConnectPtr ret = virNetworkGetConnect(net); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virNetworkGetDHCPLeasesWrapper(virNetworkPtr network, + const char *mac, + virNetworkDHCPLeasePtr **leases, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002006 + assert(0); // Caller should have checked version +#else + int ret = virNetworkGetDHCPLeases(network, mac, leases, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +const char * +virNetworkGetNameWrapper(virNetworkPtr network, + virErrorPtr err) +{ + const char * ret = virNetworkGetName(network); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virNetworkGetUUIDWrapper(virNetworkPtr network, + unsigned char *uuid, + virErrorPtr err) +{ + int ret = virNetworkGetUUID(network, uuid); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNetworkGetUUIDStringWrapper(virNetworkPtr network, + char *buf, + virErrorPtr err) +{ + int ret = virNetworkGetUUIDString(network, buf); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virNetworkGetXMLDescWrapper(virNetworkPtr network, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virNetworkGetXMLDesc(network, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virNetworkIsActiveWrapper(virNetworkPtr net, + virErrorPtr err) +{ + int ret = virNetworkIsActive(net); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNetworkIsPersistentWrapper(virNetworkPtr net, + virErrorPtr err) +{ + int ret = virNetworkIsPersistent(net); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNetworkRefWrapper(virNetworkPtr network, + virErrorPtr err) +{ + int ret = virNetworkRef(network); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNetworkSetAutostartWrapper(virNetworkPtr network, + int autostart, + virErrorPtr err) +{ + int ret = virNetworkSetAutostart(network, autostart); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNetworkUndefineWrapper(virNetworkPtr network, + virErrorPtr err) +{ + int ret = virNetworkUndefine(network); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNetworkUpdateWrapper(virNetworkPtr network, + unsigned int command, + unsigned int section, + int parentIndex, + const char *xml, + unsigned int flags, + virErrorPtr err) +{ + int ret = virNetworkUpdate(network, command, section, parentIndex, xml, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + */ import "C" diff --git a/network_wrapper.h b/network_wrapper.h index 8a36d13..405bf89 100644 --- a/network_wrapper.h +++ b/network_wrapper.h @@ -31,13 +31,89 @@ #include <libvirt/virterror.h> #include "network_compat.h" +int +virNetworkCreateWrapper(virNetworkPtr network, + virErrorPtr err); + void virNetworkDHCPLeaseFreeWrapper(virNetworkDHCPLeasePtr lease); +int +virNetworkDestroyWrapper(virNetworkPtr network, + virErrorPtr err); + +int +virNetworkFreeWrapper(virNetworkPtr network, + virErrorPtr err); + +int +virNetworkGetAutostartWrapper(virNetworkPtr network, + int *autostart, + virErrorPtr err); + +char * +virNetworkGetBridgeNameWrapper(virNetworkPtr network, + virErrorPtr err); + +virConnectPtr +virNetworkGetConnectWrapper(virNetworkPtr net, + virErrorPtr err); + int virNetworkGetDHCPLeasesWrapper(virNetworkPtr network, const char *mac, virNetworkDHCPLeasePtr **leases, - unsigned int flags); + unsigned int flags, + virErrorPtr err); + +const char * +virNetworkGetNameWrapper(virNetworkPtr network, + virErrorPtr err); + +int +virNetworkGetUUIDWrapper(virNetworkPtr network, + unsigned char *uuid, + virErrorPtr err); + +int +virNetworkGetUUIDStringWrapper(virNetworkPtr network, + char *buf, + virErrorPtr err); + +char * +virNetworkGetXMLDescWrapper(virNetworkPtr network, + unsigned int flags, + virErrorPtr err); + +int +virNetworkIsActiveWrapper(virNetworkPtr net, + virErrorPtr err); + +int +virNetworkIsPersistentWrapper(virNetworkPtr net, + virErrorPtr err); + +int +virNetworkRefWrapper(virNetworkPtr network, + virErrorPtr err); + +int +virNetworkSetAutostartWrapper(virNetworkPtr network, + int autostart, + virErrorPtr err); + +int +virNetworkUndefineWrapper(virNetworkPtr network, + virErrorPtr err); + +int +virNetworkUpdateWrapper(virNetworkPtr network, + unsigned int command, + unsigned int section, + int parentIndex, + const char *xml, + unsigned int flags, + virErrorPtr err); + #endif /* LIBVIRT_GO_NETWORK_WRAPPER_H__ */ -- 2.17.1

Create wrapper functions for each interface 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é <berrange@redhat.com> --- interface.go | 45 +++++++++------- interface_wrapper.go | 124 +++++++++++++++++++++++++++++++++++++++++++ interface_wrapper.h | 44 +++++++++++++++ 3 files changed, 195 insertions(+), 18 deletions(-) diff --git a/interface.go b/interface.go index bd39ed0..9b6ebb2 100644 --- a/interface.go +++ b/interface.go @@ -49,27 +49,30 @@ type Interface struct { // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInterfaceCreate func (n *Interface) Create(flags uint32) error { - result := C.virInterfaceCreate(n.ptr, C.uint(flags)) + var err C.virError + result := C.virInterfaceCreateWrapper(n.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInterfaceDestroy func (n *Interface) Destroy(flags uint32) error { - result := C.virInterfaceDestroy(n.ptr, C.uint(flags)) + var err C.virError + result := C.virInterfaceDestroyWrapper(n.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInterfaceIsActive func (n *Interface) IsActive() (bool, error) { - result := C.virInterfaceIsActive(n.ptr) + var err C.virError + result := C.virInterfaceIsActiveWrapper(n.ptr, &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -79,9 +82,10 @@ func (n *Interface) IsActive() (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInterfaceGetMACSt... func (n *Interface) GetMACString() (string, error) { - result := C.virInterfaceGetMACString(n.ptr) + var err C.virError + result := C.virInterfaceGetMACStringWrapper(n.ptr, &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } mac := C.GoString(result) return mac, nil @@ -89,9 +93,10 @@ func (n *Interface) GetMACString() (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInterfaceGetName func (n *Interface) GetName() (string, error) { - result := C.virInterfaceGetName(n.ptr) + var err C.virError + result := C.virInterfaceGetNameWrapper(n.ptr, &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } name := C.GoString(result) return name, nil @@ -99,9 +104,10 @@ func (n *Interface) GetName() (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInterfaceGetXMLDe... func (n *Interface) GetXMLDesc(flags InterfaceXMLFlags) (string, error) { - result := C.virInterfaceGetXMLDesc(n.ptr, C.uint(flags)) + var err C.virError + result := C.virInterfaceGetXMLDescWrapper(n.ptr, C.uint(flags), &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } xml := C.GoString(result) C.free(unsafe.Pointer(result)) @@ -110,27 +116,30 @@ func (n *Interface) GetXMLDesc(flags InterfaceXMLFlags) (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInterfaceUndefine func (n *Interface) Undefine() error { - result := C.virInterfaceUndefine(n.ptr) + var err C.virError + result := C.virInterfaceUndefineWrapper(n.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInterfaceFree func (n *Interface) Free() error { - ret := C.virInterfaceFree(n.ptr) + var err C.virError + ret := C.virInterfaceFreeWrapper(n.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInterfaceRef func (c *Interface) Ref() error { - ret := C.virInterfaceRef(c.ptr) + var err C.virError + ret := C.virInterfaceRefWrapper(c.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } diff --git a/interface_wrapper.go b/interface_wrapper.go index c9618fb..a33aea9 100644 --- a/interface_wrapper.go +++ b/interface_wrapper.go @@ -30,5 +30,129 @@ package libvirt #include <assert.h> #include "interface_wrapper.h" + +int +virInterfaceCreateWrapper(virInterfacePtr iface, + unsigned int flags, + virErrorPtr err) +{ + int ret = virInterfaceCreate(iface, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virInterfaceDestroyWrapper(virInterfacePtr iface, + unsigned int flags, + virErrorPtr err) +{ + int ret = virInterfaceDestroy(iface, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virInterfaceFreeWrapper(virInterfacePtr iface, + virErrorPtr err) +{ + int ret = virInterfaceFree(iface); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virInterfaceGetConnectWrapper(virInterfacePtr iface, + virErrorPtr err) +{ + virConnectPtr ret = virInterfaceGetConnect(iface); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +const char * +virInterfaceGetMACStringWrapper(virInterfacePtr iface, + virErrorPtr err) +{ + const char * ret = virInterfaceGetMACString(iface); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +const char * +virInterfaceGetNameWrapper(virInterfacePtr iface, + virErrorPtr err) +{ + const char * ret = virInterfaceGetName(iface); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virInterfaceGetXMLDescWrapper(virInterfacePtr iface, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virInterfaceGetXMLDesc(iface, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virInterfaceIsActiveWrapper(virInterfacePtr iface, + virErrorPtr err) +{ + int ret = virInterfaceIsActive(iface); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virInterfaceRefWrapper(virInterfacePtr iface, + virErrorPtr err) +{ + int ret = virInterfaceRef(iface); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virInterfaceUndefineWrapper(virInterfacePtr iface, + virErrorPtr err) +{ + int ret = virInterfaceUndefine(iface); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + */ import "C" diff --git a/interface_wrapper.h b/interface_wrapper.h index 8b1f8f1..b7cef76 100644 --- a/interface_wrapper.h +++ b/interface_wrapper.h @@ -29,4 +29,48 @@ #include <libvirt/libvirt.h> #include <libvirt/virterror.h> +int +virInterfaceCreateWrapper(virInterfacePtr iface, + unsigned int flags, + virErrorPtr err); + +int +virInterfaceDestroyWrapper(virInterfacePtr iface, + unsigned int flags, + virErrorPtr err); + +int +virInterfaceFreeWrapper(virInterfacePtr iface, + virErrorPtr err); + +virConnectPtr +virInterfaceGetConnectWrapper(virInterfacePtr iface, + virErrorPtr err); + +const char * +virInterfaceGetMACStringWrapper(virInterfacePtr iface, + virErrorPtr err); + +const char * +virInterfaceGetNameWrapper(virInterfacePtr iface, + virErrorPtr err); + +char * +virInterfaceGetXMLDescWrapper(virInterfacePtr iface, + unsigned int flags, + virErrorPtr err); + +int +virInterfaceIsActiveWrapper(virInterfacePtr iface, + virErrorPtr err); + +int +virInterfaceRefWrapper(virInterfacePtr iface, + virErrorPtr err); + +int +virInterfaceUndefineWrapper(virInterfacePtr iface, + virErrorPtr err); + + #endif /* LIBVIRT_GO_INTERFACE_WRAPPER_H__ */ -- 2.17.1

Create wrapper functions for each domain snapshot 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é <berrange@redhat.com> --- domain_snapshot.go | 62 ++++++++----- domain_snapshot_wrapper.go | 181 +++++++++++++++++++++++++++++++++++++ domain_snapshot_wrapper.h | 70 ++++++++++++++ 3 files changed, 288 insertions(+), 25 deletions(-) diff --git a/domain_snapshot.go b/domain_snapshot.go index 706c1a9..65fbbb5 100644 --- a/domain_snapshot.go +++ b/domain_snapshot.go @@ -90,45 +90,50 @@ type DomainSnapshot struct { // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainSnaps... func (s *DomainSnapshot) Free() error { - ret := C.virDomainSnapshotFree(s.ptr) + var err C.virError + ret := C.virDomainSnapshotFreeWrapper(s.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainSnaps... func (c *DomainSnapshot) Ref() error { - ret := C.virDomainSnapshotRef(c.ptr) + var err C.virError + ret := C.virDomainSnapshotRefWrapper(c.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainSnaps... func (s *DomainSnapshot) Delete(flags DomainSnapshotDeleteFlags) error { - result := C.virDomainSnapshotDelete(s.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainSnapshotDeleteWrapper(s.ptr, C.uint(flags), &err) if result != 0 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainRever... func (s *DomainSnapshot) RevertToSnapshot(flags DomainSnapshotRevertFlags) error { - result := C.virDomainRevertToSnapshot(s.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainRevertToSnapshotWrapper(s.ptr, C.uint(flags), &err) if result != 0 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainSnaps... func (s *DomainSnapshot) IsCurrent(flags uint32) (bool, error) { - result := C.virDomainSnapshotIsCurrent(s.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainSnapshotIsCurrentWrapper(s.ptr, C.uint(flags), &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -138,9 +143,10 @@ func (s *DomainSnapshot) IsCurrent(flags uint32) (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainSnaps... func (s *DomainSnapshot) HasMetadata(flags uint32) (bool, error) { - result := C.virDomainSnapshotHasMetadata(s.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainSnapshotHasMetadataWrapper(s.ptr, C.uint(flags), &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -150,9 +156,10 @@ func (s *DomainSnapshot) HasMetadata(flags uint32) (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainSnaps... func (s *DomainSnapshot) GetXMLDesc(flags DomainXMLFlags) (string, error) { - result := C.virDomainSnapshotGetXMLDesc(s.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainSnapshotGetXMLDescWrapper(s.ptr, C.uint(flags), &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } xml := C.GoString(result) C.free(unsafe.Pointer(result)) @@ -161,27 +168,30 @@ func (s *DomainSnapshot) GetXMLDesc(flags DomainXMLFlags) (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainSnaps... func (s *DomainSnapshot) GetName() (string, error) { - name := C.virDomainSnapshotGetName(s.ptr) + var err C.virError + name := C.virDomainSnapshotGetNameWrapper(s.ptr, &err) if name == nil { - return "", GetLastError() + return "", makeError(&err) } return C.GoString(name), nil } // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainSnaps... func (s *DomainSnapshot) GetParent(flags uint32) (*DomainSnapshot, error) { - ptr := C.virDomainSnapshotGetParent(s.ptr, C.uint(flags)) + var err C.virError + ptr := C.virDomainSnapshotGetParentWrapper(s.ptr, C.uint(flags), &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &DomainSnapshot{ptr: ptr}, nil } // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainSnaps... func (s *DomainSnapshot) NumChildren(flags DomainSnapshotListFlags) (int, error) { - result := int(C.virDomainSnapshotNumChildren(s.ptr, C.uint(flags))) + var err C.virError + result := int(C.virDomainSnapshotNumChildrenWrapper(s.ptr, C.uint(flags), &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } @@ -191,12 +201,13 @@ func (s *DomainSnapshot) ListChildrenNames(flags DomainSnapshotListFlags) ([]str const maxNames = 1024 var names [maxNames](*C.char) namesPtr := unsafe.Pointer(&names) - numNames := C.virDomainSnapshotListChildrenNames( + var err C.virError + numNames := C.virDomainSnapshotListChildrenNamesWrapper( s.ptr, (**C.char)(namesPtr), - maxNames, C.uint(flags)) + maxNames, C.uint(flags), &err) if numNames == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames := make([]string, numNames) for k := 0; k < int(numNames); k++ { @@ -209,9 +220,10 @@ func (s *DomainSnapshot) ListChildrenNames(flags DomainSnapshotListFlags) ([]str // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainSnaps... func (d *DomainSnapshot) ListAllChildren(flags DomainSnapshotListFlags) ([]DomainSnapshot, error) { var cList *C.virDomainSnapshotPtr - numVols := C.virDomainSnapshotListAllChildren(d.ptr, (**C.virDomainSnapshotPtr)(&cList), C.uint(flags)) + var err C.virError + numVols := C.virDomainSnapshotListAllChildrenWrapper(d.ptr, (**C.virDomainSnapshotPtr)(&cList), C.uint(flags), &err) if numVols == -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr := reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), diff --git a/domain_snapshot_wrapper.go b/domain_snapshot_wrapper.go index 75e3ea5..a061dee 100644 --- a/domain_snapshot_wrapper.go +++ b/domain_snapshot_wrapper.go @@ -30,5 +30,186 @@ package libvirt #include <assert.h> #include "domain_snapshot_wrapper.h" + +int +virDomainRevertToSnapshotWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainRevertToSnapshot(snapshot, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSnapshotDeleteWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSnapshotDelete(snapshot, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSnapshotFreeWrapper(virDomainSnapshotPtr snapshot, + virErrorPtr err) +{ + int ret = virDomainSnapshotFree(snapshot); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virDomainSnapshotGetConnectWrapper(virDomainSnapshotPtr snapshot, + virErrorPtr err) +{ + virConnectPtr ret = virDomainSnapshotGetConnect(snapshot); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainSnapshotGetDomainWrapper(virDomainSnapshotPtr snapshot, + virErrorPtr err) +{ + virDomainPtr ret = virDomainSnapshotGetDomain(snapshot); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +const char * +virDomainSnapshotGetNameWrapper(virDomainSnapshotPtr snapshot, + virErrorPtr err) +{ + const char * ret = virDomainSnapshotGetName(snapshot); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainSnapshotPtr +virDomainSnapshotGetParentWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err) +{ + virDomainSnapshotPtr ret = virDomainSnapshotGetParent(snapshot, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virDomainSnapshotGetXMLDescWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virDomainSnapshotGetXMLDesc(snapshot, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSnapshotHasMetadataWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSnapshotHasMetadata(snapshot, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSnapshotIsCurrentWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSnapshotIsCurrent(snapshot, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSnapshotListAllChildrenWrapper(virDomainSnapshotPtr snapshot, + virDomainSnapshotPtr **snaps, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSnapshotListAllChildren(snapshot, snaps, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSnapshotListChildrenNamesWrapper(virDomainSnapshotPtr snapshot, + char **names, + int nameslen, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSnapshotListChildrenNames(snapshot, names, nameslen, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSnapshotNumChildrenWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSnapshotNumChildren(snapshot, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSnapshotRefWrapper(virDomainSnapshotPtr snapshot, + virErrorPtr err) +{ + int ret = virDomainSnapshotRef(snapshot); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + */ import "C" diff --git a/domain_snapshot_wrapper.h b/domain_snapshot_wrapper.h index 45464ce..fcf8036 100644 --- a/domain_snapshot_wrapper.h +++ b/domain_snapshot_wrapper.h @@ -29,4 +29,74 @@ #include <libvirt/libvirt.h> #include <libvirt/virterror.h> + +int +virDomainRevertToSnapshotWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err); + +int +virDomainSnapshotDeleteWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err); + +int +virDomainSnapshotFreeWrapper(virDomainSnapshotPtr snapshot, + virErrorPtr err); + +virConnectPtr +virDomainSnapshotGetConnectWrapper(virDomainSnapshotPtr snapshot, + virErrorPtr err); + +virDomainPtr +virDomainSnapshotGetDomainWrapper(virDomainSnapshotPtr snapshot, + virErrorPtr err); + +const char * +virDomainSnapshotGetNameWrapper(virDomainSnapshotPtr snapshot, + virErrorPtr err); + +virDomainSnapshotPtr +virDomainSnapshotGetParentWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err); + +char * +virDomainSnapshotGetXMLDescWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err); + +int +virDomainSnapshotHasMetadataWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err); + +int +virDomainSnapshotIsCurrentWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err); + +int +virDomainSnapshotListAllChildrenWrapper(virDomainSnapshotPtr snapshot, + virDomainSnapshotPtr **snaps, + unsigned int flags, + virErrorPtr err); + +int +virDomainSnapshotListChildrenNamesWrapper(virDomainSnapshotPtr snapshot, + char **names, + int nameslen, + unsigned int flags, + virErrorPtr err); + +int +virDomainSnapshotNumChildrenWrapper(virDomainSnapshotPtr snapshot, + unsigned int flags, + virErrorPtr err); + +int +virDomainSnapshotRefWrapper(virDomainSnapshotPtr snapshot, + virErrorPtr err); + + #endif /* LIBVIRT_GO_DOMAIN_SNAPSHOT_WRAPPER_H__ */ -- 2.17.1

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é <berrange@redhat.com> --- 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#virGetVersion func GetVersion() (uint32, error) { var version C.ulong - if err := C.virGetVersion(&version, nil, nil); err < 0 { - return 0, GetLastError() + var err C.virError + ret := 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 = C.CString(uri) defer C.free(unsafe.Pointer(cUri)) } - ptr := C.virConnectOpen(cUri) + var err C.virError + ptr := C.virConnectOpenWrapper(cUri, &err) if ptr == 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 callbackID := registerCallbackId(auth.Callback) - ptr := C.virConnectOpenAuthWrapper(cUri, &ccredtype[0], C.uint(len(auth.CredType)), C.int(callbackID), C.uint(flags)) + var err C.virError + ptr := C.virConnectOpenAuthWrapper(cUri, &ccredtype[0], C.uint(len(auth.CredType)), C.int(callbackID), C.uint(flags), &err) freeCallbackId(callbackID) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Connect{ptr: ptr}, nil } @@ -410,18 +414,20 @@ func NewConnectReadOnly(uri string) (*Connect, error) { cUri = C.CString(uri) defer C.free(unsafe.Pointer(cUri)) } - ptr := C.virConnectOpenReadOnly(cUri) + var err C.virError + ptr := C.virConnectOpenReadOnlyWrapper(cUri, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Connect{ptr: ptr}, nil } // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectClose func (c *Connect) Close() (int, error) { - result := int(C.virConnectClose(c.ptr)) + var err C.virError + result := int(C.virConnectCloseWrapper(c.ptr, &err)) if result == -1 { - return result, GetLastError() + return result, makeError(&err) } if result == 0 { // No more reference to this connection, release data. @@ -433,9 +439,10 @@ func (c *Connect) Close() (int, error) { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectRef func (c *Connect) Ref() error { - ret := C.virConnectRef(c.ptr) + var err C.virError + ret := C.virConnectRefWrapper(c.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -449,11 +456,11 @@ type CloseCallback func(conn *Connect, reason ConnectCloseReason) func (c *Connect) RegisterCloseCallback(callback CloseCallback) error { c.UnregisterCloseCallback() goCallbackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.closeCallbackHelper) - res := C.virConnectRegisterCloseCallbackHelper(c.ptr, C.virConnectCloseFunc(callbackPtr), C.long(goCallbackId)) + var err C.virError + res := C.virConnectRegisterCloseCallbackWrapper(c.ptr, C.long(goCallbackId), &err) if res != 0 { freeCallbackId(goCallbackId) - return GetLastError() + return makeError(&err) } connData := getConnectionData(c) connData.closeCallbackId = &goCallbackId @@ -466,10 +473,10 @@ func (c *Connect) UnregisterCloseCallback() error { if connData.closeCallbackId == nil { return nil } - callbackPtr := unsafe.Pointer(C.closeCallbackHelper) - res := C.virConnectUnregisterCloseCallback(c.ptr, C.virConnectCloseFunc(callbackPtr)) + var err C.virError + res := C.virConnectUnregisterCloseCallbackWrapper(c.ptr, &err) if res != 0 { - return GetLastError() + return makeError(&err) } connData.closeCallbackId = nil return nil @@ -487,9 +494,10 @@ func closeCallback(conn C.virConnectPtr, reason ConnectCloseReason, goCallbackId // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectGetCapabilities func (c *Connect) GetCapabilities() (string, error) { - str := C.virConnectGetCapabilities(c.ptr) + var err C.virError + str := C.virConnectGetCapabilitiesWrapper(c.ptr, &err) if str == nil { - return "", GetLastError() + return "", makeError(&err) } capabilities := 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#virNodeGetInfo func (c *Connect) GetNodeInfo() (*NodeInfo, error) { var cinfo C.virNodeInfo - result := C.virNodeGetInfo(c.ptr, &cinfo) + var err C.virError + result := C.virNodeGetInfoWrapper(c.ptr, &cinfo, &err) if result == -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 { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectGetHostname func (c *Connect) GetHostname() (string, error) { - str := C.virConnectGetHostname(c.ptr) + var err C.virError + str := C.virConnectGetHostnameWrapper(c.ptr, &err) if str == nil { - return "", GetLastError() + return "", makeError(&err) } hostname := 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#virConnectGetLibVersion func (c *Connect) GetLibVersion() (uint32, error) { var version C.ulong - if err := C.virConnectGetLibVersion(c.ptr, &version); err < 0 { - return 0, GetLastError() + var err C.virError + ret := C.virConnectGetLibVersionWrapper(c.ptr, &version, &err) + if ret < 0 { + return 0, makeError(&err) } return uint32(version), nil } // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectGetType func (c *Connect) GetType() (string, error) { - str := C.virConnectGetType(c.ptr) + var err C.virError + str := C.virConnectGetTypeWrapper(c.ptr, &err) if str == nil { - return "", GetLastError() + return "", makeError(&err) } hypDriver := C.GoString(str) return hypDriver, nil @@ -551,9 +564,10 @@ func (c *Connect) GetType() (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectIsAlive func (c *Connect) IsAlive() (bool, error) { - result := C.virConnectIsAlive(c.ptr) + var err C.virError + result := C.virConnectIsAliveWrapper(c.ptr, &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -563,9 +577,10 @@ func (c *Connect) IsAlive() (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectIsEncrypted func (c *Connect) IsEncrypted() (bool, error) { - result := C.virConnectIsEncrypted(c.ptr) + var err C.virError + result := C.virConnectIsEncryptedWrapper(c.ptr, &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -575,9 +590,10 @@ func (c *Connect) IsEncrypted() (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectIsSecure func (c *Connect) IsSecure() (bool, error) { - result := C.virConnectIsSecure(c.ptr) + var err C.virError + result := C.virConnectIsSecureWrapper(c.ptr, &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 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 := unsafe.Pointer(&names) - numDomains := C.virConnectListDefinedDomains( + var err C.virError + numDomains := C.virConnectListDefinedDomainsWrapper( c.ptr, (**C.char)(namesPtr), - 1024) + 1024, &err) if numDomains == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames := make([]string, numDomains) for k := 0; k < int(numDomains); k++ { @@ -608,9 +625,10 @@ func (c *Connect) ListDefinedDomains() ([]string, error) { func (c *Connect) ListDomains() ([]uint32, error) { var cDomainsIds [512](uint32) cDomainsPointer := unsafe.Pointer(&cDomainsIds) - numDomains := C.virConnectListDomains(c.ptr, (*C.int)(cDomainsPointer), 512) + var err C.virError + numDomains := C.virConnectListDomainsWrapper(c.ptr, (*C.int)(cDomainsPointer), 512, &err) if numDomains == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return cDomainsIds[:numDomains], nil @@ -621,12 +639,13 @@ func (c *Connect) ListInterfaces() ([]string, error) { const maxIfaces = 1024 var names [maxIfaces](*C.char) namesPtr := unsafe.Pointer(&names) - numIfaces := C.virConnectListInterfaces( + var err C.virError + numIfaces := C.virConnectListInterfacesWrapper( c.ptr, (**C.char)(namesPtr), - maxIfaces) + maxIfaces, &err) if numIfaces == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames := make([]string, numIfaces) for k := 0; k < int(numIfaces); k++ { @@ -641,12 +660,13 @@ func (c *Connect) ListNetworks() ([]string, error) { const maxNets = 1024 var names [maxNets](*C.char) namesPtr := unsafe.Pointer(&names) - numNetworks := C.virConnectListNetworks( + var err C.virError + numNetworks := C.virConnectListNetworksWrapper( c.ptr, (**C.char)(namesPtr), - maxNets) + maxNets, &err) if numNetworks == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames := make([]string, numNetworks) for k := 0; k < int(numNetworks); k++ { @@ -661,12 +681,13 @@ func (c *Connect) ListNWFilters() ([]string, error) { const maxFilters = 1024 var names [maxFilters](*C.char) namesPtr := unsafe.Pointer(&names) - numNWFilters := C.virConnectListNWFilters( + var err C.virError + numNWFilters := C.virConnectListNWFiltersWrapper( c.ptr, (**C.char)(namesPtr), - maxFilters) + maxFilters, &err) if numNWFilters == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames := make([]string, numNWFilters) for k := 0; k < int(numNWFilters); k++ { @@ -681,12 +702,13 @@ func (c *Connect) ListStoragePools() ([]string, error) { const maxPools = 1024 var names [maxPools](*C.char) namesPtr := unsafe.Pointer(&names) - numStoragePools := C.virConnectListStoragePools( + var err C.virError + numStoragePools := C.virConnectListStoragePoolsWrapper( c.ptr, (**C.char)(namesPtr), - maxPools) + maxPools, &err) if numStoragePools == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames := make([]string, numStoragePools) for k := 0; k < int(numStoragePools); k++ { @@ -701,12 +723,13 @@ func (c *Connect) ListSecrets() ([]string, error) { const maxSecrets = 1024 var uuids [maxSecrets](*C.char) uuidsPtr := unsafe.Pointer(&uuids) - numSecrets := C.virConnectListSecrets( + var err C.virError + numSecrets := C.virConnectListSecretsWrapper( c.ptr, (**C.char)(uuidsPtr), - maxSecrets) + maxSecrets, &err) if numSecrets == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goUuids := make([]string, numSecrets) for k := 0; k < int(numSecrets); k++ { @@ -723,12 +746,13 @@ func (c *Connect) ListDevices(cap string, flags uint32) ([]string, error) { const maxNodeDevices = 1024 var uuids [maxNodeDevices](*C.char) uuidsPtr := unsafe.Pointer(&uuids) - numNodeDevices := C.virNodeListDevices( + var err C.virError + numNodeDevices := C.virNodeListDevicesWrapper( c.ptr, ccap, (**C.char)(uuidsPtr), - maxNodeDevices, C.uint(flags)) + maxNodeDevices, C.uint(flags), &err) if numNodeDevices == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goUuids := make([]string, numNodeDevices) for k := 0; k < int(numNodeDevices); k++ { @@ -740,9 +764,10 @@ func (c *Connect) ListDevices(cap string, flags uint32) ([]string, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainLookupByID func (c *Connect) LookupDomainById(id uint32) (*Domain, error) { - ptr := C.virDomainLookupByID(c.ptr, C.int(id)) + var err C.virError + ptr := C.virDomainLookupByIDWrapper(c.ptr, C.int(id), &err) if ptr == 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 := C.CString(id) defer C.free(unsafe.Pointer(cName)) - ptr := C.virDomainLookupByName(c.ptr, cName) + var err C.virError + ptr := C.virDomainLookupByNameWrapper(c.ptr, cName, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -762,9 +788,10 @@ func (c *Connect) LookupDomainByName(id string) (*Domain, error) { func (c *Connect) LookupDomainByUUIDString(uuid string) (*Domain, error) { cUuid := C.CString(uuid) defer C.free(unsafe.Pointer(cUuid)) - ptr := C.virDomainLookupByUUIDString(c.ptr, cUuid) + var err C.virError + ptr := C.virDomainLookupByUUIDStringWrapper(c.ptr, cUuid, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -779,9 +806,10 @@ func (c *Connect) LookupDomainByUUID(uuid []byte) (*Domain, error) { for i := 0; i < C.VIR_UUID_BUFLEN; i++ { cUuid[i] = C.uchar(uuid[i]) } - ptr := C.virDomainLookupByUUID(c.ptr, &cUuid[0]) + var err C.virError + ptr := C.virDomainLookupByUUIDWrapper(c.ptr, &cUuid[0], &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -790,9 +818,10 @@ func (c *Connect) LookupDomainByUUID(uuid []byte) (*Domain, error) { func (c *Connect) DomainCreateXML(xmlConfig string, flags DomainCreateFlags) (*Domain, error) { cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virDomainCreateXML(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr := C.virDomainCreateXMLWrapper(c.ptr, cXml, C.uint(flags), &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -805,9 +834,10 @@ func (c *Connect) DomainCreateXMLWithFiles(xmlConfig string, files []os.File, fl for i := 0; i < len(files); i++ { cfiles[i] = C.int(files[i].Fd()) } - ptr := C.virDomainCreateXMLWithFiles(c.ptr, cXml, C.uint(len(files)), (&cfiles[0]), C.uint(flags)) + var err C.virError + ptr := C.virDomainCreateXMLWithFilesWrapper(c.ptr, cXml, C.uint(len(files)), (&cfiles[0]), C.uint(flags), &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -816,9 +846,10 @@ func (c *Connect) DomainCreateXMLWithFiles(xmlConfig string, files []os.File, fl func (c *Connect) DomainDefineXML(xmlConfig string) (*Domain, error) { cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virDomainDefineXML(c.ptr, cXml) + var err C.virError + ptr := C.virDomainDefineXMLWrapper(c.ptr, cXml, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -830,9 +861,10 @@ func (c *Connect) DomainDefineXMLFlags(xmlConfig string, flags DomainDefineFlags } cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virDomainDefineXMLFlagsWrapper(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr := C.virDomainDefineXMLFlagsWrapper(c.ptr, cXml, C.uint(flags), &err) if ptr == 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 = 1024 var names [maxIfaces](*C.char) namesPtr := unsafe.Pointer(&names) - numIfaces := C.virConnectListDefinedInterfaces( + var err C.virError + numIfaces := C.virConnectListDefinedInterfacesWrapper( c.ptr, (**C.char)(namesPtr), - maxIfaces) + maxIfaces, &err) if numIfaces == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames := make([]string, numIfaces) for k := 0; k < int(numIfaces); k++ { @@ -862,12 +895,13 @@ func (c *Connect) ListDefinedNetworks() ([]string, error) { const maxNets = 1024 var names [maxNets](*C.char) namesPtr := unsafe.Pointer(&names) - numNetworks := C.virConnectListDefinedNetworks( + var err C.virError + numNetworks := C.virConnectListDefinedNetworksWrapper( c.ptr, (**C.char)(namesPtr), - maxNets) + maxNets, &err) if numNetworks == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames := make([]string, numNetworks) for k := 0; k < int(numNetworks); k++ { @@ -882,12 +916,13 @@ func (c *Connect) ListDefinedStoragePools() ([]string, error) { const maxPools = 1024 var names [maxPools](*C.char) namesPtr := unsafe.Pointer(&names) - numStoragePools := C.virConnectListDefinedStoragePools( + var err C.virError + numStoragePools := C.virConnectListDefinedStoragePoolsWrapper( c.ptr, (**C.char)(namesPtr), - maxPools) + maxPools, &err) if numStoragePools == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames := make([]string, numStoragePools) for k := 0; k < int(numStoragePools); k++ { @@ -899,90 +934,100 @@ func (c *Connect) ListDefinedStoragePools() ([]string, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectNumOfDefinedD... func (c *Connect) NumOfDefinedDomains() (int, error) { - result := int(C.virConnectNumOfDefinedDomains(c.ptr)) + var err C.virError + result := int(C.virConnectNumOfDefinedDomainsWrapper(c.ptr, &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virConnectNumOfDefin... func (c *Connect) NumOfDefinedInterfaces() (int, error) { - result := int(C.virConnectNumOfDefinedInterfaces(c.ptr)) + var err C.virError + result := int(C.virConnectNumOfDefinedInterfacesWrapper(c.ptr, &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } // See also https://libvirt.org/html/libvirt-libvirt-network.html#virConnectNumOfDefined... func (c *Connect) NumOfDefinedNetworks() (int, error) { - result := int(C.virConnectNumOfDefinedNetworks(c.ptr)) + var err C.virError + result := int(C.virConnectNumOfDefinedNetworksWrapper(c.ptr, &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virConnectNumOfDefined... func (c *Connect) NumOfDefinedStoragePools() (int, error) { - result := int(C.virConnectNumOfDefinedStoragePools(c.ptr)) + var err C.virError + result := int(C.virConnectNumOfDefinedStoragePoolsWrapper(c.ptr, &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectNumOfDomains func (c *Connect) NumOfDomains() (int, error) { - result := int(C.virConnectNumOfDomains(c.ptr)) + var err C.virError + result := int(C.virConnectNumOfDomainsWrapper(c.ptr, &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virConnectNumOfStorage... func (c *Connect) NumOfStoragePools() (int, error) { - result := int(C.virConnectNumOfStoragePools(c.ptr)) + var err C.virError + result := int(C.virConnectNumOfStoragePoolsWrapper(c.ptr, &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virConnectNumOfInter... func (c *Connect) NumOfInterfaces() (int, error) { - result := int(C.virConnectNumOfInterfaces(c.ptr)) + var err C.virError + result := int(C.virConnectNumOfInterfacesWrapper(c.ptr, &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } // See also https://libvirt.org/html/libvirt-libvirt-network.html#virConnectNumOfNetwork... func (c *Connect) NumOfNetworks() (int, error) { - result := int(C.virConnectNumOfNetworks(c.ptr)) + var err C.virError + result := int(C.virConnectNumOfNetworksWrapper(c.ptr, &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virConnectNumOfNWFilt... func (c *Connect) NumOfNWFilters() (int, error) { - result := int(C.virConnectNumOfNWFilters(c.ptr)) + var err C.virError + result := int(C.virConnectNumOfNWFiltersWrapper(c.ptr, &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } // See also https://libvirt.org/html/libvirt-libvirt-secret.html#virConnectNumOfSecrets func (c *Connect) NumOfSecrets() (int, error) { - result := int(C.virConnectNumOfSecrets(c.ptr)) + var err C.virError + result := int(C.virConnectNumOfSecretsWrapper(c.ptr, &err)) if result == -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 := C.CString(cap) defer C.free(unsafe.Pointer(ccap)) - result := int(C.virNodeNumOfDevices(c.ptr, ccap, C.uint(flags))) + var err C.virError + result := int(C.virNodeNumOfDevicesWrapper(c.ptr, ccap, C.uint(flags), &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } @@ -1002,9 +1048,10 @@ func (c *Connect) NumOfDevices(cap string, flags uint32) (int, error) { func (c *Connect) NetworkDefineXML(xmlConfig string) (*Network, error) { cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virNetworkDefineXML(c.ptr, cXml) + var err C.virError + ptr := C.virNetworkDefineXMLWrapper(c.ptr, cXml, &err) if ptr == 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 := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virNetworkCreateXML(c.ptr, cXml) + var err C.virError + ptr := C.virNetworkCreateXMLWrapper(c.ptr, cXml, &err) if ptr == 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 := C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr := C.virNetworkLookupByName(c.ptr, cName) + var err C.virError + ptr := C.virNetworkLookupByNameWrapper(c.ptr, cName, &err) if ptr == 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 := C.CString(uuid) defer C.free(unsafe.Pointer(cUuid)) - ptr := C.virNetworkLookupByUUIDString(c.ptr, cUuid) + var err C.virError + ptr := C.virNetworkLookupByUUIDStringWrapper(c.ptr, cUuid, &err) if ptr == 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 := 0; i < C.VIR_UUID_BUFLEN; i++ { cUuid[i] = C.uchar(uuid[i]) } - ptr := C.virNetworkLookupByUUID(c.ptr, &cUuid[0]) + var err C.virError + ptr := C.virNetworkLookupByUUIDWrapper(c.ptr, &cUuid[0], &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Network{ptr: ptr}, nil } // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectSetKeepAlive func (c *Connect) SetKeepAlive(interval int, count uint) error { - res := int(C.virConnectSetKeepAlive(c.ptr, C.int(interval), C.uint(count))) + var err C.virError + res := int(C.virConnectSetKeepAliveWrapper(c.ptr, C.int(interval), C.uint(count), &err)) switch res { case 0: return nil default: - return GetLastError() + return makeError(&err) } } // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectGetSysinfo func (c *Connect) GetSysinfo(flags uint32) (string, error) { - cStr := C.virConnectGetSysinfo(c.ptr, C.uint(flags)) + var err C.virError + cStr := C.virConnectGetSysinfoWrapper(c.ptr, C.uint(flags), &err) if cStr == nil { - return "", GetLastError() + return "", makeError(&err) } info := C.GoString(cStr) C.free(unsafe.Pointer(cStr)) @@ -1083,9 +1136,10 @@ func (c *Connect) GetSysinfo(flags uint32) (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectGetURI func (c *Connect) GetURI() (string, error) { - cStr := C.virConnectGetURI(c.ptr) + var err C.virError + cStr := C.virConnectGetURIWrapper(c.ptr, &err) if cStr == nil { - return "", GetLastError() + return "", makeError(&err) } uri := C.GoString(cStr) C.free(unsafe.Pointer(cStr)) @@ -1099,9 +1153,10 @@ func (c *Connect) GetMaxVcpus(typeAttr string) (int, error) { cTypeAttr = C.CString(typeAttr) defer C.free(unsafe.Pointer(cTypeAttr)) } - result := int(C.virConnectGetMaxVcpus(c.ptr, cTypeAttr)) + var err C.virError + result := int(C.virConnectGetMaxVcpusWrapper(c.ptr, cTypeAttr, &err)) if result == -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) (*Interface, error) { cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virInterfaceDefineXML(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr := C.virInterfaceDefineXMLWrapper(c.ptr, cXml, C.uint(flags), &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Interface{ptr: ptr}, nil } @@ -1121,9 +1177,10 @@ func (c *Connect) InterfaceDefineXML(xmlConfig string, flags uint32) (*Interface func (c *Connect) LookupInterfaceByName(name string) (*Interface, error) { cName := C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr := C.virInterfaceLookupByName(c.ptr, cName) + var err C.virError + ptr := C.virInterfaceLookupByNameWrapper(c.ptr, cName, &err) if ptr == 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, error) { cName := C.CString(mac) defer C.free(unsafe.Pointer(cName)) - ptr := C.virInterfaceLookupByMACString(c.ptr, cName) + var err C.virError + ptr := C.virInterfaceLookupByMACStringWrapper(c.ptr, cName, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Interface{ptr: ptr}, nil } @@ -1143,9 +1201,10 @@ func (c *Connect) LookupInterfaceByMACString(mac string) (*Interface, error) { func (c *Connect) StoragePoolDefineXML(xmlConfig string, flags uint32) (*StoragePool, error) { cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virStoragePoolDefineXML(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr := C.virStoragePoolDefineXMLWrapper(c.ptr, cXml, C.uint(flags), &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StoragePool{ptr: ptr}, nil } @@ -1154,9 +1213,10 @@ func (c *Connect) StoragePoolDefineXML(xmlConfig string, flags uint32) (*Storage func (c *Connect) StoragePoolCreateXML(xmlConfig string, flags StoragePoolCreateFlags) (*StoragePool, error) { cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virStoragePoolCreateXML(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr := C.virStoragePoolCreateXMLWrapper(c.ptr, cXml, C.uint(flags), &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StoragePool{ptr: ptr}, nil } @@ -1165,9 +1225,10 @@ func (c *Connect) StoragePoolCreateXML(xmlConfig string, flags StoragePoolCreate func (c *Connect) LookupStoragePoolByName(name string) (*StoragePool, error) { cName := C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr := C.virStoragePoolLookupByName(c.ptr, cName) + var err C.virError + ptr := C.virStoragePoolLookupByNameWrapper(c.ptr, cName, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StoragePool{ptr: ptr}, nil } @@ -1176,9 +1237,10 @@ func (c *Connect) LookupStoragePoolByName(name string) (*StoragePool, error) { func (c *Connect) LookupStoragePoolByUUIDString(uuid string) (*StoragePool, error) { cUuid := C.CString(uuid) defer C.free(unsafe.Pointer(cUuid)) - ptr := C.virStoragePoolLookupByUUIDString(c.ptr, cUuid) + var err C.virError + ptr := C.virStoragePoolLookupByUUIDStringWrapper(c.ptr, cUuid, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &StoragePool{ptr: ptr}, nil } @@ -1193,9 +1255,10 @@ func (c *Connect) LookupStoragePoolByUUID(uuid []byte) (*StoragePool, error) { for i := 0; i < C.VIR_UUID_BUFLEN; i++ { cUuid[i] = C.uchar(uuid[i]) } - ptr := C.virStoragePoolLookupByUUID(c.ptr, &cUuid[0]) + var err C.virError + ptr := C.virStoragePoolLookupByUUIDWrapper(c.ptr, &cUuid[0], &err) if ptr == 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 := C.CString(path) defer C.free(unsafe.Pointer(cPath)) - ptr := C.virStoragePoolLookupByTargetPathWrapper(c.ptr, cPath) + var err C.virError + ptr := C.virStoragePoolLookupByTargetPathWrapper(c.ptr, cPath, &err) if ptr == 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 := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virNWFilterDefineXML(c.ptr, cXml) + var err C.virError + ptr := C.virNWFilterDefineXMLWrapper(c.ptr, cXml, &err) if ptr == 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 := C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr := C.virNWFilterLookupByName(c.ptr, cName) + var err C.virError + ptr := C.virNWFilterLookupByNameWrapper(c.ptr, cName, &err) if ptr == 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, error) { cUuid := C.CString(uuid) defer C.free(unsafe.Pointer(cUuid)) - ptr := C.virNWFilterLookupByUUIDString(c.ptr, cUuid) + var err C.virError + ptr := C.virNWFilterLookupByUUIDStringWrapper(c.ptr, cUuid, &err) if ptr == 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 := 0; i < C.VIR_UUID_BUFLEN; i++ { cUuid[i] = C.uchar(uuid[i]) } - ptr := C.virNWFilterLookupByUUID(c.ptr, &cUuid[0]) + var err C.virError + ptr := C.virNWFilterLookupByUUIDWrapper(c.ptr, &cUuid[0], &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NWFilter{ptr: ptr}, nil } @@ -1271,9 +1339,10 @@ func (c *Connect) LookupNWFilterBindingByPortDev(name string) (*NWFilterBinding, } cName := C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr := C.virNWFilterBindingLookupByPortDevWrapper(c.ptr, cName) + var err C.virError + ptr := C.virNWFilterBindingLookupByPortDevWrapper(c.ptr, cName, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NWFilterBinding{ptr: ptr}, nil } @@ -1282,9 +1351,10 @@ func (c *Connect) LookupNWFilterBindingByPortDev(name string) (*NWFilterBinding, func (c *Connect) LookupStorageVolByKey(key string) (*StorageVol, error) { cKey := C.CString(key) defer C.free(unsafe.Pointer(cKey)) - ptr := C.virStorageVolLookupByKey(c.ptr, cKey) + var err C.virError + ptr := C.virStorageVolLookupByKeyWrapper(c.ptr, cKey, &err) if ptr == 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 := C.CString(path) defer C.free(unsafe.Pointer(cPath)) - ptr := C.virStorageVolLookupByPath(c.ptr, cPath) + var err C.virError + ptr := C.virStorageVolLookupByPathWrapper(c.ptr, cPath, &err) if ptr == 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 := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virSecretDefineXML(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr := C.virSecretDefineXMLWrapper(c.ptr, cXml, C.uint(flags), &err) if ptr == 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 := 0; i < C.VIR_UUID_BUFLEN; i++ { cUuid[i] = C.uchar(uuid[i]) } - ptr := C.virSecretLookupByUUID(c.ptr, &cUuid[0]) + var err C.virError + ptr := C.virSecretLookupByUUIDWrapper(c.ptr, &cUuid[0], &err) if ptr == 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 := C.CString(uuid) defer C.free(unsafe.Pointer(cUuid)) - ptr := C.virSecretLookupByUUIDString(c.ptr, cUuid) + var err C.virError + ptr := C.virSecretLookupByUUIDStringWrapper(c.ptr, cUuid, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Secret{ptr: ptr}, nil } @@ -1343,9 +1417,10 @@ func (c *Connect) LookupSecretByUUIDString(uuid string) (*Secret, error) { func (c *Connect) LookupSecretByUsage(usageType SecretUsageType, usageID string) (*Secret, error) { cUsageID := C.CString(usageID) defer C.free(unsafe.Pointer(cUsageID)) - ptr := C.virSecretLookupByUsage(c.ptr, C.int(usageType), cUsageID) + var err C.virError + ptr := C.virSecretLookupByUsageWrapper(c.ptr, C.int(usageType), cUsageID, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Secret{ptr: ptr}, nil } @@ -1354,9 +1429,10 @@ func (c *Connect) LookupSecretByUsage(usageType SecretUsageType, usageID string) func (c *Connect) LookupDeviceByName(id string) (*NodeDevice, error) { cName := C.CString(id) defer C.free(unsafe.Pointer(cName)) - ptr := C.virNodeDeviceLookupByName(c.ptr, cName) + var err C.virError + ptr := C.virNodeDeviceLookupByNameWrapper(c.ptr, cName, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NodeDevice{ptr: ptr}, nil } @@ -1367,9 +1443,10 @@ func (c *Connect) LookupDeviceSCSIHostByWWN(wwnn, wwpn string, flags uint32) (*N cWwpn := C.CString(wwpn) defer C.free(unsafe.Pointer(cWwnn)) defer C.free(unsafe.Pointer(cWwpn)) - ptr := C.virNodeDeviceLookupSCSIHostByWWN(c.ptr, cWwnn, cWwpn, C.uint(flags)) + var err C.virError + ptr := C.virNodeDeviceLookupSCSIHostByWWNWrapper(c.ptr, cWwnn, cWwpn, C.uint(flags), &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &NodeDevice{ptr: ptr}, nil } @@ -1378,9 +1455,10 @@ func (c *Connect) LookupDeviceSCSIHostByWWN(wwnn, wwpn string, flags uint32) (*N func (c *Connect) DeviceCreateXML(xmlConfig string, flags uint32) (*NodeDevice, error) { cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virNodeDeviceCreateXML(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr := C.virNodeDeviceCreateXMLWrapper(c.ptr, cXml, C.uint(flags), &err) if ptr == 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#virConnectListAllInt... func (c *Connect) ListAllInterfaces(flags ConnectListAllInterfacesFlags) ([]Interface, error) { var cList *C.virInterfacePtr - numIfaces := C.virConnectListAllInterfaces(c.ptr, (**C.virInterfacePtr)(&cList), C.uint(flags)) + var err C.virError + numIfaces := C.virConnectListAllInterfacesWrapper(c.ptr, (**C.virInterfacePtr)(&cList), C.uint(flags), &err) if numIfaces == -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr := reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1409,9 +1488,10 @@ func (c *Connect) ListAllInterfaces(flags ConnectListAllInterfacesFlags) ([]Inte // See also https://libvirt.org/html/libvirt-libvirt-network.html#virConnectListAllNetwo... func (c *Connect) ListAllNetworks(flags ConnectListAllNetworksFlags) ([]Network, error) { var cList *C.virNetworkPtr - numNets := C.virConnectListAllNetworks(c.ptr, (**C.virNetworkPtr)(&cList), C.uint(flags)) + var err C.virError + numNets := C.virConnectListAllNetworksWrapper(c.ptr, (**C.virNetworkPtr)(&cList), C.uint(flags), &err) if numNets == -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr := reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1430,9 +1510,10 @@ func (c *Connect) ListAllNetworks(flags ConnectListAllNetworksFlags) ([]Network, // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectListAllDomain... func (c *Connect) ListAllDomains(flags ConnectListAllDomainsFlags) ([]Domain, error) { var cList *C.virDomainPtr - numDomains := C.virConnectListAllDomains(c.ptr, (**C.virDomainPtr)(&cList), C.uint(flags)) + var err C.virError + numDomains := C.virConnectListAllDomainsWrapper(c.ptr, (**C.virDomainPtr)(&cList), C.uint(flags), &err) if numDomains == -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr := reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1451,9 +1532,10 @@ func (c *Connect) ListAllDomains(flags ConnectListAllDomainsFlags) ([]Domain, er // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virConnectListAllNWFi... func (c *Connect) ListAllNWFilters(flags uint32) ([]NWFilter, error) { var cList *C.virNWFilterPtr - numNWFilters := C.virConnectListAllNWFilters(c.ptr, (**C.virNWFilterPtr)(&cList), C.uint(flags)) + var err C.virError + numNWFilters := C.virConnectListAllNWFiltersWrapper(c.ptr, (**C.virNWFilterPtr)(&cList), C.uint(flags), &err) if numNWFilters == -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr := reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1475,9 +1557,10 @@ func (c *Connect) ListAllNWFilterBindings(flags uint32) ([]NWFilterBinding, erro if C.LIBVIR_VERSION_NUMBER < 4005000 { return []NWFilterBinding{}, GetNotImplementedError("virConnectListAllNWFilterBindings") } - numNWFilters := C.virConnectListAllNWFilterBindingsWrapper(c.ptr, (**C.virNWFilterBindingPtr)(&cList), C.uint(flags)) + var err C.virError + numNWFilters := C.virConnectListAllNWFilterBindingsWrapper(c.ptr, (**C.virNWFilterBindingPtr)(&cList), C.uint(flags), &err) if numNWFilters == -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr := reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1496,9 +1579,10 @@ func (c *Connect) ListAllNWFilterBindings(flags uint32) ([]NWFilterBinding, erro // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virConnectListAllStora... func (c *Connect) ListAllStoragePools(flags ConnectListAllStoragePoolsFlags) ([]StoragePool, error) { var cList *C.virStoragePoolPtr - numPools := C.virConnectListAllStoragePools(c.ptr, (**C.virStoragePoolPtr)(&cList), C.uint(flags)) + var err C.virError + numPools := C.virConnectListAllStoragePoolsWrapper(c.ptr, (**C.virStoragePoolPtr)(&cList), C.uint(flags), &err) if numPools == -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr := reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1517,9 +1601,10 @@ func (c *Connect) ListAllStoragePools(flags ConnectListAllStoragePoolsFlags) ([] // See also https://libvirt.org/html/libvirt-libvirt-secret.html#virConnectListAllSecret... func (c *Connect) ListAllSecrets(flags ConnectListAllSecretsFlags) ([]Secret, error) { var cList *C.virSecretPtr - numPools := C.virConnectListAllSecrets(c.ptr, (**C.virSecretPtr)(&cList), C.uint(flags)) + var err C.virError + numPools := C.virConnectListAllSecretsWrapper(c.ptr, (**C.virSecretPtr)(&cList), C.uint(flags), &err) if numPools == -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr := reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1538,9 +1623,10 @@ func (c *Connect) ListAllSecrets(flags ConnectListAllSecretsFlags) ([]Secret, er // See also https://libvirt.org/html/libvirt-libvirt-nodedev.html#virConnectListAllNodeD... func (c *Connect) ListAllNodeDevices(flags ConnectListAllNodeDeviceFlags) ([]NodeDevice, error) { var cList *C.virNodeDevicePtr - numPools := C.virConnectListAllNodeDevices(c.ptr, (**C.virNodeDevicePtr)(&cList), C.uint(flags)) + var err C.virError + numPools := C.virConnectListAllNodeDevicesWrapper(c.ptr, (**C.virNodeDevicePtr)(&cList), C.uint(flags), &err) if numPools == -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr := reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1558,27 +1644,30 @@ func (c *Connect) ListAllNodeDevices(flags ConnectListAllNodeDeviceFlags) ([]Nod // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInterfaceChangeBe... func (c *Connect) InterfaceChangeBegin(flags uint32) error { - ret := C.virInterfaceChangeBegin(c.ptr, C.uint(flags)) + var err C.virError + ret := C.virInterfaceChangeBeginWrapper(c.ptr, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInterfaceChangeCo... func (c *Connect) InterfaceChangeCommit(flags uint32) error { - ret := C.virInterfaceChangeCommit(c.ptr, C.uint(flags)) + var err C.virError + ret := C.virInterfaceChangeCommitWrapper(c.ptr, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-interface.html#virInterfaceChangeRo... func (c *Connect) InterfaceChangeRollback(flags uint32) error { - ret := C.virInterfaceChangeRollback(c.ptr, C.uint(flags)) + var err C.virError + ret := C.virInterfaceChangeRollbackWrapper(c.ptr, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -1598,10 +1687,11 @@ func (c *Connect) AllocPages(pageSizes map[int]int64, startCell int, cellCount u i++ } + var err C.virError ret := C.virNodeAllocPagesWrapper(c.ptr, C.uint(len(pageSizes)), (*C.uint)(unsafe.Pointer(&cpages)), - (*C.ulonglong)(unsafe.Pointer(&ccounts)), C.int(startCell), C.uint(cellCount), C.uint(flags)) + (*C.ulonglong)(unsafe.Pointer(&ccounts)), C.int(startCell), C.uint(cellCount), C.uint(flags), &err) if ret == -1 { - return 0, GetLastError() + return 0, makeError(&err) } 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 := C.virNodeGetCPUMap(c.ptr, &ccpumap, &conline, C.uint(flags)) + var err C.virError + ret := C.virNodeGetCPUMapWrapper(c.ptr, &ccpumap, &conline, C.uint(flags), &err) if ret == -1 { - return map[int]bool{}, 0, GetLastError() + return map[int]bool{}, 0, makeError(&err) } defer C.free(unsafe.Pointer(ccpumap)) @@ -1649,15 +1740,16 @@ type NodeCPUStats struct { func (c *Connect) GetCPUStats(cpuNum int, flags uint32) (*NodeCPUStats, error) { var nparams C.int - ret := C.virNodeGetCPUStats(c.ptr, C.int(cpuNum), nil, &nparams, C.uint(0)) + var err C.virError + ret := C.virNodeGetCPUStatsWrapper(c.ptr, C.int(cpuNum), nil, &nparams, C.uint(0), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } params := make([]C.virNodeCPUStats, nparams) - ret = C.virNodeGetCPUStats(c.ptr, C.int(cpuNum), (*C.virNodeCPUStats)(unsafe.Pointer(¶ms[0])), &nparams, C.uint(flags)) + ret = C.virNodeGetCPUStatsWrapper(c.ptr, C.int(cpuNum), (*C.virNodeCPUStats)(unsafe.Pointer(¶ms[0])), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } stats := &NodeCPUStats{} @@ -1692,9 +1784,10 @@ func (c *Connect) GetCPUStats(cpuNum int, flags uint32) (*NodeCPUStats, error) { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virNodeGetCellsFreeMemory func (c *Connect) GetCellsFreeMemory(startCell int, maxCells int) ([]uint64, error) { cmem := make([]C.ulonglong, maxCells) - ret := C.virNodeGetCellsFreeMemory(c.ptr, (*C.ulonglong)(unsafe.Pointer(&cmem[0])), C.int(startCell), C.int(maxCells)) + var err C.virError + ret := C.virNodeGetCellsFreeMemoryWrapper(c.ptr, (*C.ulonglong)(unsafe.Pointer(&cmem[0])), C.int(startCell), C.int(maxCells), &err) if ret == -1 { - return []uint64{}, GetLastError() + return []uint64{}, makeError(&err) } mem := make([]uint64, ret) @@ -1707,9 +1800,10 @@ func (c *Connect) GetCellsFreeMemory(startCell int, maxCells int) ([]uint64, err // See also https://libvirt.org/html/libvirt-libvirt-host.html#virNodeGetFreeMemory func (c *Connect) GetFreeMemory() (uint64, error) { - ret := C.virNodeGetFreeMemory(c.ptr) + var err C.virError + ret := C.virNodeGetFreeMemoryWrapper(c.ptr, &err) if ret == 0 { - return 0, GetLastError() + return 0, makeError(&err) } return (uint64)(ret), nil @@ -1727,10 +1821,11 @@ func (c *Connect) GetFreePages(pageSizes []uint64, startCell int, maxCells uint, cpageSizes[i] = C.uint(pageSizes[i]) } + var err C.virError ret := 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 == -1 { - return []uint64{}, GetLastError() + return []uint64{}, makeError(&err) } counts := make([]uint64, ret) @@ -1804,22 +1899,23 @@ func (c *Connect) GetMemoryParameters(flags uint32) (*NodeMemoryParameters, erro var nparams C.int - ret := C.virNodeGetMemoryParameters(c.ptr, nil, &nparams, C.uint(0)) + var err C.virError + ret := C.virNodeGetMemoryParametersWrapper(c.ptr, nil, &nparams, C.uint(0), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virNodeGetMemoryParameters(c.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags)) + ret = C.virNodeGetMemoryParametersWrapper(c.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - _, err := typedParamsUnpack(cparams, info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpack(cparams, info) + if gerr != nil { + return nil, gerr } return params, nil @@ -1840,15 +1936,16 @@ type NodeMemoryStats struct { func (c *Connect) GetMemoryStats(cellNum int, flags uint32) (*NodeMemoryStats, error) { var nparams C.int - ret := C.virNodeGetMemoryStats(c.ptr, C.int(cellNum), nil, &nparams, 0) + var err C.virError + ret := C.virNodeGetMemoryStatsWrapper(c.ptr, C.int(cellNum), nil, &nparams, 0, &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } params := make([]C.virNodeMemoryStats, nparams) - ret = C.virNodeGetMemoryStats(c.ptr, C.int(cellNum), (*C.virNodeMemoryStats)(unsafe.Pointer(¶ms[0])), &nparams, C.uint(flags)) + ret = C.virNodeGetMemoryStatsWrapper(c.ptr, C.int(cellNum), (*C.virNodeMemoryStats)(unsafe.Pointer(¶ms[0])), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } stats := &NodeMemoryStats{} @@ -1882,9 +1979,10 @@ type NodeSecurityModel struct { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virNodeGetSecurityModel func (c *Connect) GetSecurityModel() (*NodeSecurityModel, error) { var cmodel C.virSecurityModel - ret := C.virNodeGetSecurityModel(c.ptr, &cmodel) + var err C.virError + ret := C.virNodeGetSecurityModelWrapper(c.ptr, &cmodel, &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return &NodeSecurityModel{ @@ -1899,34 +1997,36 @@ func (c *Connect) SetMemoryParameters(params *NodeMemoryParameters, flags uint32 var nparams C.int - ret := C.virNodeGetMemoryParameters(c.ptr, nil, &nparams, 0) + var err C.virError + ret := C.virNodeGetMemoryParametersWrapper(c.ptr, nil, &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virNodeGetMemoryParameters(c.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0) + ret = C.virNodeGetMemoryParametersWrapper(c.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - err := typedParamsPack(cparams, info) - if err != nil { - return err + gerr := typedParamsPack(cparams, info) + if gerr != nil { + return gerr } - ret = C.virNodeSetMemoryParameters(c.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags)) + ret = C.virNodeSetMemoryParametersWrapper(c.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags), &err) return nil } // See also https://libvirt.org/html/libvirt-libvirt-host.html#virNodeSuspendForDuration func (c *Connect) SuspendForDuration(target NodeSuspendTarget, duration uint64, flags uint32) error { - ret := C.virNodeSuspendForDuration(c.ptr, C.uint(target), C.ulonglong(duration), C.uint(flags)) + var err C.virError + ret := C.virNodeSuspendForDurationWrapper(c.ptr, C.uint(target), C.ulonglong(duration), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -1938,10 +2038,11 @@ func (c *Connect) DomainSaveImageDefineXML(file string, xml string, flags Domain cxml := C.CString(xml) defer C.free(unsafe.Pointer(cxml)) - ret := C.virDomainSaveImageDefineXML(c.ptr, cfile, cxml, C.uint(flags)) + var err C.virError + ret := C.virDomainSaveImageDefineXMLWrapper(c.ptr, cfile, cxml, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -1952,10 +2053,11 @@ func (c *Connect) DomainSaveImageGetXMLDesc(file string, flags DomainXMLFlags) ( cfile := C.CString(file) defer C.free(unsafe.Pointer(cfile)) - ret := C.virDomainSaveImageGetXMLDesc(c.ptr, cfile, C.uint(flags)) + var err C.virError + ret := C.virDomainSaveImageGetXMLDescWrapper(c.ptr, cfile, C.uint(flags), &err) if ret == nil { - return "", GetLastError() + return "", makeError(&err) } defer C.free(unsafe.Pointer(ret)) @@ -1971,9 +2073,10 @@ func (c *Connect) BaselineCPU(xmlCPUs []string, flags ConnectBaselineCPUFlags) ( defer C.free(unsafe.Pointer(cxmlCPUs[i])) } - ret := C.virConnectBaselineCPU(c.ptr, &cxmlCPUs[0], C.uint(len(xmlCPUs)), C.uint(flags)) + var err C.virError + ret := C.virConnectBaselineCPUWrapper(c.ptr, &cxmlCPUs[0], C.uint(len(xmlCPUs)), C.uint(flags), &err) if ret == nil { - return "", GetLastError() + return "", makeError(&err) } defer C.free(unsafe.Pointer(ret)) @@ -2010,10 +2113,11 @@ func (c *Connect) BaselineHypervisorCPU(emulator string, arch string, machine st defer C.free(unsafe.Pointer(cxmlCPUs[i])) } + var err C.virError ret := 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 == nil { - return "", GetLastError() + return "", makeError(&err) } defer C.free(unsafe.Pointer(ret)) @@ -2026,9 +2130,10 @@ func (c *Connect) CompareCPU(xmlDesc string, flags ConnectCompareCPUFlags) (CPUC cxmlDesc := C.CString(xmlDesc) defer C.free(unsafe.Pointer(cxmlDesc)) - ret := C.virConnectCompareCPU(c.ptr, cxmlDesc, C.uint(flags)) + var err C.virError + ret := C.virConnectCompareCPUWrapper(c.ptr, cxmlDesc, C.uint(flags), &err) if ret == C.VIR_CPU_COMPARE_ERROR { - return CPU_COMPARE_ERROR, GetLastError() + return CPU_COMPARE_ERROR, makeError(&err) } return CPUCompareResult(ret), nil @@ -2061,9 +2166,10 @@ func (c *Connect) CompareHypervisorCPU(emulator string, arch string, machine str cxmlDesc := C.CString(xmlDesc) defer C.free(unsafe.Pointer(cxmlDesc)) - ret := C.virConnectCompareHypervisorCPUWrapper(c.ptr, cemulator, carch, cmachine, cvirttype, cxmlDesc, C.uint(flags)) + var err C.virError + ret := C.virConnectCompareHypervisorCPUWrapper(c.ptr, cemulator, carch, cmachine, cvirttype, cxmlDesc, C.uint(flags), &err) if ret == C.VIR_CPU_COMPARE_ERROR { - return CPU_COMPARE_ERROR, GetLastError() + return CPU_COMPARE_ERROR, makeError(&err) } return CPUCompareResult(ret), nil @@ -2076,9 +2182,10 @@ func (c *Connect) DomainXMLFromNative(nativeFormat string, nativeConfig string, cnativeConfig := C.CString(nativeConfig) defer C.free(unsafe.Pointer(cnativeConfig)) - ret := C.virConnectDomainXMLFromNative(c.ptr, cnativeFormat, cnativeConfig, C.uint(flags)) + var err C.virError + ret := C.virConnectDomainXMLFromNativeWrapper(c.ptr, cnativeFormat, cnativeConfig, C.uint(flags), &err) if ret == nil { - return "", GetLastError() + return "", makeError(&err) } defer C.free(unsafe.Pointer(ret)) @@ -2093,9 +2200,10 @@ func (c *Connect) DomainXMLToNative(nativeFormat string, domainXml string, flags cdomainXml := C.CString(domainXml) defer C.free(unsafe.Pointer(cdomainXml)) - ret := C.virConnectDomainXMLToNative(c.ptr, cnativeFormat, cdomainXml, C.uint(flags)) + var err C.virError + ret := C.virConnectDomainXMLToNativeWrapper(c.ptr, cnativeFormat, cdomainXml, C.uint(flags), &err) if ret == nil { - return "", GetLastError() + return "", makeError(&err) } defer C.free(unsafe.Pointer(ret)) @@ -2109,9 +2217,10 @@ func (c *Connect) GetCPUModelNames(arch string, flags uint32) ([]string, error) defer C.free(unsafe.Pointer(carch)) var cmodels **C.char - ret := C.virConnectGetCPUModelNames(c.ptr, carch, &cmodels, C.uint(flags)) + var err C.virError + ret := C.virConnectGetCPUModelNamesWrapper(c.ptr, carch, &cmodels, C.uint(flags), &err) if ret == -1 { - return []string{}, GetLastError() + return []string{}, makeError(&err) } models := make([]string, int(ret)) @@ -2152,9 +2261,10 @@ func (c *Connect) GetDomainCapabilities(emulatorbin string, arch string, machine defer C.free(unsafe.Pointer(cvirttype)) } - ret := C.virConnectGetDomainCapabilitiesWrapper(c.ptr, cemulatorbin, carch, cmachine, cvirttype, C.uint(flags)) + var err C.virError + ret := C.virConnectGetDomainCapabilitiesWrapper(c.ptr, cemulatorbin, carch, cmachine, cvirttype, C.uint(flags), &err) if ret == nil { - return "", GetLastError() + return "", makeError(&err) } 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#virConnectGetVersion func (c *Connect) GetVersion() (uint32, error) { var hvVer C.ulong - ret := C.virConnectGetVersion(c.ptr, &hvVer) + var err C.virError + ret := C.virConnectGetVersionWrapper(c.ptr, &hvVer, &err) if ret == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return uint32(hvVer), nil @@ -2182,9 +2293,10 @@ func (c *Connect) FindStoragePoolSources(pooltype string, srcSpec string, flags csrcSpec := C.CString(srcSpec) defer C.free(unsafe.Pointer(csrcSpec)) } - ret := C.virConnectFindStoragePoolSources(c.ptr, cpooltype, csrcSpec, C.uint(flags)) + var err C.virError + ret := C.virConnectFindStoragePoolSourcesWrapper(c.ptr, cpooltype, csrcSpec, C.uint(flags), &err) if ret == nil { - return "", GetLastError() + return "", makeError(&err) } defer C.free(unsafe.Pointer(ret)) @@ -2196,8 +2308,9 @@ func (c *Connect) FindStoragePoolSources(pooltype string, srcSpec string, flags func (c *Connect) DomainRestore(srcFile string) error { cPath := C.CString(srcFile) defer C.free(unsafe.Pointer(cPath)) - if result := C.virDomainRestore(c.ptr, cPath); result == -1 { - return GetLastError() + var err C.virError + if result := C.virDomainRestoreWrapper(c.ptr, cPath, &err); result == -1 { + return makeError(&err) } return nil } @@ -2211,17 +2324,19 @@ func (c *Connect) DomainRestoreFlags(srcFile, xmlConf string, flags DomainSaveRe cXmlConf = C.CString(xmlConf) defer C.free(unsafe.Pointer(cXmlConf)) } - if result := C.virDomainRestoreFlags(c.ptr, cPath, cXmlConf, C.uint(flags)); result == -1 { - return GetLastError() + var err C.virError + if result := C.virDomainRestoreFlagsWrapper(c.ptr, cPath, cXmlConf, C.uint(flags), &err); result == -1 { + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamNew func (c *Connect) NewStream(flags StreamFlags) (*Stream, error) { - virStream := C.virStreamNew(c.ptr, C.uint(flags)) + var err C.virError + virStream := C.virStreamNewWrapper(c.ptr, C.uint(flags), &err) if virStream == nil { - return nil, GetLastError() + return nil, makeError(&err) } 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 := make([]C.virDomainPtr, len(doms)+1) for i := 0; i < len(doms); i++ { cdoms[i] = doms[i].ptr } - ret = C.virDomainListGetStatsWrapper(&cdoms[0], C.uint(statsTypes), &cstats, C.uint(flags)) + ret = C.virDomainListGetStatsWrapper(&cdoms[0], C.uint(statsTypes), &cstats, C.uint(flags), &err) } else { - ret = C.virConnectGetAllDomainStatsWrapper(c.ptr, C.uint(statsTypes), &cstats, C.uint(flags)) + ret = C.virConnectGetAllDomainStatsWrapper(c.ptr, C.uint(statsTypes), &cstats, C.uint(flags), &err) } if ret == -1 { - return []DomainStats{}, GetLastError() + return []DomainStats{}, makeError(&err) } defer C.virDomainStatsRecordListFreeWrapper(cstats) @@ -2692,9 +2808,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, statsTypes DomainStatsTypes, state := &DomainStatsState{} stateInfo := getDomainStatsStateFieldInfo(state) - count, err := typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), stateInfo) - if err != nil { - return []DomainStats{}, err + count, gerr := typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), stateInfo) + if gerr != nil { + return []DomainStats{}, gerr } if count != 0 { domstats.State = state @@ -2703,9 +2819,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, statsTypes DomainStatsTypes, cpu := &DomainStatsCPU{} cpuInfo := getDomainStatsCPUFieldInfo(cpu) - count, err = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), cpuInfo) - if err != nil { - return []DomainStats{}, err + count, gerr = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), cpuInfo) + if gerr != nil { + return []DomainStats{}, gerr } if count != 0 { domstats.Cpu = cpu @@ -2714,9 +2830,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, statsTypes DomainStatsTypes, balloon := &DomainStatsBalloon{} balloonInfo := getDomainStatsBalloonFieldInfo(balloon) - count, err = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), balloonInfo) - if err != nil { - return []DomainStats{}, err + count, gerr = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), balloonInfo) + if gerr != nil { + return []DomainStats{}, gerr } if count != 0 { domstats.Balloon = balloon @@ -2725,9 +2841,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, statsTypes DomainStatsTypes, perf := &DomainStatsPerf{} perfInfo := getDomainStatsPerfFieldInfo(perf) - count, err = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), perfInfo) - if err != nil { - return []DomainStats{}, err + count, gerr = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), perfInfo) + if gerr != nil { + return []DomainStats{}, gerr } if count != 0 { domstats.Perf = perf @@ -2736,9 +2852,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, statsTypes DomainStatsTypes, lengths := domainStatsLengths{} lengthsInfo := getDomainStatsLengthsFieldInfo(&lengths) - count, err = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), lengthsInfo) - if err != nil { - return []DomainStats{}, err + count, gerr = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), lengthsInfo) + if gerr != nil { + return []DomainStats{}, gerr } if !lengths.VcpuMaximumSet && lengths.VcpuCurrentSet { @@ -2752,9 +2868,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, statsTypes DomainStatsTypes, vcpu := DomainStatsVcpu{} vcpuInfo := getDomainStatsVcpuFieldInfo(j, &vcpu) - count, err = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), vcpuInfo) - if err != nil { - return []DomainStats{}, err + count, gerr = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), vcpuInfo) + if gerr != nil { + return []DomainStats{}, gerr } if count == 0 { vcpu.StateSet = true @@ -2770,9 +2886,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, statsTypes DomainStatsTypes, block := DomainStatsBlock{} blockInfo := getDomainStatsBlockFieldInfo(j, &block) - count, err = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), blockInfo) - if err != nil { - return []DomainStats{}, err + count, gerr = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), blockInfo) + if gerr != nil { + return []DomainStats{}, gerr } if count != 0 { domstats.Block[j] = block @@ -2786,9 +2902,9 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, statsTypes DomainStatsTypes, net := DomainStatsNet{} netInfo := getDomainStatsNetFieldInfo(j, &net) - count, err = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), netInfo) - if err != nil { - return []DomainStats{}, err + count, gerr = typedParamsUnpackLen(cdomstats.params, int(cdomstats.nparams), netInfo) + if gerr != nil { + return []DomainStats{}, gerr } if count != 0 { domstats.Net[j] = net @@ -2846,16 +2962,17 @@ func (c *Connect) GetSEVInfo(flags uint32) (*NodeSEVParameters, error) { var cparams *C.virTypedParameter var nparams C.int - ret := C.virNodeGetSEVInfoWrapper(c.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) + var err C.virError + ret := C.virNodeGetSEVInfoWrapper(c.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsFree(cparams, nparams) - _, err := typedParamsUnpackLen(cparams, int(nparams), info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpackLen(cparams, int(nparams), info) + if gerr != nil { + return nil, gerr } return params, nil @@ -2868,9 +2985,10 @@ func (c *Connect) NWFilterBindingCreateXML(xmlConfig string, flags uint32) (*NWF } cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) - ptr := C.virNWFilterBindingCreateXMLWrapper(c.ptr, cXml, C.uint(flags)) + var err C.virError + ptr := C.virNWFilterBindingCreateXMLWrapper(c.ptr, cXml, C.uint(flags), &err) if ptr == 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 <assert.h> +#include <stdio.h> #include "connect_wrapper.h" #include "callbacks_wrapper.h" @@ -38,14 +39,6 @@ void closeCallbackHelper(virConnectPtr conn, int reason, void *opaque) closeCallback(conn, reason, (long)opaque); } -int virConnectRegisterCloseCallbackHelper(virConnectPtr c, virConnectCloseFunc cb, long goCallbackId) -{ - void *id = (void*)goCallbackId; - return virConnectRegisterCloseCallback(c, cb, id, freeGoCallbackHelper); -} - -#include <stdio.h> - extern int connectAuthCallback(virConnectCredentialPtr, unsigned int, int); int connectAuthCallbackHelper(virConnectCredentialPtr cred, unsigned int ncred, void *cbdata) { @@ -54,188 +47,1720 @@ int connectAuthCallbackHelper(virConnectCredentialPtr cred, unsigned int ncred, return connectAuthCallback(cred, ncred, *callbackID); } -virConnectPtr virConnectOpenAuthWrapper(const char *name, int *credtype, uint ncredtype, int callbackID, unsigned int flags) -{ - virConnectAuth auth = { - .credtype = credtype, - .ncredtype = ncredtype, - .cb = connectAuthCallbackHelper, - .cbdata = &callbackID, - }; - return virConnectOpenAuth(name, &auth, flags); +char * +virConnectBaselineCPUWrapper(virConnectPtr conn, + const char **xmlCPUs, + unsigned int ncpus, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virConnectBaselineCPU(conn, xmlCPUs, ncpus, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; } -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 = virConnectBaselineHypervisorCPU(conn, emulator, arch, machine, virttype, xmlCPUs, ncpus, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } -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 = virConnectClose(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectCompareCPUWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err) +{ + int ret = virConnectCompareCPU(conn, xmlDesc, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectCompareHypervisorCPUWrapper(virConnectPtr conn, + const char *emulator, + const char *arch, + const char *machine, + const char *virttype, + const char *xmlCPU, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 4004000 assert(0); // Caller should have checked version #else - return virConnectGetDomainCapabilities(conn, emulatorbin, arch, machine, virttype, flags); + int ret = virConnectCompareHypervisorCPU(conn, emulator, arch, machine, virttype, xmlCPU, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -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 = virConnectDomainXMLFromNative(conn, nativeFormat, nativeConfig, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virConnectDomainXMLToNativeWrapper(virConnectPtr conn, + const char *nativeFormat, + const char *domainXml, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virConnectDomainXMLToNative(conn, nativeFormat, domainXml, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virConnectFindStoragePoolSourcesWrapper(virConnectPtr conn, + const char *type, + const char *srcSpec, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virConnectFindStoragePoolSources(conn, type, srcSpec, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectGetAllDomainStatsWrapper(virConnectPtr conn, + unsigned int stats, + virDomainStatsRecordPtr **retStats, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 1002008 assert(0); // Caller should have checked version #else - return virConnectGetAllDomainStats(conn, stats, retStats, flags); + int ret = virConnectGetAllDomainStats(conn, stats, retStats, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -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 = virConnectGetCPUModelNames(conn, arch, models, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virConnectGetCapabilitiesWrapper(virConnectPtr conn, + virErrorPtr err) +{ + char * ret = virConnectGetCapabilities(conn); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virConnectGetDomainCapabilitiesWrapper(virConnectPtr conn, + const char *emulatorbin, + const char *arch, + const char *machine, + const char *virttype, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002007 assert(0); // Caller should have checked version #else - return virDomainListGetStats(doms, stats, retStats, flags); + char * ret = virConnectGetDomainCapabilities(conn, emulatorbin, arch, machine, virttype, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } -void virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats) + +char * +virConnectGetHostnameWrapper(virConnectPtr conn, + virErrorPtr err) { + char * ret = virConnectGetHostname(conn); + 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) + +int +virConnectGetLibVersionWrapper(virConnectPtr conn, + unsigned long *libVer, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002009 + int ret = virConnectGetLibVersion(conn, libVer); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectGetMaxVcpusWrapper(virConnectPtr conn, + const char *type, + virErrorPtr err) +{ + int ret = virConnectGetMaxVcpus(conn, type); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virConnectGetSysinfoWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virConnectGetSysinfo(conn, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +const char * +virConnectGetTypeWrapper(virConnectPtr conn, + virErrorPtr err) +{ + const char * ret = virConnectGetType(conn); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +char * +virConnectGetURIWrapper(virConnectPtr conn, + virErrorPtr err) +{ + char * ret = virConnectGetURI(conn); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectGetVersionWrapper(virConnectPtr conn, + unsigned long *hvVer, + virErrorPtr err) +{ + int ret = virConnectGetVersion(conn, hvVer); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectIsAliveWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectIsAlive(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectIsEncryptedWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectIsEncrypted(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectIsSecureWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectIsSecure(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllDomainsWrapper(virConnectPtr conn, + virDomainPtr **domains, + unsigned int flags, + virErrorPtr err) +{ + int ret = virConnectListAllDomains(conn, domains, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllInterfacesWrapper(virConnectPtr conn, + virInterfacePtr **ifaces, + unsigned int flags, + virErrorPtr err) +{ + int ret = virConnectListAllInterfaces(conn, ifaces, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, + virNWFilterBindingPtr **bindings, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version #else - return virNodeAllocPages(conn, npages, pageSizes, pageCounts, startCell, cellCount, flags); + int ret = virConnectListAllNWFilterBindings(conn, bindings, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -virDomainPtr virDomainDefineXMLFlagsWrapper(virConnectPtr conn, - const char *xml, - unsigned int flags) +int +virConnectListAllNWFiltersWrapper(virConnectPtr conn, + virNWFilterPtr **filters, + unsigned int flags, + virErrorPtr err) +{ + int ret = virConnectListAllNWFilters(conn, filters, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllNetworksWrapper(virConnectPtr conn, + virNetworkPtr **nets, + unsigned int flags, + virErrorPtr err) +{ + int ret = virConnectListAllNetworks(conn, nets, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllNodeDevicesWrapper(virConnectPtr conn, + virNodeDevicePtr **devices, + unsigned int flags, + virErrorPtr err) +{ + int ret = virConnectListAllNodeDevices(conn, devices, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllSecretsWrapper(virConnectPtr conn, + virSecretPtr **secrets, + unsigned int flags, + virErrorPtr err) +{ + int ret = virConnectListAllSecrets(conn, secrets, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListAllStoragePoolsWrapper(virConnectPtr conn, + virStoragePoolPtr **pools, + unsigned int flags, + virErrorPtr err) +{ + int ret = virConnectListAllStoragePools(conn, pools, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListDefinedDomainsWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret = virConnectListDefinedDomains(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListDefinedInterfacesWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret = virConnectListDefinedInterfaces(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListDefinedNetworksWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret = virConnectListDefinedNetworks(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListDefinedStoragePoolsWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret = virConnectListDefinedStoragePools(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListDomainsWrapper(virConnectPtr conn, + int *ids, + int maxids, + virErrorPtr err) +{ + int ret = virConnectListDomains(conn, ids, maxids); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListInterfacesWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret = virConnectListInterfaces(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListNWFiltersWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret = virConnectListNWFilters(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListNetworksWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret = virConnectListNetworks(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListSecretsWrapper(virConnectPtr conn, + char **uuids, + int maxuuids, + virErrorPtr err) +{ + int ret = virConnectListSecrets(conn, uuids, maxuuids); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectListStoragePoolsWrapper(virConnectPtr conn, + char ** const names, + int maxnames, + virErrorPtr err) +{ + int ret = virConnectListStoragePools(conn, names, maxnames); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfDefinedDomainsWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectNumOfDefinedDomains(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfDefinedInterfacesWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectNumOfDefinedInterfaces(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfDefinedNetworksWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectNumOfDefinedNetworks(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfDefinedStoragePoolsWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectNumOfDefinedStoragePools(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfDomainsWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectNumOfDomains(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfInterfacesWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectNumOfInterfaces(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfNWFiltersWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectNumOfNWFilters(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfNetworksWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectNumOfNetworks(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfSecretsWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectNumOfSecrets(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectNumOfStoragePoolsWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectNumOfStoragePools(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virConnectOpenWrapper(const char *name, + virErrorPtr err) +{ + virConnectPtr ret = virConnectOpen(name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virConnectOpenAuthWrapper(const char *name, + int *credtype, + uint ncredtype, + int callbackID, + unsigned int flags, + virErrorPtr err) +{ + virConnectAuth auth = { + .credtype = credtype, + .ncredtype = ncredtype, + .cb = connectAuthCallbackHelper, + .cbdata = &callbackID, + }; + + virConnectPtr ret = virConnectOpenAuth(name, &auth, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virConnectOpenReadOnlyWrapper(const char *name, + virErrorPtr err) +{ + virConnectPtr ret = virConnectOpenReadOnly(name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectRefWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectRef(conn); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectRegisterCloseCallbackWrapper(virConnectPtr conn, + long goCallbackId, + virErrorPtr err) +{ + void *id = (void*)goCallbackId; + int ret = virConnectRegisterCloseCallback(conn, closeCallbackHelper, id, freeGoCallbackHelper); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectSetKeepAliveWrapper(virConnectPtr conn, + int interval, + unsigned int count, + virErrorPtr err) +{ + int ret = virConnectSetKeepAlive(conn, interval, count); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectUnregisterCloseCallbackWrapper(virConnectPtr conn, + virErrorPtr err) +{ + int ret = virConnectUnregisterCloseCallback(conn, closeCallbackHelper); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainCreateLinuxWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err) +{ + virDomainPtr ret = virDomainCreateLinux(conn, xmlDesc, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err) +{ + virDomainPtr ret = virDomainCreateXML(conn, xmlDesc, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainCreateXMLWithFilesWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int nfiles, + int *files, + unsigned int flags, + virErrorPtr err) +{ + virDomainPtr ret = virDomainCreateXMLWithFiles(conn, xmlDesc, nfiles, files, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainDefineXMLWrapper(virConnectPtr conn, + const char *xml, + virErrorPtr err) +{ + virDomainPtr ret = virDomainDefineXML(conn, xml); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainDefineXMLFlagsWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 1002012 assert(0); // Caller should have checked version #else - return virDomainDefineXMLFlags(conn, xml, flags); + virDomainPtr ret = virDomainDefineXMLFlags(conn, xml, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } -virStoragePoolPtr virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, - 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 = virDomainListGetStats(doms, stats, retStats, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -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 = virDomainLookupByID(conn, id); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err) +{ + virDomainPtr ret = virDomainLookupByName(conn, name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err) +{ + virDomainPtr ret = virDomainLookupByUUID(conn, uuid); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err) +{ + virDomainPtr ret = virDomainLookupByUUIDString(conn, uuidstr); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainRestoreWrapper(virConnectPtr conn, + const char *from, + virErrorPtr err) +{ + int ret = virDomainRestore(conn, from); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainRestoreFlagsWrapper(virConnectPtr conn, + const char *from, + const char *dxml, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainRestoreFlags(conn, from, dxml, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSaveImageDefineXMLWrapper(virConnectPtr conn, + const char *file, + const char *dxml, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSaveImageDefineXML(conn, file, dxml, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virDomainSaveImageGetXMLDescWrapper(virConnectPtr conn, + const char *file, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virDomainSaveImageGetXMLDesc(conn, file, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +void +virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats) +{ +#if LIBVIR_VERSION_NUMBER < 1002008 assert(0); // Caller should have checked version #else - return virConnectBaselineHypervisorCPU(conn, emulator, arch, machine, virttype, xmlCPUs, ncpus, flags); + virDomainStatsRecordListFree(stats); #endif } -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 = virGetVersion(libVer, type, typeVer); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virInterfaceChangeBeginWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err) +{ + int ret = virInterfaceChangeBegin(conn, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virInterfaceChangeCommitWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err) +{ + int ret = virInterfaceChangeCommit(conn, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virInterfaceChangeRollbackWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err) +{ + int ret = virInterfaceChangeRollback(conn, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virInterfacePtr +virInterfaceDefineXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags, + virErrorPtr err) +{ + virInterfacePtr ret = virInterfaceDefineXML(conn, xml, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virInterfacePtr +virInterfaceLookupByMACStringWrapper(virConnectPtr conn, + const char *macstr, + virErrorPtr err) +{ + virInterfacePtr ret = virInterfaceLookupByMACString(conn, macstr); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virInterfacePtr +virInterfaceLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err) +{ + virInterfacePtr ret = virInterfaceLookupByName(conn, name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNWFilterBindingPtr +virNWFilterBindingCreateXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version #else - return virConnectCompareHypervisorCPU(conn, emulator, arch, machine, virttype, xmlCPU, flags); + virNWFilterBindingPtr ret = virNWFilterBindingCreateXML(conn, xml, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } -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 = virNWFilterBindingLookupByPortDev(conn, portdev); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } -int virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, - virNWFilterBindingPtr **bindings, - unsigned int flags) + +virNWFilterPtr +virNWFilterDefineXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 4005000 + virNWFilterPtr ret = virNWFilterDefineXML(conn, xmlDesc); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNWFilterPtr +virNWFilterLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err) +{ + virNWFilterPtr ret = virNWFilterLookupByName(conn, name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNWFilterPtr +virNWFilterLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err) +{ + virNWFilterPtr ret = virNWFilterLookupByUUID(conn, uuid); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNWFilterPtr +virNWFilterLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err) +{ + virNWFilterPtr ret = virNWFilterLookupByUUIDString(conn, uuidstr); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNetworkPtr +virNetworkCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + virErrorPtr err) +{ + virNetworkPtr ret = virNetworkCreateXML(conn, xmlDesc); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNetworkPtr +virNetworkDefineXMLWrapper(virConnectPtr conn, + const char *xml, + virErrorPtr err) +{ + virNetworkPtr ret = virNetworkDefineXML(conn, xml); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNetworkPtr +virNetworkLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err) +{ + virNetworkPtr ret = virNetworkLookupByName(conn, name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNetworkPtr +virNetworkLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err) +{ + virNetworkPtr ret = virNetworkLookupByUUID(conn, uuid); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNetworkPtr +virNetworkLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err) +{ + virNetworkPtr ret = virNetworkLookupByUUIDString(conn, uuidstr); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeAllocPagesWrapper(virConnectPtr conn, + unsigned int npages, + unsigned int *pageSizes, + unsigned long long *pageCounts, + int startCell, + unsigned int cellCount, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002009 assert(0); // Caller should have checked version #else - return virConnectListAllNWFilterBindings(conn, bindings, flags); + int ret = virNodeAllocPages(conn, npages, pageSizes, pageCounts, startCell, cellCount, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -virNWFilterBindingPtr virNWFilterBindingCreateXMLWrapper(virConnectPtr conn, - const char *xml, - unsigned int flags) + +virNodeDevicePtr +virNodeDeviceCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 4005000 + virNodeDevicePtr ret = virNodeDeviceCreateXML(conn, xmlDesc, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNodeDevicePtr +virNodeDeviceLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err) +{ + virNodeDevicePtr ret = virNodeDeviceLookupByName(conn, name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virNodeDevicePtr +virNodeDeviceLookupSCSIHostByWWNWrapper(virConnectPtr conn, + const char *wwnn, + const char *wwpn, + unsigned int flags, + virErrorPtr err) +{ + virNodeDevicePtr ret = virNodeDeviceLookupSCSIHostByWWN(conn, wwnn, wwpn, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeGetCPUMapWrapper(virConnectPtr conn, + unsigned char **cpumap, + unsigned int *online, + unsigned int flags, + virErrorPtr err) +{ + int ret = virNodeGetCPUMap(conn, cpumap, online, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeGetCPUStatsWrapper(virConnectPtr conn, + int cpuNum, + virNodeCPUStatsPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virNodeGetCPUStats(conn, cpuNum, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeGetCellsFreeMemoryWrapper(virConnectPtr conn, + unsigned long long *freeMems, + int startCell, + int maxCells, + virErrorPtr err) +{ + int ret = virNodeGetCellsFreeMemory(conn, freeMems, startCell, maxCells); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +unsigned long long +virNodeGetFreeMemoryWrapper(virConnectPtr conn, + virErrorPtr err) +{ + unsigned long long ret = virNodeGetFreeMemory(conn); + if (ret == 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeGetFreePagesWrapper(virConnectPtr conn, + unsigned int npages, + unsigned int *pages, + int startCell, + unsigned int cellCount, + unsigned long long *counts, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002006 assert(0); // Caller should have checked version #else - return virNWFilterBindingCreateXML(conn, xml, flags); + int ret = virNodeGetFreePages(conn, npages, pages, startCell, cellCount, counts, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -virNWFilterBindingPtr virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, - const char *portdev) + +int +virNodeGetInfoWrapper(virConnectPtr conn, + virNodeInfoPtr info, + virErrorPtr err) +{ + int ret = virNodeGetInfo(conn, info); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeGetMemoryParametersWrapper(virConnectPtr conn, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virNodeGetMemoryParameters(conn, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeGetMemoryStatsWrapper(virConnectPtr conn, + int cellNum, + virNodeMemoryStatsPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virNodeGetMemoryStats(conn, cellNum, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeGetSEVInfoWrapper(virConnectPtr conn, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 4005000 assert(0); // Caller should have checked version #else - return virNWFilterBindingLookupByPortDev(conn, portdev); + int ret = virNodeGetSEVInfo(conn, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +int +virNodeGetSecurityModelWrapper(virConnectPtr conn, + virSecurityModelPtr secmodel, + virErrorPtr err) +{ + int ret = virNodeGetSecurityModel(conn, secmodel); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeListDevicesWrapper(virConnectPtr conn, + const char *cap, + char ** const names, + int maxnames, + unsigned int flags, + virErrorPtr err) +{ + int ret = virNodeListDevices(conn, cap, names, maxnames, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeNumOfDevicesWrapper(virConnectPtr conn, + const char *cap, + unsigned int flags, + virErrorPtr err) +{ + int ret = virNodeNumOfDevices(conn, cap, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeSetMemoryParametersWrapper(virConnectPtr conn, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virNodeSetMemoryParameters(conn, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virNodeSuspendForDurationWrapper(virConnectPtr conn, + unsigned int target, + unsigned long long duration, + unsigned int flags, + virErrorPtr err) +{ + int ret = virNodeSuspendForDuration(conn, target, duration, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virSecretPtr +virSecretDefineXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags, + virErrorPtr err) +{ + virSecretPtr ret = virSecretDefineXML(conn, xml, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virSecretPtr +virSecretLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err) +{ + virSecretPtr ret = virSecretLookupByUUID(conn, uuid); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virSecretPtr +virSecretLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err) +{ + virSecretPtr ret = virSecretLookupByUUIDString(conn, uuidstr); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virSecretPtr +virSecretLookupByUsageWrapper(virConnectPtr conn, + int usageType, + const char *usageID, + virErrorPtr err) +{ + virSecretPtr ret = virSecretLookupByUsage(conn, usageType, usageID); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStoragePoolPtr +virStoragePoolCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err) +{ + virStoragePoolPtr ret = virStoragePoolCreateXML(conn, xmlDesc, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStoragePoolPtr +virStoragePoolDefineXMLWrapper(virConnectPtr conn, + const char *xml, + unsigned int flags, + virErrorPtr err) +{ + virStoragePoolPtr ret = virStoragePoolDefineXML(conn, xml, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStoragePoolPtr +virStoragePoolLookupByNameWrapper(virConnectPtr conn, + const char *name, + virErrorPtr err) +{ + virStoragePoolPtr ret = virStoragePoolLookupByName(conn, name); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStoragePoolPtr +virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, + const char *path, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 4001000 + assert(0); // Caller should have checked version +#else + virStoragePoolPtr ret = virStoragePoolLookupByTargetPath(conn, path); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } +virStoragePoolPtr +virStoragePoolLookupByUUIDWrapper(virConnectPtr conn, + const unsigned char *uuid, + virErrorPtr err) +{ + virStoragePoolPtr ret = virStoragePoolLookupByUUID(conn, uuid); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStoragePoolPtr +virStoragePoolLookupByUUIDStringWrapper(virConnectPtr conn, + const char *uuidstr, + virErrorPtr err) +{ + virStoragePoolPtr ret = virStoragePoolLookupByUUIDString(conn, uuidstr); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStorageVolPtr +virStorageVolLookupByKeyWrapper(virConnectPtr conn, + const char *key, + virErrorPtr err) +{ + virStorageVolPtr ret = virStorageVolLookupByKey(conn, key); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStorageVolPtr +virStorageVolLookupByPathWrapper(virConnectPtr conn, + const char *path, + virErrorPtr err) +{ + virStorageVolPtr ret = virStorageVolLookupByPath(conn, path); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virStreamPtr +virStreamNewWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err) +{ + virStreamPtr ret = virStreamNew(conn, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +//////////////////////////////////////////////// */ import "C" 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); -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); 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); 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); int -virConnectGetAllDomainStatsWrapper(virConnectPtr conn, - unsigned int stats, - virDomainStatsRecordPtr **retStats, - unsigned int flags); +virConnectGetLibVersionWrapper(virConnectPtr conn, + unsigned long *libVer, + virErrorPtr err); int +virConnectGetMaxVcpusWrapper(virConnectPtr conn, + const char *type, + virErrorPtr err); + +char * +virConnectGetSysinfoWrapper(virConnectPtr conn, + unsigned int flags, + virErrorPtr err); +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); void virDomainStatsRecordListFreeWrapper(virDomainStatsRecordPtr *stats); +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); -virDomainPtr -virDomainDefineXMLFlagsWrapper(virConnectPtr conn, - const char *xml, - unsigned int flags); +virNodeDevicePtr +virNodeDeviceCreateXMLWrapper(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err); -virStoragePoolPtr -virStoragePoolLookupByTargetPathWrapper(virConnectPtr conn, - const char *path); +virNodeDevicePtr +virNodeDeviceLookupByNameWrapper(virConnectPtr conn, + const char *name, + 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); +virNodeDevicePtr +virNodeDeviceLookupSCSIHostByWWNWrapper(virConnectPtr conn, + const char *wwnn, + const char *wwpn, + 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); +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); int virNodeGetSEVInfoWrapper(virConnectPtr conn, virTypedParameterPtr *params, int *nparams, - unsigned int flags); + unsigned int flags, + virErrorPtr err); int -virConnectListAllNWFilterBindingsWrapper(virConnectPtr conn, - virNWFilterBindingPtr **bindings, - unsigned int flags); +virNodeGetSecurityModelWrapper(virConnectPtr conn, + virSecurityModelPtr secmodel, + virErrorPtr err); -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); -virNWFilterBindingPtr -virNWFilterBindingLookupByPortDevWrapper(virConnectPtr conn, - const char *portdev); #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"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * Copyright (c) 2013 Alex Zorin - * Copyright (C) 2016 Red Hat, Inc. - * - */ - -package libvirt - -import ( - "reflect" - "testing" -) - -func TestGetLastError(t *testing.T) { - _, err := NewConnect("invalid_transport:///default") - if err == nil { - t.Fatalf("Expected an error when creating invalid connection") - } - got := GetLastError() - expected := Error{0, 0, "Missing error", 0} - if !reflect.DeepEqual(got, expected) { - t.Errorf("Expected error %+v, got %+v", expected, got) - } -} -- 2.17.1

Create wrapper functions for each domain 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é <berrange@redhat.com> --- domain.go | 1017 +++++++++++--------- domain_wrapper.go | 2335 +++++++++++++++++++++++++++++++++++++++++---- domain_wrapper.h | 942 ++++++++++++++++-- 3 files changed, 3587 insertions(+), 707 deletions(-) diff --git a/domain.go b/domain.go index fad2a41..302cdb8 100644 --- a/domain.go +++ b/domain.go @@ -30,6 +30,7 @@ package libvirt #cgo pkg-config: libvirt #include <stdlib.h> #include "domain_wrapper.h" +#include "connect_wrapper.h" */ import "C" @@ -858,36 +859,40 @@ type DomainVcpuInfo struct { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainFree func (d *Domain) Free() error { - ret := C.virDomainFree(d.ptr) + var err C.virError + ret := C.virDomainFreeWrapper(d.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainRef func (c *Domain) Ref() error { - ret := C.virDomainRef(c.ptr) + var err C.virError + ret := C.virDomainRefWrapper(c.ptr, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCreate func (d *Domain) Create() error { - result := C.virDomainCreate(d.ptr) + var err C.virError + result := C.virDomainCreateWrapper(d.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCreateWithFlag... func (d *Domain) CreateWithFlags(flags DomainCreateFlags) error { - result := C.virDomainCreateWithFlags(d.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainCreateWithFlagsWrapper(d.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -898,45 +903,50 @@ func (d *Domain) CreateWithFiles(files []os.File, flags DomainCreateFlags) error for i := 0; i < len(files); i++ { cfiles[i] = C.int(files[i].Fd()) } - result := C.virDomainCreateWithFiles(d.ptr, C.uint(len(files)), &cfiles[0], C.uint(flags)) + var err C.virError + result := C.virDomainCreateWithFilesWrapper(d.ptr, C.uint(len(files)), &cfiles[0], C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDestroy func (d *Domain) Destroy() error { - result := C.virDomainDestroy(d.ptr) + var err C.virError + result := C.virDomainDestroyWrapper(d.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainShutdown func (d *Domain) Shutdown() error { - result := C.virDomainShutdown(d.ptr) + var err C.virError + result := C.virDomainShutdownWrapper(d.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainReboot func (d *Domain) Reboot(flags DomainRebootFlagValues) error { - result := C.virDomainReboot(d.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainRebootWrapper(d.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainIsActive func (d *Domain) IsActive() (bool, error) { - result := C.virDomainIsActive(d.ptr) + var err C.virError + result := C.virDomainIsActiveWrapper(d.ptr, &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -946,9 +956,10 @@ func (d *Domain) IsActive() (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainIsPersistent func (d *Domain) IsPersistent() (bool, error) { - result := C.virDomainIsPersistent(d.ptr) + var err C.virError + result := C.virDomainIsPersistentWrapper(d.ptr, &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -958,9 +969,10 @@ func (d *Domain) IsPersistent() (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainIsUpdated func (d *Domain) IsUpdated() (bool, error) { - result := C.virDomainIsUpdated(d.ptr) + var err C.virError + result := C.virDomainIsUpdatedWrapper(d.ptr, &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -977,9 +989,10 @@ func (d *Domain) SetAutostart(autostart bool) error { default: cAutostart = 0 } - result := C.virDomainSetAutostart(d.ptr, cAutostart) + var err C.virError + result := C.virDomainSetAutostartWrapper(d.ptr, cAutostart, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -987,9 +1000,10 @@ func (d *Domain) SetAutostart(autostart bool) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetAutostart func (d *Domain) GetAutostart() (bool, error) { var out C.int - result := C.virDomainGetAutostart(d.ptr, (*C.int)(unsafe.Pointer(&out))) + var err C.virError + result := C.virDomainGetAutostartWrapper(d.ptr, (*C.int)(unsafe.Pointer(&out)), &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } switch out { case 1: @@ -1004,9 +1018,10 @@ func (d *Domain) GetBlockInfo(disk string, flag uint) (*DomainBlockInfo, error) var cinfo C.virDomainBlockInfo cDisk := C.CString(disk) defer C.free(unsafe.Pointer(cDisk)) - result := C.virDomainGetBlockInfo(d.ptr, cDisk, &cinfo, C.uint(flag)) + var err C.virError + result := C.virDomainGetBlockInfoWrapper(d.ptr, cDisk, &cinfo, C.uint(flag), &err) if result == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return &DomainBlockInfo{ @@ -1018,9 +1033,10 @@ func (d *Domain) GetBlockInfo(disk string, flag uint) (*DomainBlockInfo, error) // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetName func (d *Domain) GetName() (string, error) { - name := C.virDomainGetName(d.ptr) + var err C.virError + name := C.virDomainGetNameWrapper(d.ptr, &err) if name == nil { - return "", GetLastError() + return "", makeError(&err) } return C.GoString(name), nil } @@ -1029,21 +1045,23 @@ func (d *Domain) GetName() (string, error) { func (d *Domain) GetState() (DomainState, int, error) { var cState C.int var cReason C.int - result := C.virDomainGetState(d.ptr, + var err C.virError + result := C.virDomainGetStateWrapper(d.ptr, (*C.int)(unsafe.Pointer(&cState)), (*C.int)(unsafe.Pointer(&cReason)), - 0) + 0, &err) if int(result) == -1 { - return 0, 0, GetLastError() + return 0, 0, makeError(&err) } return DomainState(cState), int(cReason), nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetID func (d *Domain) GetID() (uint, error) { - id := uint(C.virDomainGetID(d.ptr)) + var err C.virError + id := uint(C.virDomainGetIDWrapper(d.ptr, &err)) if id == ^uint(0) { - return id, GetLastError() + return id, makeError(&err) } return id, nil } @@ -1052,9 +1070,10 @@ func (d *Domain) GetID() (uint, error) { func (d *Domain) GetUUID() ([]byte, error) { var cUuid [C.VIR_UUID_BUFLEN](byte) cuidPtr := unsafe.Pointer(&cUuid) - result := C.virDomainGetUUID(d.ptr, (*C.uchar)(cuidPtr)) + var err C.virError + result := C.virDomainGetUUIDWrapper(d.ptr, (*C.uchar)(cuidPtr), &err) if result != 0 { - return []byte{}, GetLastError() + return []byte{}, makeError(&err) } return C.GoBytes(cuidPtr, C.VIR_UUID_BUFLEN), nil } @@ -1063,9 +1082,10 @@ func (d *Domain) GetUUID() ([]byte, error) { func (d *Domain) GetUUIDString() (string, error) { var cUuid [C.VIR_UUID_STRING_BUFLEN](C.char) cuidPtr := unsafe.Pointer(&cUuid) - result := C.virDomainGetUUIDString(d.ptr, (*C.char)(cuidPtr)) + var err C.virError + result := C.virDomainGetUUIDStringWrapper(d.ptr, (*C.char)(cuidPtr), &err) if result != 0 { - return "", GetLastError() + return "", makeError(&err) } return C.GoString((*C.char)(cuidPtr)), nil } @@ -1073,9 +1093,10 @@ func (d *Domain) GetUUIDString() (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetInfo func (d *Domain) GetInfo() (*DomainInfo, error) { var cinfo C.virDomainInfo - result := C.virDomainGetInfo(d.ptr, &cinfo) + var err C.virError + result := C.virDomainGetInfoWrapper(d.ptr, &cinfo, &err) if result == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return &DomainInfo{ State: DomainState(cinfo.state), @@ -1088,9 +1109,10 @@ func (d *Domain) GetInfo() (*DomainInfo, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetXMLDesc func (d *Domain) GetXMLDesc(flags DomainXMLFlags) (string, error) { - result := C.virDomainGetXMLDesc(d.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainGetXMLDescWrapper(d.ptr, C.uint(flags), &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } xml := C.GoString(result) C.free(unsafe.Pointer(result)) @@ -1131,21 +1153,22 @@ func getCPUStatsFieldInfo(params *DomainCPUStats) map[string]typedParamsFieldInf // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetCPUStats func (d *Domain) GetCPUStats(startCpu int, nCpus uint, flags uint32) ([]DomainCPUStats, error) { + var err C.virError if nCpus == 0 { if startCpu == -1 { nCpus = 1 } else { - ret := C.virDomainGetCPUStats(d.ptr, nil, 0, 0, 0, 0) + ret := C.virDomainGetCPUStatsWrapper(d.ptr, nil, 0, 0, 0, 0, &err) if ret == -1 { - return []DomainCPUStats{}, GetLastError() + return []DomainCPUStats{}, makeError(&err) } nCpus = uint(ret) } } - ret := C.virDomainGetCPUStats(d.ptr, nil, 0, C.int(startCpu), C.uint(nCpus), 0) + ret := C.virDomainGetCPUStatsWrapper(d.ptr, nil, 0, C.int(startCpu), C.uint(nCpus), 0, &err) if ret == -1 { - return []DomainCPUStats{}, GetLastError() + return []DomainCPUStats{}, makeError(&err) } nparams := uint(ret) @@ -1157,9 +1180,9 @@ func (d *Domain) GetCPUStats(startCpu int, nCpus uint, flags uint32) ([]DomainCP nallocparams = nparams * nCpus } cparams = make([]C.virTypedParameter, nallocparams) - ret = C.virDomainGetCPUStats(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), C.uint(nparams), C.int(startCpu), C.uint(nCpus), C.uint(flags)) + ret = C.virDomainGetCPUStatsWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), C.uint(nparams), C.int(startCpu), C.uint(nCpus), C.uint(flags), &err) if ret == -1 { - return []DomainCPUStats{}, GetLastError() + return []DomainCPUStats{}, makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), C.int(nallocparams)) @@ -1169,9 +1192,9 @@ func (d *Domain) GetCPUStats(startCpu int, nCpus uint, flags uint32) ([]DomainCP offset := i * int(nparams) info := getCPUStatsFieldInfo(&stats[i]) cparamscpu := cparams[offset : offset+int(ret)] - _, err := typedParamsUnpack(cparamscpu, info) - if err != nil { - return []DomainCPUStats{}, err + _, gerr := typedParamsUnpack(cparamscpu, info) + if gerr != nil { + return []DomainCPUStats{}, gerr } } return stats, nil @@ -1236,22 +1259,23 @@ func (d *Domain) GetInterfaceParameters(device string, flags DomainModificationI cdevice := C.CString(device) defer C.free(unsafe.Pointer(cdevice)) - ret := C.virDomainGetInterfaceParameters(d.ptr, cdevice, nil, &nparams, C.uint(0)) + var err C.virError + ret := C.virDomainGetInterfaceParametersWrapper(d.ptr, cdevice, nil, &nparams, C.uint(0), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virDomainGetInterfaceParameters(d.ptr, cdevice, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags)) + ret = C.virDomainGetInterfaceParametersWrapper(d.ptr, cdevice, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - _, err := typedParamsUnpack(cparams, info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpack(cparams, info) + if gerr != nil { + return nil, gerr } return params, nil @@ -1265,25 +1289,26 @@ func (d *Domain) SetInterfaceParameters(device string, params *DomainInterfacePa cdevice := C.CString(device) defer C.free(unsafe.Pointer(cdevice)) - ret := C.virDomainGetInterfaceParameters(d.ptr, cdevice, nil, &nparams, 0) + var err C.virError + ret := C.virDomainGetInterfaceParametersWrapper(d.ptr, cdevice, nil, &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virDomainGetInterfaceParameters(d.ptr, cdevice, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0) + ret = C.virDomainGetInterfaceParametersWrapper(d.ptr, cdevice, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - err := typedParamsPack(cparams, info) - if err != nil { - return err + gerr := typedParamsPack(cparams, info) + if gerr != nil { + return gerr } - ret = C.virDomainSetInterfaceParameters(d.ptr, cdevice, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags)) + ret = C.virDomainSetInterfaceParametersWrapper(d.ptr, cdevice, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags), &err) return nil } @@ -1296,9 +1321,10 @@ func (d *Domain) GetMetadata(tipus DomainMetadataType, uri string, flags DomainM defer C.free(unsafe.Pointer(cUri)) } - result := C.virDomainGetMetadata(d.ptr, C.int(tipus), cUri, C.uint(flags)) + var err C.virError + result := C.virDomainGetMetadataWrapper(d.ptr, C.int(tipus), cUri, C.uint(flags), &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } defer C.free(unsafe.Pointer(result)) @@ -1324,126 +1350,140 @@ func (d *Domain) SetMetadata(metaDataType DomainMetadataType, metaDataCont, uriK cUri = C.CString(uri) defer C.free(unsafe.Pointer(cUri)) } - result := C.virDomainSetMetadata(d.ptr, C.int(metaDataType), cMetaDataCont, cUriKey, cUri, C.uint(flags)) + var err C.virError + result := C.virDomainSetMetadataWrapper(d.ptr, C.int(metaDataType), cMetaDataCont, cUriKey, cUri, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainUndefine func (d *Domain) Undefine() error { - result := C.virDomainUndefine(d.ptr) + var err C.virError + result := C.virDomainUndefineWrapper(d.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainUndefineFlags func (d *Domain) UndefineFlags(flags DomainUndefineFlagsValues) error { - result := C.virDomainUndefineFlags(d.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainUndefineFlagsWrapper(d.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetMaxMemory func (d *Domain) SetMaxMemory(memory uint) error { - result := C.virDomainSetMaxMemory(d.ptr, C.ulong(memory)) + var err C.virError + result := C.virDomainSetMaxMemoryWrapper(d.ptr, C.ulong(memory), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetMemory func (d *Domain) SetMemory(memory uint64) error { - result := C.virDomainSetMemory(d.ptr, C.ulong(memory)) + var err C.virError + result := C.virDomainSetMemoryWrapper(d.ptr, C.ulong(memory), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetMemoryFlags func (d *Domain) SetMemoryFlags(memory uint64, flags DomainMemoryModFlags) error { - result := C.virDomainSetMemoryFlags(d.ptr, C.ulong(memory), C.uint(flags)) + var err C.virError + result := C.virDomainSetMemoryFlagsWrapper(d.ptr, C.ulong(memory), C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetMemoryStats... func (d *Domain) SetMemoryStatsPeriod(period int, flags DomainMemoryModFlags) error { - result := C.virDomainSetMemoryStatsPeriod(d.ptr, C.int(period), C.uint(flags)) + var err C.virError + result := C.virDomainSetMemoryStatsPeriodWrapper(d.ptr, C.int(period), C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetVcpus func (d *Domain) SetVcpus(vcpu uint) error { - result := C.virDomainSetVcpus(d.ptr, C.uint(vcpu)) + var err C.virError + result := C.virDomainSetVcpusWrapper(d.ptr, C.uint(vcpu), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetVcpusFlags func (d *Domain) SetVcpusFlags(vcpu uint, flags DomainVcpuFlags) error { - result := C.virDomainSetVcpusFlags(d.ptr, C.uint(vcpu), C.uint(flags)) + var err C.virError + result := C.virDomainSetVcpusFlagsWrapper(d.ptr, C.uint(vcpu), C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSuspend func (d *Domain) Suspend() error { - result := C.virDomainSuspend(d.ptr) + var err C.virError + result := C.virDomainSuspendWrapper(d.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainResume func (d *Domain) Resume() error { - result := C.virDomainResume(d.ptr) + var err C.virError + result := C.virDomainResumeWrapper(d.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainAbortJob func (d *Domain) AbortJob() error { - result := C.virDomainAbortJob(d.ptr) + var err C.virError + result := C.virDomainAbortJobWrapper(d.ptr, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDestroyFlags func (d *Domain) DestroyFlags(flags DomainDestroyFlags) error { - result := C.virDomainDestroyFlags(d.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainDestroyFlagsWrapper(d.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainShutdownFlags func (d *Domain) ShutdownFlags(flags DomainShutdownFlags) error { - result := C.virDomainShutdownFlags(d.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainShutdownFlagsWrapper(d.ptr, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -1452,9 +1492,10 @@ func (d *Domain) ShutdownFlags(flags DomainShutdownFlags) error { func (d *Domain) AttachDevice(xml string) error { cXml := C.CString(xml) defer C.free(unsafe.Pointer(cXml)) - result := C.virDomainAttachDevice(d.ptr, cXml) + var err C.virError + result := C.virDomainAttachDeviceWrapper(d.ptr, cXml, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -1463,9 +1504,10 @@ func (d *Domain) AttachDevice(xml string) error { func (d *Domain) AttachDeviceFlags(xml string, flags DomainDeviceModifyFlags) error { cXml := C.CString(xml) defer C.free(unsafe.Pointer(cXml)) - result := C.virDomainAttachDeviceFlags(d.ptr, cXml, C.uint(flags)) + var err C.virError + result := C.virDomainAttachDeviceFlagsWrapper(d.ptr, cXml, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -1474,9 +1516,10 @@ func (d *Domain) AttachDeviceFlags(xml string, flags DomainDeviceModifyFlags) er func (d *Domain) DetachDevice(xml string) error { cXml := C.CString(xml) defer C.free(unsafe.Pointer(cXml)) - result := C.virDomainDetachDevice(d.ptr, cXml) + var err C.virError + result := C.virDomainDetachDeviceWrapper(d.ptr, cXml, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -1485,9 +1528,10 @@ func (d *Domain) DetachDevice(xml string) error { func (d *Domain) DetachDeviceFlags(xml string, flags DomainDeviceModifyFlags) error { cXml := C.CString(xml) defer C.free(unsafe.Pointer(cXml)) - result := C.virDomainDetachDeviceFlags(d.ptr, cXml, C.uint(flags)) + var err C.virError + result := C.virDomainDetachDeviceFlagsWrapper(d.ptr, cXml, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -1500,9 +1544,10 @@ func (d *Domain) DetachDeviceAlias(alias string, flags DomainDeviceModifyFlags) cAlias := C.CString(alias) defer C.free(unsafe.Pointer(cAlias)) - result := C.virDomainDetachDeviceAliasWrapper(d.ptr, cAlias, C.uint(flags)) + var err C.virError + result := C.virDomainDetachDeviceAliasWrapper(d.ptr, cAlias, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -1511,18 +1556,20 @@ func (d *Domain) DetachDeviceAlias(alias string, flags DomainDeviceModifyFlags) func (d *Domain) UpdateDeviceFlags(xml string, flags DomainDeviceModifyFlags) error { cXml := C.CString(xml) defer C.free(unsafe.Pointer(cXml)) - result := C.virDomainUpdateDeviceFlags(d.ptr, cXml, C.uint(flags)) + var err C.virError + result := C.virDomainUpdateDeviceFlagsWrapper(d.ptr, cXml, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainScreenshot func (d *Domain) Screenshot(stream *Stream, screen, flags uint32) (string, error) { - cType := C.virDomainScreenshot(d.ptr, stream.ptr, C.uint(screen), C.uint(flags)) + var err C.virError + cType := C.virDomainScreenshotWrapper(d.ptr, stream.ptr, C.uint(screen), C.uint(flags), &err) if cType == nil { - return "", GetLastError() + return "", makeError(&err) } defer C.free(unsafe.Pointer(cType)) @@ -1532,9 +1579,10 @@ func (d *Domain) Screenshot(stream *Stream, screen, flags uint32) (string, error // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSendKey func (d *Domain) SendKey(codeset, holdtime uint, keycodes []uint, flags uint32) error { - result := C.virDomainSendKey(d.ptr, C.uint(codeset), C.uint(holdtime), (*C.uint)(unsafe.Pointer(&keycodes[0])), C.int(len(keycodes)), C.uint(flags)) + var err C.virError + result := C.virDomainSendKeyWrapper(d.ptr, C.uint(codeset), C.uint(holdtime), (*C.uint)(unsafe.Pointer(&keycodes[0])), C.int(len(keycodes)), C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -1611,22 +1659,23 @@ func (d *Domain) BlockStatsFlags(disk string, flags uint32) (*DomainBlockStats, cdisk := C.CString(disk) defer C.free(unsafe.Pointer(cdisk)) - ret := C.virDomainBlockStatsFlags(d.ptr, cdisk, nil, &nparams, C.uint(0)) + var err C.virError + ret := C.virDomainBlockStatsFlagsWrapper(d.ptr, cdisk, nil, &nparams, C.uint(0), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virDomainBlockStatsFlags(d.ptr, cdisk, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags)) + ret = C.virDomainBlockStatsFlagsWrapper(d.ptr, cdisk, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - _, err := typedParamsUnpack(cparams, info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpack(cparams, info) + if gerr != nil { + return nil, gerr } return params, nil @@ -1642,10 +1691,11 @@ func (d *Domain) BlockStats(path string) (*DomainBlockStats, error) { cStats := (C.virDomainBlockStatsPtr)(C.malloc(size)) defer C.free(unsafe.Pointer(cStats)) - result := C.virDomainBlockStats(d.ptr, cPath, (C.virDomainBlockStatsPtr)(cStats), size) + var err C.virError + result := C.virDomainBlockStatsWrapper(d.ptr, cPath, (C.virDomainBlockStatsPtr)(cStats), size, &err) if result != 0 { - return nil, GetLastError() + return nil, makeError(&err) } return &DomainBlockStats{ WrReqSet: true, @@ -1688,10 +1738,11 @@ func (d *Domain) InterfaceStats(path string) (*DomainInterfaceStats, error) { cStats := (C.virDomainInterfaceStatsPtr)(C.malloc(size)) defer C.free(unsafe.Pointer(cStats)) - result := C.virDomainInterfaceStats(d.ptr, cPath, (C.virDomainInterfaceStatsPtr)(cStats), size) + var err C.virError + result := C.virDomainInterfaceStatsWrapper(d.ptr, cPath, (C.virDomainInterfaceStatsPtr)(cStats), size, &err) if result != 0 { - return nil, GetLastError() + return nil, makeError(&err) } return &DomainInterfaceStats{ RxBytesSet: true, @@ -1717,12 +1768,13 @@ func (d *Domain) InterfaceStats(path string) (*DomainInterfaceStats, error) { func (d *Domain) MemoryStats(nrStats uint32, flags uint32) ([]DomainMemoryStat, error) { ptr := make([]C.virDomainMemoryStatStruct, nrStats) - result := C.virDomainMemoryStats( + var err C.virError + result := C.virDomainMemoryStatsWrapper( d.ptr, (C.virDomainMemoryStatPtr)(unsafe.Pointer(&ptr[0])), - C.uint(nrStats), C.uint(flags)) + C.uint(nrStats), C.uint(flags), &err) if result == -1 { - return []DomainMemoryStat{}, GetLastError() + return []DomainMemoryStat{}, makeError(&err) } out := make([]DomainMemoryStat, 0) @@ -1741,14 +1793,15 @@ func (d *Domain) MemoryStats(nrStats uint32, flags uint32) ([]DomainMemoryStat, // acquire a reference on the returned Connect, which must // be released by calling Close() func (d *Domain) DomainGetConnect() (*Connect, error) { - ptr := C.virDomainGetConnect(d.ptr) + var err C.virError + ptr := C.virDomainGetConnectWrapper(d.ptr, &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } - ret := C.virConnectRef(ptr) + ret := C.virConnectRefWrapper(ptr, &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return &Connect{ptr: ptr}, nil @@ -1757,15 +1810,16 @@ func (d *Domain) DomainGetConnect() (*Connect, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpus func (d *Domain) GetVcpus() ([]DomainVcpuInfo, error) { var cnodeinfo C.virNodeInfo - ret := C.virNodeGetInfo(C.virDomainGetConnect(d.ptr), &cnodeinfo) + var err C.virError + ret := C.virNodeGetInfoWrapper(C.virDomainGetConnect(d.ptr), &cnodeinfo, &err) if ret == -1 { - return []DomainVcpuInfo{}, GetLastError() + return []DomainVcpuInfo{}, makeError(&err) } var cdominfo C.virDomainInfo - ret = C.virDomainGetInfo(d.ptr, &cdominfo) + ret = C.virDomainGetInfoWrapper(d.ptr, &cdominfo, &err) if ret == -1 { - return []DomainVcpuInfo{}, GetLastError() + return []DomainVcpuInfo{}, makeError(&err) } nvcpus := int(cdominfo.nrVirtCpu) @@ -1774,9 +1828,9 @@ func (d *Domain) GetVcpus() ([]DomainVcpuInfo, error) { ccpumaps := make([]C.uchar, maplen*nvcpus) cinfo := make([]C.virVcpuInfo, nvcpus) - ret = C.virDomainGetVcpus(d.ptr, &cinfo[0], C.int(nvcpus), &ccpumaps[0], C.int(maplen)) + ret = C.virDomainGetVcpusWrapper(d.ptr, &cinfo[0], C.int(nvcpus), &ccpumaps[0], C.int(maplen), &err) if ret == -1 { - return []DomainVcpuInfo{}, GetLastError() + return []DomainVcpuInfo{}, makeError(&err) } info := make([]DomainVcpuInfo, int(ret)) @@ -1803,9 +1857,10 @@ func (d *Domain) GetVcpus() ([]DomainVcpuInfo, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpusFlags func (d *Domain) GetVcpusFlags(flags DomainVcpuFlags) (int32, error) { - result := C.virDomainGetVcpusFlags(d.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainGetVcpusFlagsWrapper(d.ptr, C.uint(flags), &err) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return int32(result), nil } @@ -1822,10 +1877,11 @@ func (d *Domain) PinVcpu(vcpu uint, cpuMap []bool) error { } } - result := C.virDomainPinVcpu(d.ptr, C.uint(vcpu), &ccpumap[0], C.int(maplen)) + var err C.virError + result := C.virDomainPinVcpuWrapper(d.ptr, C.uint(vcpu), &ccpumap[0], C.int(maplen), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -1843,10 +1899,11 @@ func (d *Domain) PinVcpuFlags(vcpu uint, cpuMap []bool, flags DomainModification } } - result := C.virDomainPinVcpuFlags(d.ptr, C.uint(vcpu), &ccpumap[0], C.int(maplen), C.uint(flags)) + var err C.virError + result := C.virDomainPinVcpuFlagsWrapper(d.ptr, C.uint(vcpu), &ccpumap[0], C.int(maplen), C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -1871,9 +1928,10 @@ func (d *Domain) ListAllInterfaceAddresses(src DomainInterfaceAddressesSource) ( } var cList *C.virDomainInterfacePtr - numIfaces := int(C.virDomainInterfaceAddressesWrapper(d.ptr, (**C.virDomainInterfacePtr)(&cList), C.uint(src), 0)) + var err C.virError + numIfaces := int(C.virDomainInterfaceAddressesWrapper(d.ptr, (**C.virDomainInterfacePtr)(&cList), C.uint(src), 0, &err)) if numIfaces == -1 { - return nil, GetLastError() + return nil, makeError(&err) } ifaces := make([]DomainInterface, numIfaces) @@ -1906,9 +1964,10 @@ func (d *Domain) ListAllInterfaceAddresses(src DomainInterfaceAddressesSource) ( // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainSnaps... func (d *Domain) SnapshotCurrent(flags uint32) (*DomainSnapshot, error) { - result := C.virDomainSnapshotCurrent(d.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainSnapshotCurrentWrapper(d.ptr, C.uint(flags), &err) if result == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &DomainSnapshot{ptr: result}, nil @@ -1916,9 +1975,10 @@ func (d *Domain) SnapshotCurrent(flags uint32) (*DomainSnapshot, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainSnaps... func (d *Domain) SnapshotNum(flags DomainSnapshotListFlags) (int, error) { - result := int(C.virDomainSnapshotNum(d.ptr, C.uint(flags))) + var err C.virError + result := int(C.virDomainSnapshotNumWrapper(d.ptr, C.uint(flags), &err)) if result == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return result, nil } @@ -1927,9 +1987,10 @@ func (d *Domain) SnapshotNum(flags DomainSnapshotListFlags) (int, error) { func (d *Domain) SnapshotLookupByName(name string, flags uint32) (*DomainSnapshot, error) { cName := C.CString(name) defer C.free(unsafe.Pointer(cName)) - ptr := C.virDomainSnapshotLookupByName(d.ptr, cName, C.uint(flags)) + var err C.virError + ptr := C.virDomainSnapshotLookupByNameWrapper(d.ptr, cName, C.uint(flags), &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &DomainSnapshot{ptr: ptr}, nil } @@ -1939,12 +2000,13 @@ func (d *Domain) SnapshotListNames(flags DomainSnapshotListFlags) ([]string, err const maxNames = 1024 var names [maxNames](*C.char) namesPtr := unsafe.Pointer(&names) - numNames := C.virDomainSnapshotListNames( + var err C.virError + numNames := C.virDomainSnapshotListNamesWrapper( d.ptr, (**C.char)(namesPtr), - maxNames, C.uint(flags)) + maxNames, C.uint(flags), &err) if numNames == -1 { - return nil, GetLastError() + return nil, makeError(&err) } goNames := make([]string, numNames) for k := 0; k < int(numNames); k++ { @@ -1957,9 +2019,10 @@ func (d *Domain) SnapshotListNames(flags DomainSnapshotListFlags) ([]string, err // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainListA... func (d *Domain) ListAllSnapshots(flags DomainSnapshotListFlags) ([]DomainSnapshot, error) { var cList *C.virDomainSnapshotPtr - numVols := C.virDomainListAllSnapshots(d.ptr, (**C.virDomainSnapshotPtr)(&cList), C.uint(flags)) + var err C.virError + numVols := C.virDomainListAllSnapshotsWrapper(d.ptr, (**C.virDomainSnapshotPtr)(&cList), C.uint(flags), &err) if numVols == -1 { - return nil, GetLastError() + return nil, makeError(&err) } hdr := reflect.SliceHeader{ Data: uintptr(unsafe.Pointer(cList)), @@ -1989,9 +2052,10 @@ func (d *Domain) BlockCommit(disk string, base string, top string, bandwidth uin ctop = C.CString(top) defer C.free(unsafe.Pointer(ctop)) } - ret := C.virDomainBlockCommit(d.ptr, cdisk, cbase, ctop, C.ulong(bandwidth), C.uint(flags)) + var err C.virError + ret := C.virDomainBlockCommitWrapper(d.ptr, cdisk, cbase, ctop, C.ulong(bandwidth), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -2034,17 +2098,18 @@ func (d *Domain) BlockCopy(disk string, destxml string, params *DomainBlockCopyP info := getBlockCopyParameterFieldInfo(params) - cparams, err := typedParamsPackNew(info) - if err != nil { - return err + cparams, gerr := typedParamsPackNew(info) + if gerr != nil { + return gerr } nparams := len(*cparams) defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&(*cparams)[0])), C.int(nparams)) - ret := C.virDomainBlockCopyWrapper(d.ptr, cdisk, cdestxml, (*C.virTypedParameter)(unsafe.Pointer(&(*cparams)[0])), C.int(nparams), C.uint(flags)) + var err C.virError + ret := C.virDomainBlockCopyWrapper(d.ptr, cdisk, cdestxml, (*C.virTypedParameter)(unsafe.Pointer(&(*cparams)[0])), C.int(nparams), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -2054,9 +2119,10 @@ func (d *Domain) BlockCopy(disk string, destxml string, params *DomainBlockCopyP func (d *Domain) BlockJobAbort(disk string, flags DomainBlockJobAbortFlags) error { cdisk := C.CString(disk) defer C.free(unsafe.Pointer(cdisk)) - ret := C.virDomainBlockJobAbort(d.ptr, cdisk, C.uint(flags)) + var err C.virError + ret := C.virDomainBlockJobAbortWrapper(d.ptr, cdisk, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -2065,9 +2131,10 @@ func (d *Domain) BlockJobAbort(disk string, flags DomainBlockJobAbortFlags) erro func (d *Domain) BlockJobSetSpeed(disk string, bandwidth uint64, flags DomainBlockJobSetSpeedFlags) error { cdisk := C.CString(disk) defer C.free(unsafe.Pointer(cdisk)) - ret := C.virDomainBlockJobSetSpeed(d.ptr, cdisk, C.ulong(bandwidth), C.uint(flags)) + var err C.virError + ret := C.virDomainBlockJobSetSpeedWrapper(d.ptr, cdisk, C.ulong(bandwidth), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -2076,9 +2143,10 @@ func (d *Domain) BlockJobSetSpeed(disk string, bandwidth uint64, flags DomainBlo func (d *Domain) BlockPull(disk string, bandwidth uint64, flags DomainBlockPullFlags) error { cdisk := C.CString(disk) defer C.free(unsafe.Pointer(cdisk)) - ret := C.virDomainBlockPull(d.ptr, cdisk, C.ulong(bandwidth), C.uint(flags)) + var err C.virError + ret := C.virDomainBlockPullWrapper(d.ptr, cdisk, C.ulong(bandwidth), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -2092,9 +2160,10 @@ func (d *Domain) BlockRebase(disk string, base string, bandwidth uint64, flags D cbase := C.CString(base) defer C.free(unsafe.Pointer(cbase)) } - ret := C.virDomainBlockRebase(d.ptr, cdisk, cbase, C.ulong(bandwidth), C.uint(flags)) + var err C.virError + ret := C.virDomainBlockRebaseWrapper(d.ptr, cdisk, cbase, C.ulong(bandwidth), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -2103,9 +2172,10 @@ func (d *Domain) BlockRebase(disk string, base string, bandwidth uint64, flags D func (d *Domain) BlockResize(disk string, size uint64, flags DomainBlockResizeFlags) error { cdisk := C.CString(disk) defer C.free(unsafe.Pointer(cdisk)) - ret := C.virDomainBlockResize(d.ptr, cdisk, C.ulonglong(size), C.uint(flags)) + var err C.virError + ret := C.virDomainBlockResizeWrapper(d.ptr, cdisk, C.ulonglong(size), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -2115,10 +2185,11 @@ func (d *Domain) BlockPeek(disk string, offset uint64, size uint64, flags uint32 cdisk := C.CString(disk) defer C.free(unsafe.Pointer(cdisk)) data := make([]byte, size) - ret := C.virDomainBlockPeek(d.ptr, cdisk, C.ulonglong(offset), C.size_t(size), - unsafe.Pointer(&data[0]), C.uint(flags)) + var err C.virError + ret := C.virDomainBlockPeekWrapper(d.ptr, cdisk, C.ulonglong(offset), C.size_t(size), + unsafe.Pointer(&data[0]), C.uint(flags), &err) if ret == -1 { - return []byte{}, GetLastError() + return []byte{}, makeError(&err) } return data, nil @@ -2127,10 +2198,11 @@ func (d *Domain) BlockPeek(disk string, offset uint64, size uint64, flags uint32 // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainMemoryPeek func (d *Domain) MemoryPeek(start uint64, size uint64, flags DomainMemoryFlags) ([]byte, error) { data := make([]byte, size) - ret := C.virDomainMemoryPeek(d.ptr, C.ulonglong(start), C.size_t(size), - unsafe.Pointer(&data[0]), C.uint(flags)) + var err C.virError + ret := C.virDomainMemoryPeekWrapper(d.ptr, C.ulonglong(start), C.size_t(size), + unsafe.Pointer(&data[0]), C.uint(flags), &err) if ret == -1 { - return []byte{}, GetLastError() + return []byte{}, makeError(&err) } return data, nil @@ -2149,9 +2221,10 @@ func (d *Domain) Migrate(dconn *Connect, flags DomainMigrateFlags, dname string, defer C.free(unsafe.Pointer(curi)) } - ret := C.virDomainMigrate(d.ptr, dconn.ptr, C.ulong(flags), cdname, curi, C.ulong(bandwidth)) + var err C.virError + ret := C.virDomainMigrateWrapper(d.ptr, dconn.ptr, C.ulong(flags), cdname, curi, C.ulong(bandwidth), &err) if ret == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ @@ -2177,9 +2250,10 @@ func (d *Domain) Migrate2(dconn *Connect, dxml string, flags DomainMigrateFlags, defer C.free(unsafe.Pointer(curi)) } - ret := C.virDomainMigrate2(d.ptr, dconn.ptr, cdxml, C.ulong(flags), cdname, curi, C.ulong(bandwidth)) + var err C.virError + ret := C.virDomainMigrate2Wrapper(d.ptr, dconn.ptr, cdxml, C.ulong(flags), cdname, curi, C.ulong(bandwidth), &err) if ret == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ @@ -2295,17 +2369,18 @@ func getMigrateParameterFieldInfo(params *DomainMigrateParameters) map[string]ty func (d *Domain) Migrate3(dconn *Connect, params *DomainMigrateParameters, flags DomainMigrateFlags) (*Domain, error) { info := getMigrateParameterFieldInfo(params) - cparams, err := typedParamsPackNew(info) - if err != nil { - return nil, err + cparams, gerr := typedParamsPackNew(info) + if gerr != nil { + return nil, gerr } nparams := len(*cparams) defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&(*cparams)[0])), C.int(nparams)) - ret := C.virDomainMigrate3(d.ptr, dconn.ptr, (*C.virTypedParameter)(unsafe.Pointer(&(*cparams)[0])), C.uint(nparams), C.uint(flags)) + var err C.virError + ret := C.virDomainMigrate3Wrapper(d.ptr, dconn.ptr, (*C.virTypedParameter)(unsafe.Pointer(&(*cparams)[0])), C.uint(nparams), C.uint(flags), &err) if ret == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ @@ -2324,9 +2399,10 @@ func (d *Domain) MigrateToURI(duri string, flags DomainMigrateFlags, dname strin defer C.free(unsafe.Pointer(cdname)) } - ret := C.virDomainMigrateToURI(d.ptr, cduri, C.ulong(flags), cdname, C.ulong(bandwidth)) + var err C.virError + ret := C.virDomainMigrateToURIWrapper(d.ptr, cduri, C.ulong(flags), cdname, C.ulong(bandwidth), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -2355,9 +2431,10 @@ func (d *Domain) MigrateToURI2(dconnuri string, miguri string, dxml string, flag defer C.free(unsafe.Pointer(cdname)) } - ret := C.virDomainMigrateToURI2(d.ptr, cdconnuri, cmiguri, cdxml, C.ulong(flags), cdname, C.ulong(bandwidth)) + var err C.virError + ret := C.virDomainMigrateToURI2Wrapper(d.ptr, cdconnuri, cmiguri, cdxml, C.ulong(flags), cdname, C.ulong(bandwidth), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -2372,17 +2449,18 @@ func (d *Domain) MigrateToURI3(dconnuri string, params *DomainMigrateParameters, } info := getMigrateParameterFieldInfo(params) - cparams, err := typedParamsPackNew(info) - if err != nil { - return err + cparams, gerr := typedParamsPackNew(info) + if gerr != nil { + return gerr } nparams := len(*cparams) defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&(*cparams)[0])), C.int(nparams)) - ret := C.virDomainMigrateToURI3(d.ptr, cdconnuri, (*C.virTypedParameter)(unsafe.Pointer(&(*cparams)[0])), C.uint(nparams), C.uint(flags)) + var err C.virError + ret := C.virDomainMigrateToURI3Wrapper(d.ptr, cdconnuri, (*C.virTypedParameter)(unsafe.Pointer(&(*cparams)[0])), C.uint(nparams), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -2392,9 +2470,10 @@ func (d *Domain) MigrateToURI3(dconnuri string, params *DomainMigrateParameters, func (d *Domain) MigrateGetCompressionCache(flags uint32) (uint64, error) { var cacheSize C.ulonglong - ret := C.virDomainMigrateGetCompressionCache(d.ptr, &cacheSize, C.uint(flags)) + var err C.virError + ret := C.virDomainMigrateGetCompressionCacheWrapper(d.ptr, &cacheSize, C.uint(flags), &err) if ret == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return uint64(cacheSize), nil @@ -2402,9 +2481,10 @@ func (d *Domain) MigrateGetCompressionCache(flags uint32) (uint64, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainMigrateSetComp... func (d *Domain) MigrateSetCompressionCache(size uint64, flags uint32) error { - ret := C.virDomainMigrateSetCompressionCache(d.ptr, C.ulonglong(size), C.uint(flags)) + var err C.virError + ret := C.virDomainMigrateSetCompressionCacheWrapper(d.ptr, C.ulonglong(size), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -2414,9 +2494,10 @@ func (d *Domain) MigrateSetCompressionCache(size uint64, flags uint32) error { func (d *Domain) MigrateGetMaxSpeed(flags uint32) (uint64, error) { var maxSpeed C.ulong - ret := C.virDomainMigrateGetMaxSpeed(d.ptr, &maxSpeed, C.uint(flags)) + var err C.virError + ret := C.virDomainMigrateGetMaxSpeedWrapper(d.ptr, &maxSpeed, C.uint(flags), &err) if ret == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return uint64(maxSpeed), nil @@ -2424,9 +2505,10 @@ func (d *Domain) MigrateGetMaxSpeed(flags uint32) (uint64, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainMigrateSetMaxS... func (d *Domain) MigrateSetMaxSpeed(speed uint64, flags uint32) error { - ret := C.virDomainMigrateSetMaxSpeed(d.ptr, C.ulong(speed), C.uint(flags)) + var err C.virError + ret := C.virDomainMigrateSetMaxSpeedWrapper(d.ptr, C.ulong(speed), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -2434,9 +2516,10 @@ func (d *Domain) MigrateSetMaxSpeed(speed uint64, flags uint32) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainMigrateSetMaxD... func (d *Domain) MigrateSetMaxDowntime(downtime uint64, flags uint32) error { - ret := C.virDomainMigrateSetMaxDowntime(d.ptr, C.ulonglong(downtime), C.uint(flags)) + var err C.virError + ret := C.virDomainMigrateSetMaxDowntimeWrapper(d.ptr, C.ulonglong(downtime), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -2450,9 +2533,10 @@ func (d *Domain) MigrateGetMaxDowntime(flags uint32) (uint64, error) { return 0, GetNotImplementedError("virDomainMigrateGetMaxDowntime") } - ret := C.virDomainMigrateGetMaxDowntimeWrapper(d.ptr, &downtimeLen, C.uint(flags)) + var err C.virError + ret := C.virDomainMigrateGetMaxDowntimeWrapper(d.ptr, &downtimeLen, C.uint(flags), &err) if ret == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return uint64(downtimeLen), nil @@ -2464,9 +2548,10 @@ func (d *Domain) MigrateStartPostCopy(flags uint32) error { return GetNotImplementedError("virDomainMigrateStartPostCopy") } - ret := C.virDomainMigrateStartPostCopyWrapper(d.ptr, C.uint(flags)) + var err C.virError + ret := C.virDomainMigrateStartPostCopyWrapper(d.ptr, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -2522,22 +2607,23 @@ func (d *Domain) GetBlkioParameters(flags DomainModificationImpact) (*DomainBlki info := getBlkioParametersFieldInfo(params) var nparams C.int - ret := C.virDomainGetBlkioParameters(d.ptr, nil, &nparams, 0) + var err C.virError + ret := C.virDomainGetBlkioParametersWrapper(d.ptr, nil, &nparams, 0, &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virDomainGetBlkioParameters(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags)) + ret = C.virDomainGetBlkioParametersWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - _, err := typedParamsUnpack(cparams, info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpack(cparams, info) + if gerr != nil { + return nil, gerr } return params, nil @@ -2549,25 +2635,26 @@ func (d *Domain) SetBlkioParameters(params *DomainBlkioParameters, flags DomainM var nparams C.int - ret := C.virDomainGetBlkioParameters(d.ptr, nil, &nparams, 0) + var err C.virError + ret := C.virDomainGetBlkioParametersWrapper(d.ptr, nil, &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virDomainGetBlkioParameters(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0) + ret = C.virDomainGetBlkioParametersWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - err := typedParamsPack(cparams, info) - if err != nil { - return err + gerr := typedParamsPack(cparams, info) + if gerr != nil { + return gerr } - ret = C.virDomainSetBlkioParameters(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags)) + ret = C.virDomainSetBlkioParametersWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags), &err) return nil } @@ -2709,22 +2796,23 @@ func (d *Domain) GetBlockIoTune(disk string, flags DomainModificationImpact) (*D info := getBlockIoTuneParametersFieldInfo(params) var nparams C.int - ret := C.virDomainGetBlockIoTune(d.ptr, cdisk, nil, &nparams, 0) + var err C.virError + ret := C.virDomainGetBlockIoTuneWrapper(d.ptr, cdisk, nil, &nparams, 0, &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virDomainGetBlockIoTune(d.ptr, cdisk, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags)) + ret = C.virDomainGetBlockIoTuneWrapper(d.ptr, cdisk, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - _, err := typedParamsUnpack(cparams, info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpack(cparams, info) + if gerr != nil { + return nil, gerr } return params, nil @@ -2739,25 +2827,26 @@ func (d *Domain) SetBlockIoTune(disk string, params *DomainBlockIoTuneParameters var nparams C.int - ret := C.virDomainGetBlockIoTune(d.ptr, cdisk, nil, &nparams, 0) + var err C.virError + ret := C.virDomainGetBlockIoTuneWrapper(d.ptr, cdisk, nil, &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virDomainGetBlockIoTune(d.ptr, cdisk, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0) + ret = C.virDomainGetBlockIoTuneWrapper(d.ptr, cdisk, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - err := typedParamsPack(cparams, info) - if err != nil { - return err + gerr := typedParamsPack(cparams, info) + if gerr != nil { + return gerr } - ret = C.virDomainSetBlockIoTune(d.ptr, cdisk, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags)) + ret = C.virDomainSetBlockIoTuneWrapper(d.ptr, cdisk, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags), &err) return nil } @@ -2776,10 +2865,11 @@ func (d *Domain) GetBlockJobInfo(disk string, flags DomainBlockJobInfoFlags) (*D var cinfo C.virDomainBlockJobInfo - ret := C.virDomainGetBlockJobInfo(d.ptr, cdisk, &cinfo, C.uint(flags)) + var err C.virError + ret := C.virDomainGetBlockJobInfoWrapper(d.ptr, cdisk, &cinfo, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return &DomainBlockJobInfo{ @@ -2801,9 +2891,10 @@ func (d *Domain) GetControlInfo(flags uint32) (*DomainControlInfo, error) { var cinfo C.virDomainControlInfo - ret := C.virDomainGetControlInfo(d.ptr, &cinfo, C.uint(flags)) + var err C.virError + ret := C.virDomainGetControlInfoWrapper(d.ptr, &cinfo, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return &DomainControlInfo{ @@ -2820,17 +2911,18 @@ type DomainDiskError struct { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetDiskErrors func (d *Domain) GetDiskErrors(flags uint32) ([]DomainDiskError, error) { - ret := C.virDomainGetDiskErrors(d.ptr, nil, 0, 0) + var err C.virError + ret := C.virDomainGetDiskErrorsWrapper(d.ptr, nil, 0, 0, &err) if ret == -1 { - return []DomainDiskError{}, GetLastError() + return []DomainDiskError{}, makeError(&err) } maxerrors := ret cerrors := make([]C.virDomainDiskError, maxerrors) - ret = C.virDomainGetDiskErrors(d.ptr, (*C.virDomainDiskError)(unsafe.Pointer(&cerrors[0])), C.uint(maxerrors), C.uint(flags)) + ret = C.virDomainGetDiskErrorsWrapper(d.ptr, (*C.virDomainDiskError)(unsafe.Pointer(&cerrors[0])), C.uint(maxerrors), C.uint(flags), &err) if ret == -1 { - return []DomainDiskError{}, GetLastError() + return []DomainDiskError{}, makeError(&err) } errors := make([]DomainDiskError, maxerrors) @@ -2848,9 +2940,10 @@ func (d *Domain) GetDiskErrors(flags uint32) ([]DomainDiskError, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetHostname func (d *Domain) GetHostname(flags uint32) (string, error) { - ret := C.virDomainGetHostname(d.ptr, C.uint(flags)) + var err C.virError + ret := C.virDomainGetHostnameWrapper(d.ptr, C.uint(flags), &err) if ret == nil { - return "", GetLastError() + return "", makeError(&err) } defer C.free(unsafe.Pointer(ret)) @@ -2926,9 +3019,10 @@ type DomainJobInfo struct { func (d *Domain) GetJobInfo() (*DomainJobInfo, error) { var cinfo C.virDomainJobInfo - ret := C.virDomainGetJobInfo(d.ptr, &cinfo) + var err C.virError + ret := C.virDomainGetJobInfoWrapper(d.ptr, &cinfo, &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return &DomainJobInfo{ @@ -3088,18 +3182,19 @@ func (d *Domain) GetJobStats(flags DomainGetJobStatsFlags) (*DomainJobInfo, erro var cparams *C.virTypedParameter var nparams C.int var jobtype C.int - ret := C.virDomainGetJobStats(d.ptr, &jobtype, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) + var err C.virError + ret := C.virDomainGetJobStatsWrapper(d.ptr, &jobtype, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsFree(cparams, nparams) params := DomainJobInfo{} info := getDomainJobInfoFieldInfo(¶ms) - _, err := typedParamsUnpackLen(cparams, int(nparams), info) - if err != nil { - return nil, GetLastError() + _, gerr := typedParamsUnpackLen(cparams, int(nparams), info) + if gerr != nil { + return nil, gerr } return ¶ms, nil @@ -3107,9 +3202,10 @@ func (d *Domain) GetJobStats(flags DomainGetJobStatsFlags) (*DomainJobInfo, erro // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetMaxMemory func (d *Domain) GetMaxMemory() (uint64, error) { - ret := C.virDomainGetMaxMemory(d.ptr) + var err C.virError + ret := C.virDomainGetMaxMemoryWrapper(d.ptr, &err) if ret == 0 { - return 0, GetLastError() + return 0, makeError(&err) } return uint64(ret), nil @@ -3117,9 +3213,10 @@ func (d *Domain) GetMaxMemory() (uint64, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetMaxVcpus func (d *Domain) GetMaxVcpus() (uint, error) { - ret := C.virDomainGetMaxVcpus(d.ptr) + var err C.virError + ret := C.virDomainGetMaxVcpusWrapper(d.ptr, &err) if ret == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return uint(ret), nil @@ -3127,9 +3224,10 @@ func (d *Domain) GetMaxVcpus() (uint, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetOSType func (d *Domain) GetOSType() (string, error) { - ret := C.virDomainGetOSType(d.ptr) + var err C.virError + ret := C.virDomainGetOSTypeWrapper(d.ptr, &err) if ret == nil { - return "", GetLastError() + return "", makeError(&err) } defer C.free(unsafe.Pointer(ret)) @@ -3175,22 +3273,23 @@ func (d *Domain) GetMemoryParameters(flags DomainModificationImpact) (*DomainMem info := getDomainMemoryParametersFieldInfo(params) var nparams C.int - ret := C.virDomainGetMemoryParameters(d.ptr, nil, &nparams, 0) + var err C.virError + ret := C.virDomainGetMemoryParametersWrapper(d.ptr, nil, &nparams, 0, &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virDomainGetMemoryParameters(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags)) + ret = C.virDomainGetMemoryParametersWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - _, err := typedParamsUnpack(cparams, info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpack(cparams, info) + if gerr != nil { + return nil, gerr } return params, nil @@ -3202,25 +3301,26 @@ func (d *Domain) SetMemoryParameters(params *DomainMemoryParameters, flags Domai var nparams C.int - ret := C.virDomainGetMemoryParameters(d.ptr, nil, &nparams, 0) + var err C.virError + ret := C.virDomainGetMemoryParametersWrapper(d.ptr, nil, &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virDomainGetMemoryParameters(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0) + ret = C.virDomainGetMemoryParametersWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - err := typedParamsPack(cparams, info) - if err != nil { - return err + gerr := typedParamsPack(cparams, info) + if gerr != nil { + return gerr } - ret = C.virDomainSetMemoryParameters(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags)) + ret = C.virDomainSetMemoryParametersWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags), &err) return nil } @@ -3251,22 +3351,23 @@ func (d *Domain) GetNumaParameters(flags DomainModificationImpact) (*DomainNumaP info := getDomainNumaParametersFieldInfo(params) var nparams C.int - ret := C.virDomainGetNumaParameters(d.ptr, nil, &nparams, 0) + var err C.virError + ret := C.virDomainGetNumaParametersWrapper(d.ptr, nil, &nparams, 0, &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virDomainGetNumaParameters(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags)) + ret = C.virDomainGetNumaParametersWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - _, err := typedParamsUnpack(cparams, info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpack(cparams, info) + if gerr != nil { + return nil, gerr } return params, nil @@ -3278,25 +3379,26 @@ func (d *Domain) SetNumaParameters(params *DomainNumaParameters, flags DomainMod var nparams C.int - ret := C.virDomainGetNumaParameters(d.ptr, nil, &nparams, 0) + var err C.virError + ret := C.virDomainGetNumaParametersWrapper(d.ptr, nil, &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } cparams := make([]C.virTypedParameter, nparams) - ret = C.virDomainGetNumaParameters(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0) + ret = C.virDomainGetNumaParametersWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - err := typedParamsPack(cparams, info) - if err != nil { - return err + gerr := typedParamsPack(cparams, info) + if gerr != nil { + return gerr } - ret = C.virDomainSetNumaParameters(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags)) + ret = C.virDomainSetNumaParametersWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags), &err) return nil } @@ -3454,16 +3556,17 @@ func (d *Domain) GetPerfEvents(flags DomainModificationImpact) (*DomainPerfEvent var cparams *C.virTypedParameter var nparams C.int - ret := C.virDomainGetPerfEventsWrapper(d.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) + var err C.virError + ret := C.virDomainGetPerfEventsWrapper(d.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsFree(cparams, nparams) - _, err := typedParamsUnpackLen(cparams, int(nparams), info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpackLen(cparams, int(nparams), info) + if gerr != nil { + return nil, gerr } return params, nil @@ -3479,19 +3582,20 @@ func (d *Domain) SetPerfEvents(params *DomainPerfEvents, flags DomainModificatio var cparams *C.virTypedParameter var nparams C.int - ret := C.virDomainGetPerfEventsWrapper(d.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) + var err C.virError + ret := C.virDomainGetPerfEventsWrapper(d.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } defer C.virTypedParamsFree(cparams, nparams) - err := typedParamsPackLen(cparams, int(nparams), info) - if err != nil { - return err + gerr := typedParamsPackLen(cparams, int(nparams), info) + if gerr != nil { + return gerr } - ret = C.virDomainSetPerfEventsWrapper(d.ptr, cparams, nparams, C.uint(flags)) + ret = C.virDomainSetPerfEventsWrapper(d.ptr, cparams, nparams, C.uint(flags), &err) return nil } @@ -3595,9 +3699,10 @@ func (d *Domain) GetSchedulerParameters() (*DomainSchedulerParameters, error) { info := getDomainSchedulerParametersFieldInfo(params) var nparams C.int - schedtype := C.virDomainGetSchedulerType(d.ptr, &nparams) + var err C.virError + schedtype := C.virDomainGetSchedulerTypeWrapper(d.ptr, &nparams, &err) if schedtype == nil { - return nil, GetLastError() + return nil, makeError(&err) } defer C.free(unsafe.Pointer(schedtype)) @@ -3608,15 +3713,15 @@ func (d *Domain) GetSchedulerParameters() (*DomainSchedulerParameters, error) { } cparams := make([]C.virTypedParameter, nparams) - ret := C.virDomainGetSchedulerParameters(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams) + ret := C.virDomainGetSchedulerParametersWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - _, err := typedParamsUnpack(cparams, info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpack(cparams, info) + if gerr != nil { + return nil, gerr } return params, nil @@ -3628,9 +3733,10 @@ func (d *Domain) GetSchedulerParametersFlags(flags DomainModificationImpact) (*D info := getDomainSchedulerParametersFieldInfo(params) var nparams C.int - schedtype := C.virDomainGetSchedulerType(d.ptr, &nparams) + var err C.virError + schedtype := C.virDomainGetSchedulerTypeWrapper(d.ptr, &nparams, &err) if schedtype == nil { - return nil, GetLastError() + return nil, makeError(&err) } defer C.free(unsafe.Pointer(schedtype)) @@ -3641,15 +3747,15 @@ func (d *Domain) GetSchedulerParametersFlags(flags DomainModificationImpact) (*D } cparams := make([]C.virTypedParameter, nparams) - ret := C.virDomainGetSchedulerParametersFlags(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags)) + ret := C.virDomainGetSchedulerParametersFlagsWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - _, err := typedParamsUnpack(cparams, info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpack(cparams, info) + if gerr != nil { + return nil, gerr } return params, nil @@ -3660,9 +3766,10 @@ func (d *Domain) SetSchedulerParameters(params *DomainSchedulerParameters) error info := getDomainSchedulerParametersFieldInfo(params) var nparams C.int - schedtype := C.virDomainGetSchedulerType(d.ptr, &nparams) + var err C.virError + schedtype := C.virDomainGetSchedulerTypeWrapper(d.ptr, &nparams, &err) if schedtype == nil { - return GetLastError() + return makeError(&err) } defer C.free(unsafe.Pointer(schedtype)) @@ -3671,18 +3778,18 @@ func (d *Domain) SetSchedulerParameters(params *DomainSchedulerParameters) error } cparams := make([]C.virTypedParameter, nparams) - ret := C.virDomainGetSchedulerParameters(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams) + ret := C.virDomainGetSchedulerParametersWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - err := typedParamsPack(cparams, info) - if err != nil { - return err + gerr := typedParamsPack(cparams, info) + if gerr != nil { + return gerr } - ret = C.virDomainSetSchedulerParameters(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) + ret = C.virDomainSetSchedulerParametersWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, &err) return nil } @@ -3692,9 +3799,10 @@ func (d *Domain) SetSchedulerParametersFlags(params *DomainSchedulerParameters, info := getDomainSchedulerParametersFieldInfo(params) var nparams C.int - schedtype := C.virDomainGetSchedulerType(d.ptr, &nparams) + var err C.virError + schedtype := C.virDomainGetSchedulerTypeWrapper(d.ptr, &nparams, &err) if schedtype == nil { - return GetLastError() + return makeError(&err) } defer C.free(unsafe.Pointer(schedtype)) @@ -3703,18 +3811,18 @@ func (d *Domain) SetSchedulerParametersFlags(params *DomainSchedulerParameters, } cparams := make([]C.virTypedParameter, nparams) - ret := C.virDomainGetSchedulerParametersFlags(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0) + ret := C.virDomainGetSchedulerParametersFlagsWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), &nparams, 0, &err) if ret == -1 { - return GetLastError() + return makeError(&err) } defer C.virTypedParamsClear((*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams) - err := typedParamsPack(cparams, info) - if err != nil { - return err + gerr := typedParamsPack(cparams, info) + if gerr != nil { + return gerr } - ret = C.virDomainSetSchedulerParametersFlags(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags)) + ret = C.virDomainSetSchedulerParametersFlagsWrapper(d.ptr, (*C.virTypedParameter)(unsafe.Pointer(&cparams[0])), nparams, C.uint(flags), &err) return nil } @@ -3728,9 +3836,10 @@ type SecurityLabel struct { func (d *Domain) GetSecurityLabel() (*SecurityLabel, error) { var clabel C.virSecurityLabel - ret := C.virDomainGetSecurityLabel(d.ptr, &clabel) + var err C.virError + ret := C.virDomainGetSecurityLabelWrapper(d.ptr, &clabel, &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return &SecurityLabel{ @@ -3743,9 +3852,10 @@ func (d *Domain) GetSecurityLabel() (*SecurityLabel, error) { func (d *Domain) GetSecurityLabelList() ([]SecurityLabel, error) { var clabels *C.virSecurityLabel - ret := C.virDomainGetSecurityLabelList(d.ptr, (*C.virSecurityLabelPtr)(unsafe.Pointer(&clabels))) + var err C.virError + ret := C.virDomainGetSecurityLabelListWrapper(d.ptr, (*C.virSecurityLabelPtr)(unsafe.Pointer(&clabels)), &err) if ret == -1 { - return []SecurityLabel{}, GetLastError() + return []SecurityLabel{}, makeError(&err) } labels := make([]SecurityLabel, ret) @@ -3768,9 +3878,10 @@ func (d *Domain) GetTime(flags uint32) (int64, uint, error) { } var secs C.longlong var nsecs C.uint - ret := C.virDomainGetTimeWrapper(d.ptr, &secs, &nsecs, C.uint(flags)) + var err C.virError + ret := C.virDomainGetTimeWrapper(d.ptr, &secs, &nsecs, C.uint(flags), &err) if ret == -1 { - return 0, 0, GetLastError() + return 0, 0, makeError(&err) } return int64(secs), uint(nsecs), nil @@ -3782,9 +3893,10 @@ func (d *Domain) SetTime(secs int64, nsecs uint, flags DomainSetTimeFlags) error return GetNotImplementedError("virDomainSetTime") } - ret := C.virDomainSetTimeWrapper(d.ptr, C.longlong(secs), C.uint(nsecs), C.uint(flags)) + var err C.virError + ret := C.virDomainSetTimeWrapper(d.ptr, C.longlong(secs), C.uint(nsecs), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3801,9 +3913,10 @@ func (d *Domain) SetUserPassword(user string, password string, flags DomainSetUs defer C.free(unsafe.Pointer(cuser)) defer C.free(unsafe.Pointer(cpassword)) - ret := C.virDomainSetUserPasswordWrapper(d.ptr, cuser, cpassword, C.uint(flags)) + var err C.virError + ret := C.virDomainSetUserPasswordWrapper(d.ptr, cuser, cpassword, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3811,9 +3924,10 @@ func (d *Domain) SetUserPassword(user string, password string, flags DomainSetUs // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainManagedSave func (d *Domain) ManagedSave(flags DomainSaveRestoreFlags) error { - ret := C.virDomainManagedSave(d.ptr, C.uint(flags)) + var err C.virError + ret := C.virDomainManagedSaveWrapper(d.ptr, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3821,9 +3935,10 @@ func (d *Domain) ManagedSave(flags DomainSaveRestoreFlags) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainHasManagedSave... func (d *Domain) HasManagedSaveImage(flags uint32) (bool, error) { - result := C.virDomainHasManagedSaveImage(d.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainHasManagedSaveImageWrapper(d.ptr, C.uint(flags), &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -3833,9 +3948,10 @@ func (d *Domain) HasManagedSaveImage(flags uint32) (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainManagedSaveRem... func (d *Domain) ManagedSaveRemove(flags uint32) error { - ret := C.virDomainManagedSaveRemove(d.ptr, C.uint(flags)) + var err C.virError + ret := C.virDomainManagedSaveRemoveWrapper(d.ptr, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3848,9 +3964,10 @@ func (d *Domain) Rename(name string, flags uint32) error { } cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) - ret := C.virDomainRenameWrapper(d.ptr, cname, C.uint(flags)) + var err C.virError + ret := C.virDomainRenameWrapper(d.ptr, cname, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3858,9 +3975,10 @@ func (d *Domain) Rename(name string, flags uint32) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainReset func (d *Domain) Reset(flags uint32) error { - ret := C.virDomainReset(d.ptr, C.uint(flags)) + var err C.virError + ret := C.virDomainResetWrapper(d.ptr, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3868,9 +3986,10 @@ func (d *Domain) Reset(flags uint32) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSendProcessSig... func (d *Domain) SendProcessSignal(pid int64, signum DomainProcessSignal, flags uint32) error { - ret := C.virDomainSendProcessSignal(d.ptr, C.longlong(pid), C.uint(signum), C.uint(flags)) + var err C.virError + ret := C.virDomainSendProcessSignalWrapper(d.ptr, C.longlong(pid), C.uint(signum), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3878,9 +3997,10 @@ func (d *Domain) SendProcessSignal(pid int64, signum DomainProcessSignal, flags // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainInjectNMI func (d *Domain) InjectNMI(flags uint32) error { - ret := C.virDomainInjectNMI(d.ptr, C.uint(flags)) + var err C.virError + ret := C.virDomainInjectNMIWrapper(d.ptr, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3891,9 +4011,10 @@ func (d *Domain) CoreDump(to string, flags DomainCoreDumpFlags) error { cto := C.CString(to) defer C.free(unsafe.Pointer(cto)) - ret := C.virDomainCoreDump(d.ptr, cto, C.uint(flags)) + var err C.virError + ret := C.virDomainCoreDumpWrapper(d.ptr, cto, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3907,9 +4028,10 @@ func (d *Domain) CoreDumpWithFormat(to string, format DomainCoreDumpFormat, flag cto := C.CString(to) defer C.free(unsafe.Pointer(cto)) - ret := C.virDomainCoreDumpWithFormatWrapper(d.ptr, cto, C.uint(format), C.uint(flags)) + var err C.virError + ret := C.virDomainCoreDumpWithFormatWrapper(d.ptr, cto, C.uint(format), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3917,9 +4039,10 @@ func (d *Domain) CoreDumpWithFormat(to string, format DomainCoreDumpFormat, flag // See also https://libvirt.org/html/libvirt-libvirt-domain-snapshot.html#virDomainHasCu... func (d *Domain) HasCurrentSnapshot(flags uint32) (bool, error) { - result := C.virDomainHasCurrentSnapshot(d.ptr, C.uint(flags)) + var err C.virError + result := C.virDomainHasCurrentSnapshotWrapper(d.ptr, C.uint(flags), &err) if result == -1 { - return false, GetLastError() + return false, makeError(&err) } if result == 1 { return true, nil @@ -3940,9 +4063,10 @@ func (d *Domain) FSFreeze(mounts []string, flags uint32) error { } nmounts := len(mounts) - ret := C.virDomainFSFreezeWrapper(d.ptr, (**C.char)(unsafe.Pointer(&cmounts[0])), C.uint(nmounts), C.uint(flags)) + var err C.virError + ret := C.virDomainFSFreezeWrapper(d.ptr, (**C.char)(unsafe.Pointer(&cmounts[0])), C.uint(nmounts), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3961,9 +4085,10 @@ func (d *Domain) FSThaw(mounts []string, flags uint32) error { } nmounts := len(mounts) - ret := C.virDomainFSThawWrapper(d.ptr, (**C.char)(unsafe.Pointer(&cmounts[0])), C.uint(nmounts), C.uint(flags)) + var err C.virError + ret := C.virDomainFSThawWrapper(d.ptr, (**C.char)(unsafe.Pointer(&cmounts[0])), C.uint(nmounts), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3977,9 +4102,10 @@ func (d *Domain) FSTrim(mount string, minimum uint64, flags uint32) error { defer C.free(unsafe.Pointer(cmount)) } - ret := C.virDomainFSTrim(d.ptr, cmount, C.ulonglong(minimum), C.uint(flags)) + var err C.virError + ret := C.virDomainFSTrimWrapper(d.ptr, cmount, C.ulonglong(minimum), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -3999,9 +4125,10 @@ func (d *Domain) GetFSInfo(flags uint32) ([]DomainFSInfo, error) { } var cfsinfolist **C.virDomainFSInfo - ret := C.virDomainGetFSInfoWrapper(d.ptr, (**C.virDomainFSInfoPtr)(unsafe.Pointer(&cfsinfolist)), C.uint(flags)) + var err C.virError + ret := C.virDomainGetFSInfoWrapper(d.ptr, (**C.virDomainFSInfoPtr)(unsafe.Pointer(&cfsinfolist)), C.uint(flags), &err) if ret == -1 { - return []DomainFSInfo{}, GetLastError() + return []DomainFSInfo{}, makeError(&err) } fsinfo := make([]DomainFSInfo, int(ret)) @@ -4030,9 +4157,10 @@ func (d *Domain) GetFSInfo(flags uint32) ([]DomainFSInfo, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainPMSuspendForDu... func (d *Domain) PMSuspendForDuration(target NodeSuspendTarget, duration uint64, flags uint32) error { - ret := C.virDomainPMSuspendForDuration(d.ptr, C.uint(target), C.ulonglong(duration), C.uint(flags)) + var err C.virError + ret := C.virDomainPMSuspendForDurationWrapper(d.ptr, C.uint(target), C.ulonglong(duration), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4040,9 +4168,10 @@ func (d *Domain) PMSuspendForDuration(target NodeSuspendTarget, duration uint64, // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainPMWakeup func (d *Domain) PMWakeup(flags uint32) error { - ret := C.virDomainPMWakeup(d.ptr, C.uint(flags)) + var err C.virError + ret := C.virDomainPMWakeupWrapper(d.ptr, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4053,9 +4182,10 @@ func (d *Domain) AddIOThread(id uint, flags DomainModificationImpact) error { if C.LIBVIR_VERSION_NUMBER < 1002015 { return GetNotImplementedError("virDomainAddIOThread") } - ret := C.virDomainAddIOThreadWrapper(d.ptr, C.uint(id), C.uint(flags)) + var err C.virError + ret := C.virDomainAddIOThreadWrapper(d.ptr, C.uint(id), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4066,9 +4196,10 @@ func (d *Domain) DelIOThread(id uint, flags DomainModificationImpact) error { if C.LIBVIR_VERSION_NUMBER < 1002015 { return GetNotImplementedError("virDomainDelIOThread") } - ret := C.virDomainDelIOThreadWrapper(d.ptr, C.uint(id), C.uint(flags)) + var err C.virError + ret := C.virDomainDelIOThreadWrapper(d.ptr, C.uint(id), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4077,17 +4208,18 @@ func (d *Domain) DelIOThread(id uint, flags DomainModificationImpact) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetEmulatorPin... func (d *Domain) GetEmulatorPinInfo(flags DomainModificationImpact) ([]bool, error) { var cnodeinfo C.virNodeInfo - ret := C.virNodeGetInfo(C.virDomainGetConnect(d.ptr), &cnodeinfo) + var err C.virError + ret := C.virNodeGetInfoWrapper(C.virDomainGetConnect(d.ptr), &cnodeinfo, &err) if ret == -1 { - return []bool{}, GetLastError() + return []bool{}, makeError(&err) } ncpus := cnodeinfo.nodes * cnodeinfo.sockets * cnodeinfo.cores * cnodeinfo.threads maplen := int((ncpus + 7) / 8) ccpumaps := make([]C.uchar, maplen) - ret = C.virDomainGetEmulatorPinInfo(d.ptr, &ccpumaps[0], C.int(maplen), C.uint(flags)) + ret = C.virDomainGetEmulatorPinInfoWrapper(d.ptr, &ccpumaps[0], C.int(maplen), C.uint(flags), &err) if ret == -1 { - return []bool{}, GetLastError() + return []bool{}, makeError(&err) } cpumaps := make([]bool, ncpus) @@ -4112,9 +4244,10 @@ func (d *Domain) GetIOThreadInfo(flags DomainModificationImpact) ([]DomainIOThre } var cinfolist **C.virDomainIOThreadInfo - ret := C.virDomainGetIOThreadInfoWrapper(d.ptr, (**C.virDomainIOThreadInfoPtr)(unsafe.Pointer(&cinfolist)), C.uint(flags)) + var err C.virError + ret := C.virDomainGetIOThreadInfoWrapper(d.ptr, (**C.virDomainIOThreadInfoPtr)(unsafe.Pointer(&cinfolist)), C.uint(flags), &err) if ret == -1 { - return []DomainIOThreadInfo{}, GetLastError() + return []DomainIOThreadInfo{}, makeError(&err) } info := make([]DomainIOThreadInfo, int(ret)) @@ -4147,15 +4280,16 @@ func (d *Domain) GetIOThreadInfo(flags DomainModificationImpact) ([]DomainIOThre // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpuPinInfo func (d *Domain) GetVcpuPinInfo(flags DomainModificationImpact) ([][]bool, error) { var cnodeinfo C.virNodeInfo - ret := C.virNodeGetInfo(C.virDomainGetConnect(d.ptr), &cnodeinfo) + var err C.virError + ret := C.virNodeGetInfoWrapper(C.virDomainGetConnect(d.ptr), &cnodeinfo, &err) if ret == -1 { - return [][]bool{}, GetLastError() + return [][]bool{}, makeError(&err) } var cdominfo C.virDomainInfo - ret = C.virDomainGetInfo(d.ptr, &cdominfo) + ret = C.virDomainGetInfoWrapper(d.ptr, &cdominfo, &err) if ret == -1 { - return [][]bool{}, GetLastError() + return [][]bool{}, makeError(&err) } nvcpus := int(cdominfo.nrVirtCpu) @@ -4163,9 +4297,9 @@ func (d *Domain) GetVcpuPinInfo(flags DomainModificationImpact) ([][]bool, error maplen := ((npcpus + 7) / 8) ccpumaps := make([]C.uchar, maplen*nvcpus) - ret = C.virDomainGetVcpuPinInfo(d.ptr, C.int(nvcpus), &ccpumaps[0], C.int(maplen), C.uint(flags)) + ret = C.virDomainGetVcpuPinInfoWrapper(d.ptr, C.int(nvcpus), &ccpumaps[0], C.int(maplen), C.uint(flags), &err) if ret == -1 { - return [][]bool{}, GetLastError() + return [][]bool{}, makeError(&err) } cpumaps := make([][]bool, nvcpus) @@ -4198,9 +4332,10 @@ func (d *Domain) PinEmulator(cpumap []bool, flags DomainModificationImpact) erro } } - ret := C.virDomainPinEmulator(d.ptr, &ccpumaps[0], C.int(maplen), C.uint(flags)) + var err C.virError + ret := C.virDomainPinEmulatorWrapper(d.ptr, &ccpumaps[0], C.int(maplen), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4223,9 +4358,10 @@ func (d *Domain) PinIOThread(iothreadid uint, cpumap []bool, flags DomainModific } } - ret := C.virDomainPinIOThreadWrapper(d.ptr, C.uint(iothreadid), &ccpumaps[0], C.int(maplen), C.uint(flags)) + var err C.virError + ret := C.virDomainPinIOThreadWrapper(d.ptr, C.uint(iothreadid), &ccpumaps[0], C.int(maplen), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4236,9 +4372,10 @@ func (d *Domain) OpenChannel(name string, stream *Stream, flags DomainChannelFla cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) - ret := C.virDomainOpenChannel(d.ptr, cname, stream.ptr, C.uint(flags)) + var err C.virError + ret := C.virDomainOpenChannelWrapper(d.ptr, cname, stream.ptr, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4252,9 +4389,10 @@ func (d *Domain) OpenConsole(devname string, stream *Stream, flags DomainConsole defer C.free(unsafe.Pointer(cdevname)) } - ret := C.virDomainOpenConsole(d.ptr, cdevname, stream.ptr, C.uint(flags)) + var err C.virError + ret := C.virDomainOpenConsoleWrapper(d.ptr, cdevname, stream.ptr, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4262,9 +4400,10 @@ func (d *Domain) OpenConsole(devname string, stream *Stream, flags DomainConsole // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainOpenGraphics func (d *Domain) OpenGraphics(idx uint, file os.File, flags DomainOpenGraphicsFlags) error { - ret := C.virDomainOpenGraphics(d.ptr, C.uint(idx), C.int(file.Fd()), C.uint(flags)) + var err C.virError + ret := C.virDomainOpenGraphicsWrapper(d.ptr, C.uint(idx), C.int(file.Fd()), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4275,9 +4414,10 @@ func (d *Domain) OpenGraphicsFD(idx uint, flags DomainOpenGraphicsFlags) (*os.Fi if C.LIBVIR_VERSION_NUMBER < 1002008 { return nil, GetNotImplementedError("virDomainOpenGraphicsFD") } - ret := C.virDomainOpenGraphicsFDWrapper(d.ptr, C.uint(idx), C.uint(flags)) + var err C.virError + ret := C.virDomainOpenGraphicsFDWrapper(d.ptr, C.uint(idx), C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } return os.NewFile(uintptr(ret), "graphics"), nil @@ -4287,9 +4427,10 @@ func (d *Domain) OpenGraphicsFD(idx uint, flags DomainOpenGraphicsFlags) (*os.Fi func (d *Domain) CreateSnapshotXML(xml string, flags DomainSnapshotCreateFlags) (*DomainSnapshot, error) { cXml := C.CString(xml) defer C.free(unsafe.Pointer(cXml)) - result := C.virDomainSnapshotCreateXML(d.ptr, cXml, C.uint(flags)) + var err C.virError + result := C.virDomainSnapshotCreateXMLWrapper(d.ptr, cXml, C.uint(flags), &err) if result == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &DomainSnapshot{ptr: result}, nil } @@ -4298,9 +4439,10 @@ func (d *Domain) CreateSnapshotXML(xml string, flags DomainSnapshotCreateFlags) func (d *Domain) Save(destFile string) error { cPath := C.CString(destFile) defer C.free(unsafe.Pointer(cPath)) - result := C.virDomainSave(d.ptr, cPath) + var err C.virError + result := C.virDomainSaveWrapper(d.ptr, cPath, &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -4311,9 +4453,10 @@ func (d *Domain) SaveFlags(destFile string, destXml string, flags DomainSaveRest cDestXml := C.CString(destXml) defer C.free(unsafe.Pointer(cDestXml)) defer C.free(unsafe.Pointer(cDestFile)) - result := C.virDomainSaveFlags(d.ptr, cDestFile, cDestXml, C.uint(flags)) + var err C.virError + result := C.virDomainSaveFlagsWrapper(d.ptr, cDestFile, cDestXml, C.uint(flags), &err) if result == -1 { - return GetLastError() + return makeError(&err) } return nil } @@ -4410,16 +4553,17 @@ func (d *Domain) GetGuestVcpus(flags uint32) (*DomainGuestVcpus, error) { var cparams C.virTypedParameterPtr var nparams C.uint - ret := C.virDomainGetGuestVcpusWrapper(d.ptr, &cparams, &nparams, C.uint(flags)) + var err C.virError + ret := C.virDomainGetGuestVcpusWrapper(d.ptr, &cparams, &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsFree(cparams, C.int(nparams)) - _, err := typedParamsUnpackLen(cparams, int(nparams), info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpackLen(cparams, int(nparams), info) + if gerr != nil { + return nil, gerr } return &DomainGuestVcpus{}, nil @@ -4450,9 +4594,10 @@ func (d *Domain) SetGuestVcpus(cpus []bool, state bool, flags uint32) error { } ccpumap := C.CString(cpumap) defer C.free(unsafe.Pointer(ccpumap)) - ret := C.virDomainSetGuestVcpusWrapper(d.ptr, ccpumap, cstate, C.uint(flags)) + var err C.virError + ret := C.virDomainSetGuestVcpusWrapper(d.ptr, ccpumap, cstate, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4483,9 +4628,10 @@ func (d *Domain) SetVcpu(cpus []bool, state bool, flags uint32) error { } ccpumap := C.CString(cpumap) defer C.free(unsafe.Pointer(ccpumap)) - ret := C.virDomainSetVcpuWrapper(d.ptr, ccpumap, cstate, C.uint(flags)) + var err C.virError + ret := C.virDomainSetVcpuWrapper(d.ptr, ccpumap, cstate, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4499,9 +4645,10 @@ func (d *Domain) SetBlockThreshold(dev string, threshold uint64, flags uint32) e cdev := C.CString(dev) defer C.free(unsafe.Pointer(cdev)) - ret := C.virDomainSetBlockThresholdWrapper(d.ptr, cdev, C.ulonglong(threshold), C.uint(flags)) + var err C.virError + ret := C.virDomainSetBlockThresholdWrapper(d.ptr, cdev, C.ulonglong(threshold), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4515,9 +4662,10 @@ func (d *Domain) ManagedSaveDefineXML(xml string, flags uint32) error { cxml := C.CString(xml) defer C.free(unsafe.Pointer(cxml)) - ret := C.virDomainManagedSaveDefineXMLWrapper(d.ptr, cxml, C.uint(flags)) + var err C.virError + ret := C.virDomainManagedSaveDefineXMLWrapper(d.ptr, cxml, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4529,9 +4677,10 @@ func (d *Domain) ManagedSaveGetXMLDesc(flags uint32) (string, error) { return "", GetNotImplementedError("virDomainManagedSaveGetXMLDesc") } - ret := C.virDomainManagedSaveGetXMLDescWrapper(d.ptr, C.uint(flags)) + var err C.virError + ret := C.virDomainManagedSaveGetXMLDescWrapper(d.ptr, C.uint(flags), &err) if ret == nil { - return "", GetLastError() + return "", makeError(&err) } xml := C.GoString(ret) @@ -4564,9 +4713,10 @@ func (d *Domain) SetLifecycleAction(lifecycleType uint32, action uint32, flags u return GetNotImplementedError("virDomainSetLifecycleAction") } - ret := C.virDomainSetLifecycleActionWrapper(d.ptr, C.uint(lifecycleType), C.uint(action), C.uint(flags)) + var err C.virError + ret := C.virDomainSetLifecycleActionWrapper(d.ptr, C.uint(lifecycleType), C.uint(action), C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil @@ -4598,16 +4748,17 @@ func (d *Domain) GetLaunchSecurityInfo(flags uint32) (*DomainLaunchSecurityParam var cparams *C.virTypedParameter var nparams C.int - ret := C.virDomainGetLaunchSecurityInfoWrapper(d.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags)) + var err C.virError + ret := C.virDomainGetLaunchSecurityInfoWrapper(d.ptr, (*C.virTypedParameterPtr)(unsafe.Pointer(&cparams)), &nparams, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } defer C.virTypedParamsFree(cparams, nparams) - _, err := typedParamsUnpackLen(cparams, int(nparams), info) - if err != nil { - return nil, err + _, gerr := typedParamsUnpackLen(cparams, int(nparams), info) + if gerr != nil { + return nil, gerr } return params, nil diff --git a/domain_wrapper.go b/domain_wrapper.go index 1596ae5..b42dd42 100644 --- a/domain_wrapper.go +++ b/domain_wrapper.go @@ -31,353 +31,2300 @@ package libvirt #include <assert.h> #include "domain_wrapper.h" -int virDomainCoreDumpWithFormatWrapper(virDomainPtr domain, - const char *to, - unsigned int dumpformat, - unsigned int flags) +int +virDomainAbortJobWrapper(virDomainPtr domain, + virErrorPtr err) +{ + int ret = virDomainAbortJob(domain); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainAddIOThreadWrapper(virDomainPtr domain, + unsigned int iothread_id, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002015 + assert(0); // Caller should have checked version +#else + int ret = virDomainAddIOThread(domain, iothread_id, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +int +virDomainAttachDeviceWrapper(virDomainPtr domain, + const char *xml, + virErrorPtr err) +{ + int ret = virDomainAttachDevice(domain, xml); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainAttachDeviceFlagsWrapper(virDomainPtr domain, + const char *xml, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainAttachDeviceFlags(domain, xml, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainBlockCommitWrapper(virDomainPtr dom, + const char *disk, + const char *base, + const char *top, + unsigned long bandwidth, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainBlockCommit(dom, disk, base, top, bandwidth, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainBlockCopyWrapper(virDomainPtr dom, + const char *disk, + const char *destxml, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002008 + assert(0); // Caller should have checked version +#else + int ret = virDomainBlockCopy(dom, disk, destxml, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +int +virDomainBlockJobAbortWrapper(virDomainPtr dom, + const char *disk, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainBlockJobAbort(dom, disk, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainBlockJobSetSpeedWrapper(virDomainPtr dom, + const char *disk, + unsigned long bandwidth, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainBlockJobSetSpeed(dom, disk, bandwidth, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainBlockPeekWrapper(virDomainPtr dom, + const char *disk, + unsigned long long offset, + size_t size, + void *buffer, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainBlockPeek(dom, disk, offset, size, buffer, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainBlockPullWrapper(virDomainPtr dom, + const char *disk, + unsigned long bandwidth, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainBlockPull(dom, disk, bandwidth, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainBlockRebaseWrapper(virDomainPtr dom, + const char *disk, + const char *base, + unsigned long bandwidth, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainBlockRebase(dom, disk, base, bandwidth, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainBlockResizeWrapper(virDomainPtr dom, + const char *disk, + unsigned long long size, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainBlockResize(dom, disk, size, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainBlockStatsWrapper(virDomainPtr dom, + const char *disk, + virDomainBlockStatsPtr stats, + size_t size, + virErrorPtr err) +{ + int ret = virDomainBlockStats(dom, disk, stats, size); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainBlockStatsFlagsWrapper(virDomainPtr dom, + const char *disk, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainBlockStatsFlags(dom, disk, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainCoreDumpWrapper(virDomainPtr domain, + const char *to, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainCoreDump(domain, to, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainCoreDumpWithFormatWrapper(virDomainPtr domain, + const char *to, + unsigned int dumpformat, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 1002003 assert(0); // Caller should have checked version #else - return virDomainCoreDumpWithFormat(domain, to, dumpformat, flags); + int ret = virDomainCoreDumpWithFormat(domain, to, dumpformat, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +int +virDomainCreateWrapper(virDomainPtr domain, + virErrorPtr err) +{ + int ret = virDomainCreate(domain); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainCreateWithFilesWrapper(virDomainPtr domain, + unsigned int nfiles, + int *files, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainCreateWithFiles(domain, nfiles, files, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainCreateWithFlagsWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainCreateWithFlags(domain, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainDelIOThreadWrapper(virDomainPtr domain, + unsigned int iothread_id, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002015 + assert(0); // Caller should have checked version +#else + int ret = virDomainDelIOThread(domain, iothread_id, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +int +virDomainDestroyWrapper(virDomainPtr domain, + virErrorPtr err) +{ + int ret = virDomainDestroy(domain); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainDestroyFlagsWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainDestroyFlags(domain, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainDetachDeviceWrapper(virDomainPtr domain, + const char *xml, + virErrorPtr err) +{ + int ret = virDomainDetachDevice(domain, xml); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainDetachDeviceAliasWrapper(virDomainPtr domain, + const char *alias, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 4004000 + assert(0); // Caller should have checked version +#else + int ret = virDomainDetachDeviceAlias(domain, alias, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +int +virDomainDetachDeviceFlagsWrapper(virDomainPtr domain, + const char *xml, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainDetachDeviceFlags(domain, xml, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainFSFreezeWrapper(virDomainPtr dom, + const char **mountpoints, + unsigned int nmountpoints, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002005 + assert(0); // Caller should have checked version +#else + int ret = virDomainFSFreeze(dom, mountpoints, nmountpoints, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +void +virDomainFSInfoFreeWrapper(virDomainFSInfoPtr info) +{ +#if LIBVIR_VERSION_NUMBER < 1002011 + assert(0); // Caller should have checked version +#else + virDomainFSInfoFree(info); +#endif +} + + +int +virDomainFSThawWrapper(virDomainPtr dom, + const char **mountpoints, + unsigned int nmountpoints, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002005 + assert(0); // Caller should have checked version +#else + int ret = virDomainFSThaw(dom, mountpoints, nmountpoints, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +int +virDomainFSTrimWrapper(virDomainPtr dom, + const char *mountPoint, + unsigned long long minimum, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainFSTrim(dom, mountPoint, minimum, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainFreeWrapper(virDomainPtr domain, + virErrorPtr err) +{ + int ret = virDomainFree(domain); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetAutostartWrapper(virDomainPtr domain, + int *autostart, + virErrorPtr err) +{ + int ret = virDomainGetAutostart(domain, autostart); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetBlkioParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetBlkioParameters(domain, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetBlockInfoWrapper(virDomainPtr domain, + const char *disk, + virDomainBlockInfoPtr info, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetBlockInfo(domain, disk, info, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetBlockIoTuneWrapper(virDomainPtr dom, + const char *disk, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetBlockIoTune(dom, disk, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetBlockJobInfoWrapper(virDomainPtr dom, + const char *disk, + virDomainBlockJobInfoPtr info, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetBlockJobInfo(dom, disk, info, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetCPUStatsWrapper(virDomainPtr domain, + virTypedParameterPtr params, + unsigned int nparams, + int start_cpu, + unsigned int ncpus, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetCPUStats(domain, params, nparams, start_cpu, ncpus, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virConnectPtr +virDomainGetConnectWrapper(virDomainPtr dom, + virErrorPtr err) +{ + virConnectPtr ret = virDomainGetConnect(dom); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetControlInfoWrapper(virDomainPtr domain, + virDomainControlInfoPtr info, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetControlInfo(domain, info, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetDiskErrorsWrapper(virDomainPtr dom, + virDomainDiskErrorPtr errors, + unsigned int maxerrors, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetDiskErrors(dom, errors, maxerrors, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetEmulatorPinInfoWrapper(virDomainPtr domain, + unsigned char *cpumap, + int maplen, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetEmulatorPinInfo(domain, cpumap, maplen, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetFSInfoWrapper(virDomainPtr dom, + virDomainFSInfoPtr **info, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002011 + assert(0); // Caller should have checked version +#else + int ret = virDomainGetFSInfo(dom, info, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +int +virDomainGetGuestVcpusWrapper(virDomainPtr domain, + virTypedParameterPtr *params, + unsigned int *nparams, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 2000000 + assert(0); // Caller should have checked version +#else + int ret = virDomainGetGuestVcpus(domain, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +char * +virDomainGetHostnameWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virDomainGetHostname(domain, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +unsigned int +virDomainGetIDWrapper(virDomainPtr domain, + virErrorPtr err) +{ + unsigned int ret = virDomainGetID(domain); + if (ret == (unsigned int)-1) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetIOThreadInfoWrapper(virDomainPtr dom, + virDomainIOThreadInfoPtr **info, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002014 + assert(0); // Caller should have checked version +#else + int ret = virDomainGetIOThreadInfo(dom, info, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +int +virDomainGetInfoWrapper(virDomainPtr domain, + virDomainInfoPtr info, + virErrorPtr err) +{ + int ret = virDomainGetInfo(domain, info); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetInterfaceParametersWrapper(virDomainPtr domain, + const char *device, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetInterfaceParameters(domain, device, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetJobInfoWrapper(virDomainPtr domain, + virDomainJobInfoPtr info, + virErrorPtr err) +{ + int ret = virDomainGetJobInfo(domain, info); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetJobStatsWrapper(virDomainPtr domain, + int *type, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetJobStats(domain, type, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetLaunchSecurityInfoWrapper(virDomainPtr domain, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 4005000 + assert(0); // Caller should have checked version +#else + int ret = virDomainGetLaunchSecurityInfo(domain, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +unsigned long +virDomainGetMaxMemoryWrapper(virDomainPtr domain, + virErrorPtr err) +{ + unsigned long ret = virDomainGetMaxMemory(domain); + if (ret == 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetMaxVcpusWrapper(virDomainPtr domain, + virErrorPtr err) +{ + int ret = virDomainGetMaxVcpus(domain); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetMemoryParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetMemoryParameters(domain, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virDomainGetMetadataWrapper(virDomainPtr domain, + int type, + const char *uri, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virDomainGetMetadata(domain, type, uri, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +const char * +virDomainGetNameWrapper(virDomainPtr domain, + virErrorPtr err) +{ + const char * ret = virDomainGetName(domain); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetNumaParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetNumaParameters(domain, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virDomainGetOSTypeWrapper(virDomainPtr domain, + virErrorPtr err) +{ + char * ret = virDomainGetOSType(domain); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetPerfEventsWrapper(virDomainPtr domain, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1003003 + assert(0); // Caller should have checked version +#else + int ret = virDomainGetPerfEvents(domain, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +int +virDomainGetSchedulerParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int *nparams, + virErrorPtr err) +{ + int ret = virDomainGetSchedulerParameters(domain, params, nparams); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetSchedulerParametersFlagsWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetSchedulerParametersFlags(domain, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virDomainGetSchedulerTypeWrapper(virDomainPtr domain, + int *nparams, + virErrorPtr err) +{ + char * ret = virDomainGetSchedulerType(domain, nparams); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetSecurityLabelWrapper(virDomainPtr domain, + virSecurityLabelPtr seclabel, + virErrorPtr err) +{ + int ret = virDomainGetSecurityLabel(domain, seclabel); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetSecurityLabelListWrapper(virDomainPtr domain, + virSecurityLabelPtr *seclabels, + virErrorPtr err) +{ + int ret = virDomainGetSecurityLabelList(domain, seclabels); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetStateWrapper(virDomainPtr domain, + int *state, + int *reason, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetState(domain, state, reason, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetTimeWrapper(virDomainPtr dom, + long long *seconds, + unsigned int *nseconds, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002005 + assert(0); // Caller should have checked version +#else + int ret = virDomainGetTime(dom, seconds, nseconds, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +#endif +} + + +int +virDomainGetUUIDWrapper(virDomainPtr domain, + unsigned char *uuid, + virErrorPtr err) +{ + int ret = virDomainGetUUID(domain, uuid); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetUUIDStringWrapper(virDomainPtr domain, + char *buf, + virErrorPtr err) +{ + int ret = virDomainGetUUIDString(domain, buf); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetVcpuPinInfoWrapper(virDomainPtr domain, + int ncpumaps, + unsigned char *cpumaps, + int maplen, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetVcpuPinInfo(domain, ncpumaps, cpumaps, maplen, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetVcpusWrapper(virDomainPtr domain, + virVcpuInfoPtr info, + int maxinfo, + unsigned char *cpumaps, + int maplen, + virErrorPtr err) +{ + int ret = virDomainGetVcpus(domain, info, maxinfo, cpumaps, maplen); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainGetVcpusFlagsWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainGetVcpusFlags(domain, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virDomainGetXMLDescWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virDomainGetXMLDesc(domain, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainHasCurrentSnapshotWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainHasCurrentSnapshot(domain, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainHasManagedSaveImageWrapper(virDomainPtr dom, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainHasManagedSaveImage(dom, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainInjectNMIWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainInjectNMI(domain, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainInterfaceAddressesWrapper(virDomainPtr dom, + virDomainInterfacePtr **ifaces, + unsigned int source, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002014 + assert(0); // Caller should have checked version +#else + int ret = virDomainInterfaceAddresses(dom, ifaces, source, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainGetTimeWrapper(virDomainPtr dom, - long long *seconds, - unsigned int *nseconds, - unsigned int flags) +void +virDomainInterfaceFreeWrapper(virDomainInterfacePtr iface) +{ +#if LIBVIR_VERSION_NUMBER < 1002014 + assert(0); // Caller should have checked version +#else + virDomainInterfaceFree(iface); +#endif +} + + +int +virDomainInterfaceStatsWrapper(virDomainPtr dom, + const char *device, + virDomainInterfaceStatsPtr stats, + size_t size, + virErrorPtr err) +{ + int ret = virDomainInterfaceStats(dom, device, stats, size); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +void +virDomainIOThreadInfoFreeWrapper(virDomainIOThreadInfoPtr info) +{ +#if LIBVIR_VERSION_NUMBER < 1002014 + assert(0); // Caller should have checked version +#else + virDomainIOThreadInfoFree(info); +#endif +} + + +int +virDomainIsActiveWrapper(virDomainPtr dom, + virErrorPtr err) +{ + int ret = virDomainIsActive(dom); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainIsPersistentWrapper(virDomainPtr dom, + virErrorPtr err) +{ + int ret = virDomainIsPersistent(dom); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainIsUpdatedWrapper(virDomainPtr dom, + virErrorPtr err) +{ + int ret = virDomainIsUpdated(dom); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainListAllSnapshotsWrapper(virDomainPtr domain, + virDomainSnapshotPtr **snaps, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainListAllSnapshots(domain, snaps, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainManagedSaveWrapper(virDomainPtr dom, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainManagedSave(dom, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainManagedSaveDefineXMLWrapper(virDomainPtr domain, + const char *dxml, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002005 +#if LIBVIR_VERSION_NUMBER < 3007000 assert(0); // Caller should have checked version #else - return virDomainGetTime(dom, seconds, nseconds, flags); + int ret = virDomainManagedSaveDefineXML(domain, dxml, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainSetTimeWrapper(virDomainPtr dom, - long long seconds, - unsigned int nseconds, - unsigned int flags) + +char * +virDomainManagedSaveGetXMLDescWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002005 +#if LIBVIR_VERSION_NUMBER < 3007000 assert(0); // Caller should have checked version #else - return virDomainSetTime(dom, seconds, nseconds, flags); + char * ret = virDomainManagedSaveGetXMLDesc(domain, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainFSFreezeWrapper(virDomainPtr dom, - const char **mountpoints, - unsigned int nmountpoints, - unsigned int flags) + +int +virDomainManagedSaveRemoveWrapper(virDomainPtr dom, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002005 - assert(0); // Caller should have checked version -#else - return virDomainFSFreeze(dom, mountpoints, nmountpoints, flags); -#endif + int ret = virDomainManagedSaveRemove(dom, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virDomainFSThawWrapper(virDomainPtr dom, - const char **mountpoints, - unsigned int nmountpoints, - unsigned int flags) + +int +virDomainMemoryPeekWrapper(virDomainPtr dom, + unsigned long long start, + size_t size, + void *buffer, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002005 + int ret = virDomainMemoryPeek(dom, start, size, buffer, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainMemoryStatsWrapper(virDomainPtr dom, + virDomainMemoryStatPtr stats, + unsigned int nr_stats, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainMemoryStats(dom, stats, nr_stats, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainMigrateWrapper(virDomainPtr domain, + virConnectPtr dconn, + unsigned long flags, + const char *dname, + const char *uri, + unsigned long bandwidth, + virErrorPtr err) +{ + virDomainPtr ret = virDomainMigrate(domain, dconn, flags, dname, uri, bandwidth); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainMigrate2Wrapper(virDomainPtr domain, + virConnectPtr dconn, + const char *dxml, + unsigned long flags, + const char *dname, + const char *uri, + unsigned long bandwidth, + virErrorPtr err) +{ + virDomainPtr ret = virDomainMigrate2(domain, dconn, dxml, flags, dname, uri, bandwidth); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainMigrate3Wrapper(virDomainPtr domain, + virConnectPtr dconn, + virTypedParameterPtr params, + unsigned int nparams, + unsigned int flags, + virErrorPtr err) +{ + virDomainPtr ret = virDomainMigrate3(domain, dconn, params, nparams, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainMigrateGetCompressionCacheWrapper(virDomainPtr domain, + unsigned long long *cacheSize, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainMigrateGetCompressionCache(domain, cacheSize, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainMigrateGetMaxDowntimeWrapper(virDomainPtr domain, + unsigned long long *downtime, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 3007000 assert(0); // Caller should have checked version #else - return virDomainFSThaw(dom, mountpoints, nmountpoints, flags); + int ret = virDomainMigrateGetMaxDowntime(domain, downtime, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainBlockCopyWrapper(virDomainPtr dom, const char *disk, - const char *destxml, - virTypedParameterPtr params, - int nparams, - unsigned int flags) + +int +virDomainMigrateGetMaxSpeedWrapper(virDomainPtr domain, + unsigned long *bandwidth, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002008 + int ret = virDomainMigrateGetMaxSpeed(domain, bandwidth, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainMigrateSetCompressionCacheWrapper(virDomainPtr domain, + unsigned long long cacheSize, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainMigrateSetCompressionCache(domain, cacheSize, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainMigrateSetMaxDowntimeWrapper(virDomainPtr domain, + unsigned long long downtime, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainMigrateSetMaxDowntime(domain, downtime, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainMigrateSetMaxSpeedWrapper(virDomainPtr domain, + unsigned long bandwidth, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainMigrateSetMaxSpeed(domain, bandwidth, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainMigrateStartPostCopyWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1003003 assert(0); // Caller should have checked version #else - return virDomainBlockCopy(dom, disk, destxml, params, nparams, flags); + int ret = virDomainMigrateStartPostCopy(domain, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainOpenGraphicsFDWrapper(virDomainPtr dom, - unsigned int idx, - unsigned int flags) + +int +virDomainMigrateToURIWrapper(virDomainPtr domain, + const char *duri, + unsigned long flags, + const char *dname, + unsigned long bandwidth, + virErrorPtr err) +{ + int ret = virDomainMigrateToURI(domain, duri, flags, dname, bandwidth); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainMigrateToURI2Wrapper(virDomainPtr domain, + const char *dconnuri, + const char *miguri, + const char *dxml, + unsigned long flags, + const char *dname, + unsigned long bandwidth, + virErrorPtr err) +{ + int ret = virDomainMigrateToURI2(domain, dconnuri, miguri, dxml, flags, dname, bandwidth); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainMigrateToURI3Wrapper(virDomainPtr domain, + const char *dconnuri, + virTypedParameterPtr params, + unsigned int nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainMigrateToURI3(domain, dconnuri, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainOpenChannelWrapper(virDomainPtr dom, + const char *name, + virStreamPtr st, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainOpenChannel(dom, name, st, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainOpenConsoleWrapper(virDomainPtr dom, + const char *dev_name, + virStreamPtr st, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainOpenConsole(dom, dev_name, st, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainOpenGraphicsWrapper(virDomainPtr dom, + unsigned int idx, + int fd, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainOpenGraphics(dom, idx, fd, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainOpenGraphicsFDWrapper(virDomainPtr dom, + unsigned int idx, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 1002008 assert(0); // Caller should have checked version #else - return virDomainOpenGraphicsFD(dom, idx, flags); + int ret = virDomainOpenGraphicsFD(dom, idx, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -void virDomainFSInfoFreeWrapper(virDomainFSInfoPtr info) + +int +virDomainPMSuspendForDurationWrapper(virDomainPtr dom, + unsigned int target, + unsigned long long duration, + unsigned int flags, + virErrorPtr err) { + int ret = virDomainPMSuspendForDuration(dom, target, duration, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virDomainGetFSInfoWrapper(virDomainPtr dom, - virDomainFSInfoPtr **info, - unsigned int flags) + +int +virDomainPMWakeupWrapper(virDomainPtr dom, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002011 - assert(0); // Caller should have checked version -#else - return virDomainGetFSInfo(dom, info, flags); -#endif + int ret = virDomainPMWakeup(dom, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainPinEmulatorWrapper(virDomainPtr domain, + unsigned char *cpumap, + int maplen, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainPinEmulator(domain, cpumap, maplen, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virDomainInterfaceAddressesWrapper(virDomainPtr dom, - virDomainInterfacePtr **ifaces, - unsigned int source, - unsigned int flags) + +int +virDomainPinIOThreadWrapper(virDomainPtr domain, + unsigned int iothread_id, + unsigned char *cpumap, + int maplen, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 1002014 assert(0); // Caller should have checked version #else - return virDomainInterfaceAddresses(dom, ifaces, source, flags); + int ret = virDomainPinIOThread(domain, iothread_id, cpumap, maplen, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -void virDomainInterfaceFreeWrapper(virDomainInterfacePtr iface) + +int +virDomainPinVcpuWrapper(virDomainPtr domain, + unsigned int vcpu, + unsigned char *cpumap, + int maplen, + virErrorPtr err) { + int ret = virDomainPinVcpu(domain, vcpu, cpumap, maplen); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -void virDomainIOThreadInfoFreeWrapper(virDomainIOThreadInfoPtr info) + +int +virDomainPinVcpuFlagsWrapper(virDomainPtr domain, + unsigned int vcpu, + unsigned char *cpumap, + int maplen, + unsigned int flags, + virErrorPtr err) { + int ret = virDomainPinVcpuFlags(domain, vcpu, cpumap, maplen, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virDomainGetIOThreadInfoWrapper(virDomainPtr domain, - virDomainIOThreadInfoPtr **info, - unsigned int flags) + +int +virDomainRebootWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002014 - assert(0); // Caller should have checked version -#else - return virDomainGetIOThreadInfo(domain, info, flags); -#endif + int ret = virDomainReboot(domain, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virDomainPinIOThreadWrapper(virDomainPtr domain, - unsigned int iothread_id, - unsigned char *cpumap, - int maplen, - unsigned int flags) + + +int +virDomainRefWrapper(virDomainPtr domain, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002014 - assert(0); // Caller should have checked version -#else - return virDomainPinIOThread(domain, iothread_id, cpumap, maplen, flags); -#endif + int ret = virDomainRef(domain); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virDomainAddIOThreadWrapper(virDomainPtr domain, - unsigned int iothread_id, - unsigned int flags) + +int +virDomainRenameWrapper(virDomainPtr dom, + const char *new_name, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002015 +#if LIBVIR_VERSION_NUMBER < 1002019 assert(0); // Caller should have checked version #else - return virDomainAddIOThread(domain, iothread_id, flags); + int ret = virDomainRename(dom, new_name, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainDelIOThreadWrapper(virDomainPtr domain, - unsigned int iothread_id, - unsigned int flags) +int +virDomainResetWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002015 - assert(0); // Caller should have checked version -#else - return virDomainDelIOThread(domain, iothread_id, flags); -#endif + int ret = virDomainReset(domain, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virDomainSetUserPasswordWrapper(virDomainPtr dom, - const char *user, - const char *password, - unsigned int flags) +int +virDomainResumeWrapper(virDomainPtr domain, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002016 - assert(0); // Caller should have checked version -#else - return virDomainSetUserPassword(dom, user, password, flags); -#endif + int ret = virDomainResume(domain); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virDomainRenameWrapper(virDomainPtr dom, - const char *new_name, - unsigned int flags) +int +virDomainSaveWrapper(virDomainPtr domain, + const char *to, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1002019 + int ret = virDomainSave(domain, to); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSaveFlagsWrapper(virDomainPtr domain, + const char *to, + const char *dxml, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSaveFlags(domain, to, dxml, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +char * +virDomainScreenshotWrapper(virDomainPtr domain, + virStreamPtr stream, + unsigned int screen, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virDomainScreenshot(domain, stream, screen, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSendKeyWrapper(virDomainPtr domain, + unsigned int codeset, + unsigned int holdtime, + unsigned int *keycodes, + int nkeycodes, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSendKey(domain, codeset, holdtime, keycodes, nkeycodes, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSendProcessSignalWrapper(virDomainPtr domain, + long long pid_value, + unsigned int signum, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSendProcessSignal(domain, pid_value, signum, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetAutostartWrapper(virDomainPtr domain, + int autostart, + virErrorPtr err) +{ + int ret = virDomainSetAutostart(domain, autostart); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetBlkioParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSetBlkioParameters(domain, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetBlockIoTuneWrapper(virDomainPtr dom, + const char *disk, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSetBlockIoTune(dom, disk, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetBlockThresholdWrapper(virDomainPtr domain, + const char *dev, + unsigned long long threshold, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 3002000 assert(0); // Caller should have checked version #else - return virDomainRename(dom, new_name, flags); + int ret = virDomainSetBlockThreshold(domain, dev, threshold, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainGetPerfEventsWrapper(virDomainPtr dom, - virTypedParameterPtr *params, - int *nparams, - unsigned int flags) +int +virDomainSetGuestVcpusWrapper(virDomainPtr domain, + const char *cpumap, + int state, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1003003 +#if LIBVIR_VERSION_NUMBER < 2000000 assert(0); // Caller should have checked version #else - return virDomainGetPerfEvents(dom, params, nparams, flags); + int ret = virDomainSetGuestVcpus(domain, cpumap, state, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainSetPerfEventsWrapper(virDomainPtr dom, - virTypedParameterPtr params, - int nparams, - unsigned int flags) +int +virDomainSetInterfaceParametersWrapper(virDomainPtr domain, + const char *device, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 1003003 + int ret = virDomainSetInterfaceParameters(domain, device, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetLifecycleActionWrapper(virDomainPtr domain, + unsigned int type, + unsigned int action, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 3009000 assert(0); // Caller should have checked version #else - return virDomainSetPerfEvents(dom, params, nparams, flags); + int ret = virDomainSetLifecycleAction(domain, type, action, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainMigrateStartPostCopyWrapper(virDomainPtr domain, - unsigned int flags) +int +virDomainSetMaxMemoryWrapper(virDomainPtr domain, + unsigned long memory, + virErrorPtr err) +{ + int ret = virDomainSetMaxMemory(domain, memory); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetMemoryWrapper(virDomainPtr domain, + unsigned long memory, + virErrorPtr err) +{ + int ret = virDomainSetMemory(domain, memory); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetMemoryFlagsWrapper(virDomainPtr domain, + unsigned long memory, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSetMemoryFlags(domain, memory, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetMemoryParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSetMemoryParameters(domain, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetMemoryStatsPeriodWrapper(virDomainPtr domain, + int period, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSetMemoryStatsPeriod(domain, period, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetMetadataWrapper(virDomainPtr domain, + int type, + const char *metadata, + const char *key, + const char *uri, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSetMetadata(domain, type, metadata, key, uri, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetNumaParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSetNumaParameters(domain, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetPerfEventsWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 1003003 assert(0); // Caller should have checked version #else - return virDomainMigrateStartPostCopy(domain, flags); + int ret = virDomainSetPerfEvents(domain, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainGetGuestVcpusWrapper(virDomainPtr domain, - virTypedParameterPtr *params, - unsigned int *nparams, - unsigned int flags) +int +virDomainSetSchedulerParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int nparams, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 2000000 + int ret = virDomainSetSchedulerParameters(domain, params, nparams); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetSchedulerParametersFlagsWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSetSchedulerParametersFlags(domain, params, nparams, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSetTimeWrapper(virDomainPtr dom, + long long seconds, + unsigned int nseconds, + unsigned int flags, + virErrorPtr err) +{ +#if LIBVIR_VERSION_NUMBER < 1002005 assert(0); // Caller should have checked version #else - return virDomainGetGuestVcpus(domain, params, nparams, flags); + int ret = virDomainSetTime(dom, seconds, nseconds, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainSetGuestVcpusWrapper(virDomainPtr domain, - const char *cpumap, - int state, - unsigned int flags) +int +virDomainSetUserPasswordWrapper(virDomainPtr dom, + const char *user, + const char *password, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 2000000 +#if LIBVIR_VERSION_NUMBER < 1002016 assert(0); // Caller should have checked version #else - return virDomainSetGuestVcpus(domain, cpumap, state, flags); + int ret = virDomainSetUserPassword(dom, user, password, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainSetVcpuWrapper(virDomainPtr domain, - const char *cpumap, - int state, - unsigned int flags) + +int +virDomainSetVcpuWrapper(virDomainPtr domain, + const char *vcpumap, + int state, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 3001000 assert(0); // Caller should have checked version #else - return virDomainSetVcpu(domain, cpumap, state, flags); + int ret = virDomainSetVcpu(domain, vcpumap, state, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virDomainSetBlockThresholdWrapper(virDomainPtr domain, - const char *dev, - unsigned long long threshold, - unsigned int flags) +int +virDomainSetVcpusWrapper(virDomainPtr domain, + unsigned int nvcpus, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 3002000 - assert(0); // Caller should have checked version -#else - return virDomainSetBlockThreshold(domain, dev, threshold, flags); -#endif + int ret = virDomainSetVcpus(domain, nvcpus); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virDomainMigrateGetMaxDowntimeWrapper(virDomainPtr domain, - unsigned long long *downtime, - unsigned int flags) + +int +virDomainSetVcpusFlagsWrapper(virDomainPtr domain, + unsigned int nvcpus, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 3007000 - assert(0); // Caller should have checked version -#else - return virDomainMigrateGetMaxDowntime(domain, downtime, flags); -#endif + int ret = virDomainSetVcpusFlags(domain, nvcpus, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -char *virDomainManagedSaveGetXMLDescWrapper(virDomainPtr domain, - unsigned int flags) +int +virDomainShutdownWrapper(virDomainPtr domain, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 3007000 - assert(0); // Caller should have checked version -#else - return virDomainManagedSaveGetXMLDesc(domain, flags); -#endif + int ret = virDomainShutdown(domain); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virDomainManagedSaveDefineXMLWrapper(virDomainPtr domain, - const char *dxml, - unsigned int flags) +int +virDomainShutdownFlagsWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 3007000 - assert(0); // Caller should have checked version -#else - return virDomainManagedSaveDefineXML(domain, dxml, flags); -#endif + int ret = virDomainShutdownFlags(domain, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } -int virDomainSetLifecycleActionWrapper(virDomainPtr domain, - unsigned int type, - unsigned int action, - unsigned int flags) + +virDomainSnapshotPtr +virDomainSnapshotCreateXMLWrapper(virDomainPtr domain, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 3009000 - assert(0); // Caller should have checked version -#else - return virDomainSetLifecycleAction(domain, type, action, flags); -#endif + virDomainSnapshotPtr ret = virDomainSnapshotCreateXML(domain, xmlDesc, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; } -int virDomainDetachDeviceAliasWrapper(virDomainPtr domain, - const char *alias, - unsigned int flags) + +virDomainSnapshotPtr +virDomainSnapshotCurrentWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 4004000 - assert(0); // Caller should have checked version -#else - return virDomainDetachDeviceAlias(domain, alias, flags); -#endif + virDomainSnapshotPtr ret = virDomainSnapshotCurrent(domain, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; } -int virDomainGetLaunchSecurityInfoWrapper(virDomainPtr domain, - virTypedParameterPtr *params, - int *nparams, - unsigned int flags) + +int +virDomainSnapshotListNamesWrapper(virDomainPtr domain, + char **names, + int nameslen, + unsigned int flags, + virErrorPtr err) { -#if LIBVIR_VERSION_NUMBER < 4005000 - assert(0); // Caller should have checked version -#else - return virDomainGetLaunchSecurityInfo(domain, params, nparams, flags); -#endif + int ret = virDomainSnapshotListNames(domain, names, nameslen, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +virDomainSnapshotPtr +virDomainSnapshotLookupByNameWrapper(virDomainPtr domain, + const char *name, + unsigned int flags, + virErrorPtr err) +{ + virDomainSnapshotPtr ret = virDomainSnapshotLookupByName(domain, name, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSnapshotNumWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainSnapshotNum(domain, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainSuspendWrapper(virDomainPtr domain, + virErrorPtr err) +{ + int ret = virDomainSuspend(domain); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainUndefineWrapper(virDomainPtr domain, + virErrorPtr err) +{ + int ret = virDomainUndefine(domain); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainUndefineFlagsWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainUndefineFlags(domain, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainUpdateDeviceFlagsWrapper(virDomainPtr domain, + const char *xml, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainUpdateDeviceFlags(domain, xml, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } + */ import "C" diff --git a/domain_wrapper.h b/domain_wrapper.h index c344565..7bd8282 100644 --- a/domain_wrapper.h +++ b/domain_wrapper.h @@ -31,174 +31,956 @@ #include <libvirt/virterror.h> #include "domain_compat.h" +int +virDomainAbortJobWrapper(virDomainPtr domain, + virErrorPtr err); + +int +virDomainAddIOThreadWrapper(virDomainPtr domain, + unsigned int iothread_id, + unsigned int flags, + virErrorPtr err); + +int +virDomainAttachDeviceWrapper(virDomainPtr domain, + const char *xml, + virErrorPtr err); + +int +virDomainAttachDeviceFlagsWrapper(virDomainPtr domain, + const char *xml, + unsigned int flags, + virErrorPtr err); + +int +virDomainBlockCommitWrapper(virDomainPtr dom, + const char *disk, + const char *base, + const char *top, + unsigned long bandwidth, + unsigned int flags, + virErrorPtr err); + +int +virDomainBlockCopyWrapper(virDomainPtr dom, + const char *disk, + const char *destxml, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainBlockJobAbortWrapper(virDomainPtr dom, + const char *disk, + unsigned int flags, + virErrorPtr err); + +int +virDomainBlockJobSetSpeedWrapper(virDomainPtr dom, + const char *disk, + unsigned long bandwidth, + unsigned int flags, + virErrorPtr err); + +int +virDomainBlockPeekWrapper(virDomainPtr dom, + const char *disk, + unsigned long long offset, + size_t size, + void *buffer, + unsigned int flags, + virErrorPtr err); + +int +virDomainBlockPullWrapper(virDomainPtr dom, + const char *disk, + unsigned long bandwidth, + unsigned int flags, + virErrorPtr err); + +int +virDomainBlockRebaseWrapper(virDomainPtr dom, + const char *disk, + const char *base, + unsigned long bandwidth, + unsigned int flags, + virErrorPtr err); + +int +virDomainBlockResizeWrapper(virDomainPtr dom, + const char *disk, + unsigned long long size, + unsigned int flags, + virErrorPtr err); + +int +virDomainBlockStatsWrapper(virDomainPtr dom, + const char *disk, + virDomainBlockStatsPtr stats, + size_t size, + virErrorPtr err); + +int +virDomainBlockStatsFlagsWrapper(virDomainPtr dom, + const char *disk, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainCoreDumpWrapper(virDomainPtr domain, + const char *to, + unsigned int flags, + virErrorPtr err); + int virDomainCoreDumpWithFormatWrapper(virDomainPtr domain, const char *to, unsigned int dumpformat, - unsigned int flags); + unsigned int flags, + virErrorPtr err); +int +virDomainCreateWrapper(virDomainPtr domain, + virErrorPtr err); int -virDomainGetTimeWrapper(virDomainPtr dom, - long long *seconds, - unsigned int *nseconds, - unsigned int flags); +virDomainCreateWithFilesWrapper(virDomainPtr domain, + unsigned int nfiles, + int *files, + unsigned int flags, + virErrorPtr err); int -virDomainSetTimeWrapper(virDomainPtr dom, - long long seconds, - unsigned int nseconds, - unsigned int flags); +virDomainCreateWithFlagsWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +int +virDomainDelIOThreadWrapper(virDomainPtr domain, + unsigned int iothread_id, + unsigned int flags, + virErrorPtr err); + +int +virDomainDestroyWrapper(virDomainPtr domain, + virErrorPtr err); + +int +virDomainDestroyFlagsWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +int +virDomainDetachDeviceWrapper(virDomainPtr domain, + const char *xml, + virErrorPtr err); + +int +virDomainDetachDeviceAliasWrapper(virDomainPtr domain, + const char *alias, + unsigned int flags, + virErrorPtr err); + +int +virDomainDetachDeviceFlagsWrapper(virDomainPtr domain, + const char *xml, + unsigned int flags, + virErrorPtr err); int virDomainFSFreezeWrapper(virDomainPtr dom, const char **mountpoints, unsigned int nmountpoints, - unsigned int flags); + unsigned int flags, + virErrorPtr err); + +void +virDomainFSInfoFreeWrapper(virDomainFSInfoPtr info); int virDomainFSThawWrapper(virDomainPtr dom, const char **mountpoints, unsigned int nmountpoints, - unsigned int flags); + unsigned int flags, + virErrorPtr err); +int +virDomainFSTrimWrapper(virDomainPtr dom, + const char *mountPoint, + unsigned long long minimum, + unsigned int flags, + virErrorPtr err); int -virDomainBlockCopyWrapper(virDomainPtr dom, - const char *disk, - const char *destxml, - virTypedParameterPtr params, - int nparams, - unsigned int flags); +virDomainFreeWrapper(virDomainPtr domain, + virErrorPtr err); int -virDomainOpenGraphicsFDWrapper(virDomainPtr dom, - unsigned int idx, - unsigned int flags); +virDomainGetAutostartWrapper(virDomainPtr domain, + int *autostart, + virErrorPtr err); +int +virDomainGetBlkioParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err); -void -virDomainFSInfoFreeWrapper(virDomainFSInfoPtr info); +int +virDomainGetBlockInfoWrapper(virDomainPtr domain, + const char *disk, + virDomainBlockInfoPtr info, + unsigned int flags, + virErrorPtr err); + +int +virDomainGetBlockIoTuneWrapper(virDomainPtr dom, + const char *disk, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainGetBlockJobInfoWrapper(virDomainPtr dom, + const char *disk, + virDomainBlockJobInfoPtr info, + unsigned int flags, + virErrorPtr err); + +int +virDomainGetCPUStatsWrapper(virDomainPtr domain, + virTypedParameterPtr params, + unsigned int nparams, + int start_cpu, + unsigned int ncpus, + unsigned int flags, + virErrorPtr err); + +virConnectPtr +virDomainGetConnectWrapper(virDomainPtr dom, + virErrorPtr err); + +int +virDomainGetControlInfoWrapper(virDomainPtr domain, + virDomainControlInfoPtr info, + unsigned int flags, + virErrorPtr err); + +int +virDomainGetDiskErrorsWrapper(virDomainPtr dom, + virDomainDiskErrorPtr errors, + unsigned int maxerrors, + unsigned int flags, + virErrorPtr err); + +int +virDomainGetEmulatorPinInfoWrapper(virDomainPtr domain, + unsigned char *cpumap, + int maplen, + unsigned int flags, + virErrorPtr err); int virDomainGetFSInfoWrapper(virDomainPtr dom, virDomainFSInfoPtr **info, - unsigned int flags); + unsigned int flags, + virErrorPtr err); + +int +virDomainGetGuestVcpusWrapper(virDomainPtr domain, + virTypedParameterPtr *params, + unsigned int *nparams, + unsigned int flags, + virErrorPtr err); + +char * +virDomainGetHostnameWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +unsigned int +virDomainGetIDWrapper(virDomainPtr domain, + virErrorPtr err); + +int +virDomainGetIOThreadInfoWrapper(virDomainPtr dom, + virDomainIOThreadInfoPtr **info, + unsigned int flags, + virErrorPtr err); + +int +virDomainGetInfoWrapper(virDomainPtr domain, + virDomainInfoPtr info, + virErrorPtr err); + +int +virDomainGetInterfaceParametersWrapper(virDomainPtr domain, + const char *device, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainGetJobInfoWrapper(virDomainPtr domain, + virDomainJobInfoPtr info, + virErrorPtr err); + +int +virDomainGetJobStatsWrapper(virDomainPtr domain, + int *type, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainGetLaunchSecurityInfoWrapper(virDomainPtr domain, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags, + virErrorPtr err); + +unsigned long +virDomainGetMaxMemoryWrapper(virDomainPtr domain, + virErrorPtr err); + +int +virDomainGetMaxVcpusWrapper(virDomainPtr domain, + virErrorPtr err); + +int +virDomainGetMemoryParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err); + +char * +virDomainGetMetadataWrapper(virDomainPtr domain, + int type, + const char *uri, + unsigned int flags, + virErrorPtr err); + +const char * +virDomainGetNameWrapper(virDomainPtr domain, + virErrorPtr err); + +int +virDomainGetNumaParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err); + +char * +virDomainGetOSTypeWrapper(virDomainPtr domain, + virErrorPtr err); + +int +virDomainGetPerfEventsWrapper(virDomainPtr domain, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainGetSchedulerParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int *nparams, + virErrorPtr err); + +int +virDomainGetSchedulerParametersFlagsWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int *nparams, + unsigned int flags, + virErrorPtr err); + +char * +virDomainGetSchedulerTypeWrapper(virDomainPtr domain, + int *nparams, + virErrorPtr err); +int +virDomainGetSecurityLabelWrapper(virDomainPtr domain, + virSecurityLabelPtr seclabel, + virErrorPtr err); + +int +virDomainGetSecurityLabelListWrapper(virDomainPtr domain, + virSecurityLabelPtr *seclabels, + virErrorPtr err); + +int +virDomainGetStateWrapper(virDomainPtr domain, + int *state, + int *reason, + unsigned int flags, + virErrorPtr err); + +int +virDomainGetTimeWrapper(virDomainPtr dom, + long long *seconds, + unsigned int *nseconds, + unsigned int flags, + virErrorPtr err); + +int +virDomainGetUUIDWrapper(virDomainPtr domain, + unsigned char *uuid, + virErrorPtr err); + +int +virDomainGetUUIDStringWrapper(virDomainPtr domain, + char *buf, + virErrorPtr err); + +int +virDomainGetVcpuPinInfoWrapper(virDomainPtr domain, + int ncpumaps, + unsigned char *cpumaps, + int maplen, + unsigned int flags, + virErrorPtr err); + +int +virDomainGetVcpusWrapper(virDomainPtr domain, + virVcpuInfoPtr info, + int maxinfo, + unsigned char *cpumaps, + int maplen, + virErrorPtr err); + +int +virDomainGetVcpusFlagsWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +char * +virDomainGetXMLDescWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +int +virDomainHasCurrentSnapshotWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +int +virDomainHasManagedSaveImageWrapper(virDomainPtr dom, + unsigned int flags, + virErrorPtr err); + +int +virDomainInjectNMIWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); int virDomainInterfaceAddressesWrapper(virDomainPtr dom, virDomainInterfacePtr **ifaces, unsigned int source, - unsigned int flags); + unsigned int flags, + virErrorPtr err); void virDomainInterfaceFreeWrapper(virDomainInterfacePtr iface); +int +virDomainInterfaceStatsWrapper(virDomainPtr dom, + const char *device, + virDomainInterfaceStatsPtr stats, + size_t size, + virErrorPtr err); + void virDomainIOThreadInfoFreeWrapper(virDomainIOThreadInfoPtr info); int -virDomainGetIOThreadInfoWrapper(virDomainPtr domain, - virDomainIOThreadInfoPtr **info, - unsigned int flags); +virDomainIsActiveWrapper(virDomainPtr dom, + virErrorPtr err); + +int +virDomainIsPersistentWrapper(virDomainPtr dom, + virErrorPtr err); + +int +virDomainIsUpdatedWrapper(virDomainPtr dom, + virErrorPtr err); + +int +virDomainListAllSnapshotsWrapper(virDomainPtr domain, + virDomainSnapshotPtr **snaps, + unsigned int flags, + virErrorPtr err); + +int +virDomainManagedSaveWrapper(virDomainPtr dom, + unsigned int flags, + virErrorPtr err); + +int +virDomainManagedSaveDefineXMLWrapper(virDomainPtr domain, + const char *dxml, + unsigned int flags, + virErrorPtr err); + +char * +virDomainManagedSaveGetXMLDescWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +int +virDomainManagedSaveRemoveWrapper(virDomainPtr dom, + unsigned int flags, + virErrorPtr err); + +int +virDomainMemoryPeekWrapper(virDomainPtr dom, + unsigned long long start, + size_t size, + void *buffer, + unsigned int flags, + virErrorPtr err); + +int +virDomainMemoryStatsWrapper(virDomainPtr dom, + virDomainMemoryStatPtr stats, + unsigned int nr_stats, + unsigned int flags, + virErrorPtr err); + +virDomainPtr +virDomainMigrateWrapper(virDomainPtr domain, + virConnectPtr dconn, + unsigned long flags, + const char *dname, + const char *uri, + unsigned long bandwidth, + virErrorPtr err); + +virDomainPtr +virDomainMigrate2Wrapper(virDomainPtr domain, + virConnectPtr dconn, + const char *dxml, + unsigned long flags, + const char *dname, + const char *uri, + unsigned long bandwidth, + virErrorPtr err); + +virDomainPtr +virDomainMigrate3Wrapper(virDomainPtr domain, + virConnectPtr dconn, + virTypedParameterPtr params, + unsigned int nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainMigrateGetCompressionCacheWrapper(virDomainPtr domain, + unsigned long long *cacheSize, + unsigned int flags, + virErrorPtr err); + +int +virDomainMigrateGetMaxDowntimeWrapper(virDomainPtr domain, + unsigned long long *downtime, + unsigned int flags, + virErrorPtr err); + +int +virDomainMigrateGetMaxSpeedWrapper(virDomainPtr domain, + unsigned long *bandwidth, + unsigned int flags, + virErrorPtr err); + +int +virDomainMigrateSetCompressionCacheWrapper(virDomainPtr domain, + unsigned long long cacheSize, + unsigned int flags, + virErrorPtr err); + +int +virDomainMigrateSetMaxDowntimeWrapper(virDomainPtr domain, + unsigned long long downtime, + unsigned int flags, + virErrorPtr err); + +int +virDomainMigrateSetMaxSpeedWrapper(virDomainPtr domain, + unsigned long bandwidth, + unsigned int flags, + virErrorPtr err); + +int +virDomainMigrateStartPostCopyWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +int +virDomainMigrateToURIWrapper(virDomainPtr domain, + const char *duri, + unsigned long flags, + const char *dname, + unsigned long bandwidth, + virErrorPtr err); + +int +virDomainMigrateToURI2Wrapper(virDomainPtr domain, + const char *dconnuri, + const char *miguri, + const char *dxml, + unsigned long flags, + const char *dname, + unsigned long bandwidth, + virErrorPtr err); + +int +virDomainMigrateToURI3Wrapper(virDomainPtr domain, + const char *dconnuri, + virTypedParameterPtr params, + unsigned int nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainOpenChannelWrapper(virDomainPtr dom, + const char *name, + virStreamPtr st, + unsigned int flags, + virErrorPtr err); + +int +virDomainOpenConsoleWrapper(virDomainPtr dom, + const char *dev_name, + virStreamPtr st, + unsigned int flags, + virErrorPtr err); + +int +virDomainOpenGraphicsWrapper(virDomainPtr dom, + unsigned int idx, + int fd, + unsigned int flags, + virErrorPtr err); + +int +virDomainOpenGraphicsFDWrapper(virDomainPtr dom, + unsigned int idx, + unsigned int flags, + virErrorPtr err); + +int +virDomainPMSuspendForDurationWrapper(virDomainPtr dom, + unsigned int target, + unsigned long long duration, + unsigned int flags, + virErrorPtr err); + +int +virDomainPMWakeupWrapper(virDomainPtr dom, + unsigned int flags, + virErrorPtr err); + +int +virDomainPinEmulatorWrapper(virDomainPtr domain, + unsigned char *cpumap, + int maplen, + unsigned int flags, + virErrorPtr err); + int virDomainPinIOThreadWrapper(virDomainPtr domain, unsigned int iothread_id, unsigned char *cpumap, int maplen, - unsigned int flags); + unsigned int flags, + virErrorPtr err); int -virDomainAddIOThreadWrapper(virDomainPtr domain, - unsigned int iothread_id, - unsigned int flags); +virDomainPinVcpuWrapper(virDomainPtr domain, + unsigned int vcpu, + unsigned char *cpumap, + int maplen, + virErrorPtr err); int -virDomainDelIOThreadWrapper(virDomainPtr domain, - unsigned int iothread_id, - unsigned int flags); +virDomainPinVcpuFlagsWrapper(virDomainPtr domain, + unsigned int vcpu, + unsigned char *cpumap, + int maplen, + unsigned int flags, + virErrorPtr err); int -virDomainSetUserPasswordWrapper(virDomainPtr dom, - const char *user, - const char *password, - unsigned int flags); +virDomainRebootWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +int +virDomainRefWrapper(virDomainPtr domain, + virErrorPtr err); int virDomainRenameWrapper(virDomainPtr dom, const char *new_name, - unsigned int flags); + unsigned int flags, + virErrorPtr err); int -virDomainGetPerfEventsWrapper(virDomainPtr dom, - virTypedParameterPtr *params, - int *nparams, - unsigned int flags); +virDomainResetWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); int -virDomainSetPerfEventsWrapper(virDomainPtr dom, - virTypedParameterPtr params, - int nparams, - unsigned int flags); +virDomainResumeWrapper(virDomainPtr domain, + virErrorPtr err); int -virDomainMigrateStartPostCopyWrapper(virDomainPtr domain, - unsigned int flags); +virDomainSaveWrapper(virDomainPtr domain, + const char *to, + virErrorPtr err); int -virDomainGetGuestVcpusWrapper(virDomainPtr domain, - virTypedParameterPtr *params, - unsigned int *nparams, - unsigned int flags); +virDomainSaveFlagsWrapper(virDomainPtr domain, + const char *to, + const char *dxml, + unsigned int flags, + virErrorPtr err); + +char * +virDomainScreenshotWrapper(virDomainPtr domain, + virStreamPtr stream, + unsigned int screen, + unsigned int flags, + virErrorPtr err); int -virDomainSetGuestVcpusWrapper(virDomainPtr domain, - const char *cpumap, - int state, - unsigned int flags); +virDomainSendKeyWrapper(virDomainPtr domain, + unsigned int codeset, + unsigned int holdtime, + unsigned int *keycodes, + int nkeycodes, + unsigned int flags, + virErrorPtr err); int -virDomainSetVcpuWrapper(virDomainPtr domain, - const char *cpumap, - int state, - unsigned int flags); +virDomainSendProcessSignalWrapper(virDomainPtr domain, + long long pid_value, + unsigned int signum, + unsigned int flags, + virErrorPtr err); + +int +virDomainSetAutostartWrapper(virDomainPtr domain, + int autostart, + virErrorPtr err); + +int +virDomainSetBlkioParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainSetBlockIoTuneWrapper(virDomainPtr dom, + const char *disk, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err); int virDomainSetBlockThresholdWrapper(virDomainPtr domain, const char *dev, unsigned long long threshold, - unsigned int flags); + unsigned int flags, + virErrorPtr err); int -virDomainMigrateGetMaxDowntimeWrapper(virDomainPtr domain, - unsigned long long *downtime, - unsigned int flags); - -char * -virDomainManagedSaveGetXMLDescWrapper(virDomainPtr domain, - unsigned int flags); +virDomainSetGuestVcpusWrapper(virDomainPtr domain, + const char *cpumap, + int state, + unsigned int flags, + virErrorPtr err); int -virDomainManagedSaveDefineXMLWrapper(virDomainPtr domain, - const char *dxml, - unsigned int flags); +virDomainSetInterfaceParametersWrapper(virDomainPtr domain, + const char *device, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err); int virDomainSetLifecycleActionWrapper(virDomainPtr domain, unsigned int type, unsigned int action, - unsigned int flags); + unsigned int flags, + virErrorPtr err); int -virDomainDetachDeviceAliasWrapper(virDomainPtr domain, - const char *alias, - unsigned int flags); +virDomainSetMaxMemoryWrapper(virDomainPtr domain, + unsigned long memory, + virErrorPtr err); int -virDomainGetLaunchSecurityInfoWrapper(virDomainPtr domain, - virTypedParameterPtr *params, - int *nparams, - unsigned int flags); +virDomainSetMemoryWrapper(virDomainPtr domain, + unsigned long memory, + virErrorPtr err); + +int +virDomainSetMemoryFlagsWrapper(virDomainPtr domain, + unsigned long memory, + unsigned int flags, + virErrorPtr err); + +int +virDomainSetMemoryParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainSetMemoryStatsPeriodWrapper(virDomainPtr domain, + int period, + unsigned int flags, + virErrorPtr err); + +int +virDomainSetMetadataWrapper(virDomainPtr domain, + int type, + const char *metadata, + const char *key, + const char *uri, + unsigned int flags, + virErrorPtr err); + +int +virDomainSetNumaParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainSetPerfEventsWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainSetSchedulerParametersWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int nparams, + virErrorPtr err); + +int +virDomainSetSchedulerParametersFlagsWrapper(virDomainPtr domain, + virTypedParameterPtr params, + int nparams, + unsigned int flags, + virErrorPtr err); + +int +virDomainSetTimeWrapper(virDomainPtr dom, + long long seconds, + unsigned int nseconds, + unsigned int flags, + virErrorPtr err); + +int +virDomainSetUserPasswordWrapper(virDomainPtr dom, + const char *user, + const char *password, + unsigned int flags, + virErrorPtr err); + +int +virDomainSetVcpuWrapper(virDomainPtr domain, + const char *vcpumap, + int state, + unsigned int flags, + virErrorPtr err); + +int +virDomainSetVcpusWrapper(virDomainPtr domain, + unsigned int nvcpus, + virErrorPtr err); + +int +virDomainSetVcpusFlagsWrapper(virDomainPtr domain, + unsigned int nvcpus, + unsigned int flags, + virErrorPtr err); + +int +virDomainShutdownWrapper(virDomainPtr domain, + virErrorPtr err); + +int +virDomainShutdownFlagsWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +virDomainSnapshotPtr +virDomainSnapshotCreateXMLWrapper(virDomainPtr domain, + const char *xmlDesc, + unsigned int flags, + virErrorPtr err); + +virDomainSnapshotPtr +virDomainSnapshotCurrentWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +int +virDomainSnapshotListNamesWrapper(virDomainPtr domain, + char **names, + int nameslen, + unsigned int flags, + virErrorPtr err); + +virDomainSnapshotPtr +virDomainSnapshotLookupByNameWrapper(virDomainPtr domain, + const char *name, + unsigned int flags, + virErrorPtr err); + +int +virDomainSnapshotNumWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +int +virDomainSuspendWrapper(virDomainPtr domain, + virErrorPtr err); + +int +virDomainUndefineWrapper(virDomainPtr domain, + virErrorPtr err); + +int +virDomainUndefineFlagsWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err); + +int +virDomainUpdateDeviceFlagsWrapper(virDomainPtr domain, + const char *xml, + unsigned int flags, + virErrorPtr err); + #endif /* LIBVIRT_GO_DOMAIN_WRAPPER_H__ */ -- 2.17.1

Create wrapper functions for each qemu 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é <berrange@redhat.com> --- qemu.go | 31 ++++++++++--------- qemu_wrapper.go | 79 ++++++++++++++++++++++++++++++++++++++++++++----- qemu_wrapper.h | 33 +++++++++++++++++---- 3 files changed, 115 insertions(+), 28 deletions(-) diff --git a/qemu.go b/qemu.go index 3631b00..dd4f258 100644 --- a/qemu.go +++ b/qemu.go @@ -81,10 +81,11 @@ func (d *Domain) QemuMonitorCommand(command string, flags DomainQemuMonitorComma var cResult *C.char cCommand := C.CString(command) defer C.free(unsafe.Pointer(cCommand)) - result := C.virDomainQemuMonitorCommand(d.ptr, cCommand, &cResult, C.uint(flags)) + var err C.virError + result := C.virDomainQemuMonitorCommandWrapper(d.ptr, cCommand, &cResult, C.uint(flags), &err) if result != 0 { - return "", GetLastError() + return "", makeError(&err) } rstring := C.GoString(cResult) @@ -95,10 +96,11 @@ func (d *Domain) QemuMonitorCommand(command string, flags DomainQemuMonitorComma func (d *Domain) QemuAgentCommand(command string, timeout DomainQemuAgentCommandTimeout, flags uint32) (string, error) { cCommand := C.CString(command) defer C.free(unsafe.Pointer(cCommand)) - result := C.virDomainQemuAgentCommand(d.ptr, cCommand, C.int(timeout), C.uint(flags)) + var err C.virError + result := C.virDomainQemuAgentCommandWrapper(d.ptr, cCommand, C.int(timeout), C.uint(flags), &err) if result == nil { - return "", GetLastError() + return "", makeError(&err) } rstring := C.GoString(result) @@ -107,10 +109,10 @@ func (d *Domain) QemuAgentCommand(command string, timeout DomainQemuAgentCommand } func (c *Connect) DomainQemuAttach(pid uint32, flags uint32) (*Domain, error) { - - ptr := C.virDomainQemuAttach(c.ptr, C.uint(pid), C.uint(flags)) + var err C.virError + ptr := C.virDomainQemuAttachWrapper(c.ptr, C.uint(pid), C.uint(flags), &err) if ptr == nil { - return nil, GetLastError() + return nil, makeError(&err) } return &Domain{ptr: ptr}, nil } @@ -156,19 +158,18 @@ func (c *Connect) DomainQemuMonitorEventRegister(dom *Domain, event string, call defer C.free(unsafe.Pointer(cEvent)) goCallBackId := registerCallbackId(callback) - callbackPtr := unsafe.Pointer(C.domainQemuMonitorEventCallbackHelper) var cdom C.virDomainPtr if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainQemuMonitorEventRegisterWrapper(c.ptr, cdom, cEvent, - C.virConnectDomainQemuMonitorEventCallback(callbackPtr), C.long(goCallBackId), - C.uint(flags)) - if ret == -1 { + C.uint(flags), &err) + if ret < 0 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -179,8 +180,10 @@ func (c *Connect) DomainQemuEventDeregister(callbackId int) error { } // Deregister the callback - if i := int(C.virConnectDomainQemuMonitorEventDeregisterWrapper(c.ptr, C.int(callbackId))); i != 0 { - return GetLastError() + var err C.virError + ret := int(C.virConnectDomainQemuMonitorEventDeregisterWrapper(c.ptr, C.int(callbackId), &err)) + if ret < 0 { + return makeError(&err) } return nil } diff --git a/qemu_wrapper.go b/qemu_wrapper.go index 1dda84d..20089d2 100644 --- a/qemu_wrapper.go +++ b/qemu_wrapper.go @@ -45,26 +45,89 @@ void domainQemuMonitorEventCallbackHelper(virConnectPtr c, virDomainPtr d, domainQemuMonitorEventCallback(c, d, event, secs, micros, details, (int)(intptr_t)data); } -int virConnectDomainQemuMonitorEventRegisterWrapper(virConnectPtr c, virDomainPtr d, - const char *event, virConnectDomainQemuMonitorEventCallback cb, - long goCallbackId, unsigned int flags) { + +int +virConnectDomainQemuMonitorEventDeregisterWrapper(virConnectPtr conn, + int callbackID, + virErrorPtr err) +{ #if LIBVIR_VERSION_NUMBER < 1002003 assert(0); // Caller should have checked version #else - void* id = (void*)goCallbackId; - return virConnectDomainQemuMonitorEventRegister(c, d, event, cb, id, freeGoCallbackHelper, flags); + int ret = virConnectDomainQemuMonitorEventDeregister(conn, callbackID); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virConnectDomainQemuMonitorEventDeregisterWrapper(virConnectPtr conn, - int callbackID) + +int +virConnectDomainQemuMonitorEventRegisterWrapper(virConnectPtr conn, + virDomainPtr dom, + const char *event, + long goCallbackId, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 1002003 assert(0); // Caller should have checked version #else - return virConnectDomainQemuMonitorEventDeregister(conn, callbackID); + void *id = (void*)goCallbackId; + int ret = virConnectDomainQemuMonitorEventRegister(conn, dom, event, domainQemuMonitorEventCallbackHelper, + id, freeGoCallbackHelper, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } + +char * +virDomainQemuAgentCommandWrapper(virDomainPtr domain, + const char *cmd, + int timeout, + unsigned int flags, + virErrorPtr err) +{ + char * ret = virDomainQemuAgentCommand(domain, cmd, timeout, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +virDomainPtr +virDomainQemuAttachWrapper(virConnectPtr conn, + unsigned int pid_value, + unsigned int flags, + virErrorPtr err) +{ + virDomainPtr ret = virDomainQemuAttach(conn, pid_value, flags); + if (!ret) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainQemuMonitorCommandWrapper(virDomainPtr domain, + const char *cmd, + char **result, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainQemuMonitorCommand(domain, cmd, result, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + */ import "C" diff --git a/qemu_wrapper.h b/qemu_wrapper.h index e365fbd..df389c4 100644 --- a/qemu_wrapper.h +++ b/qemu_wrapper.h @@ -42,16 +42,37 @@ domainQemuMonitorEventCallbackHelper(virConnectPtr c, void *data); int -virConnectDomainQemuMonitorEventRegisterWrapper(virConnectPtr c, - virDomainPtr d, +virConnectDomainQemuMonitorEventDeregisterWrapper(virConnectPtr conn, + int callbackID, + virErrorPtr err); + +int +virConnectDomainQemuMonitorEventRegisterWrapper(virConnectPtr conn, + virDomainPtr dom, const char *event, - virConnectDomainQemuMonitorEventCallback cb, long goCallbackId, - unsigned int flags); + unsigned int flags, + virErrorPtr err); + +char * +virDomainQemuAgentCommandWrapper(virDomainPtr domain, + const char *cmd, + int timeout, + unsigned int flags, + virErrorPtr err); + +virDomainPtr +virDomainQemuAttachWrapper(virConnectPtr conn, + unsigned int pid_value, + unsigned int flags, + virErrorPtr err); int -virConnectDomainQemuMonitorEventDeregisterWrapper(virConnectPtr conn, - int callbackID); +virDomainQemuMonitorCommandWrapper(virDomainPtr domain, + const char *cmd, + char **result, + unsigned int flags, + virErrorPtr err); #endif /* LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ */ -- 2.17.1

Create wrapper functions for each lxc 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é <berrange@redhat.com> --- lxc.go | 20 ++++++++++------- lxc_wrapper.go | 58 +++++++++++++++++++++++++++++++++++++++++++++++--- lxc_wrapper.h | 26 +++++++++++++++++++++- 3 files changed, 92 insertions(+), 12 deletions(-) diff --git a/lxc.go b/lxc.go index ec685b8..56ab28a 100644 --- a/lxc.go +++ b/lxc.go @@ -47,9 +47,10 @@ import ( func (d *Domain) LxcOpenNamespace(flags uint32) ([]os.File, error) { var cfdlist *C.int - ret := C.virDomainLxcOpenNamespace(d.ptr, &cfdlist, C.uint(flags)) + var err C.virError + ret := C.virDomainLxcOpenNamespaceWrapper(d.ptr, &cfdlist, C.uint(flags), &err) if ret == -1 { - return []os.File{}, GetLastError() + return []os.File{}, makeError(&err) } fdlist := make([]os.File, ret) for i := 0; i < int(ret); i++ { @@ -69,9 +70,10 @@ func (d *Domain) LxcEnterNamespace(fdlist []os.File, flags uint32) ([]os.File, e cfdlist[i] = C.int(fdlist[i].Fd()) } - ret := C.virDomainLxcEnterNamespace(d.ptr, C.uint(len(fdlist)), &cfdlist[0], &ncoldfdlist, &coldfdlist, C.uint(flags)) + var err C.virError + ret := C.virDomainLxcEnterNamespaceWrapper(d.ptr, C.uint(len(fdlist)), &cfdlist[0], &ncoldfdlist, &coldfdlist, C.uint(flags), &err) if ret == -1 { - return []os.File{}, GetLastError() + return []os.File{}, makeError(&err) } oldfdlist := make([]os.File, ncoldfdlist) for i := 0; i < int(ncoldfdlist); i++ { @@ -119,9 +121,10 @@ func DomainLxcEnterSecurityLabel(model *NodeSecurityModel, label *SecurityLabel, clabel.enforcing = 0 } - ret := C.virDomainLxcEnterSecurityLabel(&cmodel, &clabel, &coldlabel, C.uint(flags)) + var err C.virError + ret := C.virDomainLxcEnterSecurityLabelWrapper(&cmodel, &clabel, &coldlabel, C.uint(flags), &err) if ret == -1 { - return nil, GetLastError() + return nil, makeError(&err) } var oldlabel SecurityLabel @@ -141,10 +144,11 @@ func (d *Domain) DomainLxcEnterCGroup(flags uint32) error { return GetNotImplementedError("virDomainLxcEnterCGroup") } - ret := C.virDomainLxcEnterCGroupWrapper(d.ptr, C.uint(flags)) + var err C.virError + ret := C.virDomainLxcEnterCGroupWrapper(d.ptr, C.uint(flags), &err) if ret == -1 { - return GetLastError() + return makeError(&err) } return nil diff --git a/lxc_wrapper.go b/lxc_wrapper.go index 0968870..fa3d910 100644 --- a/lxc_wrapper.go +++ b/lxc_wrapper.go @@ -34,16 +34,68 @@ package libvirt #include <assert.h> #include "lxc_wrapper.h" -int virDomainLxcEnterCGroupWrapper(virDomainPtr domain, - unsigned int flags) +int +virDomainLxcEnterCGroupWrapper(virDomainPtr domain, + unsigned int flags, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 2000000 assert(0); // Caller should have checked version #else - return virDomainLxcEnterCGroup(domain, flags); + int ret = virDomainLxcEnterCGroup(domain, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } +int +virDomainLxcEnterNamespaceWrapper(virDomainPtr domain, + unsigned int nfdlist, + int *fdlist, + unsigned int *noldfdlist, + int **oldfdlist, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainLxcEnterNamespace(domain, nfdlist, fdlist, noldfdlist, oldfdlist, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainLxcEnterSecurityLabelWrapper(virSecurityModelPtr model, + virSecurityLabelPtr label, + virSecurityLabelPtr oldlabel, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainLxcEnterSecurityLabel(model, label, oldlabel, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virDomainLxcOpenNamespaceWrapper(virDomainPtr domain, + int **fdlist, + unsigned int flags, + virErrorPtr err) +{ + int ret = virDomainLxcOpenNamespace(domain, fdlist, flags); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + */ import "C" diff --git a/lxc_wrapper.h b/lxc_wrapper.h index 22f2d55..b3afd6e 100644 --- a/lxc_wrapper.h +++ b/lxc_wrapper.h @@ -31,9 +31,33 @@ #include <libvirt/libvirt-lxc.h> #include <libvirt/virterror.h> + int virDomainLxcEnterCGroupWrapper(virDomainPtr domain, - unsigned int flags); + unsigned int flags, + virErrorPtr err); + +int +virDomainLxcEnterNamespaceWrapper(virDomainPtr domain, + unsigned int nfdlist, + int *fdlist, + unsigned int *noldfdlist, + int **oldfdlist, + unsigned int flags, + virErrorPtr err); + +int +virDomainLxcEnterSecurityLabelWrapper(virSecurityModelPtr model, + virSecurityLabelPtr label, + virSecurityLabelPtr oldlabel, + unsigned int flags, + virErrorPtr err); + +int +virDomainLxcOpenNamespaceWrapper(virDomainPtr domain, + int **fdlist, + unsigned int flags, + virErrorPtr err); #endif /* LIBVIRT_GO_LXC_COMPAT_H__ */ -- 2.17.1

Create wrapper functions for each events 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é <berrange@redhat.com> --- domain_events.go | 131 ++++++++++++++++++++------------- domain_events_wrapper.go | 33 +++++++-- domain_events_wrapper.h | 7 +- events.go | 40 +++++++--- events_wrapper.go | 83 ++++++++++++++++++--- events_wrapper.h | 35 ++++++--- network_events.go | 11 ++- network_events_wrapper.go | 26 +++++-- network_events_wrapper.h | 13 +--- node_device_events.go | 16 ++-- node_device_events_wrapper.go | 31 ++++++-- node_device_events_wrapper.h | 6 +- secret_events.go | 16 ++-- secret_events_wrapper.go | 27 +++++-- secret_events_wrapper.h | 6 +- storage_pool_events.go | 16 ++-- storage_pool_events_wrapper.go | 31 ++++++-- storage_pool_events_wrapper.h | 6 +- 18 files changed, 382 insertions(+), 152 deletions(-) diff --git a/domain_events.go b/domain_events.go index 68dc301..fe46c5e 100644 --- a/domain_events.go +++ b/domain_events.go @@ -966,13 +966,14 @@ func (c *Connect) DomainEventLifecycleRegister(dom *Domain, callback DomainEvent if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_LIFECYCLE, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -985,13 +986,14 @@ func (c *Connect) DomainEventRebootRegister(dom *Domain, callback DomainEventGen if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_REBOOT, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1004,13 +1006,14 @@ func (c *Connect) DomainEventRTCChangeRegister(dom *Domain, callback DomainEvent if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_RTC_CHANGE, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1023,13 +1026,14 @@ func (c *Connect) DomainEventWatchdogRegister(dom *Domain, callback DomainEventW if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_WATCHDOG, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1042,13 +1046,14 @@ func (c *Connect) DomainEventIOErrorRegister(dom *Domain, callback DomainEventIO if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_IO_ERROR, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1061,13 +1066,14 @@ func (c *Connect) DomainEventGraphicsRegister(dom *Domain, callback DomainEventG if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_GRAPHICS, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1080,13 +1086,14 @@ func (c *Connect) DomainEventIOErrorReasonRegister(dom *Domain, callback DomainE if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1099,13 +1106,14 @@ func (c *Connect) DomainEventControlErrorRegister(dom *Domain, callback DomainEv if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_CONTROL_ERROR, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1118,13 +1126,14 @@ func (c *Connect) DomainEventBlockJobRegister(dom *Domain, callback DomainEventB if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_BLOCK_JOB, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1137,13 +1146,14 @@ func (c *Connect) DomainEventDiskChangeRegister(dom *Domain, callback DomainEven if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_DISK_CHANGE, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1156,13 +1166,14 @@ func (c *Connect) DomainEventTrayChangeRegister(dom *Domain, callback DomainEven if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_TRAY_CHANGE, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1175,13 +1186,14 @@ func (c *Connect) DomainEventPMWakeupRegister(dom *Domain, callback DomainEventP if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_PMWAKEUP, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1194,13 +1206,14 @@ func (c *Connect) DomainEventPMSuspendRegister(dom *Domain, callback DomainEvent if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_PMSUSPEND, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1213,13 +1226,14 @@ func (c *Connect) DomainEventBalloonChangeRegister(dom *Domain, callback DomainE if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1232,13 +1246,14 @@ func (c *Connect) DomainEventPMSuspendDiskRegister(dom *Domain, callback DomainE if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1251,13 +1266,14 @@ func (c *Connect) DomainEventDeviceRemovedRegister(dom *Domain, callback DomainE if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1270,13 +1286,14 @@ func (c *Connect) DomainEventBlockJob2Register(dom *Domain, callback DomainEvent if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1289,13 +1306,14 @@ func (c *Connect) DomainEventTunableRegister(dom *Domain, callback DomainEventTu if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_TUNABLE, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1308,13 +1326,14 @@ func (c *Connect) DomainEventAgentLifecycleRegister(dom *Domain, callback Domain if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1327,13 +1346,14 @@ func (c *Connect) DomainEventDeviceAddedRegister(dom *Domain, callback DomainEve if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_DEVICE_ADDED, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1346,13 +1366,14 @@ func (c *Connect) DomainEventMigrationIterationRegister(dom *Domain, callback Do if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1365,13 +1386,14 @@ func (c *Connect) DomainEventJobCompletedRegister(dom *Domain, callback DomainEv if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_JOB_COMPLETED, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1384,13 +1406,14 @@ func (c *Connect) DomainEventDeviceRemovalFailedRegister(dom *Domain, callback D if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1403,13 +1426,14 @@ func (c *Connect) DomainEventMetadataChangeRegister(dom *Domain, callback Domain if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_METADATA_CHANGE, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -1422,21 +1446,24 @@ func (c *Connect) DomainEventBlockThresholdRegister(dom *Domain, callback Domain if dom != nil { cdom = dom.ptr } + var err C.virError ret := C.virConnectDomainEventRegisterAnyWrapper(c.ptr, cdom, C.VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD, C.virConnectDomainEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } func (c *Connect) DomainEventDeregister(callbackId int) error { // Deregister the callback - if i := int(C.virConnectDomainEventDeregisterAny(c.ptr, C.int(callbackId))); i != 0 { - return GetLastError() + var err C.virError + ret := int(C.virConnectDomainEventDeregisterAnyWrapper(c.ptr, C.int(callbackId), &err)) + if ret < 0 { + return makeError(&err) } return nil } diff --git a/domain_events_wrapper.go b/domain_events_wrapper.go index 07b9418..5d74fee 100644 --- a/domain_events_wrapper.go +++ b/domain_events_wrapper.go @@ -225,12 +225,35 @@ void domainEventBlockThresholdCallbackHelper(virConnectPtr conn, domainEventBlockThresholdCallback(conn, dom, dev, path, threshold, excess, (int)(intptr_t)opaque); } -int virConnectDomainEventRegisterAnyWrapper(virConnectPtr c, virDomainPtr d, - int eventID, virConnectDomainEventGenericCallback cb, - long goCallbackId) { - void* id = (void*)goCallbackId; - return virConnectDomainEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); +int +virConnectDomainEventRegisterAnyWrapper(virConnectPtr c, + virDomainPtr d, + int eventID, + virConnectDomainEventGenericCallback cb, + long goCallbackId, + virErrorPtr err) +{ + void *id = (void*)goCallbackId; + int ret = virConnectDomainEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virConnectDomainEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID, + virErrorPtr err) +{ + int ret = virConnectDomainEventDeregisterAny(conn, callbackID); + if (ret < 0) { + virCopyLastError(err); + } + return ret; } + */ import "C" diff --git a/domain_events_wrapper.h b/domain_events_wrapper.h index 4016497..1670acd 100644 --- a/domain_events_wrapper.h +++ b/domain_events_wrapper.h @@ -196,7 +196,12 @@ virConnectDomainEventRegisterAnyWrapper(virConnectPtr c, virDomainPtr d, int eventID, virConnectDomainEventGenericCallback cb, - long goCallbackId); + long goCallbackId, + virErrorPtr err); +int +virConnectDomainEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID, + virErrorPtr err); #endif /* LIBVIRT_GO_DOMAIN_EVENTS_WRAPPER_H__ */ diff --git a/events.go b/events.go index 217b033..bf2c1f4 100644 --- a/events.go +++ b/events.go @@ -44,16 +44,18 @@ const ( // See also https://libvirt.org/html/libvirt-libvirt-event.html#virEventRegisterDefaultI... func EventRegisterDefaultImpl() error { - if i := int(C.virEventRegisterDefaultImpl()); i != 0 { - return GetLastError() + var err C.virError + if i := int(C.virEventRegisterDefaultImplWrapper(&err)); i != 0 { + return makeError(&err) } return nil } // See also https://libvirt.org/html/libvirt-libvirt-event.html#virEventRunDefaultImpl func EventRunDefaultImpl() error { - if i := int(C.virEventRunDefaultImpl()); i != 0 { - return GetLastError() + var err C.virError + if i := int(C.virEventRunDefaultImplWrapper(&err)); i != 0 { + return makeError(&err) } return nil } @@ -76,9 +78,10 @@ func eventHandleCallback(watch int, fd int, events int, callbackID int) { func EventAddHandle(fd int, events EventHandleType, callback EventHandleCallback) (int, error) { callbackID := registerCallbackId(callback) - ret := C.virEventAddHandleWrapper((C.int)(fd), (C.int)(events), (C.int)(callbackID)) + var err C.virError + ret := C.virEventAddHandleWrapper((C.int)(fd), (C.int)(events), (C.int)(callbackID), &err) if ret == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil @@ -90,8 +93,14 @@ func EventUpdateHandle(watch int, events EventHandleType) { } // See also https://libvirt.org/html/libvirt-libvirt-event.html#virEventRemoveHandle -func EventRemoveHandle(watch int) { - C.virEventRemoveHandle((C.int)(watch)) +func EventRemoveHandle(watch int) error { + var err C.virError + ret := C.virEventRemoveHandleWrapper((C.int)(watch), &err) + if ret < 0 { + return makeError(&err) + } + + return nil } type EventTimeoutCallback func(timer int) @@ -112,9 +121,10 @@ func eventTimeoutCallback(timer int, callbackID int) { func EventAddTimeout(freq int, callback EventTimeoutCallback) (int, error) { callbackID := registerCallbackId(callback) - ret := C.virEventAddTimeoutWrapper((C.int)(freq), (C.int)(callbackID)) + var err C.virError + ret := C.virEventAddTimeoutWrapper((C.int)(freq), (C.int)(callbackID), &err) if ret == -1 { - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil @@ -126,8 +136,14 @@ func EventUpdateTimeout(timer int, freq int) { } // See also https://libvirt.org/html/libvirt-libvirt-event.html#virEventRemoveTimeout -func EventRemoveTimeout(timer int) { - C.virEventRemoveTimeout((C.int)(timer)) +func EventRemoveTimeout(timer int) error { + var err C.virError + ret := C.virEventRemoveTimeoutWrapper((C.int)(timer), &err) + if ret < 0 { + return makeError(&err) + } + + return nil } type EventHandleCallbackInfo struct { diff --git a/events_wrapper.go b/events_wrapper.go index ffcffb9..6814589 100644 --- a/events_wrapper.go +++ b/events_wrapper.go @@ -39,11 +39,6 @@ static void eventAddHandleHelper(int watch, int fd, int events, void *opaque) eventHandleCallback(watch, fd, events, (int)(intptr_t)opaque); } -int virEventAddHandleWrapper(int fd, int events, int callbackID) -{ - return virEventAddHandle(fd, events, eventAddHandleHelper, (void *)(intptr_t)callbackID, NULL); -} - void eventTimeoutCallback(int timer, int callbackID); static void eventAddTimeoutHelper(int timer, void *opaque) @@ -51,11 +46,6 @@ static void eventAddTimeoutHelper(int timer, void *opaque) eventTimeoutCallback(timer, (int)(intptr_t)opaque); } -int virEventAddTimeoutWrapper(int freq, int callbackID) -{ - return virEventAddTimeout(freq, eventAddTimeoutHelper, (void *)(intptr_t)callbackID, NULL); -} - int eventAddHandleFunc(int fd, int event, uintptr_t callback, uintptr_t opaque, uintptr_t freecb); void eventUpdateHandleFunc(int watch, int event); int eventRemoveHandleFunc(int watch); @@ -126,5 +116,78 @@ void eventTimeoutCallbackFree(uintptr_t callback, uintptr_t opaque) } +int +virEventAddHandleWrapper(int fd, + int events, + int callbackID, + virErrorPtr err) +{ + int ret = virEventAddHandle(fd, events, eventAddHandleHelper, (void *)(intptr_t)callbackID, NULL); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virEventAddTimeoutWrapper(int timeout, + int callbackID, + virErrorPtr err) +{ + int ret = virEventAddTimeout(timeout, eventAddTimeoutHelper, (void *)(intptr_t)callbackID, NULL); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virEventRegisterDefaultImplWrapper(virErrorPtr err) +{ + int ret = virEventRegisterDefaultImpl(); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virEventRemoveHandleWrapper(int watch, + virErrorPtr err) +{ + int ret = virEventRemoveHandle(watch); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virEventRemoveTimeoutWrapper(int timer, + virErrorPtr err) +{ + int ret = virEventRemoveTimeout(timer); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + +int +virEventRunDefaultImplWrapper(virErrorPtr err) +{ + int ret = virEventRunDefaultImpl(); + if (ret < 0) { + virCopyLastError(err); + } + return ret; +} + + */ import "C" diff --git a/events_wrapper.h b/events_wrapper.h index 9e9607c..62ea9c8 100644 --- a/events_wrapper.h +++ b/events_wrapper.h @@ -30,15 +30,6 @@ #include <libvirt/libvirt.h> #include <libvirt/virterror.h> -int -virEventAddHandleWrapper(int fd, - int events, - int callbackID); - -int -virEventAddTimeoutWrapper(int freq, - int callbackID); - void virEventRegisterImplWrapper(void); @@ -62,4 +53,30 @@ void eventTimeoutCallbackFree(uintptr_t callback, uintptr_t opaque); +int +virEventAddHandleWrapper(int fd, + int events, + int callbackID, + virErrorPtr err); + +int +virEventAddTimeoutWrapper(int timeout, + int callbackID, + virErrorPtr err); + +int +virEventRegisterDefaultImplWrapper(virErrorPtr err); + +int +virEventRemoveHandleWrapper(int watch, + virErrorPtr err); + +int +virEventRemoveTimeoutWrapper(int timer, + virErrorPtr err); + +int +virEventRunDefaultImplWrapper(virErrorPtr err); + + #endif /* LIBVIRT_GO_EVENTS_WRAPPER_H__ */ diff --git a/network_events.go b/network_events.go index 7414608..8ed16d9 100644 --- a/network_events.go +++ b/network_events.go @@ -77,13 +77,14 @@ func (c *Connect) NetworkEventLifecycleRegister(net *Network, callback NetworkEv if net != nil { cnet = net.ptr } + var err C.virError ret := C.virConnectNetworkEventRegisterAnyWrapper(c.ptr, cnet, C.VIR_NETWORK_EVENT_ID_LIFECYCLE, C.virConnectNetworkEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -93,8 +94,10 @@ func (c *Connect) NetworkEventDeregister(callbackId int) error { return GetNotImplementedError("virConnectNetworkEventDeregisterAny") } // Deregister the callback - if i := int(C.virConnectNetworkEventDeregisterAnyWrapper(c.ptr, C.int(callbackId))); i != 0 { - return GetLastError() + var err C.virError + ret := int(C.virConnectNetworkEventDeregisterAnyWrapper(c.ptr, C.int(callbackId), &err)) + if ret < 0 { + return makeError(&err) } return nil } diff --git a/network_events_wrapper.go b/network_events_wrapper.go index a8a5d81..4e424ba 100644 --- a/network_events_wrapper.go +++ b/network_events_wrapper.go @@ -40,24 +40,38 @@ void networkEventLifecycleCallbackHelper(virConnectPtr c, virNetworkPtr d, networkEventLifecycleCallback(c, d, event, detail, (int)(intptr_t)data); } -int virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, virNetworkPtr d, - int eventID, virConnectNetworkEventGenericCallback cb, - long goCallbackId) { +int +virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, + virNetworkPtr d, + int eventID, + virConnectNetworkEventGenericCallback cb, + long goCallbackId, + virErrorPtr err) +{ void* id = (void*)goCallbackId; #if LIBVIR_VERSION_NUMBER < 1002001 assert(0); // Caller should have checked version #else - return virConnectNetworkEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); + int ret = virConnectNetworkEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } int virConnectNetworkEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID) + int callbackID, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 1002001 assert(0); // Caller should have checked version #else - return virConnectNetworkEventDeregisterAny(conn, callbackID); + int ret = virConnectNetworkEventDeregisterAny(conn, callbackID); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } diff --git a/network_events_wrapper.h b/network_events_wrapper.h index 201be64..789837a 100644 --- a/network_events_wrapper.h +++ b/network_events_wrapper.h @@ -43,18 +43,13 @@ virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, virNetworkPtr d, int eventID, virConnectNetworkEventGenericCallback cb, - long goCallbackId); - -int -virConnectNetworkEventRegisterAnyWrapper(virConnectPtr c, - virNetworkPtr d, - int eventID, - virConnectNetworkEventGenericCallback cb, - long goCallbackId); + long goCallbackId, + virErrorPtr err); int virConnectNetworkEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID); + int callbackID, + virErrorPtr err); #endif /* LIBVIRT_GO_NETWORK_EVENTS_WRAPPER_H__ */ diff --git a/node_device_events.go b/node_device_events.go index 5d66687..632c94d 100644 --- a/node_device_events.go +++ b/node_device_events.go @@ -94,13 +94,14 @@ func (c *Connect) NodeDeviceEventLifecycleRegister(device *NodeDevice, callback if device != nil { cdevice = device.ptr } + var err C.virError ret := C.virConnectNodeDeviceEventRegisterAnyWrapper(c.ptr, cdevice, C.VIR_NODE_DEVICE_EVENT_ID_LIFECYCLE, C.virConnectNodeDeviceEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -113,13 +114,14 @@ func (c *Connect) NodeDeviceEventUpdateRegister(device *NodeDevice, callback Nod if device != nil { cdevice = device.ptr } + var err C.virError ret := C.virConnectNodeDeviceEventRegisterAnyWrapper(c.ptr, cdevice, C.VIR_NODE_DEVICE_EVENT_ID_UPDATE, C.virConnectNodeDeviceEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -129,8 +131,10 @@ func (c *Connect) NodeDeviceEventDeregister(callbackId int) error { return GetNotImplementedError("virConnectNodeDeviceEventDeregisterAny") } // Deregister the callback - if i := int(C.virConnectNodeDeviceEventDeregisterAnyWrapper(c.ptr, C.int(callbackId))); i != 0 { - return GetLastError() + var err C.virError + ret := int(C.virConnectNodeDeviceEventDeregisterAnyWrapper(c.ptr, C.int(callbackId), &err)) + if ret < 0 { + return makeError(&err) } return nil } diff --git a/node_device_events_wrapper.go b/node_device_events_wrapper.go index a8b0c93..8b2e624 100644 --- a/node_device_events_wrapper.go +++ b/node_device_events_wrapper.go @@ -46,24 +46,41 @@ void nodeDeviceEventGenericCallbackHelper(virConnectPtr c, virNodeDevicePtr d, v nodeDeviceEventGenericCallback(c, d, (int)(intptr_t)data); } -int virConnectNodeDeviceEventRegisterAnyWrapper(virConnectPtr c, virNodeDevicePtr d, - int eventID, virConnectNodeDeviceEventGenericCallback cb, - long goCallbackId) { + +int +virConnectNodeDeviceEventRegisterAnyWrapper(virConnectPtr c, + virNodeDevicePtr d, + int eventID, + virConnectNodeDeviceEventGenericCallback cb, + long goCallbackId, + virErrorPtr err) +{ void* id = (void*)goCallbackId; #if LIBVIR_VERSION_NUMBER < 2002000 assert(0); // Caller should have checked version #else - return virConnectNodeDeviceEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); + int ret = virConnectNodeDeviceEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virConnectNodeDeviceEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID) + +int +virConnectNodeDeviceEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 2002000 assert(0); // Caller should have checked version #else - return virConnectNodeDeviceEventDeregisterAny(conn, callbackID); + int ret = virConnectNodeDeviceEventDeregisterAny(conn, callbackID); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } diff --git a/node_device_events_wrapper.h b/node_device_events_wrapper.h index a3d014d..fb691d2 100644 --- a/node_device_events_wrapper.h +++ b/node_device_events_wrapper.h @@ -48,11 +48,13 @@ virConnectNodeDeviceEventRegisterAnyWrapper(virConnectPtr c, virNodeDevicePtr d, int eventID, virConnectNodeDeviceEventGenericCallback cb, - long goCallbackId); + long goCallbackId, + virErrorPtr err); int virConnectNodeDeviceEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID); + int callbackID, + virErrorPtr err); #endif /* LIBVIRT_GO_NODE_DEVICE_EVENTS_WRAPPER_H__ */ diff --git a/secret_events.go b/secret_events.go index d24146f..38605ba 100644 --- a/secret_events.go +++ b/secret_events.go @@ -94,13 +94,14 @@ func (c *Connect) SecretEventLifecycleRegister(secret *Secret, callback SecretEv if secret != nil { csecret = secret.ptr } + var err C.virError ret := C.virConnectSecretEventRegisterAnyWrapper(c.ptr, csecret, C.VIR_SECRET_EVENT_ID_LIFECYCLE, C.virConnectSecretEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -116,13 +117,14 @@ func (c *Connect) SecretEventValueChangedRegister(secret *Secret, callback Secre if secret != nil { csecret = secret.ptr } + var err C.virError ret := C.virConnectSecretEventRegisterAnyWrapper(c.ptr, csecret, C.VIR_SECRET_EVENT_ID_VALUE_CHANGED, C.virConnectSecretEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -132,8 +134,10 @@ func (c *Connect) SecretEventDeregister(callbackId int) error { return GetNotImplementedError("virConnectSecretEventDeregisterAny") } // Deregister the callback - if i := int(C.virConnectSecretEventDeregisterAnyWrapper(c.ptr, C.int(callbackId))); i != 0 { - return GetLastError() + var err C.virError + ret := int(C.virConnectSecretEventDeregisterAnyWrapper(c.ptr, C.int(callbackId), &err)) + if ret < 0 { + return makeError(&err) } return nil } diff --git a/secret_events_wrapper.go b/secret_events_wrapper.go index 04b5f4f..a543e7f 100644 --- a/secret_events_wrapper.go +++ b/secret_events_wrapper.go @@ -47,24 +47,39 @@ void secretEventGenericCallbackHelper(virConnectPtr c, virSecretPtr d, secretEventGenericCallback(c, d, (int)(intptr_t)data); } -int virConnectSecretEventRegisterAnyWrapper(virConnectPtr c, virSecretPtr d, - int eventID, virConnectSecretEventGenericCallback cb, - long goCallbackId) { + +int +virConnectSecretEventRegisterAnyWrapper(virConnectPtr c, + virSecretPtr d, + int eventID, + virConnectSecretEventGenericCallback cb, + long goCallbackId, + virErrorPtr err) +{ void* id = (void*)goCallbackId; #if LIBVIR_VERSION_NUMBER < 3000000 assert(0); // Caller should have checked version #else - return virConnectSecretEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); + int ret = virConnectSecretEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } int virConnectSecretEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID) + int callbackID, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 3000000 assert(0); // Caller should have checked version #else - return virConnectSecretEventDeregisterAny(conn, callbackID); + int ret = virConnectSecretEventDeregisterAny(conn, callbackID); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } diff --git a/secret_events_wrapper.h b/secret_events_wrapper.h index bf1c571..5101bc0 100644 --- a/secret_events_wrapper.h +++ b/secret_events_wrapper.h @@ -47,10 +47,12 @@ virConnectSecretEventRegisterAnyWrapper(virConnectPtr c, virSecretPtr d, int eventID, virConnectSecretEventGenericCallback cb, - long goCallbackId); + long goCallbackId, + virErrorPtr err); int virConnectSecretEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID); + int callbackID, + virErrorPtr err); #endif /* LIBVIRT_GO_SECRET_EVENTS_WRAPPER_H__ */ diff --git a/storage_pool_events.go b/storage_pool_events.go index 15fb90b..55c9f4e 100644 --- a/storage_pool_events.go +++ b/storage_pool_events.go @@ -95,13 +95,14 @@ func (c *Connect) StoragePoolEventLifecycleRegister(pool *StoragePool, callback if pool != nil { cpool = pool.ptr } + var err C.virError ret := C.virConnectStoragePoolEventRegisterAnyWrapper(c.ptr, cpool, C.VIR_STORAGE_POOL_EVENT_ID_LIFECYCLE, C.virConnectStoragePoolEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -118,13 +119,14 @@ func (c *Connect) StoragePoolEventRefreshRegister(pool *StoragePool, callback St if pool != nil { cpool = pool.ptr } + var err C.virError ret := C.virConnectStoragePoolEventRegisterAnyWrapper(c.ptr, cpool, C.VIR_STORAGE_POOL_EVENT_ID_REFRESH, C.virConnectStoragePoolEventGenericCallback(callbackPtr), - C.long(goCallBackId)) + C.long(goCallBackId), &err) if ret == -1 { freeCallbackId(goCallBackId) - return 0, GetLastError() + return 0, makeError(&err) } return int(ret), nil } @@ -135,8 +137,10 @@ func (c *Connect) StoragePoolEventDeregister(callbackId int) error { } // Deregister the callback - if i := int(C.virConnectStoragePoolEventDeregisterAnyWrapper(c.ptr, C.int(callbackId))); i != 0 { - return GetLastError() + var err C.virError + ret := int(C.virConnectStoragePoolEventDeregisterAnyWrapper(c.ptr, C.int(callbackId), &err)) + if ret < 0 { + return makeError(&err) } return nil } diff --git a/storage_pool_events_wrapper.go b/storage_pool_events_wrapper.go index df9b092..c551038 100644 --- a/storage_pool_events_wrapper.go +++ b/storage_pool_events_wrapper.go @@ -47,24 +47,41 @@ void storagePoolEventGenericCallbackHelper(virConnectPtr c, virStoragePoolPtr d, storagePoolEventGenericCallback(c, d, (int)(intptr_t)data); } -int virConnectStoragePoolEventRegisterAnyWrapper(virConnectPtr c, virStoragePoolPtr d, - int eventID, virConnectStoragePoolEventGenericCallback cb, - long goCallbackId) { + +int +virConnectStoragePoolEventRegisterAnyWrapper(virConnectPtr c, + virStoragePoolPtr d, + int eventID, + virConnectStoragePoolEventGenericCallback cb, + long goCallbackId, + virErrorPtr err) +{ #if LIBVIR_VERSION_NUMBER < 2000000 assert(0); // Caller should have checked version #else void* id = (void*)goCallbackId; - return virConnectStoragePoolEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); + int ret = virConnectStoragePoolEventRegisterAny(c, d, eventID, cb, id, freeGoCallbackHelper); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } -int virConnectStoragePoolEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID) + +int +virConnectStoragePoolEventDeregisterAnyWrapper(virConnectPtr conn, + int callbackID, + virErrorPtr err) { #if LIBVIR_VERSION_NUMBER < 2000000 assert(0); // Caller shouuld have checked version #else - return virConnectStoragePoolEventDeregisterAny(conn, callbackID); + int ret = virConnectStoragePoolEventDeregisterAny(conn, callbackID); + if (ret < 0) { + virCopyLastError(err); + } + return ret; #endif } diff --git a/storage_pool_events_wrapper.h b/storage_pool_events_wrapper.h index 84dcc8f..7007f1c 100644 --- a/storage_pool_events_wrapper.h +++ b/storage_pool_events_wrapper.h @@ -48,10 +48,12 @@ virConnectStoragePoolEventRegisterAnyWrapper(virConnectPtr c, virStoragePoolPtr d, int eventID, virConnectStoragePoolEventGenericCallback cb, - long goCallbackId); + long goCallbackId, + virErrorPtr err); int virConnectStoragePoolEventDeregisterAnyWrapper(virConnectPtr conn, - int callbackID); + int callbackID, + virErrorPtr err); #endif /* LIBVIRT_GO_STORAGE_POOL_EVENTS_WRAPPER_H__ */ -- 2.17.1

The virGetLastError() function fetches the last reported error from a thread local variable. Goroutines may be arbitrarily switched between OS threads between the libvirt API call and the virGetLastError() call. Thus this API is impossible to use safely and must be removed. All the Go APIs return an error object directly so nothing should need the GetLastError() binding anyway. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- api_test.go | 1 + error.go | 20 -------------------- 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/api_test.go b/api_test.go index a16a1eb..564bdd4 100644 --- a/api_test.go +++ b/api_test.go @@ -68,6 +68,7 @@ var ( /* Only needed at C level */ "virCopyLastError", "virFreeError", + "virGetLastError", "virGetLastErrorMessage", "virGetLastErrorCode", "virGetLastErrorDomain", diff --git a/error.go b/error.go index b8e2900..37fefc1 100644 --- a/error.go +++ b/error.go @@ -594,26 +594,6 @@ func makeError(err *C.virError) Error { return ret } -func GetLastError() Error { - err := C.virGetLastError() - if err == nil { - return Error{ - Code: ERR_OK, - Domain: FROM_NONE, - Message: "Missing error", - Level: ERR_NONE, - } - } - virErr := Error{ - Code: ErrorNumber(err.code), - Domain: ErrorDomain(err.domain), - Message: C.GoString(err.message), - Level: ErrorLevel(err.level), - } - C.virResetError(err) - return virErr -} - func GetNotImplementedError(apiname string) Error { return Error{ Code: ERR_NO_SUPPORT, -- 2.17.1

The GetNotImplementedError() method is only for internal use so should not have a public name. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- connect.go | 24 +++++++++--------- domain.go | 56 +++++++++++++++++++++--------------------- error.go | 2 +- lxc.go | 2 +- network.go | 2 +- network_events.go | 4 +-- node_device_events.go | 4 +-- nwfilter_binding.go | 12 ++++----- qemu.go | 4 +-- secret_events.go | 6 ++--- storage_pool_events.go | 6 ++--- storage_volume.go | 2 +- stream.go | 10 ++++---- 13 files changed, 67 insertions(+), 67 deletions(-) diff --git a/connect.go b/connect.go index 29e4fb0..34a96ed 100644 --- a/connect.go +++ b/connect.go @@ -857,7 +857,7 @@ func (c *Connect) DomainDefineXML(xmlConfig string) (*Domain, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDefineXMLFlags func (c *Connect) DomainDefineXMLFlags(xmlConfig string, flags DomainDefineFlags) (*Domain, error) { if C.LIBVIR_VERSION_NUMBER < 1002012 { - return nil, GetNotImplementedError("virDomainDefineXMLFlags") + return nil, makeNotImplementedError("virDomainDefineXMLFlags") } cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) @@ -1266,7 +1266,7 @@ func (c *Connect) LookupStoragePoolByUUID(uuid []byte) (*StoragePool, error) { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStoragePoolLookupBy... func (c *Connect) LookupStoragePoolByTargetPath(path string) (*StoragePool, error) { if C.LIBVIR_VERSION_NUMBER < 4001000 { - return nil, GetNotImplementedError("virStoragePoolLookupByTargetPath") + return nil, makeNotImplementedError("virStoragePoolLookupByTargetPath") } cPath := C.CString(path) defer C.free(unsafe.Pointer(cPath)) @@ -1335,7 +1335,7 @@ func (c *Connect) LookupNWFilterByUUID(uuid []byte) (*NWFilter, error) { // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virNWFilterBindingLoo... func (c *Connect) LookupNWFilterBindingByPortDev(name string) (*NWFilterBinding, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { - return nil, GetNotImplementedError("virNWFilterBindingLookupByPortDev") + return nil, makeNotImplementedError("virNWFilterBindingLookupByPortDev") } cName := C.CString(name) defer C.free(unsafe.Pointer(cName)) @@ -1555,7 +1555,7 @@ func (c *Connect) ListAllNWFilters(flags uint32) ([]NWFilter, error) { func (c *Connect) ListAllNWFilterBindings(flags uint32) ([]NWFilterBinding, error) { var cList *C.virNWFilterBindingPtr if C.LIBVIR_VERSION_NUMBER < 4005000 { - return []NWFilterBinding{}, GetNotImplementedError("virConnectListAllNWFilterBindings") + return []NWFilterBinding{}, makeNotImplementedError("virConnectListAllNWFilterBindings") } var err C.virError numNWFilters := C.virConnectListAllNWFilterBindingsWrapper(c.ptr, (**C.virNWFilterBindingPtr)(&cList), C.uint(flags), &err) @@ -1675,7 +1675,7 @@ func (c *Connect) InterfaceChangeRollback(flags uint32) error { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virNodeAllocPages func (c *Connect) AllocPages(pageSizes map[int]int64, startCell int, cellCount uint, flags NodeAllocPagesFlags) (int, error) { if C.LIBVIR_VERSION_NUMBER < 1002009 { - return 0, GetNotImplementedError("virNodeAllocPages") + return 0, makeNotImplementedError("virNodeAllocPages") } cpages := make([]C.uint, len(pageSizes)) ccounts := make([]C.ulonglong, len(pageSizes)) @@ -1812,7 +1812,7 @@ func (c *Connect) GetFreeMemory() (uint64, error) { // See also https://libvirt.org/html/libvirt-libvirt-host.html#virNodeGetFreePages func (c *Connect) GetFreePages(pageSizes []uint64, startCell int, maxCells uint, flags uint32) ([]uint64, error) { if C.LIBVIR_VERSION_NUMBER < 1002006 { - return []uint64{}, GetNotImplementedError("virNodeGetFreePages") + return []uint64{}, makeNotImplementedError("virNodeGetFreePages") } cpageSizes := make([]C.uint, len(pageSizes)) ccounts := make([]C.ulonglong, len(pageSizes)*int(maxCells)) @@ -2087,7 +2087,7 @@ func (c *Connect) BaselineCPU(xmlCPUs []string, flags ConnectBaselineCPUFlags) ( // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectBaselineHypervi... func (c *Connect) BaselineHypervisorCPU(emulator string, arch string, machine string, virttype string, xmlCPUs []string, flags ConnectBaselineCPUFlags) (string, error) { if C.LIBVIR_VERSION_NUMBER < 4004000 { - return "", GetNotImplementedError("virConnectBaselineHypervisorCPU") + return "", makeNotImplementedError("virConnectBaselineHypervisorCPU") } var cemulator, carch, cmachine, cvirttype *C.char @@ -2142,7 +2142,7 @@ func (c *Connect) CompareCPU(xmlDesc string, flags ConnectCompareCPUFlags) (CPUC // See also https://libvirt.org/html/libvirt-libvirt-host.html#virConnectCompareHypervis... func (c *Connect) CompareHypervisorCPU(emulator string, arch string, machine string, virttype string, xmlDesc string, flags ConnectCompareCPUFlags) (CPUCompareResult, error) { if C.LIBVIR_VERSION_NUMBER < 4004000 { - return CPU_COMPARE_ERROR, GetNotImplementedError("virConnectCompareHypervisorCPU") + return CPU_COMPARE_ERROR, makeNotImplementedError("virConnectCompareHypervisorCPU") } var cemulator, carch, cmachine, cvirttype *C.char @@ -2238,7 +2238,7 @@ func (c *Connect) GetCPUModelNames(arch string, flags uint32) ([]string, error) // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectGetDomainCapa... func (c *Connect) GetDomainCapabilities(emulatorbin string, arch string, machine string, virttype string, flags uint32) (string, error) { if C.LIBVIR_VERSION_NUMBER < 1002007 { - return "", GetNotImplementedError("virConnectGetDomainCapabilities") + return "", makeNotImplementedError("virConnectGetDomainCapabilities") } var cemulatorbin *C.char if emulatorbin != "" { @@ -2776,7 +2776,7 @@ func getDomainStatsLengthsFieldInfo(params *domainStatsLengths) map[string]typed // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectGetAllDomainS... func (c *Connect) GetAllDomainStats(doms []*Domain, statsTypes DomainStatsTypes, flags ConnectGetAllDomainStatsFlags) ([]DomainStats, error) { if C.LIBVIR_VERSION_NUMBER < 1002008 { - return []DomainStats{}, GetNotImplementedError("virConnectGetAllDomainStats") + return []DomainStats{}, makeNotImplementedError("virConnectGetAllDomainStats") } var ret C.int var cstats *C.virDomainStatsRecordPtr @@ -2953,7 +2953,7 @@ func getNodeSEVFieldInfo(params *NodeSEVParameters) map[string]typedParamsFieldI // See also https://libvirt.org/html/libvirt-libvirt-host.html#virNodeGetSEVInfo func (c *Connect) GetSEVInfo(flags uint32) (*NodeSEVParameters, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { - return nil, GetNotImplementedError("virNodeGetSEVInfo") + return nil, makeNotImplementedError("virNodeGetSEVInfo") } params := &NodeSEVParameters{} @@ -2981,7 +2981,7 @@ func (c *Connect) GetSEVInfo(flags uint32) (*NodeSEVParameters, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virNWFilterBindingCreat... func (c *Connect) NWFilterBindingCreateXML(xmlConfig string, flags uint32) (*NWFilterBinding, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { - return nil, GetNotImplementedError("virNWFilterBindingCreateXML") + return nil, makeNotImplementedError("virNWFilterBindingCreateXML") } cXml := C.CString(string(xmlConfig)) defer C.free(unsafe.Pointer(cXml)) diff --git a/domain.go b/domain.go index 302cdb8..14a6485 100644 --- a/domain.go +++ b/domain.go @@ -1539,7 +1539,7 @@ func (d *Domain) DetachDeviceFlags(xml string, flags DomainDeviceModifyFlags) er // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDetachDeviceAl... func (d *Domain) DetachDeviceAlias(alias string, flags DomainDeviceModifyFlags) error { if C.LIBVIR_VERSION_NUMBER < 4004000 { - return GetNotImplementedError("virDomainDetachDeviceAlias") + return makeNotImplementedError("virDomainDetachDeviceAlias") } cAlias := C.CString(alias) @@ -1924,7 +1924,7 @@ type DomainInterface struct { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainInterfaceAddre... func (d *Domain) ListAllInterfaceAddresses(src DomainInterfaceAddressesSource) ([]DomainInterface, error) { if C.LIBVIR_VERSION_NUMBER < 1002014 { - return []DomainInterface{}, GetNotImplementedError("virDomainInterfaceAddresses") + return []DomainInterface{}, makeNotImplementedError("virDomainInterfaceAddresses") } var cList *C.virDomainInterfacePtr @@ -2089,7 +2089,7 @@ func getBlockCopyParameterFieldInfo(params *DomainBlockCopyParameters) map[strin // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainBlockCopy func (d *Domain) BlockCopy(disk string, destxml string, params *DomainBlockCopyParameters, flags DomainBlockCopyFlags) error { if C.LIBVIR_VERSION_NUMBER < 1002008 { - return GetNotImplementedError("virDomainBlockCopy") + return makeNotImplementedError("virDomainBlockCopy") } cdisk := C.CString(disk) defer C.free(unsafe.Pointer(cdisk)) @@ -2530,7 +2530,7 @@ func (d *Domain) MigrateGetMaxDowntime(flags uint32) (uint64, error) { var downtimeLen C.ulonglong if C.LIBVIR_VERSION_NUMBER < 3007000 { - return 0, GetNotImplementedError("virDomainMigrateGetMaxDowntime") + return 0, makeNotImplementedError("virDomainMigrateGetMaxDowntime") } var err C.virError @@ -2545,7 +2545,7 @@ func (d *Domain) MigrateGetMaxDowntime(flags uint32) (uint64, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainMigrateStartPo... func (d *Domain) MigrateStartPostCopy(flags uint32) error { if C.LIBVIR_VERSION_NUMBER < 1003003 { - return GetNotImplementedError("virDomainMigrateStartPostCopy") + return makeNotImplementedError("virDomainMigrateStartPostCopy") } var err C.virError @@ -3548,7 +3548,7 @@ func getDomainPerfEventsFieldInfo(params *DomainPerfEvents) map[string]typedPara // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetPerfEvents func (d *Domain) GetPerfEvents(flags DomainModificationImpact) (*DomainPerfEvents, error) { if C.LIBVIR_VERSION_NUMBER < 1003003 { - return nil, GetNotImplementedError("virDomainGetPerfEvents") + return nil, makeNotImplementedError("virDomainGetPerfEvents") } params := &DomainPerfEvents{} @@ -3575,7 +3575,7 @@ func (d *Domain) GetPerfEvents(flags DomainModificationImpact) (*DomainPerfEvent // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetPerfEvents func (d *Domain) SetPerfEvents(params *DomainPerfEvents, flags DomainModificationImpact) error { if C.LIBVIR_VERSION_NUMBER < 1003003 { - return GetNotImplementedError("virDomainSetPerfEvents") + return makeNotImplementedError("virDomainSetPerfEvents") } info := getDomainPerfEventsFieldInfo(params) @@ -3874,7 +3874,7 @@ func (d *Domain) GetSecurityLabelList() ([]SecurityLabel, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetTime func (d *Domain) GetTime(flags uint32) (int64, uint, error) { if C.LIBVIR_VERSION_NUMBER < 1002005 { - return 0, 0, GetNotImplementedError("virDomainGetTime") + return 0, 0, makeNotImplementedError("virDomainGetTime") } var secs C.longlong var nsecs C.uint @@ -3890,7 +3890,7 @@ func (d *Domain) GetTime(flags uint32) (int64, uint, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetTime func (d *Domain) SetTime(secs int64, nsecs uint, flags DomainSetTimeFlags) error { if C.LIBVIR_VERSION_NUMBER < 1002005 { - return GetNotImplementedError("virDomainSetTime") + return makeNotImplementedError("virDomainSetTime") } var err C.virError @@ -3905,7 +3905,7 @@ func (d *Domain) SetTime(secs int64, nsecs uint, flags DomainSetTimeFlags) error // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetUserPasswor... func (d *Domain) SetUserPassword(user string, password string, flags DomainSetUserPasswordFlags) error { if C.LIBVIR_VERSION_NUMBER < 1002015 { - return GetNotImplementedError("virDomainSetUserPassword") + return makeNotImplementedError("virDomainSetUserPassword") } cuser := C.CString(user) cpassword := C.CString(password) @@ -3960,7 +3960,7 @@ func (d *Domain) ManagedSaveRemove(flags uint32) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainRename func (d *Domain) Rename(name string, flags uint32) error { if C.LIBVIR_VERSION_NUMBER < 1002019 { - return GetNotImplementedError("virDomainRename") + return makeNotImplementedError("virDomainRename") } cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) @@ -4023,7 +4023,7 @@ func (d *Domain) CoreDump(to string, flags DomainCoreDumpFlags) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCoreDumpWithFo... func (d *Domain) CoreDumpWithFormat(to string, format DomainCoreDumpFormat, flags DomainCoreDumpFlags) error { if C.LIBVIR_VERSION_NUMBER < 1002003 { - GetNotImplementedError("virDomainCoreDumpWithFormat") + makeNotImplementedError("virDomainCoreDumpWithFormat") } cto := C.CString(to) defer C.free(unsafe.Pointer(cto)) @@ -4053,7 +4053,7 @@ func (d *Domain) HasCurrentSnapshot(flags uint32) (bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainFSFreeze func (d *Domain) FSFreeze(mounts []string, flags uint32) error { if C.LIBVIR_VERSION_NUMBER < 1002005 { - return GetNotImplementedError("virDomainFSFreeze") + return makeNotImplementedError("virDomainFSFreeze") } cmounts := make([](*C.char), len(mounts)) @@ -4075,7 +4075,7 @@ func (d *Domain) FSFreeze(mounts []string, flags uint32) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainFSThaw func (d *Domain) FSThaw(mounts []string, flags uint32) error { if C.LIBVIR_VERSION_NUMBER < 1002005 { - return GetNotImplementedError("virDomainFSThaw") + return makeNotImplementedError("virDomainFSThaw") } cmounts := make([](*C.char), len(mounts)) @@ -4121,7 +4121,7 @@ type DomainFSInfo struct { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetFSInfo func (d *Domain) GetFSInfo(flags uint32) ([]DomainFSInfo, error) { if C.LIBVIR_VERSION_NUMBER < 1002011 { - return []DomainFSInfo{}, GetNotImplementedError("virDomainGetFSInfo") + return []DomainFSInfo{}, makeNotImplementedError("virDomainGetFSInfo") } var cfsinfolist **C.virDomainFSInfo @@ -4180,7 +4180,7 @@ func (d *Domain) PMWakeup(flags uint32) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainAddIOThread func (d *Domain) AddIOThread(id uint, flags DomainModificationImpact) error { if C.LIBVIR_VERSION_NUMBER < 1002015 { - return GetNotImplementedError("virDomainAddIOThread") + return makeNotImplementedError("virDomainAddIOThread") } var err C.virError ret := C.virDomainAddIOThreadWrapper(d.ptr, C.uint(id), C.uint(flags), &err) @@ -4194,7 +4194,7 @@ func (d *Domain) AddIOThread(id uint, flags DomainModificationImpact) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDelIOThread func (d *Domain) DelIOThread(id uint, flags DomainModificationImpact) error { if C.LIBVIR_VERSION_NUMBER < 1002015 { - return GetNotImplementedError("virDomainDelIOThread") + return makeNotImplementedError("virDomainDelIOThread") } var err C.virError ret := C.virDomainDelIOThreadWrapper(d.ptr, C.uint(id), C.uint(flags), &err) @@ -4240,7 +4240,7 @@ type DomainIOThreadInfo struct { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetIOThreadInf... func (d *Domain) GetIOThreadInfo(flags DomainModificationImpact) ([]DomainIOThreadInfo, error) { if C.LIBVIR_VERSION_NUMBER < 1002014 { - return []DomainIOThreadInfo{}, GetNotImplementedError("virDomaingetIOThreadInfo") + return []DomainIOThreadInfo{}, makeNotImplementedError("virDomaingetIOThreadInfo") } var cinfolist **C.virDomainIOThreadInfo @@ -4344,7 +4344,7 @@ func (d *Domain) PinEmulator(cpumap []bool, flags DomainModificationImpact) erro // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainPinIOThread func (d *Domain) PinIOThread(iothreadid uint, cpumap []bool, flags DomainModificationImpact) error { if C.LIBVIR_VERSION_NUMBER < 1002014 { - return GetNotImplementedError("virDomainPinIOThread") + return makeNotImplementedError("virDomainPinIOThread") } maplen := (len(cpumap) + 7) / 8 @@ -4412,7 +4412,7 @@ func (d *Domain) OpenGraphics(idx uint, file os.File, flags DomainOpenGraphicsFl // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainOpenGraphicsFD func (d *Domain) OpenGraphicsFD(idx uint, flags DomainOpenGraphicsFlags) (*os.File, error) { if C.LIBVIR_VERSION_NUMBER < 1002008 { - return nil, GetNotImplementedError("virDomainOpenGraphicsFD") + return nil, makeNotImplementedError("virDomainOpenGraphicsFD") } var err C.virError ret := C.virDomainOpenGraphicsFDWrapper(d.ptr, C.uint(idx), C.uint(flags), &err) @@ -4544,7 +4544,7 @@ func parseCPUString(cpumapstr string) ([]bool, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetGuestVcpus func (d *Domain) GetGuestVcpus(flags uint32) (*DomainGuestVcpus, error) { if C.LIBVIR_VERSION_NUMBER < 2000000 { - return nil, GetNotImplementedError("virDomainGetGuestVcpus") + return nil, makeNotImplementedError("virDomainGetGuestVcpus") } var VcpusSet, OnlineSet, OfflinableSet bool @@ -4572,7 +4572,7 @@ func (d *Domain) GetGuestVcpus(flags uint32) (*DomainGuestVcpus, error) { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetGuestVcpus func (d *Domain) SetGuestVcpus(cpus []bool, state bool, flags uint32) error { if C.LIBVIR_VERSION_NUMBER < 2000000 { - return GetNotImplementedError("virDomainSetGuestVcpus") + return makeNotImplementedError("virDomainSetGuestVcpus") } cpumap := "" @@ -4606,7 +4606,7 @@ func (d *Domain) SetGuestVcpus(cpus []bool, state bool, flags uint32) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetVcpu func (d *Domain) SetVcpu(cpus []bool, state bool, flags uint32) error { if C.LIBVIR_VERSION_NUMBER < 3001000 { - return GetNotImplementedError("virDomainSetVcpu") + return makeNotImplementedError("virDomainSetVcpu") } cpumap := "" @@ -4640,7 +4640,7 @@ func (d *Domain) SetVcpu(cpus []bool, state bool, flags uint32) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetBlockThresh... func (d *Domain) SetBlockThreshold(dev string, threshold uint64, flags uint32) error { if C.LIBVIR_VERSION_NUMBER < 3002000 { - return GetNotImplementedError("virDomainSetBlockThreshold") + return makeNotImplementedError("virDomainSetBlockThreshold") } cdev := C.CString(dev) @@ -4657,7 +4657,7 @@ func (d *Domain) SetBlockThreshold(dev string, threshold uint64, flags uint32) e // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainManagedSaveDef... func (d *Domain) ManagedSaveDefineXML(xml string, flags uint32) error { if C.LIBVIR_VERSION_NUMBER < 3007000 { - return GetNotImplementedError("virDomainManagedSaveDefineXML") + return makeNotImplementedError("virDomainManagedSaveDefineXML") } cxml := C.CString(xml) @@ -4674,7 +4674,7 @@ func (d *Domain) ManagedSaveDefineXML(xml string, flags uint32) error { // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainManagedSaveGet... func (d *Domain) ManagedSaveGetXMLDesc(flags uint32) (string, error) { if C.LIBVIR_VERSION_NUMBER < 3007000 { - return "", GetNotImplementedError("virDomainManagedSaveGetXMLDesc") + return "", makeNotImplementedError("virDomainManagedSaveGetXMLDesc") } var err C.virError @@ -4710,7 +4710,7 @@ const ( // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetLifecycleAc... func (d *Domain) SetLifecycleAction(lifecycleType uint32, action uint32, flags uint32) error { if C.LIBVIR_VERSION_NUMBER < 3009000 { - return GetNotImplementedError("virDomainSetLifecycleAction") + return makeNotImplementedError("virDomainSetLifecycleAction") } var err C.virError @@ -4739,7 +4739,7 @@ func getDomainLaunchSecurityFieldInfo(params *DomainLaunchSecurityParameters) ma // See also https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetLaunchSecur... func (d *Domain) GetLaunchSecurityInfo(flags uint32) (*DomainLaunchSecurityParameters, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { - return nil, GetNotImplementedError("virDomainGetLaunchSecurityInfo") + return nil, makeNotImplementedError("virDomainGetLaunchSecurityInfo") } params := &DomainLaunchSecurityParameters{} diff --git a/error.go b/error.go index 37fefc1..1cfdf92 100644 --- a/error.go +++ b/error.go @@ -594,7 +594,7 @@ func makeError(err *C.virError) Error { return ret } -func GetNotImplementedError(apiname string) Error { +func makeNotImplementedError(apiname string) Error { return Error{ Code: ERR_NO_SUPPORT, Domain: FROM_NONE, diff --git a/lxc.go b/lxc.go index 56ab28a..1578cab 100644 --- a/lxc.go +++ b/lxc.go @@ -141,7 +141,7 @@ func DomainLxcEnterSecurityLabel(model *NodeSecurityModel, label *SecurityLabel, func (d *Domain) DomainLxcEnterCGroup(flags uint32) error { if C.LIBVIR_VERSION_NUMBER < 2000000 { - return GetNotImplementedError("virDomainLxcEnterCGroup") + return makeNotImplementedError("virDomainLxcEnterCGroup") } var err C.virError diff --git a/network.go b/network.go index d9ec9bf..99954aa 100644 --- a/network.go +++ b/network.go @@ -301,7 +301,7 @@ func (n *Network) Update(cmd NetworkUpdateCommand, section NetworkUpdateSection, // See also https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkGetDHCPLease... func (n *Network) GetDHCPLeases() ([]NetworkDHCPLease, error) { if C.LIBVIR_VERSION_NUMBER < 1002006 { - return []NetworkDHCPLease{}, GetNotImplementedError("virNetworkGetDHCPLeases") + return []NetworkDHCPLease{}, makeNotImplementedError("virNetworkGetDHCPLeases") } var cLeases *C.virNetworkDHCPLeasePtr var err C.virError diff --git a/network_events.go b/network_events.go index 8ed16d9..2d9bddc 100644 --- a/network_events.go +++ b/network_events.go @@ -69,7 +69,7 @@ func networkEventLifecycleCallback(c C.virConnectPtr, n C.virNetworkPtr, func (c *Connect) NetworkEventLifecycleRegister(net *Network, callback NetworkEventLifecycleCallback) (int, error) { goCallBackId := registerCallbackId(callback) if C.LIBVIR_VERSION_NUMBER < 1002001 { - return 0, GetNotImplementedError("virConnectNetworkEventRegisterAny") + return 0, makeNotImplementedError("virConnectNetworkEventRegisterAny") } callbackPtr := unsafe.Pointer(C.networkEventLifecycleCallbackHelper) @@ -91,7 +91,7 @@ func (c *Connect) NetworkEventLifecycleRegister(net *Network, callback NetworkEv func (c *Connect) NetworkEventDeregister(callbackId int) error { if C.LIBVIR_VERSION_NUMBER < 1002001 { - return GetNotImplementedError("virConnectNetworkEventDeregisterAny") + return makeNotImplementedError("virConnectNetworkEventDeregisterAny") } // Deregister the callback var err C.virError diff --git a/node_device_events.go b/node_device_events.go index 632c94d..7920a42 100644 --- a/node_device_events.go +++ b/node_device_events.go @@ -85,7 +85,7 @@ func nodeDeviceEventGenericCallback(c C.virConnectPtr, d C.virNodeDevicePtr, func (c *Connect) NodeDeviceEventLifecycleRegister(device *NodeDevice, callback NodeDeviceEventLifecycleCallback) (int, error) { if C.LIBVIR_VERSION_NUMBER < 2002000 { - return 0, GetNotImplementedError("virConnectNodeDeviceEventRegisterAny") + return 0, makeNotImplementedError("virConnectNodeDeviceEventRegisterAny") } goCallBackId := registerCallbackId(callback) @@ -128,7 +128,7 @@ func (c *Connect) NodeDeviceEventUpdateRegister(device *NodeDevice, callback Nod func (c *Connect) NodeDeviceEventDeregister(callbackId int) error { if C.LIBVIR_VERSION_NUMBER < 2002000 { - return GetNotImplementedError("virConnectNodeDeviceEventDeregisterAny") + return makeNotImplementedError("virConnectNodeDeviceEventDeregisterAny") } // Deregister the callback var err C.virError diff --git a/nwfilter_binding.go b/nwfilter_binding.go index 5999d3e..e36c1de 100644 --- a/nwfilter_binding.go +++ b/nwfilter_binding.go @@ -43,7 +43,7 @@ type NWFilterBinding struct { // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virNWFilterBindingFre... func (f *NWFilterBinding) Free() error { if C.LIBVIR_VERSION_NUMBER < 4005000 { - return GetNotImplementedError("virNWFilterBindingFree") + return makeNotImplementedError("virNWFilterBindingFree") } var err C.virError ret := C.virNWFilterBindingFreeWrapper(f.ptr, &err) @@ -56,7 +56,7 @@ func (f *NWFilterBinding) Free() error { // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virNWFilterBindingRef func (c *NWFilterBinding) Ref() error { if C.LIBVIR_VERSION_NUMBER < 4005000 { - return GetNotImplementedError("virNWFilterBindingRef") + return makeNotImplementedError("virNWFilterBindingRef") } var err C.virError ret := C.virNWFilterBindingRefWrapper(c.ptr, &err) @@ -69,7 +69,7 @@ func (c *NWFilterBinding) Ref() error { // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virNWFilterBindingDel... func (f *NWFilterBinding) Delete() error { if C.LIBVIR_VERSION_NUMBER < 4005000 { - return GetNotImplementedError("virNWFilterBindingDelete") + return makeNotImplementedError("virNWFilterBindingDelete") } var err C.virError result := C.virNWFilterBindingDeleteWrapper(f.ptr, &err) @@ -82,7 +82,7 @@ func (f *NWFilterBinding) Delete() error { // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virNWFilterBindingGet... func (f *NWFilterBinding) GetPortDev() (string, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { - return "", GetNotImplementedError("virNWFilterBindingGetPortDev") + return "", makeNotImplementedError("virNWFilterBindingGetPortDev") } var err C.virError result := C.virNWFilterBindingGetPortDevWrapper(f.ptr, &err) @@ -97,7 +97,7 @@ func (f *NWFilterBinding) GetPortDev() (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virNWFilterBindingGet... func (f *NWFilterBinding) GetFilterName() (string, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { - return "", GetNotImplementedError("virNWFilterBindingGetFilterName") + return "", makeNotImplementedError("virNWFilterBindingGetFilterName") } var err C.virError result := C.virNWFilterBindingGetFilterNameWrapper(f.ptr, &err) @@ -112,7 +112,7 @@ func (f *NWFilterBinding) GetFilterName() (string, error) { // See also https://libvirt.org/html/libvirt-libvirt-nwfilter.html#virNWFilterBindingGet... func (f *NWFilterBinding) GetXMLDesc(flags uint32) (string, error) { if C.LIBVIR_VERSION_NUMBER < 4005000 { - return "", GetNotImplementedError("virNWFilterBindingGetXMLDesc") + return "", makeNotImplementedError("virNWFilterBindingGetXMLDesc") } var err C.virError result := C.virNWFilterBindingGetXMLDescWrapper(f.ptr, C.uint(flags), &err) diff --git a/qemu.go b/qemu.go index dd4f258..a2f8507 100644 --- a/qemu.go +++ b/qemu.go @@ -151,7 +151,7 @@ func domainQemuMonitorEventCallback(c C.virConnectPtr, d C.virDomainPtr, func (c *Connect) DomainQemuMonitorEventRegister(dom *Domain, event string, callback DomainQemuMonitorEventCallback, flags DomainQemuMonitorEventFlags) (int, error) { if C.LIBVIR_VERSION_NUMBER < 1002003 { - return 0, GetNotImplementedError("virConnectDomainQemuMonitorEventRegister") + return 0, makeNotImplementedError("virConnectDomainQemuMonitorEventRegister") } cEvent := C.CString(event) @@ -176,7 +176,7 @@ func (c *Connect) DomainQemuMonitorEventRegister(dom *Domain, event string, call func (c *Connect) DomainQemuEventDeregister(callbackId int) error { if C.LIBVIR_VERSION_NUMBER < 1002003 { - return GetNotImplementedError("virConnectDomainQemuMonitorEventDeregister") + return makeNotImplementedError("virConnectDomainQemuMonitorEventDeregister") } // Deregister the callback diff --git a/secret_events.go b/secret_events.go index 38605ba..d928e98 100644 --- a/secret_events.go +++ b/secret_events.go @@ -86,7 +86,7 @@ func secretEventGenericCallback(c C.virConnectPtr, n C.virSecretPtr, func (c *Connect) SecretEventLifecycleRegister(secret *Secret, callback SecretEventLifecycleCallback) (int, error) { goCallBackId := registerCallbackId(callback) if C.LIBVIR_VERSION_NUMBER < 3000000 { - return 0, GetNotImplementedError("virConnectSecretEventRegisterAny") + return 0, makeNotImplementedError("virConnectSecretEventRegisterAny") } callbackPtr := unsafe.Pointer(C.secretEventLifecycleCallbackHelper) @@ -109,7 +109,7 @@ func (c *Connect) SecretEventLifecycleRegister(secret *Secret, callback SecretEv func (c *Connect) SecretEventValueChangedRegister(secret *Secret, callback SecretEventGenericCallback) (int, error) { goCallBackId := registerCallbackId(callback) if C.LIBVIR_VERSION_NUMBER < 3000000 { - return 0, GetNotImplementedError("virConnectSecretEventRegisterAny") + return 0, makeNotImplementedError("virConnectSecretEventRegisterAny") } callbackPtr := unsafe.Pointer(C.secretEventGenericCallbackHelper) @@ -131,7 +131,7 @@ func (c *Connect) SecretEventValueChangedRegister(secret *Secret, callback Secre func (c *Connect) SecretEventDeregister(callbackId int) error { if C.LIBVIR_VERSION_NUMBER < 3000000 { - return GetNotImplementedError("virConnectSecretEventDeregisterAny") + return makeNotImplementedError("virConnectSecretEventDeregisterAny") } // Deregister the callback var err C.virError diff --git a/storage_pool_events.go b/storage_pool_events.go index 55c9f4e..fd1b997 100644 --- a/storage_pool_events.go +++ b/storage_pool_events.go @@ -85,7 +85,7 @@ func storagePoolEventGenericCallback(c C.virConnectPtr, s C.virStoragePoolPtr, func (c *Connect) StoragePoolEventLifecycleRegister(pool *StoragePool, callback StoragePoolEventLifecycleCallback) (int, error) { if C.LIBVIR_VERSION_NUMBER < 2000000 { - return 0, GetNotImplementedError("virConnectStoragePoolEventRegisterAny") + return 0, makeNotImplementedError("virConnectStoragePoolEventRegisterAny") } goCallBackId := registerCallbackId(callback) @@ -109,7 +109,7 @@ func (c *Connect) StoragePoolEventLifecycleRegister(pool *StoragePool, callback func (c *Connect) StoragePoolEventRefreshRegister(pool *StoragePool, callback StoragePoolEventGenericCallback) (int, error) { if C.LIBVIR_VERSION_NUMBER < 2000000 { - return 0, GetNotImplementedError("virConnectStoragePoolEventRegisterAny") + return 0, makeNotImplementedError("virConnectStoragePoolEventRegisterAny") } goCallBackId := registerCallbackId(callback) @@ -133,7 +133,7 @@ func (c *Connect) StoragePoolEventRefreshRegister(pool *StoragePool, callback St func (c *Connect) StoragePoolEventDeregister(callbackId int) error { if C.LIBVIR_VERSION_NUMBER < 2000000 { - return GetNotImplementedError("virConnectStoragePoolEventDeregisterAny") + return makeNotImplementedError("virConnectStoragePoolEventDeregisterAny") } // Deregister the callback diff --git a/storage_volume.go b/storage_volume.go index 711c3c1..bb10813 100644 --- a/storage_volume.go +++ b/storage_volume.go @@ -169,7 +169,7 @@ func (v *StorageVol) GetInfo() (*StorageVolInfo, error) { // See also https://libvirt.org/html/libvirt-libvirt-storage.html#virStorageVolGetInfoFl... func (v *StorageVol) GetInfoFlags(flags StorageVolInfoFlags) (*StorageVolInfo, error) { if C.LIBVIR_VERSION_NUMBER < 3000000 { - return nil, GetNotImplementedError("virStorageVolGetInfoFlags") + return nil, makeNotImplementedError("virStorageVolGetInfoFlags") } var cinfo C.virStorageVolInfo diff --git a/stream.go b/stream.go index 515ae08..4010b11 100644 --- a/stream.go +++ b/stream.go @@ -121,7 +121,7 @@ func (v *Stream) Recv(p []byte) (int, error) { // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamRecvFlags func (v *Stream) RecvFlags(p []byte, flags StreamRecvFlagsValues) (int, error) { if C.LIBVIR_VERSION_NUMBER < 3004000 { - return 0, GetNotImplementedError("virStreamRecvFlags") + return 0, makeNotImplementedError("virStreamRecvFlags") } var err C.virError @@ -139,7 +139,7 @@ func (v *Stream) RecvFlags(p []byte, flags StreamRecvFlagsValues) (int, error) { // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamRecvHole func (v *Stream) RecvHole(flags uint) (int64, error) { if C.LIBVIR_VERSION_NUMBER < 3004000 { - return 0, GetNotImplementedError("virStreamSparseRecvHole") + return 0, makeNotImplementedError("virStreamSparseRecvHole") } var len C.longlong @@ -169,7 +169,7 @@ func (v *Stream) Send(p []byte) (int, error) { // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamSendHole func (v *Stream) SendHole(len int64, flags uint32) error { if C.LIBVIR_VERSION_NUMBER < 3004000 { - return GetNotImplementedError("virStreamSendHole") + return makeNotImplementedError("virStreamSendHole") } var err C.virError @@ -242,7 +242,7 @@ func (v *Stream) RecvAll(handler StreamSinkFunc) error { // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamSparseRecvAll func (v *Stream) SparseRecvAll(handler StreamSinkFunc, holeHandler StreamSinkHoleFunc) error { if C.LIBVIR_VERSION_NUMBER < 3004000 { - return GetNotImplementedError("virStreamSparseSendAll") + return makeNotImplementedError("virStreamSparseSendAll") } callbackID := registerCallbackId(handler) @@ -349,7 +349,7 @@ func (v *Stream) SendAll(handler StreamSourceFunc) error { // See also https://libvirt.org/html/libvirt-libvirt-stream.html#virStreamSparseSendAll func (v *Stream) SparseSendAll(handler StreamSourceFunc, holeHandler StreamSourceHoleFunc, skipHandler StreamSourceSkipFunc) error { if C.LIBVIR_VERSION_NUMBER < 3004000 { - return GetNotImplementedError("virStreamSparseSendAll") + return makeNotImplementedError("virStreamSparseSendAll") } callbackID := registerCallbackId(handler) -- 2.17.1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- connect.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/connect.go b/connect.go index 34a96ed..8cc7cc7 100644 --- a/connect.go +++ b/connect.go @@ -2915,6 +2915,10 @@ func (c *Connect) GetAllDomainStats(doms []*Domain, statsTypes DomainStatsTypes, stats[i] = domstats } + for i := 0; i < len(stats); i++ { + C.virDomainRef(stats[i].Domain.ptr) + } + return stats, nil } -- 2.17.1

This series has been tested by the KubeVirt devs who confirmed it fixes the problems they see, so I'll push it shortly. On Mon, Jul 16, 2018 at 02:23:46PM +0100, Daniel P. Berrangé wrote:
The Libvirt C API provides the virGetLastError() function to let callers aquire the error information after a function fails. This function uses a thread local, and so must be called in the same OS thread as the function that failed originally. eg you could call
char *xml = virDomainGetXMLDesc(dom); if (!xml) { virErrorPtr err = virGetLastError(); ....do stuff with err... }
This is all fine, but there is a subtle problem that was overlooked when the Go bindings were first created. Specifically a native C API call is a goroutine re-scheduling point. So when the Go code does
var xml = C.virDomainGetXMLDesc(dom); if (xml == nil) { C.virErrorPtr err = C.virGetLastError(); ....do stuff with err... }
All that code runs in the same goroutine, but at the call entry to C.virGetLastError, the goroutine might get switched to a different OS level thread. As a result virGetLastError() will return either no error at all, or an error from a completely different libvirt API call.
We need to prevent the OS level thread being changed in between the call to the real function and the virGetLastError() function.
Naively you might think we could put a LockOSThread() / UnlockOSThread() call around this block of Go code, but that is a very bad idea in reality. Until Go 1.10, the LockOSThread() calls did not ref count, so if some other code has already locked the thread, when libvirt called UnlockOSThread it could do bad things. In addition, after calling UnlockOSThread() the Go runtime doesn't trust the OS thread state anymore, so will terminate the thread and spawn a new one. IOW using LockOSThread() would mean every single libvirt API call would create and destroy a new thread which is horrible for performance.
Thus this patch series takes a different approach. We create a wrapper function for every C API exposed by libvirt, that has a 'virErrorPtr' parameter. So the Go code can do
var C.virErrorPtr err var xml = C.virDomainGetXMLDescWrapper(dom, &err) if (xml == nil) { ...do stuff with err... }
The wrapper function is responsible for calling virGetLastError() and since this is C code, we're guaranteed its all in the same OS level thread.
Daniel P. Berrangé (37): error: add helper for converting libvirt to go error objects storage volume: add missin blank line Rename *cfuncs.{go,h} to *wrapper.{go,h} Use "Wrapper" or "Helper" as suffix for C functions Change "Compat" suffix to "Wrapper" to have standard naming scheme connect: move wrapper functions out of compat header network: move wrapper functions out of compat header nwfilter binding: move wrapper functions out of compat header node device: move wrapper functions out of compat header secret: move wrapper functions out of compat header stream: move wrapper functions out of compat header storage volume: move wrapper functions out of compat header storage pool: move wrapper functions out of compat header qemu: move wrapper functions out of compat header lxc: move wrapper functions out of compat header domain: move wrapper functions out of compat header make the XXX_wrapper.h header files self-contained Add XXX_wrapper.{h,go} for every remaining file Standardize formatting in all wrapper headers storage vol: fix error reporting thread safety storage pool: fix error reporting thread safety stream: fix error reporting thread safety secret: fix error reporting thread safety nwfilter: fix error reporting thread safety nwfilter binding: fix error reporting thread safety node device: fix error reporting thread safety network: fix error reporting thread safety interface: fix error reporting thread safety domain snapshot: fix error reporting thread safety connect: fix error reporting thread safety domain: fix error reporting thread safety qemu: fix error reporting thread safety lxc: fix error reporting thread safety events: fix error reporting thread safety error: remove GetLastError() function error: make GetNotImplementedError private connect: add missing references on domain object in stats records
api_test.go | 5 +- callbacks.go | 4 +- callbacks_cfuncs.go => callbacks_wrapper.go | 6 +- callbacks_cfuncs.h => callbacks_wrapper.h | 8 +- connect.go | 741 +++--- connect_cfuncs.h | 34 - connect_compat.go | 206 -- connect_compat.h | 81 - connect_wrapper.go | 1766 +++++++++++++ connect_wrapper.h | 730 ++++++ domain.go | 1083 ++++---- domain_compat.go | 384 --- domain_compat.h | 141 - domain_events.go | 235 +- domain_events_cfuncs.h | 124 - ...ents_cfuncs.go => domain_events_wrapper.go | 85 +- domain_events_wrapper.h | 207 ++ domain_snapshot.go | 65 +- domain_snapshot_wrapper.go | 215 ++ domain_snapshot_wrapper.h | 102 + domain_wrapper.go | 2330 +++++++++++++++++ domain_wrapper.h | 986 +++++++ error.go | 17 +- error_test.go | 44 - events.go | 45 +- events_cfuncs.h | 39 - events_cfuncs.go => events_wrapper.go | 89 +- events_wrapper.h | 82 + interface.go | 48 +- interface_wrapper.go | 158 ++ interface_wrapper.h | 76 + lxc.go | 27 +- lxc_compat.go | 51 - lxc_wrapper.go | 101 + lxc_compat.h => lxc_wrapper.h | 33 +- network.go | 88 +- network_compat.h | 10 - network_events.go | 23 +- network_events_cfuncs.h | 38 - ...nts_cfuncs.go => network_events_wrapper.go | 41 +- network_compat.go => network_events_wrapper.h | 51 +- network_wrapper.go | 267 ++ network_wrapper.h | 119 + node_device.go | 66 +- node_device_compat.go | 46 - node_device_compat.h | 3 - node_device_events.go | 32 +- node_device_events_cfuncs.h | 40 - ...cfuncs.go => node_device_events_wrapper.go | 46 +- ..._cfuncs.go => node_device_events_wrapper.h | 73 +- node_device_wrapper.go | 184 ++ node_device_wrapper.h | 88 + nwfilter.go | 38 +- nwfilter_binding.go | 46 +- nwfilter_binding_compat.h | 11 - ...g_compat.go => nwfilter_binding_wrapper.go | 66 +- nwfilter_binding_wrapper.h | 60 + nwfilter_wrapper.go | 122 + nwfilter_wrapper.h | 65 + qemu.go | 43 +- qemu_cfuncs.go | 64 - qemu_cfuncs.h | 39 - qemu_compat.go | 48 - qemu_compat.h | 3 - qemu_wrapper.go | 133 + qemu_wrapper.h | 78 + secret.go | 54 +- secret_compat.h | 3 - secret_events.go | 34 +- secret_events_cfuncs.h | 40 - ...ents_cfuncs.go => secret_events_wrapper.go | 45 +- secret_compat.go => secret_events_wrapper.h | 41 +- secret_wrapper.go | 175 ++ secret_wrapper.h | 86 + storage_pool.go | 121 +- storage_pool_compat.h | 4 - storage_pool_events.go | 34 +- storage_pool_events_cfuncs.h | 40 - ...funcs.go => storage_pool_events_wrapper.go | 46 +- ...compat.go => storage_pool_events_wrapper.h | 43 +- storage_pool_wrapper.go | 343 +++ storage_pool_wrapper.h | 150 ++ storage_volume.go | 86 +- storage_volume_compat.go | 47 - storage_volume_compat.h | 4 - storage_volume_wrapper.go | 249 ++ storage_volume_wrapper.h | 116 + stream.go | 95 +- stream_cfuncs.go | 132 - stream_cfuncs.h | 37 - stream_compat.go | 69 - stream_compat.h | 13 - stream_wrapper.go | 331 +++ stream_wrapper.h | 120 + 94 files changed, 11619 insertions(+), 3318 deletions(-) rename callbacks_cfuncs.go => callbacks_wrapper.go (90%) rename callbacks_cfuncs.h => callbacks_wrapper.h (87%) delete mode 100644 connect_cfuncs.h delete mode 100644 connect_compat.go create mode 100644 connect_wrapper.go create mode 100644 connect_wrapper.h delete mode 100644 domain_compat.go delete mode 100644 domain_events_cfuncs.h rename domain_events_cfuncs.go => domain_events_wrapper.go (75%) create mode 100644 domain_events_wrapper.h create mode 100644 domain_snapshot_wrapper.go create mode 100644 domain_snapshot_wrapper.h create mode 100644 domain_wrapper.go create mode 100644 domain_wrapper.h delete mode 100644 error_test.go delete mode 100644 events_cfuncs.h rename events_cfuncs.go => events_wrapper.go (72%) create mode 100644 events_wrapper.h create mode 100644 interface_wrapper.go create mode 100644 interface_wrapper.h delete mode 100644 lxc_compat.go create mode 100644 lxc_wrapper.go rename lxc_compat.h => lxc_wrapper.h (53%) delete mode 100644 network_events_cfuncs.h rename network_events_cfuncs.go => network_events_wrapper.go (59%) rename network_compat.go => network_events_wrapper.h (57%) create mode 100644 network_wrapper.go create mode 100644 network_wrapper.h delete mode 100644 node_device_compat.go delete mode 100644 node_device_events_cfuncs.h rename node_device_events_cfuncs.go => node_device_events_wrapper.go (59%) rename connect_cfuncs.go => node_device_events_wrapper.h (52%) create mode 100644 node_device_wrapper.go create mode 100644 node_device_wrapper.h rename nwfilter_binding_compat.go => nwfilter_binding_wrapper.go (54%) create mode 100644 nwfilter_binding_wrapper.h create mode 100644 nwfilter_wrapper.go create mode 100644 nwfilter_wrapper.h delete mode 100644 qemu_cfuncs.go delete mode 100644 qemu_cfuncs.h delete mode 100644 qemu_compat.go create mode 100644 qemu_wrapper.go create mode 100644 qemu_wrapper.h delete mode 100644 secret_events_cfuncs.h rename secret_events_cfuncs.go => secret_events_wrapper.go (61%) rename secret_compat.go => secret_events_wrapper.h (54%) create mode 100644 secret_wrapper.go create mode 100644 secret_wrapper.h delete mode 100644 storage_pool_events_cfuncs.h rename storage_pool_events_cfuncs.go => storage_pool_events_wrapper.go (60%) rename storage_pool_compat.go => storage_pool_events_wrapper.h (51%) create mode 100644 storage_pool_wrapper.go create mode 100644 storage_pool_wrapper.h delete mode 100644 storage_volume_compat.go create mode 100644 storage_volume_wrapper.go create mode 100644 storage_volume_wrapper.h delete mode 100644 stream_cfuncs.go delete mode 100644 stream_cfuncs.h delete mode 100644 stream_compat.go create mode 100644 stream_wrapper.go create mode 100644 stream_wrapper.h
-- 2.17.1
Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
participants (1)
-
Daniel P. Berrangé