diff --git a/include/libvirt/libvirt-admin.h b/include/libvirt/libvirt-admin.h
index ae033d1ed94874c36135a310f806a05f64740196..9f012c1ad9f93ce42091b924ac31bca48dda96b0 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 5a4fc4833ddff4215e0a954a5c1d8506b20861f5..4a2f002ffc428fc3fc8a89396072f5dc5cd9ae76 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 d9e3c0b1b988b1134e59e30b5b0cfc96e6993827..5e774c2c5893feea0ac41c7bc0b838b2674f0c12 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;
 };