diff --git a/include/libvirt/libvirt-admin.h b/include/libvirt/libvirt-admin.h index ae033d1ed9..9f012c1ad9 100644 --- a/include/libvirt/libvirt-admin.h +++ b/include/libvirt/libvirt-admin.h @@ -56,6 +56,9 @@ int virAdmConnectClose(virAdmConnectPtr conn); int virAdmConnectRef(virAdmConnectPtr conn); +int virAdmGetVersion(unsigned long long *libVer); + + # ifdef __cplusplus } # endif diff --git a/src/libvirt-admin.c b/src/libvirt-admin.c index 5a4fc4833d..4a2f002ffc 100644 --- a/src/libvirt-admin.c +++ b/src/libvirt-admin.c @@ -386,3 +386,37 @@ virAdmConnectRef(virAdmConnectPtr conn) return 0; } + +/** + * virAdmGetVersion: + * @libVer: where to store the library version + * + * Provides version information. @libVer is the version of the library and will + * allways be set unless an error occurs in which case an error code and a + * generic message will be returned. @libVer format is as follows: + * major * 1,000,000 + minor * 1,000 + release. + * + * NOTE: To get the remote side library version use virAdmConnectGetLibVersion + * instead. + * + * Returns 0 on success, -1 in case of an error. + */ +int +virAdmGetVersion(unsigned long long *libVer) +{ + if (virAdmInitialize() < 0) + goto error; + + VIR_DEBUG("libVer=%p", libVer); + + virResetLastError(); + if (!libVer) + goto error; + *libVer = LIBVIR_VERSION_NUMBER; + + return 0; + + error: + virDispatchError(NULL); + return -1; +} diff --git a/src/libvirt_admin_public.syms b/src/libvirt_admin_public.syms index d9e3c0b1b9..5e774c2c58 100644 --- a/src/libvirt_admin_public.syms +++ b/src/libvirt_admin_public.syms @@ -15,4 +15,5 @@ LIBVIRT_ADMIN_1.3.0 { virAdmConnectOpen; virAdmConnectClose; virAdmConnectRef; + virAdmGetVersion; };