/* Please read libvirt/README file. */
-#ifdef HAVE_WEAK_SYMBOLS
-#ifdef HAVE_VIRDOMAINBLOCKSTATS
-extern int virDomainBlockStats (virDomainPtr dom,
- const char *path,
- virDomainBlockStatsPtr stats,
- size_t size)
- __attribute__((weak));
-#endif
-#ifdef HAVE_VIRDOMAINGETSCHEDULERPARAMETERS
-extern int virDomainGetSchedulerParameters (virDomainPtr domain,
- virSchedParameterPtr params,
- int *nparams)
- __attribute__((weak));
-#endif
-#ifdef HAVE_VIRDOMAINGETSCHEDULERTYPE
-extern char *virDomainGetSchedulerType(virDomainPtr domain,
- int *nparams)
- __attribute__((weak));
-#endif
-#ifdef HAVE_VIRDOMAININTERFACESTATS
-extern int virDomainInterfaceStats (virDomainPtr dom,
- const char *path,
- virDomainInterfaceStatsPtr stats,
- size_t size)
- __attribute__((weak));
-#endif
-#ifdef HAVE_VIRDOMAINMIGRATE
-extern virDomainPtr virDomainMigrate (virDomainPtr domain, virConnectPtr dconn,
- unsigned long flags, const char *dname,
- const char *uri, unsigned long bandwidth)
- __attribute__((weak));
-#endif
-#ifdef HAVE_VIRDOMAINSETSCHEDULERPARAMETERS
-extern int virDomainSetSchedulerParameters (virDomainPtr domain,
- virSchedParameterPtr params,
- int nparams)
- __attribute__((weak));
-#endif
-#ifdef HAVE_VIRNODEGETFREEMEMORY
-extern unsigned long long virNodeGetFreeMemory (virConnectPtr conn)
- __attribute__((weak));
-#endif
-#ifdef HAVE_VIRNODEGETCELLSFREEMEMORY
-extern int virNodeGetCellsFreeMemory (virConnectPtr conn,
- unsigned long long *freeMems,
- int startCell, int maxCells)
- __attribute__((weak));
-#endif
-#endif /* HAVE_WEAK_SYMBOLS */
-
/*----------------------------------------------------------------------*/
CAMLprim value
}
CAMLprim value
-ocaml_libvirt_connect_close (value connv)
-{
- CAMLparam1 (connv);
- virConnectPtr conn = Connect_val (connv);
- int r;
-
- NONBLOCKING (r = virConnectClose (conn));
- CHECK_ERROR (r == -1, conn, "virConnectClose");
-
- /* So that we don't double-free in the finalizer: */
- Connect_val (connv) = NULL;
-
- CAMLreturn (Val_unit);
-}
-
-CAMLprim value
ocaml_libvirt_connect_get_version (value connv)
{
CAMLparam1 (connv);
CAMLreturn (rv);
}
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRNODEGETFREEMEMORY
+extern unsigned long long virNodeGetFreeMemory (virConnectPtr conn)
+ __attribute__((weak));
+#endif
+#endif
+
CAMLprim value
ocaml_libvirt_connect_node_get_free_memory (value connv)
{
#endif
}
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRNODEGETCELLSFREEMEMORY
+extern int virNodeGetCellsFreeMemory (virConnectPtr conn,
+ unsigned long long *freeMems,
+ int startCell, int maxCells)
+ __attribute__((weak));
+#endif
+#endif
+
CAMLprim value
ocaml_libvirt_connect_node_get_cells_free_memory (value connv,
value startv, value maxv)
}
CAMLprim value
-ocaml_libvirt_domain_create_linux (value connv, value xmlv)
-{
- CAMLparam2 (connv, xmlv);
- CAMLlocal1 (rv);
- virConnectPtr conn = Connect_val (connv);
- char *xml = String_val (xmlv);
- virDomainPtr r;
-
- NONBLOCKING (r = virDomainCreateLinux (conn, xml, 0));
- CHECK_ERROR (!r, conn, "virDomainCreateLinux");
-
- rv = Val_domain (r, connv);
- CAMLreturn (rv);
-}
-
-CAMLprim value
-ocaml_libvirt_domain_lookup_by_id (value connv, value iv)
-{
- CAMLparam2 (connv, iv);
- CAMLlocal1 (rv);
- virConnectPtr conn = Connect_val (connv);
- int i = Int_val (iv);
- virDomainPtr r;
-
- NONBLOCKING (r = virDomainLookupByID (conn, i));
- CHECK_ERROR (!r, conn, "virDomainLookupByID");
-
- rv = Val_domain (r, connv);
- CAMLreturn (rv);
-}
-
-CAMLprim value
-ocaml_libvirt_domain_lookup_by_uuid (value connv, value uuidv)
-{
- CAMLparam2 (connv, uuidv);
- CAMLlocal1 (rv);
- virConnectPtr conn = Connect_val (connv);
- char *uuid = String_val (uuidv);
- virDomainPtr r;
-
- NONBLOCKING (r = virDomainLookupByUUID (conn, (unsigned char *) uuid));
- CHECK_ERROR (!r, conn, "virDomainLookupByUUID");
-
- rv = Val_domain (r, connv);
- CAMLreturn (rv);
-}
-
-CAMLprim value
-ocaml_libvirt_domain_destroy (value domv)
-{
- CAMLparam1 (domv);
- virDomainPtr dom = Domain_val (domv);
- virConnectPtr conn = Connect_domv (domv);
- int r;
-
- NONBLOCKING (r = virDomainDestroy (dom));
- CHECK_ERROR (r == -1, conn, "virDomainDestroy");
-
- /* So that we don't double-free in the finalizer: */
- Domain_val (domv) = NULL;
-
- CAMLreturn (Val_unit);
-}
-
-CAMLprim value
-ocaml_libvirt_domain_free (value domv)
-{
- CAMLparam1 (domv);
- virDomainPtr dom = Domain_val (domv);
- virConnectPtr conn = Connect_domv (domv);
- int r;
-
- NONBLOCKING (r = virDomainFree (dom));
- CHECK_ERROR (r == -1, conn, "virDomainFree");
-
- /* So that we don't double-free in the finalizer: */
- Domain_val (domv) = NULL;
-
- CAMLreturn (Val_unit);
-}
-
-CAMLprim value
-ocaml_libvirt_domain_save (value domv, value pathv)
-{
- CAMLparam2 (domv, pathv);
- virDomainPtr dom = Domain_val (domv);
- virConnectPtr conn = Connect_domv (domv);
- char *path = String_val (pathv);
- int r;
-
- NONBLOCKING (r = virDomainSave (dom, path));
- CHECK_ERROR (r == -1, conn, "virDomainSave");
-
- CAMLreturn (Val_unit);
-}
-
-CAMLprim value
-ocaml_libvirt_domain_restore (value connv, value pathv)
-{
- CAMLparam2 (connv, pathv);
- virConnectPtr conn = Connect_val (connv);
- char *path = String_val (pathv);
- int r;
-
- NONBLOCKING (r = virDomainRestore (conn, path));
- CHECK_ERROR (r == -1, conn, "virDomainRestore");
-
- CAMLreturn (Val_unit);
-}
-
-CAMLprim value
-ocaml_libvirt_domain_core_dump (value domv, value pathv)
-{
- CAMLparam2 (domv, pathv);
- virDomainPtr dom = Domain_val (domv);
- virConnectPtr conn = Connect_domv (domv);
- char *path = String_val (pathv);
- int r;
-
- NONBLOCKING (r = virDomainCoreDump (dom, path, 0));
- CHECK_ERROR (r == -1, conn, "virDomainCoreDump");
-
- CAMLreturn (Val_unit);
-}
-
-CAMLprim value
-ocaml_libvirt_domain_get_uuid (value domv)
-{
- CAMLparam1 (domv);
- CAMLlocal1 (rv);
- virDomainPtr dom = Domain_val (domv);
- virConnectPtr conn = Connect_domv (domv);
- unsigned char uuid[VIR_UUID_BUFLEN];
- int r;
-
- NONBLOCKING (r = virDomainGetUUID (dom, uuid));
- CHECK_ERROR (r == -1, conn, "virDomainGetUUID");
-
- rv = caml_copy_string ((char *) uuid);
- CAMLreturn (rv);
-}
-
-CAMLprim value
-ocaml_libvirt_domain_get_uuid_string (value domv)
-{
- CAMLparam1 (domv);
- CAMLlocal1 (rv);
- virDomainPtr dom = Domain_val (domv);
- virConnectPtr conn = Connect_domv (domv);
- char uuid[VIR_UUID_STRING_BUFLEN];
- int r;
-
- NONBLOCKING (r = virDomainGetUUIDString (dom, uuid));
- CHECK_ERROR (r == -1, conn, "virDomainGetUUIDString");
-
- rv = caml_copy_string (uuid);
- CAMLreturn (rv);
-}
-
-CAMLprim value
ocaml_libvirt_domain_get_id (value domv)
{
CAMLparam1 (domv);
CAMLreturn (rv);
}
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRDOMAINGETSCHEDULERTYPE
+extern char *virDomainGetSchedulerType(virDomainPtr domain,
+ int *nparams)
+ __attribute__((weak));
+#endif
+#endif
+
CAMLprim value
ocaml_libvirt_domain_get_scheduler_type (value domv)
{
#endif
}
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRDOMAINGETSCHEDULERPARAMETERS
+extern int virDomainGetSchedulerParameters (virDomainPtr domain,
+ virSchedParameterPtr params,
+ int *nparams)
+ __attribute__((weak));
+#endif
+#endif
+
CAMLprim value
ocaml_libvirt_domain_get_scheduler_parameters (value domv, value nparamsv)
{
#endif
}
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRDOMAINSETSCHEDULERPARAMETERS
+extern int virDomainSetSchedulerParameters (virDomainPtr domain,
+ virSchedParameterPtr params,
+ int nparams)
+ __attribute__((weak));
+#endif
+#endif
+
CAMLprim value
ocaml_libvirt_domain_set_scheduler_parameters (value domv, value paramsv)
{
}
CAMLprim value
-ocaml_libvirt_domain_define_xml (value connv, value xmlv)
-{
- CAMLparam2 (connv, xmlv);
- CAMLlocal1 (rv);
- virConnectPtr conn = Connect_val (connv);
- char *xml = String_val (xmlv);
- virDomainPtr r;
-
- NONBLOCKING (r = virDomainDefineXML (conn, xml));
- CHECK_ERROR (!r, conn, "virDomainDefineXML");
-
- rv = Val_domain (r, connv);
- CAMLreturn (rv);
-}
-
-CAMLprim value
-ocaml_libvirt_domain_get_autostart (value domv)
-{
- CAMLparam1 (domv);
- virDomainPtr dom = Domain_val (domv);
- virConnectPtr conn = Connect_domv (domv);
- int r, autostart;
-
- NONBLOCKING (r = virDomainGetAutostart (dom, &autostart));
- CHECK_ERROR (r == -1, conn, "virDomainGetAutostart");
-
- CAMLreturn (autostart ? Val_true : Val_false);
-}
-
-CAMLprim value
-ocaml_libvirt_domain_set_autostart (value domv, value autostartv)
-{
- CAMLparam2 (domv, autostartv);
- virDomainPtr dom = Domain_val (domv);
- virConnectPtr conn = Connect_domv (domv);
- int r, autostart = autostartv == Val_true ? 1 : 0;
-
- NONBLOCKING (r = virDomainSetAutostart (dom, autostart));
- CHECK_ERROR (r == -1, conn, "virDomainSetAutostart");
-
- CAMLreturn (Val_unit);
-}
-
-CAMLprim value
ocaml_libvirt_domain_set_vcpus (value domv, value nvcpusv)
{
CAMLparam2 (domv, nvcpusv);
CAMLreturn (rv);
}
-CAMLprim value
-ocaml_libvirt_domain_get_max_vcpus (value domv)
-{
- CAMLparam1 (domv);
- virDomainPtr dom = Domain_val (domv);
- virConnectPtr conn = Connect_domv (domv);
- int r;
-
- NONBLOCKING (r = virDomainGetMaxVcpus (dom));
- CHECK_ERROR (r == -1, conn, "virDomainGetMaxVcpus");
-
- CAMLreturn (Val_int (r));
-}
-
-CAMLprim value
-ocaml_libvirt_domain_attach_device (value domv, value xmlv)
-{
- CAMLparam2 (domv, xmlv);
- virDomainPtr dom = Domain_val (domv);
- virConnectPtr conn = Connect_domv (domv);
- char *xml = String_val (xmlv);
- int r;
-
- NONBLOCKING (r = virDomainAttachDevice (dom, xml));
- CHECK_ERROR (r == -1, conn, "virDomainAttachDevice");
-
- CAMLreturn (Val_unit);
-}
-
-CAMLprim value
-ocaml_libvirt_domain_detach_device (value domv, value xmlv)
-{
- CAMLparam2 (domv, xmlv);
- virDomainPtr dom = Domain_val (domv);
- virConnectPtr conn = Connect_domv (domv);
- char *xml = String_val (xmlv);
- int r;
-
- NONBLOCKING (r = virDomainDetachDevice (dom, xml));
- CHECK_ERROR (r == -1, conn, "virDomainDetachDevice");
-
- CAMLreturn (Val_unit);
-}
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRDOMAINMIGRATE
+extern virDomainPtr virDomainMigrate (virDomainPtr domain, virConnectPtr dconn,
+ unsigned long flags, const char *dname,
+ const char *uri, unsigned long bandwidth)
+ __attribute__((weak));
+#endif
+#endif
CAMLprim value
ocaml_libvirt_domain_migrate_native (value domv, value dconnv, value flagsv, value optdnamev, value opturiv, value optbandwidthv, value unitv)
argv[6]);
}
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRDOMAINBLOCKSTATS
+extern int virDomainBlockStats (virDomainPtr dom,
+ const char *path,
+ virDomainBlockStatsPtr stats,
+ size_t size)
+ __attribute__((weak));
+#endif
+#endif
+
CAMLprim value
ocaml_libvirt_domain_block_stats (value domv, value pathv)
{
#endif
}
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRDOMAININTERFACESTATS
+extern int virDomainInterfaceStats (virDomainPtr dom,
+ const char *path,
+ virDomainInterfaceStatsPtr stats,
+ size_t size)
+ __attribute__((weak));
+#endif
+#endif
+
CAMLprim value
ocaml_libvirt_domain_interface_stats (value domv, value pathv)
{
#endif
}
-CAMLprim value
-ocaml_libvirt_network_lookup_by_uuid (value connv, value uuidv)
-{
- CAMLparam2 (connv, uuidv);
- CAMLlocal1 (rv);
- virConnectPtr conn = Connect_val (connv);
- char *uuid = String_val (uuidv);
- virNetworkPtr r;
-
- NONBLOCKING (r = virNetworkLookupByUUID (conn, (unsigned char *) uuid));
- CHECK_ERROR (!r, conn, "virNetworkLookupByUUID");
-
- rv = Val_network (r, connv);
- CAMLreturn (rv);
-}
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLGETINFO
+extern int virStoragePoolGetInfo(virStoragePoolPtr pool, virStoragePoolInfoPtr info)
+ __attribute__((weak));
+#endif
+#endif
CAMLprim value
-ocaml_libvirt_network_create_xml (value connv, value xmlv)
+ocaml_libvirt_storage_pool_get_info (value poolv)
{
- CAMLparam2 (connv, xmlv);
- CAMLlocal1 (rv);
- virConnectPtr conn = Connect_val (connv);
- char *xml = String_val (xmlv);
- virNetworkPtr r;
-
- NONBLOCKING (r = virNetworkCreateXML (conn, xml));
- CHECK_ERROR (!r, conn, "virNetworkCreateXML");
+#if HAVE_VIRSTORAGEPOOLGETINFO
+ CAMLparam1 (poolv);
+ CAMLlocal2 (rv, v);
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ virStoragePoolInfo info;
+ int r;
- rv = Val_network (r, connv);
- CAMLreturn (rv);
-}
+ WEAK_SYMBOL_CHECK (virStoragePoolGetInfo);
+ NONBLOCKING (r = virStoragePoolGetInfo (pool, &info));
+ CHECK_ERROR (r == -1, conn, "virStoragePoolGetInfo");
-CAMLprim value
-ocaml_libvirt_network_define_xml (value connv, value xmlv)
-{
- CAMLparam2 (connv, xmlv);
- CAMLlocal1 (rv);
- virConnectPtr conn = Connect_val (connv);
- char *xml = String_val (xmlv);
- virNetworkPtr r;
-
- NONBLOCKING (r = virNetworkDefineXML (conn, xml));
- CHECK_ERROR (!r, conn, "virNetworkDefineXML");
+ rv = caml_alloc (4, 0);
+ Store_field (rv, 0, Val_int (info.state));
+ v = caml_copy_int64 (info.capacity); Store_field (rv, 1, v);
+ v = caml_copy_int64 (info.allocation); Store_field (rv, 2, v);
+ v = caml_copy_int64 (info.available); Store_field (rv, 3, v);
- rv = Val_network (r, connv);
CAMLreturn (rv);
+#else
+ not_supported ("virStoragePoolGetInfo");
+#endif
}
-CAMLprim value
-ocaml_libvirt_network_destroy (value netv)
-{
- CAMLparam1 (netv);
- virNetworkPtr net = Network_val (netv);
- virConnectPtr conn = Connect_netv (netv);
- int r;
-
- NONBLOCKING (r = virNetworkDestroy (net));
- CHECK_ERROR (r == -1, conn, "virNetworkDestroy");
-
- /* So that we don't double-free in the finalizer: */
- Network_val (netv) = NULL;
-
- CAMLreturn (Val_unit);
-}
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEVOLGETINFO
+extern int virStorageVolGetInfo(virStorageVolPtr vol, virStorageVolInfoPtr info)
+ __attribute__((weak));
+#endif
+#endif
CAMLprim value
-ocaml_libvirt_network_free (value netv)
+ocaml_libvirt_storage_vol_get_info (value volv)
{
- CAMLparam1 (netv);
- virNetworkPtr net = Network_val (netv);
- virConnectPtr conn = Connect_netv (netv);
+#if HAVE_VIRSTORAGEVOLGETINFO
+ CAMLparam1 (volv);
+ CAMLlocal2 (rv, v);
+ virStorageVolPtr vol = Volume_val (volv);
+ virConnectPtr conn = Connect_volv (volv);
+ virStorageVolInfo info;
int r;
- NONBLOCKING (r = virNetworkFree (net));
- CHECK_ERROR (r == -1, conn, "virNetworkFree");
-
- /* So that we don't double-free in the finalizer: */
- Network_val (netv) = NULL;
+ WEAK_SYMBOL_CHECK (virStorageVolGetInfo);
+ NONBLOCKING (r = virStorageVolGetInfo (vol, &info));
+ CHECK_ERROR (r == -1, conn, "virStorageVolGetInfo");
- CAMLreturn (Val_unit);
-}
+ rv = caml_alloc (3, 0);
+ Store_field (rv, 0, Val_int (info.type));
+ v = caml_copy_int64 (info.capacity); Store_field (rv, 1, v);
+ v = caml_copy_int64 (info.allocation); Store_field (rv, 1, v);
-CAMLprim value
-ocaml_libvirt_network_get_uuid (value netv)
-{
- CAMLparam1 (netv);
- CAMLlocal1 (rv);
- virNetworkPtr net = Network_val (netv);
- virConnectPtr conn = Connect_netv (netv);
- unsigned char uuid[VIR_UUID_BUFLEN];
- int r;
-
- NONBLOCKING (r = virNetworkGetUUID (net, uuid));
- CHECK_ERROR (r == -1, conn, "virNetworkGetUUID");
-
- rv = caml_copy_string ((char *) uuid);
CAMLreturn (rv);
+#else
+ not_supported ("virStorageVolGetInfo");
+#endif
}
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRJOBGETINFO
+extern int virJobGetInfo(virJobPtr job, virJobInfoPtr info)
+ __attribute__((weak));
+#endif
+#endif
+
CAMLprim value
-ocaml_libvirt_network_get_uuid_string (value netv)
+ocaml_libvirt_job_get_info (value jobv)
{
- CAMLparam1 (netv);
+#if HAVE_VIRJOBGETINFO
+ CAMLparam1 (jobv);
CAMLlocal1 (rv);
- virNetworkPtr net = Network_val (netv);
- virConnectPtr conn = Connect_netv (netv);
- char uuid[VIR_UUID_STRING_BUFLEN];
+ virJobPtr job = Job_val (jobv);
+ virConnectPtr conn = Connect_jobv (jobv);
+ virJobInfo info;
int r;
- NONBLOCKING (r = virNetworkGetUUIDString (net, uuid));
- CHECK_ERROR (r == -1, conn, "virNetworkGetUUIDString");
-
- rv = caml_copy_string (uuid);
- CAMLreturn (rv);
-}
-
-CAMLprim value
-ocaml_libvirt_network_get_autostart (value netv)
-{
- CAMLparam1 (netv);
- virNetworkPtr net = Network_val (netv);
- virConnectPtr conn = Connect_netv (netv);
- int r, autostart;
+ WEAK_SYMBOL_CHECK (virJobGetInfo);
+ NONBLOCKING (r = virJobGetInfo (job, &info));
+ CHECK_ERROR (r == -1, conn, "virJobGetInfo");
- NONBLOCKING (r = virNetworkGetAutostart (net, &autostart));
- CHECK_ERROR (r == -1, conn, "virNetworkGetAutostart");
-
- CAMLreturn (autostart ? Val_true : Val_false);
-}
-
-CAMLprim value
-ocaml_libvirt_network_set_autostart (value netv, value autostartv)
-{
- CAMLparam2 (netv, autostartv);
- virNetworkPtr net = Network_val (netv);
- virConnectPtr conn = Connect_netv (netv);
- int r, autostart = autostartv == Val_true ? 1 : 0;
-
- NONBLOCKING (r = virNetworkSetAutostart (net, autostart));
- CHECK_ERROR (r == -1, conn, "virNetworkSetAutostart");
+ rv = caml_alloc (5, 0);
+ Store_field (rv, 0, Val_int (info.type));
+ Store_field (rv, 1, Val_int (info.state));
+ Store_field (rv, 2, Val_int (info.runningTime));
+ Store_field (rv, 3, Val_int (info.remainingTime));
+ Store_field (rv, 4, Val_int (info.percentComplete));
- CAMLreturn (Val_unit);
+ CAMLreturn (rv);
+#else
+ not_supported ("virJobGetInfo");
+#endif
}
/*----------------------------------------------------------------------*/