+ CAMLparam2 (domv, strv);
+
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ char *str = String_val (strv);
+ int r;
+
+ NONBLOCKING (r = virDomainSave (dom, str));
+ CHECK_ERROR (r == -1, conn, "virDomainSave");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virDomainSaveJob.
+ * In generator.pl this function has signature "dom, string : job from dom".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRDOMAINSAVEJOB
+extern virJobPtr virDomainSaveJob (virDomainPtr dom, const char *str) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_domain_save_job (value domv, value strv)
+{
+ CAMLparam2 (domv, strv);
+#ifndef HAVE_VIRDOMAINSAVEJOB
+ /* Symbol virDomainSaveJob not found at compile time. */
+ not_supported ("virDomainSaveJob");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virDomainSaveJob
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virDomainSaveJob);
+
+ CAMLlocal2 (rv, connv);
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ char *str = String_val (strv);
+ virJobPtr r;
+
+ NONBLOCKING (r = virDomainSaveJob (dom, str));
+ CHECK_ERROR (!r, conn, "virDomainSaveJob");
+
+ connv = Field (domv, 1);
+ rv = Val_job (r, connv);
+
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virDomainRestore.
+ * In generator.pl this function has signature "conn, string : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_restore (value connv, value strv)
+{
+ CAMLparam2 (connv, strv);
+
+ virConnectPtr conn = Connect_val (connv);
+ char *str = String_val (strv);
+ int r;
+
+ NONBLOCKING (r = virDomainRestore (conn, str));
+ CHECK_ERROR (r == -1, conn, "virDomainRestore");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virDomainRestoreJob.
+ * In generator.pl this function has signature "conn, string : job".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRDOMAINRESTOREJOB
+extern virJobPtr virDomainRestoreJob (virConnectPtr conn, const char *str) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_domain_restore_job (value connv, value strv)
+{
+ CAMLparam2 (connv, strv);
+#ifndef HAVE_VIRDOMAINRESTOREJOB
+ /* Symbol virDomainRestoreJob not found at compile time. */
+ not_supported ("virDomainRestoreJob");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virDomainRestoreJob
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virDomainRestoreJob);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ char *str = String_val (strv);
+ virJobPtr r;
+
+ NONBLOCKING (r = virDomainRestoreJob (conn, str));
+ CHECK_ERROR (!r, conn, "virDomainRestoreJob");
+
+ rv = Val_job (r, connv);
+
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virDomainCoreDump.
+ * In generator.pl this function has signature "dom, string, 0 : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_core_dump (value domv, value strv)
+{
+ CAMLparam2 (domv, strv);
+
+ CAMLlocal1 (rv);
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ char *str = String_val (strv);
+ int r;
+
+ NONBLOCKING (r = virDomainCoreDump (dom, str, 0));
+ CHECK_ERROR (!r, conn, "virDomainCoreDump");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virDomainCoreDumpJob.
+ * In generator.pl this function has signature "dom, string, 0 : job from dom".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRDOMAINCOREDUMPJOB
+extern virJobPtr virDomainCoreDumpJob (virDomainPtr dom, const char *str, int flags) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_domain_core_dump_job (value domv, value strv)
+{
+ CAMLparam2 (domv, strv);
+#ifndef HAVE_VIRDOMAINCOREDUMPJOB
+ /* Symbol virDomainCoreDumpJob not found at compile time. */
+ not_supported ("virDomainCoreDumpJob");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virDomainCoreDumpJob
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virDomainCoreDumpJob);
+
+ CAMLlocal2 (rv, connv);
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ char *str = String_val (strv);
+ virJobPtr r;
+
+ NONBLOCKING (r = virDomainCoreDumpJob (dom, str, 0));
+ CHECK_ERROR (!r, conn, "virDomainCoreDumpJob");
+
+ connv = Field (domv, 1);
+ rv = Val_job (r, connv);
+
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virDomainSuspend.
+ * In generator.pl this function has signature "dom : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_suspend (value domv)
+{
+ CAMLparam1 (domv);
+
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ int r;
+
+ NONBLOCKING (r = virDomainSuspend (dom));
+ CHECK_ERROR (r == -1, conn, "virDomainSuspend");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virDomainResume.
+ * In generator.pl this function has signature "dom : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_resume (value domv)
+{
+ CAMLparam1 (domv);
+
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ int r;
+
+ NONBLOCKING (r = virDomainResume (dom));
+ CHECK_ERROR (r == -1, conn, "virDomainResume");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virDomainShutdown.
+ * In generator.pl this function has signature "dom : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_shutdown (value domv)
+{
+ CAMLparam1 (domv);
+
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ int r;
+
+ NONBLOCKING (r = virDomainShutdown (dom));
+ CHECK_ERROR (r == -1, conn, "virDomainShutdown");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virDomainReboot.
+ * In generator.pl this function has signature "dom, 0 : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_reboot (value domv)
+{
+ CAMLparam1 (domv);
+
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ int r;
+
+ NONBLOCKING (r = virDomainReboot (dom, 0));
+ CHECK_ERROR (r == -1, conn, "virDomainReboot");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virDomainDefineXML.
+ * In generator.pl this function has signature "conn, string : dom".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_define_xml (value connv, value strv)
+{
+ CAMLparam2 (connv, strv);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ char *str = String_val (strv);
+ virDomainPtr r;
+
+ NONBLOCKING (r = virDomainDefineXML (conn, str));
+ CHECK_ERROR (!r, conn, "virDomainDefineXML");
+
+ rv = Val_domain (r, connv);
+
+ CAMLreturn (rv);
+}
+
+/* Automatically generated binding for virDomainUndefine.
+ * In generator.pl this function has signature "dom : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_undefine (value domv)
+{
+ CAMLparam1 (domv);
+
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ int r;
+
+ NONBLOCKING (r = virDomainUndefine (dom));
+ CHECK_ERROR (r == -1, conn, "virDomainUndefine");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virDomainCreate.
+ * In generator.pl this function has signature "dom : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_create (value domv)
+{
+ CAMLparam1 (domv);
+
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ int r;
+
+ NONBLOCKING (r = virDomainCreate (dom));
+ CHECK_ERROR (r == -1, conn, "virDomainCreate");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virDomainCreateJob.
+ * In generator.pl this function has signature "dom, 0U : job from dom".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRDOMAINCREATEJOB
+extern virJobPtr virDomainCreateJob (virDomainPtr dom, unsigned int flags) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_domain_create_job (value domv)
+{
+ CAMLparam1 (domv);
+#ifndef HAVE_VIRDOMAINCREATEJOB
+ /* Symbol virDomainCreateJob not found at compile time. */
+ not_supported ("virDomainCreateJob");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virDomainCreateJob
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virDomainCreateJob);
+
+ CAMLlocal2 (rv, connv);
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ virJobPtr r;
+
+ NONBLOCKING (r = virDomainCreateJob (dom, 0));
+ CHECK_ERROR (!r, conn, "virDomainCreateJob");
+
+ connv = Field (domv, 1);
+ rv = Val_job (r, connv);
+
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virDomainAttachDevice.
+ * In generator.pl this function has signature "dom, string : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_attach_device (value domv, value strv)
+{
+ CAMLparam2 (domv, strv);
+
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ char *str = String_val (strv);
+ int r;
+
+ NONBLOCKING (r = virDomainAttachDevice (dom, str));
+ CHECK_ERROR (r == -1, conn, "virDomainAttachDevice");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virDomainDetachDevice.
+ * In generator.pl this function has signature "dom, string : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_detach_device (value domv, value strv)
+{
+ CAMLparam2 (domv, strv);
+
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ char *str = String_val (strv);
+ int r;
+
+ NONBLOCKING (r = virDomainDetachDevice (dom, str));
+ CHECK_ERROR (r == -1, conn, "virDomainDetachDevice");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virDomainGetAutostart.
+ * In generator.pl this function has signature "dom : bool".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_get_autostart (value domv)
+{
+ CAMLparam1 (domv);
+
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ int r, b;
+
+ NONBLOCKING (r = virDomainGetAutostart (dom, &b));
+ CHECK_ERROR (r == -1, conn, "virDomainGetAutostart");
+
+ CAMLreturn (b ? Val_true : Val_false);
+}
+
+/* Automatically generated binding for virDomainSetAutostart.
+ * In generator.pl this function has signature "dom, bool : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_domain_set_autostart (value domv, value bv)
+{
+ CAMLparam2 (domv, bv);
+
+ virDomainPtr dom = Domain_val (domv);
+ virConnectPtr conn = Connect_domv (domv);
+ int r, b;
+
+ b = bv == Val_true ? 1 : 0;
+
+ NONBLOCKING (r = virDomainSetAutostart (dom, b));
+ CHECK_ERROR (r == -1, conn, "virDomainSetAutostart");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virNetworkFree.
+ * In generator.pl this function has signature "net : free".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_free (value netv)
+{
+ CAMLparam1 (netv);
+
+ virNetworkPtr net = Network_val (netv);
+ virConnectPtr conn = Connect_netv (netv);
+ 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;
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virNetworkDestroy.
+ * In generator.pl this function has signature "net : free".
+ */
+
+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);
+}
+
+/* Automatically generated binding for virNetworkLookupByName.
+ * In generator.pl this function has signature "conn, string : net".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_lookup_by_name (value connv, value strv)
+{
+ CAMLparam2 (connv, strv);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ char *str = String_val (strv);
+ virNetworkPtr r;
+
+ NONBLOCKING (r = virNetworkLookupByName (conn, str));
+ CHECK_ERROR (!r, conn, "virNetworkLookupByName");
+
+ rv = Val_network (r, connv);
+
+ CAMLreturn (rv);
+}
+
+/* Automatically generated binding for virNetworkLookupByUUID.
+ * In generator.pl this function has signature "conn, uuid : net".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_lookup_by_uuid (value connv, value uuidv)
+{
+ CAMLparam2 (connv, uuidv);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ unsigned char *uuid = (unsigned char *) String_val (uuidv);
+ virNetworkPtr r;
+
+ NONBLOCKING (r = virNetworkLookupByUUID (conn, uuid));
+ CHECK_ERROR (!r, conn, "virNetworkLookupByUUID");
+
+ rv = Val_network (r, connv);
+
+ CAMLreturn (rv);
+}
+
+/* Automatically generated binding for virNetworkLookupByUUIDString.
+ * In generator.pl this function has signature "conn, string : net".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_lookup_by_uuid_string (value connv, value strv)
+{
+ CAMLparam2 (connv, strv);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ char *str = String_val (strv);
+ virNetworkPtr r;
+
+ NONBLOCKING (r = virNetworkLookupByUUIDString (conn, str));
+ CHECK_ERROR (!r, conn, "virNetworkLookupByUUIDString");
+
+ rv = Val_network (r, connv);
+
+ CAMLreturn (rv);
+}
+
+/* Automatically generated binding for virNetworkGetName.
+ * In generator.pl this function has signature "net : static string".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_get_name (value netv)
+{
+ CAMLparam1 (netv);
+
+ CAMLlocal1 (rv);
+ virNetworkPtr net = Network_val (netv);
+ virConnectPtr conn = Connect_netv (netv);
+ const char *r;
+
+ NONBLOCKING (r = virNetworkGetName (net));
+ CHECK_ERROR (!r, conn, "virNetworkGetName");
+
+ rv = caml_copy_string (r);
+ CAMLreturn (rv);
+}
+
+/* Automatically generated binding for virNetworkGetXMLDesc.
+ * In generator.pl this function has signature "net, 0 : string".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_get_xml_desc (value netv)
+{
+ CAMLparam1 (netv);
+
+ CAMLlocal1 (rv);
+ virNetworkPtr net = Network_val (netv);
+ virConnectPtr conn = Connect_netv (netv);
+ char *r;
+
+ NONBLOCKING (r = virNetworkGetXMLDesc (net, 0));
+ CHECK_ERROR (!r, conn, "virNetworkGetXMLDesc");
+
+ rv = caml_copy_string (r);
+ free (r);
+ CAMLreturn (rv);
+}
+
+/* Automatically generated binding for virNetworkGetBridgeName.
+ * In generator.pl this function has signature "net : string".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_get_bridge_name (value netv)
+{
+ CAMLparam1 (netv);
+
+ CAMLlocal1 (rv);
+ virNetworkPtr net = Network_val (netv);
+ virConnectPtr conn = Connect_netv (netv);
+ char *r;
+
+ NONBLOCKING (r = virNetworkGetBridgeName (net));
+ CHECK_ERROR (!r, conn, "virNetworkGetBridgeName");
+
+ rv = caml_copy_string (r);
+ free (r);
+ CAMLreturn (rv);
+}
+
+/* Automatically generated binding for virNetworkGetUUID.
+ * In generator.pl this function has signature "net : uuid".
+ */
+
+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");
+
+ /* UUIDs are byte arrays with a fixed length. */
+ rv = caml_alloc_string (VIR_UUID_BUFLEN);
+ memcpy (String_val (rv), uuid, VIR_UUID_BUFLEN);
+ CAMLreturn (rv);
+}
+
+/* Automatically generated binding for virNetworkGetUUIDString.
+ * In generator.pl this function has signature "net : uuid string".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_get_uuid_string (value netv)
+{
+ CAMLparam1 (netv);
+
+ CAMLlocal1 (rv);
+ virNetworkPtr net = Network_val (netv);
+ virConnectPtr conn = Connect_netv (netv);
+ char uuid[VIR_UUID_STRING_BUFLEN];
+ int r;
+
+ NONBLOCKING (r = virNetworkGetUUIDString (net, uuid));
+ CHECK_ERROR (r == -1, conn, "virNetworkGetUUIDString");
+
+ rv = caml_copy_string (uuid);
+ CAMLreturn (rv);
+}
+
+/* Automatically generated binding for virNetworkUndefine.
+ * In generator.pl this function has signature "net : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_undefine (value netv)
+{
+ CAMLparam1 (netv);
+
+ virNetworkPtr net = Network_val (netv);
+ virConnectPtr conn = Connect_netv (netv);
+ int r;
+
+ NONBLOCKING (r = virNetworkUndefine (net));
+ CHECK_ERROR (r == -1, conn, "virNetworkUndefine");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virNetworkCreateXML.
+ * In generator.pl this function has signature "conn, string : net".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_create_xml (value connv, value strv)
+{
+ CAMLparam2 (connv, strv);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ char *str = String_val (strv);
+ virNetworkPtr r;
+
+ NONBLOCKING (r = virNetworkCreateXML (conn, str));
+ CHECK_ERROR (!r, conn, "virNetworkCreateXML");
+
+ rv = Val_network (r, connv);
+
+ CAMLreturn (rv);
+}
+
+/* Automatically generated binding for virNetworkCreateXMLJob.
+ * In generator.pl this function has signature "conn, string : job".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRNETWORKCREATEXMLJOB
+extern virJobPtr virNetworkCreateXMLJob (virConnectPtr conn, const char *str) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_network_create_xml_job (value connv, value strv)
+{
+ CAMLparam2 (connv, strv);
+#ifndef HAVE_VIRNETWORKCREATEXMLJOB
+ /* Symbol virNetworkCreateXMLJob not found at compile time. */
+ not_supported ("virNetworkCreateXMLJob");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virNetworkCreateXMLJob
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virNetworkCreateXMLJob);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ char *str = String_val (strv);
+ virJobPtr r;
+
+ NONBLOCKING (r = virNetworkCreateXMLJob (conn, str));
+ CHECK_ERROR (!r, conn, "virNetworkCreateXMLJob");
+
+ rv = Val_job (r, connv);
+
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virNetworkDefineXML.
+ * In generator.pl this function has signature "conn, string : net".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_define_xml (value connv, value strv)
+{
+ CAMLparam2 (connv, strv);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ char *str = String_val (strv);
+ virNetworkPtr r;
+
+ NONBLOCKING (r = virNetworkDefineXML (conn, str));
+ CHECK_ERROR (!r, conn, "virNetworkDefineXML");
+
+ rv = Val_network (r, connv);
+
+ CAMLreturn (rv);
+}
+
+/* Automatically generated binding for virNetworkCreate.
+ * In generator.pl this function has signature "net : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_create (value netv)
+{
+ CAMLparam1 (netv);
+
+ virNetworkPtr net = Network_val (netv);
+ virConnectPtr conn = Connect_netv (netv);
+ int r;
+
+ NONBLOCKING (r = virNetworkCreate (net));
+ CHECK_ERROR (r == -1, conn, "virNetworkCreate");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virNetworkCreateJob.
+ * In generator.pl this function has signature "net : job from net".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRNETWORKCREATEJOB
+extern virJobPtr virNetworkCreateJob (virNetworkPtr net) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_network_create_job (value netv)
+{
+ CAMLparam1 (netv);
+#ifndef HAVE_VIRNETWORKCREATEJOB
+ /* Symbol virNetworkCreateJob not found at compile time. */
+ not_supported ("virNetworkCreateJob");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virNetworkCreateJob
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virNetworkCreateJob);
+
+ CAMLlocal2 (rv, connv);
+ virNetworkPtr net = Network_val (netv);
+ virConnectPtr conn = Connect_netv (netv);
+ virJobPtr r;
+
+ NONBLOCKING (r = virNetworkCreateJob (net));
+ CHECK_ERROR (!r, conn, "virNetworkCreateJob");
+
+ connv = Field (netv, 1);
+ rv = Val_job (r, connv);
+
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virNetworkGetAutostart.
+ * In generator.pl this function has signature "net : bool".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_get_autostart (value netv)
+{
+ CAMLparam1 (netv);
+
+ virNetworkPtr net = Network_val (netv);
+ virConnectPtr conn = Connect_netv (netv);
+ int r, b;
+
+ NONBLOCKING (r = virNetworkGetAutostart (net, &b));
+ CHECK_ERROR (r == -1, conn, "virNetworkGetAutostart");
+
+ CAMLreturn (b ? Val_true : Val_false);
+}
+
+/* Automatically generated binding for virNetworkSetAutostart.
+ * In generator.pl this function has signature "net, bool : unit".
+ */
+
+CAMLprim value
+ocaml_libvirt_network_set_autostart (value netv, value bv)
+{
+ CAMLparam2 (netv, bv);
+
+ virNetworkPtr net = Network_val (netv);
+ virConnectPtr conn = Connect_netv (netv);
+ int r, b;
+
+ b = bv == Val_true ? 1 : 0;
+
+ NONBLOCKING (r = virNetworkSetAutostart (net, b));
+ CHECK_ERROR (r == -1, conn, "virNetworkSetAutostart");
+
+ CAMLreturn (Val_unit);
+}
+
+/* Automatically generated binding for virStoragePoolFree.
+ * In generator.pl this function has signature "pool : free".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLFREE
+extern int virStoragePoolFree (virStoragePoolPtr pool) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_free (value poolv)
+{
+ CAMLparam1 (poolv);
+#ifndef HAVE_VIRSTORAGEPOOLFREE
+ /* Symbol virStoragePoolFree not found at compile time. */
+ not_supported ("virStoragePoolFree");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolFree
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolFree);
+
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ int r;
+
+ NONBLOCKING (r = virStoragePoolFree (pool));
+ CHECK_ERROR (r == -1, conn, "virStoragePoolFree");
+
+ /* So that we don't double-free in the finalizer: */
+ Pool_val (poolv) = NULL;
+
+ CAMLreturn (Val_unit);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolDestroy.
+ * In generator.pl this function has signature "pool : free".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLDESTROY
+extern int virStoragePoolDestroy (virStoragePoolPtr pool) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_destroy (value poolv)
+{
+ CAMLparam1 (poolv);
+#ifndef HAVE_VIRSTORAGEPOOLDESTROY
+ /* Symbol virStoragePoolDestroy not found at compile time. */
+ not_supported ("virStoragePoolDestroy");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolDestroy
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolDestroy);
+
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ int r;
+
+ NONBLOCKING (r = virStoragePoolDestroy (pool));
+ CHECK_ERROR (r == -1, conn, "virStoragePoolDestroy");
+
+ /* So that we don't double-free in the finalizer: */
+ Pool_val (poolv) = NULL;
+
+ CAMLreturn (Val_unit);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolLookupByName.
+ * In generator.pl this function has signature "conn, string : pool".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLLOOKUPBYNAME
+extern virStoragePoolPtr virStoragePoolLookupByName (virConnectPtr conn, const char *str) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_lookup_by_name (value connv, value strv)
+{
+ CAMLparam2 (connv, strv);
+#ifndef HAVE_VIRSTORAGEPOOLLOOKUPBYNAME
+ /* Symbol virStoragePoolLookupByName not found at compile time. */
+ not_supported ("virStoragePoolLookupByName");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolLookupByName
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolLookupByName);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ char *str = String_val (strv);
+ virStoragePoolPtr r;
+
+ NONBLOCKING (r = virStoragePoolLookupByName (conn, str));
+ CHECK_ERROR (!r, conn, "virStoragePoolLookupByName");
+
+ rv = Val_pool (r, connv);
+
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolLookupByUUID.
+ * In generator.pl this function has signature "conn, uuid : pool".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLLOOKUPBYUUID
+extern virStoragePoolPtr virStoragePoolLookupByUUID (virConnectPtr conn, const unsigned char *str) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_lookup_by_uuid (value connv, value uuidv)
+{
+ CAMLparam2 (connv, uuidv);
+#ifndef HAVE_VIRSTORAGEPOOLLOOKUPBYUUID
+ /* Symbol virStoragePoolLookupByUUID not found at compile time. */
+ not_supported ("virStoragePoolLookupByUUID");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolLookupByUUID
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolLookupByUUID);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ unsigned char *uuid = (unsigned char *) String_val (uuidv);
+ virStoragePoolPtr r;
+
+ NONBLOCKING (r = virStoragePoolLookupByUUID (conn, uuid));
+ CHECK_ERROR (!r, conn, "virStoragePoolLookupByUUID");
+
+ rv = Val_pool (r, connv);
+
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolLookupByUUIDString.
+ * In generator.pl this function has signature "conn, string : pool".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLLOOKUPBYUUIDSTRING
+extern virStoragePoolPtr virStoragePoolLookupByUUIDString (virConnectPtr conn, const char *str) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_lookup_by_uuid_string (value connv, value strv)
+{
+ CAMLparam2 (connv, strv);
+#ifndef HAVE_VIRSTORAGEPOOLLOOKUPBYUUIDSTRING
+ /* Symbol virStoragePoolLookupByUUIDString not found at compile time. */
+ not_supported ("virStoragePoolLookupByUUIDString");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolLookupByUUIDString
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolLookupByUUIDString);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ char *str = String_val (strv);
+ virStoragePoolPtr r;
+
+ NONBLOCKING (r = virStoragePoolLookupByUUIDString (conn, str));
+ CHECK_ERROR (!r, conn, "virStoragePoolLookupByUUIDString");
+
+ rv = Val_pool (r, connv);
+
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolGetName.
+ * In generator.pl this function has signature "pool : static string".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLGETNAME
+extern const char *virStoragePoolGetName (virStoragePoolPtr pool) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_get_name (value poolv)
+{
+ CAMLparam1 (poolv);
+#ifndef HAVE_VIRSTORAGEPOOLGETNAME
+ /* Symbol virStoragePoolGetName not found at compile time. */
+ not_supported ("virStoragePoolGetName");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolGetName
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolGetName);
+
+ CAMLlocal1 (rv);
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ const char *r;
+
+ NONBLOCKING (r = virStoragePoolGetName (pool));
+ CHECK_ERROR (!r, conn, "virStoragePoolGetName");
+
+ rv = caml_copy_string (r);
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolGetXMLDesc.
+ * In generator.pl this function has signature "pool, 0U : string".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLGETXMLDESC
+extern char *virStoragePoolGetXMLDesc (virStoragePoolPtr pool, unsigned int flags) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_get_xml_desc (value poolv)
+{
+ CAMLparam1 (poolv);
+#ifndef HAVE_VIRSTORAGEPOOLGETXMLDESC
+ /* Symbol virStoragePoolGetXMLDesc not found at compile time. */
+ not_supported ("virStoragePoolGetXMLDesc");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolGetXMLDesc
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolGetXMLDesc);
+
+ CAMLlocal1 (rv);
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ char *r;
+
+ NONBLOCKING (r = virStoragePoolGetXMLDesc (pool, 0));
+ CHECK_ERROR (!r, conn, "virStoragePoolGetXMLDesc");
+
+ rv = caml_copy_string (r);
+ free (r);
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolGetUUID.
+ * In generator.pl this function has signature "pool : uuid".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLGETUUID
+extern int virStoragePoolGetUUID (virStoragePoolPtr pool, unsigned char *) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_get_uuid (value poolv)
+{
+ CAMLparam1 (poolv);
+#ifndef HAVE_VIRSTORAGEPOOLGETUUID
+ /* Symbol virStoragePoolGetUUID not found at compile time. */
+ not_supported ("virStoragePoolGetUUID");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolGetUUID
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolGetUUID);
+
+ CAMLlocal1 (rv);
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ unsigned char uuid[VIR_UUID_BUFLEN];
+ int r;
+
+ NONBLOCKING (r = virStoragePoolGetUUID (pool, uuid));
+ CHECK_ERROR (r == -1, conn, "virStoragePoolGetUUID");
+
+ /* UUIDs are byte arrays with a fixed length. */
+ rv = caml_alloc_string (VIR_UUID_BUFLEN);
+ memcpy (String_val (rv), uuid, VIR_UUID_BUFLEN);
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolGetUUIDString.
+ * In generator.pl this function has signature "pool : uuid string".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLGETUUIDSTRING
+extern int virStoragePoolGetUUIDString (virStoragePoolPtr pool, char *) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_get_uuid_string (value poolv)
+{
+ CAMLparam1 (poolv);
+#ifndef HAVE_VIRSTORAGEPOOLGETUUIDSTRING
+ /* Symbol virStoragePoolGetUUIDString not found at compile time. */
+ not_supported ("virStoragePoolGetUUIDString");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolGetUUIDString
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolGetUUIDString);
+
+ CAMLlocal1 (rv);
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ char uuid[VIR_UUID_STRING_BUFLEN];
+ int r;
+
+ NONBLOCKING (r = virStoragePoolGetUUIDString (pool, uuid));
+ CHECK_ERROR (r == -1, conn, "virStoragePoolGetUUIDString");
+
+ rv = caml_copy_string (uuid);
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolCreateXML.
+ * In generator.pl this function has signature "conn, string, 0U : pool".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLCREATEXML
+extern virStoragePoolPtr virStoragePoolCreateXML (virConnectPtr conn, const char *str, unsigned int flags) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_create_xml (value connv, value strv)
+{
+ CAMLparam2 (connv, strv);
+#ifndef HAVE_VIRSTORAGEPOOLCREATEXML
+ /* Symbol virStoragePoolCreateXML not found at compile time. */
+ not_supported ("virStoragePoolCreateXML");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolCreateXML
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolCreateXML);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ char *str = String_val (strv);
+ virStoragePoolPtr r;
+
+ NONBLOCKING (r = virStoragePoolCreateXML (conn, str, 0));
+ CHECK_ERROR (!r, conn, "virStoragePoolCreateXML");
+
+ rv = Val_pool (r, connv);
+
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolDefineXML.
+ * In generator.pl this function has signature "conn, string, 0U : pool".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLDEFINEXML
+extern virStoragePoolPtr virStoragePoolDefineXML (virConnectPtr conn, const char *str, unsigned int flags) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_define_xml (value connv, value strv)
+{
+ CAMLparam2 (connv, strv);
+#ifndef HAVE_VIRSTORAGEPOOLDEFINEXML
+ /* Symbol virStoragePoolDefineXML not found at compile time. */
+ not_supported ("virStoragePoolDefineXML");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolDefineXML
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolDefineXML);
+
+ CAMLlocal1 (rv);
+ virConnectPtr conn = Connect_val (connv);
+ char *str = String_val (strv);
+ virStoragePoolPtr r;
+
+ NONBLOCKING (r = virStoragePoolDefineXML (conn, str, 0));
+ CHECK_ERROR (!r, conn, "virStoragePoolDefineXML");
+
+ rv = Val_pool (r, connv);
+
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolBuild.
+ * In generator.pl this function has signature "pool, uint : unit".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLBUILD
+extern int virStoragePoolBuild (virStoragePoolPtr pool, unsigned int i) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_build (value poolv, value iv)
+{
+ CAMLparam2 (poolv, iv);
+#ifndef HAVE_VIRSTORAGEPOOLBUILD
+ /* Symbol virStoragePoolBuild not found at compile time. */
+ not_supported ("virStoragePoolBuild");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolBuild
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolBuild);
+
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ unsigned int i = Int_val (iv);
+ int r;
+
+ NONBLOCKING (r = virStoragePoolBuild (pool, i));
+ CHECK_ERROR (!r, conn, "virStoragePoolBuild");
+
+ CAMLreturn (Val_unit);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolUndefine.
+ * In generator.pl this function has signature "pool : unit".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLUNDEFINE
+extern int virStoragePoolUndefine (virStoragePoolPtr pool) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_undefine (value poolv)
+{
+ CAMLparam1 (poolv);
+#ifndef HAVE_VIRSTORAGEPOOLUNDEFINE
+ /* Symbol virStoragePoolUndefine not found at compile time. */
+ not_supported ("virStoragePoolUndefine");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolUndefine
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolUndefine);
+
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ int r;
+
+ NONBLOCKING (r = virStoragePoolUndefine (pool));
+ CHECK_ERROR (r == -1, conn, "virStoragePoolUndefine");
+
+ CAMLreturn (Val_unit);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolCreate.
+ * In generator.pl this function has signature "pool, 0U : unit".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLCREATE
+extern int virStoragePoolCreate (virStoragePoolPtr pool, unsigned int flags) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_create (value poolv)
+{
+ CAMLparam1 (poolv);
+#ifndef HAVE_VIRSTORAGEPOOLCREATE
+ /* Symbol virStoragePoolCreate not found at compile time. */
+ not_supported ("virStoragePoolCreate");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolCreate
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolCreate);
+
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ int r;
+
+ NONBLOCKING (r = virStoragePoolCreate (pool, 0));
+ CHECK_ERROR (r == -1, conn, "virStoragePoolCreate");
+
+ CAMLreturn (Val_unit);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolDelete.
+ * In generator.pl this function has signature "pool, uint : unit".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLDELETE
+extern int virStoragePoolDelete (virStoragePoolPtr pool, unsigned int i) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_delete (value poolv, value iv)
+{
+ CAMLparam2 (poolv, iv);
+#ifndef HAVE_VIRSTORAGEPOOLDELETE
+ /* Symbol virStoragePoolDelete not found at compile time. */
+ not_supported ("virStoragePoolDelete");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolDelete
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolDelete);
+
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ unsigned int i = Int_val (iv);
+ int r;
+
+ NONBLOCKING (r = virStoragePoolDelete (pool, i));
+ CHECK_ERROR (!r, conn, "virStoragePoolDelete");
+
+ CAMLreturn (Val_unit);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolRefresh.
+ * In generator.pl this function has signature "pool, 0U : unit".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLREFRESH
+extern int virStoragePoolRefresh (virStoragePoolPtr pool, unsigned int flags) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_refresh (value poolv)
+{
+ CAMLparam1 (poolv);
+#ifndef HAVE_VIRSTORAGEPOOLREFRESH
+ /* Symbol virStoragePoolRefresh not found at compile time. */
+ not_supported ("virStoragePoolRefresh");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolRefresh
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolRefresh);
+
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ int r;
+
+ NONBLOCKING (r = virStoragePoolRefresh (pool, 0));
+ CHECK_ERROR (r == -1, conn, "virStoragePoolRefresh");
+
+ CAMLreturn (Val_unit);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolGetAutostart.
+ * In generator.pl this function has signature "pool : bool".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLGETAUTOSTART
+extern int virStoragePoolGetAutostart (virStoragePoolPtr pool, int *r) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_get_autostart (value poolv)
+{
+ CAMLparam1 (poolv);
+#ifndef HAVE_VIRSTORAGEPOOLGETAUTOSTART
+ /* Symbol virStoragePoolGetAutostart not found at compile time. */
+ not_supported ("virStoragePoolGetAutostart");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolGetAutostart
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolGetAutostart);
+
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ int r, b;
+
+ NONBLOCKING (r = virStoragePoolGetAutostart (pool, &b));
+ CHECK_ERROR (r == -1, conn, "virStoragePoolGetAutostart");
+
+ CAMLreturn (b ? Val_true : Val_false);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolSetAutostart.
+ * In generator.pl this function has signature "pool, bool : unit".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLSETAUTOSTART
+extern int virStoragePoolSetAutostart (virStoragePoolPtr pool, int b) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_set_autostart (value poolv, value bv)
+{
+ CAMLparam2 (poolv, bv);
+#ifndef HAVE_VIRSTORAGEPOOLSETAUTOSTART
+ /* Symbol virStoragePoolSetAutostart not found at compile time. */
+ not_supported ("virStoragePoolSetAutostart");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolSetAutostart
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolSetAutostart);
+
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ int r, b;
+
+ b = bv == Val_true ? 1 : 0;
+
+ NONBLOCKING (r = virStoragePoolSetAutostart (pool, b));
+ CHECK_ERROR (r == -1, conn, "virStoragePoolSetAutostart");
+
+ CAMLreturn (Val_unit);
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolNumOfVolumes.
+ * In generator.pl this function has signature "pool : int".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLNUMOFVOLUMES
+extern int virStoragePoolNumOfVolumes (virStoragePoolPtr pool) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_num_of_volumes (value poolv)
+{
+ CAMLparam1 (poolv);
+#ifndef HAVE_VIRSTORAGEPOOLNUMOFVOLUMES
+ /* Symbol virStoragePoolNumOfVolumes not found at compile time. */
+ not_supported ("virStoragePoolNumOfVolumes");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolNumOfVolumes
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolNumOfVolumes);
+
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ int r;
+
+ NONBLOCKING (r = virStoragePoolNumOfVolumes (pool));
+ CHECK_ERROR (r == -1, conn, "virStoragePoolNumOfVolumes");
+
+ CAMLreturn (Val_int (r));
+#endif
+}
+
+/* Automatically generated binding for virStoragePoolListVolumes.
+ * In generator.pl this function has signature "pool, int : string array".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEPOOLLISTVOLUMES
+extern int virStoragePoolListVolumes (virStoragePoolPtr pool, char **const names, int maxnames) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_pool_list_volumes (value poolv, value iv)
+{
+ CAMLparam2 (poolv, iv);
+#ifndef HAVE_VIRSTORAGEPOOLLISTVOLUMES
+ /* Symbol virStoragePoolListVolumes not found at compile time. */
+ not_supported ("virStoragePoolListVolumes");
+ CAMLnoreturn;
+#else
+ /* Check that the symbol virStoragePoolListVolumes
+ * is in runtime version of libvirt.
+ */
+ WEAK_SYMBOL_CHECK (virStoragePoolListVolumes);
+
+ CAMLlocal2 (rv, strv);
+ virStoragePoolPtr pool = Pool_val (poolv);
+ virConnectPtr conn = Connect_polv (poolv);
+ int i = Int_val (iv);
+ char *names[i];
+ int r;
+
+ NONBLOCKING (r = virStoragePoolListVolumes (pool, names, i));
+ CHECK_ERROR (r == -1, conn, "virStoragePoolListVolumes");
+
+ rv = caml_alloc (r, 0);
+ for (i = 0; i < r; ++i) {
+ strv = caml_copy_string (names[i]);
+ Store_field (rv, i, strv);
+ free (names[i]);
+ }
+
+ CAMLreturn (rv);
+#endif
+}
+
+/* Automatically generated binding for virStorageVolFree.
+ * In generator.pl this function has signature "vol : free".
+ */
+
+#ifdef HAVE_WEAK_SYMBOLS
+#ifdef HAVE_VIRSTORAGEVOLFREE
+extern int virStorageVolFree (virStorageVolPtr vol) __attribute__((weak));
+#endif
+#endif
+
+CAMLprim value
+ocaml_libvirt_storage_vol_free (value volv)
+{
+ CAMLparam1 (volv);
+#ifndef HAVE_VIRSTORAGEVOLFREE
+ /* Symbol virStorageVolFree not found at compile time. */
+ not_supported ("virStorageVolFree");
+ CAMLnoreturn;