---
src/Makefile.am | 3 +-
src/libvirt-network.c | 587 ++++++++++++++++++++++++++++++++++++++++++++++++
src/libvirt-network.h | 73 ++++++
src/libvirt-php.c | 610 +-------------------------------------------------
src/libvirt-php.h | 24 +-
5 files changed, 665 insertions(+), 632 deletions(-)
create mode 100644 src/libvirt-network.c
create mode 100644 src/libvirt-network.h
diff --git a/src/Makefile.am b/src/Makefile.am
index b8eae3a..4ae01db 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -25,7 +25,8 @@ libvirt_php_la_SOURCES = \
libvirt-connection.c libvirt-connection.h \
libvirt-node.c libvirt-node.h \
libvirt-stream.c libvirt-stream.h \
- libvirt-domain.c libvirt-domain.h
+ libvirt-domain.c libvirt-domain.h \
+ libvirt-network.c libvirt-network.h
libvirt_php_la_CFLAGS = \
$(AM_CFLAGS) \
-DCOMPILE_DL_LIBVIRT=1
diff --git a/src/libvirt-network.c b/src/libvirt-network.c
new file mode 100644
index 0000000..464b060
--- /dev/null
+++ b/src/libvirt-network.c
@@ -0,0 +1,587 @@
+/*
+ * libvirt-network.c: The PHP bindings to libvirt network API
+ *
+ * See COPYING for the license of this software
+ */
+
+#include <libvirt/libvirt.h>
+
+#include "libvirt-php.h"
+#include "libvirt-network.h"
+
+DEBUG_INIT("network");
+
+void
+php_libvirt_network_dtor(virt_resource *rsrc TSRMLS_DC)
+{
+ php_libvirt_network *network = (php_libvirt_network *)rsrc->ptr;
+ int rv = 0;
+
+ if (network != NULL) {
+ if (network->network != NULL) {
+ if (!check_resource_allocation(network->conn->conn,
INT_RESOURCE_NETWORK, network->network TSRMLS_CC)) {
+ network->network = NULL;
+ efree(network);
+ return;
+ }
+ rv = virNetworkFree(network->network);
+ if (rv != 0) {
+ DPRINTF("%s: virNetworkFree(%p) returned %d (%s)\n",
__FUNCTION__, network->network, rv, LIBVIRT_G(last_error));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "virStorageVolFree
failed with %i on destructor: %s", rv, LIBVIRT_G(last_error));
+ } else {
+ DPRINTF("%s: virNetworkFree(%p) completed successfully\n",
__FUNCTION__, network->network);
+ resource_change_counter(INT_RESOURCE_NETWORK, NULL, network->network,
0 TSRMLS_CC);
+ }
+ network->network = NULL;
+ }
+ efree(network);
+ }
+}
+
+/*
+ * Function name: libvirt_network_define_xml
+ * Since version: 0.4.2
+ * Description: Function is used to define a new virtual network based on the XML
description
+ * Arguments: @res [resource]: libvirt connection resource
+ * @xml [string]: XML string definition of network to be defined
+ * Returns: libvirt network resource of newly defined network
+ */
+PHP_FUNCTION(libvirt_network_define_xml)
+{
+ php_libvirt_connection *conn = NULL;
+ php_libvirt_network *res_net = NULL;
+ virNetwork *net;
+ zval *zconn;
+ char *xml = NULL;
+ strsize_t xml_len;
+
+ GET_CONNECTION_FROM_ARGS("rs", &zconn, &xml, &xml_len);
+
+ if ((net = virNetworkDefineXML(conn->conn, xml)) == NULL) {
+ set_error_if_unset("Cannot define a new network" TSRMLS_CC);
+ RETURN_FALSE;
+ }
+
+ res_net = (php_libvirt_network *)emalloc(sizeof(php_libvirt_network));
+ res_net->network = net;
+ res_net->conn = conn;
+
+ DPRINTF("%s: returning %p\n", PHPFUNC, res_net->network);
+ resource_change_counter(INT_RESOURCE_NETWORK, conn->conn, res_net->network, 1
TSRMLS_CC);
+
+ VIRT_REGISTER_RESOURCE(res_net, le_libvirt_network);
+}
+
+/*
+ * Function name: libvirt_network_get_xml_desc
+ * Since version: 0.4.1(-1)
+ * Description: Function is used to get the XML description for the network
+ * Arguments: @res [resource]: libvirt network resource
+ * @xpath [string]: optional xPath expression string to get just this
entry, can be NULL
+ * Returns: network XML string or result of xPath expression
+ */
+PHP_FUNCTION(libvirt_network_get_xml_desc)
+{
+ php_libvirt_network *network;
+ zval *znetwork;
+ char *xml = NULL;
+ char *xpath = NULL;
+ char *tmp;
+ strsize_t xpath_len;
+ int retval = -1;
+
+ GET_NETWORK_FROM_ARGS("r|s", &znetwork, &xpath, &xpath_len);
+ if (xpath_len < 1)
+ xpath = NULL;
+
+ xml = virNetworkGetXMLDesc(network->network, 0);
+
+ if (xml == NULL) {
+ set_error_if_unset("Cannot get network XML" TSRMLS_CC);
+ RETURN_FALSE;
+ }
+
+ tmp = get_string_from_xpath(xml, xpath, NULL, &retval);
+ if ((tmp == NULL) || (retval < 0)) {
+ VIRT_RETVAL_STRING(xml);
+ } else {
+ VIRT_RETVAL_STRING(tmp);
+ }
+
+ free(xml);
+ free(tmp);
+}
+
+/*
+ * Function name: libvirt_network_undefine
+ * Since version: 0.4.2
+ * Description: Function is used to undefine already defined network
+ * Arguments: @res [resource]: libvirt network resource
+ * Returns: TRUE for success, FALSE on error
+ */
+PHP_FUNCTION(libvirt_network_undefine)
+{
+ php_libvirt_network *network = NULL;
+ zval *znetwork;
+
+ GET_NETWORK_FROM_ARGS("r", &znetwork);
+
+ if (virNetworkUndefine(network->network) != 0)
+ RETURN_FALSE;
+
+ RETURN_TRUE;
+}
+
+/*
+ * Function name: libvirt_network_get
+ * Since version: 0.4.1(-1)
+ * Description: Function is used to get the network resource from name
+ * Arguments: @res [resource]: libvirt connection resource
+ * @name [string]: network name string
+ * Returns: libvirt network resource
+ */
+PHP_FUNCTION(libvirt_network_get)
+{
+ php_libvirt_connection *conn = NULL;
+ php_libvirt_network *res_net = NULL;
+ virNetwork *net;
+ zval *zconn;
+ char *name;
+ strsize_t name_len;
+
+ GET_CONNECTION_FROM_ARGS("rs", &zconn, &name, &name_len);
+
+ if ((net = virNetworkLookupByName(conn->conn, name)) == NULL) {
+ set_error_if_unset("Cannot get find requested network" TSRMLS_CC);
+ RETURN_FALSE;
+ }
+
+ res_net = (php_libvirt_network *)emalloc(sizeof(php_libvirt_network));
+ res_net->network = net;
+ res_net->conn = conn;
+
+ DPRINTF("%s: returning %p\n", PHPFUNC, res_net->network);
+ resource_change_counter(INT_RESOURCE_NETWORK, conn->conn, res_net->network, 1
TSRMLS_CC);
+
+ VIRT_REGISTER_RESOURCE(res_net, le_libvirt_network);
+}
+
+/*
+ * Function name: libvirt_network_get_bridge
+ * Since version: 0.4.1(-1)
+ * Description: Function is used to get the bridge associated with the network
+ * Arguments: @res [resource]: libvirt network resource
+ * Returns: bridge name string
+ */
+PHP_FUNCTION(libvirt_network_get_bridge)
+{
+ php_libvirt_network *network;
+ zval *znetwork;
+ char *name;
+
+ GET_NETWORK_FROM_ARGS("r", &znetwork);
+
+ name = virNetworkGetBridgeName(network->network);
+
+ if (name == NULL) {
+ set_error_if_unset("Cannot get network bridge name" TSRMLS_CC);
+ RETURN_FALSE;
+ }
+
+ VIRT_RETVAL_STRING(name);
+ free(name);
+}
+
+/*
+ * Function name: libvirt_network_get_active
+ * Since version: 0.4.1(-1)
+ * Description: Function is used to get the activity state of the network
+ * Arguments: @res [resource]: libvirt network resource
+ * Returns: 1 when active, 0 when inactive, FALSE on error
+ */
+PHP_FUNCTION(libvirt_network_get_active)
+{
+ php_libvirt_network *network;
+ zval *znetwork;
+ int res;
+
+ GET_NETWORK_FROM_ARGS("r", &znetwork);
+
+ res = virNetworkIsActive(network->network);
+
+ if (res == -1) {
+ set_error_if_unset("Error getting virtual network state" TSRMLS_CC);
+ RETURN_FALSE;
+ }
+
+ RETURN_LONG(res);
+}
+
+/*
+ * Function name: libvirt_network_set_active
+ * Since version: 0.4.1(-1)
+ * Description: Function is used to set the activity state of the network
+ * Arguments: @res [resource]: libvirt network resource
+ * @flags [int]: active
+ * Returns: TRUE if success, FALSE on error
+ */
+PHP_FUNCTION(libvirt_network_set_active)
+{
+ php_libvirt_network *network;
+ zval *znetwork;
+ zend_long act = 0;
+
+ DPRINTF("%s: Setting network activity...\n", PHPFUNC);
+
+ GET_NETWORK_FROM_ARGS("rl", &znetwork, &act);
+
+ if ((act != 0) && (act != 1)) {
+ set_error("Invalid network activity state" TSRMLS_CC);
+ RETURN_FALSE;
+ }
+
+ DPRINTF("%s: %sabling network...\n", PHPFUNC, (act == 1) ? "En" :
"Dis");
+
+ if (act == 1) {
+ if (virNetworkCreate(network->network) == 0) {
+ // Network is up and running
+ RETURN_TRUE;
+ } else {
+ // We don't have to set error since it's caught by libvirt error
handler itself
+ RETURN_FALSE;
+ }
+ }
+
+ if (virNetworkDestroy(network->network) == 0) {
+ // Network is down
+ RETURN_TRUE;
+ } else {
+ // Caught by libvirt error handler too
+ RETURN_FALSE;
+ }
+}
+
+/*
+ * Function name: libvirt_network_get_information
+ * Since version: 0.4.1(-1)
+ * Description: Function is used to get the network information
+ * Arguments: @res [resource]: libvirt network resource
+ * Returns: network information array
+ */
+PHP_FUNCTION(libvirt_network_get_information)
+{
+ php_libvirt_network *network = NULL;
+ zval *znetwork;
+ int retval = 0;
+ char *xml = NULL;
+ char *name = NULL;
+ char *ipaddr = NULL;
+ char *netmask = NULL;
+ char *mode = NULL;
+ char *dev = NULL;
+ char *dhcp_start = NULL;
+ char *dhcp_end = NULL;
+ char fixedtemp[32] = { 0 };
+
+ GET_NETWORK_FROM_ARGS("r", &znetwork);
+
+ xml = virNetworkGetXMLDesc(network->network, 0);
+
+ if (xml == NULL) {
+ set_error_if_unset("Cannot get network XML" TSRMLS_CC);
+ RETURN_FALSE;
+ }
+
+ array_init(return_value);
+
+ /* Get name */
+ name = get_string_from_xpath(xml, "//network/name", NULL, &retval);
+ if (name == NULL) {
+ set_error("Invalid XPath node for network name" TSRMLS_CC);
+ RETURN_FALSE;
+ }
+
+ if (retval < 0) {
+ set_error("Cannot get XPath expression result for network name"
TSRMLS_CC);
+ RETURN_FALSE;
+ }
+
+ VIRT_ADD_ASSOC_STRING(return_value, "name", name);
+
+ /* Get gateway IP address */
+ ipaddr = get_string_from_xpath(xml, "//network/ip/@address", NULL,
&retval);
+ if (ipaddr && retval > 0)
+ VIRT_ADD_ASSOC_STRING(return_value, "ip", ipaddr);
+
+ /* Get netmask */
+ netmask = get_string_from_xpath(xml, "//network/ip/@netmask", NULL,
&retval);
+ if (netmask && retval > 0) {
+ int subnet_bits = get_subnet_bits(netmask);
+ VIRT_ADD_ASSOC_STRING(return_value, "netmask", netmask);
+ add_assoc_long(return_value, "netmask_bits", (long) subnet_bits);
+
+ /* Format CIDR address representation */
+ ipaddr[strlen(ipaddr) - 1] = ipaddr[strlen(ipaddr) - 1] - 1;
+ snprintf(fixedtemp, sizeof(fixedtemp), "%s/%d", ipaddr, subnet_bits);
+ VIRT_ADD_ASSOC_STRING(return_value, "ip_range", fixedtemp);
+ }
+
+ /* Get forwarding settings */
+ mode = get_string_from_xpath(xml, "//network/forward/@mode", NULL,
&retval);
+ if (mode && retval > 0)
+ VIRT_ADD_ASSOC_STRING(return_value, "forwarding", mode);
+
+ /* Get forwarding settings */
+ dev = get_string_from_xpath(xml, "//network/forward/@dev", NULL,
&retval);
+ if (dev && retval > 0)
+ VIRT_ADD_ASSOC_STRING(return_value, "forward_dev", dev);
+
+ /* Get DHCP values */
+ dhcp_start = get_string_from_xpath(xml, "//network/ip/dhcp/range/@start",
NULL, &retval);
+ dhcp_end = get_string_from_xpath(xml, "//network/ip/dhcp/range/@end", NULL,
&retval);
+ if (dhcp_start && dhcp_end && retval > 0) {
+ VIRT_ADD_ASSOC_STRING(return_value, "dhcp_start", dhcp_start);
+ VIRT_ADD_ASSOC_STRING(return_value, "dhcp_end", dhcp_end);
+ }
+
+ free(dhcp_end);
+ free(dhcp_start);
+ free(dev);
+ free(mode);
+ free(netmask);
+ free(ipaddr);
+ free(name);
+ free(xml);
+}
+
+/*
+ * Function name: libvirt_network_get_uuid_string
+ * Since version: 0.5.3
+ * Description: Function is used to get network's UUID in string format
+ * Arguments: @res [resource]: libvirt network resource
+ * Returns: network UUID string or FALSE on failure
+ */
+PHP_FUNCTION(libvirt_network_get_uuid_string)
+{
+ php_libvirt_network *network = NULL;
+ zval *znetwork;
+ char *uuid = NULL;
+ int ret = -1;
+
+ GET_NETWORK_FROM_ARGS("r", &znetwork);
+
+ uuid = (char *) emalloc(VIR_UUID_STRING_BUFLEN);
+ ret = virNetworkGetUUIDString(network->network, uuid);
+
+ DPRINTF("%s: virNetworkGetUUIDString(%p) returned %d (%s)\n", PHPFUNC,
+ network->network, ret, uuid);
+
+ if (ret != 0)
+ RETURN_FALSE;
+
+ VIRT_RETURN_STRING(uuid);
+ efree(uuid);
+}
+
+/*
+ * Function name: libvirt_network_get_uuid
+ * Since version: 0.5.3
+ * Descirption: Function is used to get network's UUID in binary format
+ * Arguments: @res [resource]: libvirt netowrk resource
+ * Returns: network UUID in binary format or FALSE on failure
+ */
+PHP_FUNCTION(libvirt_network_get_uuid)
+{
+ php_libvirt_network *network = NULL;
+ zval *znetwork;
+ char *uuid = NULL;
+ int ret = -1;
+
+ GET_NETWORK_FROM_ARGS("r", &znetwork);
+
+ uuid = (char *) emalloc(VIR_UUID_BUFLEN);
+ ret = virNetworkGetUUID(network->network, (unsigned char *)uuid);
+
+ DPRINTF("%s: virNetworkGetUUID(%p, %p) returned %d\n", PHPFUNC,
+ network->network, uuid, ret);
+
+ if (ret != 0)
+ RETURN_FALSE;
+
+ VIRT_RETVAL_STRING(uuid);
+ efree(uuid);
+}
+
+/*
+ * Function name: libvirt_network_get_name
+ * Since version: 0.5.3
+ * Description: Function is used to get network's name
+ * Arguments: @res [resource]: libvirt network resource
+ * Returns: network name string or FALSE on failure
+ */
+PHP_FUNCTION(libvirt_network_get_name)
+{
+ php_libvirt_network *network = NULL;
+ zval *znetwork;
+ const char *name = NULL;
+
+ GET_NETWORK_FROM_ARGS("r", &znetwork);
+ name = virNetworkGetName(network->network);
+
+ DPRINTF("%s: virNetworkGetName(%p) returned %s\n", PHPFUNC,
+ network->network, name);
+
+ if (name == NULL)
+ RETURN_FALSE;
+
+ /* name should not be freed as its lifetime is the same as network resource */
+ VIRT_RETURN_STRING(name);
+}
+
+/*
+ * Function name: libvirt_network_get_autostart
+ * Since version: 0.5.4
+ * Description: Function is getting the autostart value for the network
+ * Arguments: @res [resource]: libvirt network resource
+ * Returns: autostart value or -1 on error
+ */
+PHP_FUNCTION(libvirt_network_get_autostart)
+{
+ php_libvirt_network *network = NULL;
+ zval *znetwork;
+ int autostart;
+
+ GET_NETWORK_FROM_ARGS("r", &znetwork);
+
+ if (virNetworkGetAutostart(network->network, &autostart) != 0)
+ RETURN_LONG(-1);
+
+ RETURN_LONG((long) autostart);
+}
+
+/*
+ * Function name: libvirt_network_set_autostart
+ * Since version: 0.5.4
+ * Description: Function is setting the autostart value for the network
+ * Arguments: @res [resource]: libvirt network resource
+ * @flags [int]: flag to enable/disable autostart
+ * Returns: TRUE on success, FALSE on error
+ */
+PHP_FUNCTION(libvirt_network_set_autostart)
+{
+ php_libvirt_network *network = NULL;
+ zval *znetwork;
+ zend_long autostart = 0;
+
+ GET_NETWORK_FROM_ARGS("rl", &znetwork, &autostart);
+
+ if (virNetworkSetAutostart(network->network, autostart) < 0)
+ RETURN_FALSE;
+
+ RETURN_TRUE;
+}
+
+/*
+ * Function name: libvirt_list_all_networks
+ * Since version: 0.5.3
+ * Description: Function is used to list networks on the connection
+ * Arguments: @res [resource]: libvirt connection resource
+ * @flags [int]: optional flags to filter the results for a smaller list
of targetted networks (bitwise-OR VIR_CONNECT_LIST_NETWORKS_* constants)
+ * Returns: libvirt network resources array for the connection
+ */
+PHP_FUNCTION(libvirt_list_all_networks)
+{
+ php_libvirt_connection *conn = NULL;
+ zval *zconn;
+ zend_long flags = VIR_CONNECT_LIST_NETWORKS_ACTIVE |
+ VIR_CONNECT_LIST_NETWORKS_INACTIVE;
+ int count = -1;
+ size_t i = 0;
+ virNetworkPtr *nets = NULL;
+ virNetworkPtr network = NULL;
+ php_libvirt_network *res_network;
+
+ GET_CONNECTION_FROM_ARGS("r|l", &zconn, &flags);
+
+ if ((count = virConnectListAllNetworks(conn->conn, &nets, flags)) < 0)
+ RETURN_FALSE;
+
+ DPRINTF("%s: Found %d networks\n", PHPFUNC, count);
+
+ array_init(return_value);
+
+ for (i = 0; i < count; i++) {
+ network = nets[i];
+ res_network = (php_libvirt_network *) emalloc(sizeof(php_libvirt_network));
+ res_network->network = network;
+ res_network->conn = conn;
+
+ VIRT_REGISTER_LIST_RESOURCE(network);
+ resource_change_counter(INT_RESOURCE_NETWORK, conn->conn,
+ res_network->network, 1 TSRMLS_CC);
+ }
+}
+
+/*
+ * Function name: libvirt_list_networks
+ * Since version: 0.4.1(-1)
+ * Description: Function is used to list networks on the connection
+ * Arguments: @res [resource]: libvirt connection resource
+ * @flags [int]: flags whether to list active, inactive or all networks
(VIR_NETWORKS_{ACTIVE|INACTIVE|ALL} constants)
+ * Returns: libvirt network names array for the connection
+ */
+PHP_FUNCTION(libvirt_list_networks)
+{
+ php_libvirt_connection *conn = NULL;
+ zval *zconn;
+ zend_long flags = VIR_NETWORKS_ACTIVE | VIR_NETWORKS_INACTIVE;
+ int count = -1;
+ int expectedcount = -1;
+ char **names;
+ int i, done = 0;
+
+ GET_CONNECTION_FROM_ARGS("r|l", &zconn, &flags);
+
+ array_init(return_value);
+ if (flags & VIR_NETWORKS_ACTIVE) {
+ if ((expectedcount = virConnectNumOfNetworks(conn->conn)) < 0)
+ RETURN_FALSE;
+
+ names = (char **)emalloc(expectedcount*sizeof(char *));
+ count = virConnectListNetworks(conn->conn, names, expectedcount);
+ if ((count != expectedcount) || (count < 0)) {
+ efree(names);
+ RETURN_FALSE;
+ }
+
+ for (i = 0; i < count; i++) {
+ VIRT_ADD_NEXT_INDEX_STRING(return_value, names[i]);
+ free(names[i]);
+ }
+
+ efree(names);
+ done++;
+ }
+
+ if (flags & VIR_NETWORKS_INACTIVE) {
+ if ((expectedcount = virConnectNumOfDefinedNetworks(conn->conn)) < 0)
+ RETURN_FALSE;
+ names = (char **)emalloc(expectedcount*sizeof(char *));
+ count = virConnectListDefinedNetworks(conn->conn, names, expectedcount);
+ if ((count != expectedcount) || (count < 0)) {
+ efree(names);
+ RETURN_FALSE;
+ }
+
+ for (i = 0; i < count; i++) {
+ VIRT_ADD_NEXT_INDEX_STRING(return_value, names[i]);
+ free(names[i]);
+ }
+
+ efree(names);
+ done++;
+ }
+
+ if (!done)
+ RETURN_FALSE;
+}
diff --git a/src/libvirt-network.h b/src/libvirt-network.h
new file mode 100644
index 0000000..604b803
--- /dev/null
+++ b/src/libvirt-network.h
@@ -0,0 +1,73 @@
+/*
+ * libvirt-network.h: The PHP bindings to libvirt network API
+ *
+ * See COPYING for the license of this software
+ */
+
+#ifndef __LIBVIRT_NETWORK_H__
+# define __LIBVIRT_NETWORK_H__
+
+# include "libvirt-connection.h"
+
+# define PHP_LIBVIRT_NETWORK_RES_NAME "Libvirt virtual network"
+# define INT_RESOURCE_NETWORK 0x04
+
+# define GET_NETWORK_FROM_ARGS(args, ...) \
+ do { \
+ reset_error(TSRMLS_C); \
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, \
+ args, \
+ __VA_ARGS__) == FAILURE) { \
+ set_error("Invalid arguments" TSRMLS_CC);
\
+ RETURN_FALSE; \
+ } \
+ \
+ VIRT_FETCH_RESOURCE(network, php_libvirt_network*, &znetwork, \
+ PHP_LIBVIRT_NETWORK_RES_NAME, le_libvirt_network); \
+ if (network == NULL || network->network == NULL) \
+ RETURN_FALSE; \
+ } while (0) \
+
+# define PHP_FE_LIBVIRT_NETWORK \
+ PHP_FE(libvirt_network_define_xml, arginfo_libvirt_conn_xml) \
+ PHP_FE(libvirt_network_get_xml_desc, arginfo_libvirt_conn_xpath) \
+ PHP_FE(libvirt_network_undefine, arginfo_libvirt_conn) \
+ PHP_FE(libvirt_network_get, arginfo_libvirt_conn_name) \
+ PHP_FE(libvirt_network_get_active, arginfo_libvirt_conn) \
+ PHP_FE(libvirt_network_set_active, arginfo_libvirt_conn_flags) \
+ PHP_FE(libvirt_network_get_bridge, arginfo_libvirt_conn) \
+ PHP_FE(libvirt_network_get_information, arginfo_libvirt_conn) \
+ PHP_FE(libvirt_network_get_uuid_string, arginfo_libvirt_conn) \
+ PHP_FE(libvirt_network_get_uuid, arginfo_libvirt_conn) \
+ PHP_FE(libvirt_network_get_name, arginfo_libvirt_conn) \
+ PHP_FE(libvirt_network_get_autostart, arginfo_libvirt_conn) \
+ PHP_FE(libvirt_network_set_autostart, arginfo_libvirt_conn_flags) \
+ PHP_FE(libvirt_list_all_networks, arginfo_libvirt_conn_optflags) \
+ PHP_FE(libvirt_list_networks, arginfo_libvirt_conn_optflags)
+
+int le_libvirt_network;
+
+typedef struct _php_libvirt_network {
+ virNetworkPtr network;
+ php_libvirt_connection* conn;
+} php_libvirt_network;
+
+void php_libvirt_network_dtor(virt_resource *rsrc TSRMLS_DC);
+
+PHP_FUNCTION(libvirt_network_define_xml);
+PHP_FUNCTION(libvirt_network_get_xml_desc);
+PHP_FUNCTION(libvirt_network_undefine);
+PHP_FUNCTION(libvirt_network_get);
+PHP_FUNCTION(libvirt_network_get_active);
+PHP_FUNCTION(libvirt_network_set_active);
+PHP_FUNCTION(libvirt_network_get_bridge);
+PHP_FUNCTION(libvirt_network_get_information);
+PHP_FUNCTION(libvirt_network_get_uuid_string);
+PHP_FUNCTION(libvirt_network_get_uuid);
+PHP_FUNCTION(libvirt_network_get_name);
+PHP_FUNCTION(libvirt_network_get_autostart);
+PHP_FUNCTION(libvirt_network_set_autostart);
+PHP_FUNCTION(libvirt_list_all_networks);
+PHP_FUNCTION(libvirt_list_networks);
+
+#endif
diff --git a/src/libvirt-php.c b/src/libvirt-php.c
index 6faf915..e3e5554 100644
--- a/src/libvirt-php.c
+++ b/src/libvirt-php.c
@@ -23,6 +23,7 @@
#include "libvirt-node.h"
#include "libvirt-stream.h"
#include "libvirt-domain.h"
+#include "libvirt-network.h"
DEBUG_INIT("core");
@@ -38,7 +39,6 @@ const char *features_binaries[] = { NULL };
/* ZEND thread safe per request globals definition */
int le_libvirt_storagepool;
int le_libvirt_volume;
-int le_libvirt_network;
int le_libvirt_nodedev;
int le_libvirt_snapshot;
int le_libvirt_nwfilter;
@@ -516,20 +516,7 @@ static zend_function_entry libvirt_functions[] = {
PHP_FE(libvirt_storagepool_build, arginfo_libvirt_conn)
PHP_FE(libvirt_storagepool_delete, arginfo_libvirt_conn)
/* Network functions */
- PHP_FE(libvirt_network_define_xml, arginfo_libvirt_conn_xml)
- PHP_FE(libvirt_network_undefine, arginfo_libvirt_conn)
- PHP_FE(libvirt_network_get, arginfo_libvirt_conn_name)
- PHP_FE(libvirt_network_get_xml_desc, arginfo_libvirt_conn_xpath)
- PHP_FE(libvirt_network_get_bridge, arginfo_libvirt_conn)
- PHP_FE(libvirt_network_get_information, arginfo_libvirt_conn)
- PHP_FE(libvirt_network_get_active, arginfo_libvirt_conn)
- PHP_FE(libvirt_network_set_active, arginfo_libvirt_conn_flags)
- PHP_FE(libvirt_network_get_uuid_string, arginfo_libvirt_conn)
- PHP_FE(libvirt_network_get_uuid, arginfo_libvirt_conn)
- PHP_FE(libvirt_network_get_name, arginfo_libvirt_conn)
- PHP_FE(libvirt_network_get_autostart, arginfo_libvirt_conn)
- PHP_FE(libvirt_network_set_autostart, arginfo_libvirt_conn_flags)
- /* Node functions */
+ PHP_FE_LIBVIRT_NETWORK
PHP_FE_LIBVIRT_NODE
/* Nodedev functions */
PHP_FE(libvirt_nodedev_get, arginfo_libvirt_conn)
@@ -549,8 +536,6 @@ static zend_function_entry libvirt_functions[] = {
/* List functions */
PHP_FE(libvirt_list_domain_snapshots, arginfo_libvirt_conn_optflags)
PHP_FE(libvirt_list_nodedevs, arginfo_libvirt_conn_optcap)
- PHP_FE(libvirt_list_all_networks, arginfo_libvirt_conn_optflags)
- PHP_FE(libvirt_list_networks, arginfo_libvirt_conn_optflags)
PHP_FE(libvirt_list_storagepools, arginfo_libvirt_conn)
PHP_FE(libvirt_list_active_storagepools, arginfo_libvirt_conn)
PHP_FE(libvirt_list_inactive_storagepools, arginfo_libvirt_conn)
@@ -570,7 +555,6 @@ static zend_function_entry libvirt_functions[] = {
PHP_FE_END
};
-
/* Zend module basic definition */
zend_module_entry libvirt_module_entry = {
#if ZEND_MODULE_API_NO >= 20010901
@@ -1292,33 +1276,6 @@ static void php_libvirt_volume_dtor(virt_resource *rsrc TSRMLS_DC)
}
}
-/* Destructor for network resource */
-static void php_libvirt_network_dtor(virt_resource *rsrc TSRMLS_DC)
-{
- php_libvirt_network *network = (php_libvirt_network *)rsrc->ptr;
- int rv = 0;
-
- if (network != NULL) {
- if (network->network != NULL) {
- if (!check_resource_allocation(network->conn->conn,
INT_RESOURCE_NETWORK, network->network TSRMLS_CC)) {
- network->network = NULL;
- efree(network);
- return;
- }
- rv = virNetworkFree(network->network);
- if (rv != 0) {
- DPRINTF("%s: virNetworkFree(%p) returned %d (%s)\n",
__FUNCTION__, network->network, rv, LIBVIRT_G(last_error));
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "virStorageVolFree
failed with %i on destructor: %s", rv, LIBVIRT_G(last_error));
- } else {
- DPRINTF("%s: virNetworkFree(%p) completed successfully\n",
__FUNCTION__, network->network);
- resource_change_counter(INT_RESOURCE_NETWORK, NULL, network->network,
0 TSRMLS_CC);
- }
- network->network = NULL;
- }
- efree(network);
- }
-}
-
/* Destructor for nodedev resource */
static void php_libvirt_nodedev_dtor(virt_resource *rsrc TSRMLS_DC)
{
@@ -1726,19 +1683,6 @@ PHP_MSHUTDOWN_FUNCTION(libvirt)
}
/* Macros for obtaining resources from arguments */
-#define GET_NETWORK_FROM_ARGS(args, ...)
\
- do {
\
- reset_error(TSRMLS_C);
\
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, args, __VA_ARGS__) ==
FAILURE) { \
- set_error("Invalid arguments" TSRMLS_CC);
\
- RETURN_FALSE;
\
- }
\
-
\
- VIRT_FETCH_RESOURCE(network, php_libvirt_network*, &znetwork,
PHP_LIBVIRT_NETWORK_RES_NAME, le_libvirt_network);\
- if ((network == NULL) || (network->network == NULL))
\
- RETURN_FALSE;
\
- } while (0)
\
-
#define GET_NODEDEV_FROM_ARGS(args, ...)
\
do {
\
reset_error(TSRMLS_C);
\
@@ -4053,111 +3997,6 @@ PHP_FUNCTION(libvirt_list_inactive_storagepools)
}
/*
- * Function name: libvirt_list_all_networks
- * Since version: 0.5.3
- * Description: Function is used to list networks on the connection
- * Arguments: @res [resource]: libvirt connection resource
- * @flags [int]: optional flags to filter the results for a smaller list
of targetted networks (bitwise-OR VIR_CONNECT_LIST_NETWORKS_* constants)
- * Returns: libvirt network resources array for the connection
- */
-PHP_FUNCTION(libvirt_list_all_networks)
-{
- php_libvirt_connection *conn = NULL;
- zval *zconn;
- zend_long flags = VIR_CONNECT_LIST_NETWORKS_ACTIVE |
- VIR_CONNECT_LIST_NETWORKS_INACTIVE;
- int count = -1;
- size_t i = 0;
- virNetworkPtr *nets = NULL;
- virNetworkPtr network = NULL;
- php_libvirt_network *res_network;
-
- GET_CONNECTION_FROM_ARGS("r|l", &zconn, &flags);
-
- if ((count = virConnectListAllNetworks(conn->conn, &nets, flags)) < 0)
- RETURN_FALSE;
-
- DPRINTF("%s: Found %d networks\n", PHPFUNC, count);
-
- array_init(return_value);
-
- for (i = 0; i < count; i++) {
- network = nets[i];
- res_network = (php_libvirt_network *) emalloc(sizeof(php_libvirt_network));
- res_network->network = network;
- res_network->conn = conn;
-
- VIRT_REGISTER_LIST_RESOURCE(network);
- resource_change_counter(INT_RESOURCE_NETWORK, conn->conn,
- res_network->network, 1 TSRMLS_CC);
- }
-}
-
-/*
- * Function name: libvirt_list_networks
- * Since version: 0.4.1(-1)
- * Description: Function is used to list networks on the connection
- * Arguments: @res [resource]: libvirt connection resource
- * @flags [int]: flags whether to list active, inactive or all networks
(VIR_NETWORKS_{ACTIVE|INACTIVE|ALL} constants)
- * Returns: libvirt network names array for the connection
- */
-PHP_FUNCTION(libvirt_list_networks)
-{
- php_libvirt_connection *conn = NULL;
- zval *zconn;
- zend_long flags = VIR_NETWORKS_ACTIVE | VIR_NETWORKS_INACTIVE;
- int count = -1;
- int expectedcount = -1;
- char **names;
- int i, done = 0;
-
- GET_CONNECTION_FROM_ARGS("r|l", &zconn, &flags);
-
- array_init(return_value);
- if (flags & VIR_NETWORKS_ACTIVE) {
- if ((expectedcount = virConnectNumOfNetworks(conn->conn)) < 0)
- RETURN_FALSE;
-
- names = (char **)emalloc(expectedcount*sizeof(char *));
- count = virConnectListNetworks(conn->conn, names, expectedcount);
- if ((count != expectedcount) || (count < 0)) {
- efree(names);
- RETURN_FALSE;
- }
-
- for (i = 0; i < count; i++) {
- VIRT_ADD_NEXT_INDEX_STRING(return_value, names[i]);
- free(names[i]);
- }
-
- efree(names);
- done++;
- }
-
- if (flags & VIR_NETWORKS_INACTIVE) {
- if ((expectedcount = virConnectNumOfDefinedNetworks(conn->conn)) < 0)
- RETURN_FALSE;
- names = (char **)emalloc(expectedcount*sizeof(char *));
- count = virConnectListDefinedNetworks(conn->conn, names, expectedcount);
- if ((count != expectedcount) || (count < 0)) {
- efree(names);
- RETURN_FALSE;
- }
-
- for (i = 0; i < count; i++) {
- VIRT_ADD_NEXT_INDEX_STRING(return_value, names[i]);
- free(names[i]);
- }
-
- efree(names);
- done++;
- }
-
- if (!done)
- RETURN_FALSE;
-}
-
-/*
* Function name: libvirt_list_nodedevs
* Since version: 0.4.1(-1)
* Description: Function is used to list node devices on the connection
@@ -4545,451 +4384,6 @@ PHP_FUNCTION(libvirt_nodedev_get_information)
RETURN_FALSE;
}
-/* Network functions */
-
-/*
- * Function name: libvirt_network_define_xml
- * Since version: 0.4.2
- * Description: Function is used to define a new virtual network based on the XML
description
- * Arguments: @res [resource]: libvirt connection resource
- * @xml [string]: XML string definition of network to be defined
- * Returns: libvirt network resource of newly defined network
- */
-PHP_FUNCTION(libvirt_network_define_xml)
-{
- php_libvirt_connection *conn = NULL;
- php_libvirt_network *res_net = NULL;
- virNetwork *net;
- zval *zconn;
- char *xml = NULL;
- strsize_t xml_len;
-
- GET_CONNECTION_FROM_ARGS("rs", &zconn, &xml, &xml_len);
-
- if ((net = virNetworkDefineXML(conn->conn, xml)) == NULL) {
- set_error_if_unset("Cannot define a new network" TSRMLS_CC);
- RETURN_FALSE;
- }
-
- res_net = (php_libvirt_network *)emalloc(sizeof(php_libvirt_network));
- res_net->network = net;
- res_net->conn = conn;
-
- DPRINTF("%s: returning %p\n", PHPFUNC, res_net->network);
- resource_change_counter(INT_RESOURCE_NETWORK, conn->conn, res_net->network, 1
TSRMLS_CC);
-
- VIRT_REGISTER_RESOURCE(res_net, le_libvirt_network);
-}
-
-/*
- * Function name: libvirt_network_undefine
- * Since version: 0.4.2
- * Description: Function is used to undefine already defined network
- * Arguments: @res [resource]: libvirt network resource
- * Returns: TRUE for success, FALSE on error
- */
-PHP_FUNCTION(libvirt_network_undefine)
-{
- php_libvirt_network *network = NULL;
- zval *znetwork;
-
- GET_NETWORK_FROM_ARGS("r", &znetwork);
-
- if (virNetworkUndefine(network->network) != 0)
- RETURN_FALSE;
-
- RETURN_TRUE;
-}
-
-/*
- * Function name: libvirt_network_get
- * Since version: 0.4.1(-1)
- * Description: Function is used to get the network resource from name
- * Arguments: @res [resource]: libvirt connection resource
- * @name [string]: network name string
- * Returns: libvirt network resource
- */
-PHP_FUNCTION(libvirt_network_get)
-{
- php_libvirt_connection *conn = NULL;
- php_libvirt_network *res_net = NULL;
- virNetwork *net;
- zval *zconn;
- char *name;
- strsize_t name_len;
-
- GET_CONNECTION_FROM_ARGS("rs", &zconn, &name, &name_len);
-
- if ((net = virNetworkLookupByName(conn->conn, name)) == NULL) {
- set_error_if_unset("Cannot get find requested network" TSRMLS_CC);
- RETURN_FALSE;
- }
-
- res_net = (php_libvirt_network *)emalloc(sizeof(php_libvirt_network));
- res_net->network = net;
- res_net->conn = conn;
-
- DPRINTF("%s: returning %p\n", PHPFUNC, res_net->network);
- resource_change_counter(INT_RESOURCE_NETWORK, conn->conn, res_net->network, 1
TSRMLS_CC);
-
- VIRT_REGISTER_RESOURCE(res_net, le_libvirt_network);
-}
-
-/*
- * Function name: libvirt_network_get_bridge
- * Since version: 0.4.1(-1)
- * Description: Function is used to get the bridge associated with the network
- * Arguments: @res [resource]: libvirt network resource
- * Returns: bridge name string
- */
-PHP_FUNCTION(libvirt_network_get_bridge)
-{
- php_libvirt_network *network;
- zval *znetwork;
- char *name;
-
- GET_NETWORK_FROM_ARGS("r", &znetwork);
-
- name = virNetworkGetBridgeName(network->network);
-
- if (name == NULL) {
- set_error_if_unset("Cannot get network bridge name" TSRMLS_CC);
- RETURN_FALSE;
- }
-
- VIRT_RETVAL_STRING(name);
- free(name);
-}
-
-/*
- * Function name: libvirt_network_get_active
- * Since version: 0.4.1(-1)
- * Description: Function is used to get the activity state of the network
- * Arguments: @res [resource]: libvirt network resource
- * Returns: 1 when active, 0 when inactive, FALSE on error
- */
-PHP_FUNCTION(libvirt_network_get_active)
-{
- php_libvirt_network *network;
- zval *znetwork;
- int res;
-
- GET_NETWORK_FROM_ARGS("r", &znetwork);
-
- res = virNetworkIsActive(network->network);
-
- if (res == -1) {
- set_error_if_unset("Error getting virtual network state" TSRMLS_CC);
- RETURN_FALSE;
- }
-
- RETURN_LONG(res);
-}
-
-/*
- * Function name: libvirt_network_get_information
- * Since version: 0.4.1(-1)
- * Description: Function is used to get the network information
- * Arguments: @res [resource]: libvirt network resource
- * Returns: network information array
- */
-PHP_FUNCTION(libvirt_network_get_information)
-{
- php_libvirt_network *network = NULL;
- zval *znetwork;
- int retval = 0;
- char *xml = NULL;
- char *name = NULL;
- char *ipaddr = NULL;
- char *netmask = NULL;
- char *mode = NULL;
- char *dev = NULL;
- char *dhcp_start = NULL;
- char *dhcp_end = NULL;
- char fixedtemp[32] = { 0 };
-
- GET_NETWORK_FROM_ARGS("r", &znetwork);
-
- xml = virNetworkGetXMLDesc(network->network, 0);
-
- if (xml == NULL) {
- set_error_if_unset("Cannot get network XML" TSRMLS_CC);
- RETURN_FALSE;
- }
-
- array_init(return_value);
-
- /* Get name */
- name = get_string_from_xpath(xml, "//network/name", NULL, &retval);
- if (name == NULL) {
- set_error("Invalid XPath node for network name" TSRMLS_CC);
- RETURN_FALSE;
- }
-
- if (retval < 0) {
- set_error("Cannot get XPath expression result for network name"
TSRMLS_CC);
- RETURN_FALSE;
- }
-
- VIRT_ADD_ASSOC_STRING(return_value, "name", name);
-
- /* Get gateway IP address */
- ipaddr = get_string_from_xpath(xml, "//network/ip/@address", NULL,
&retval);
- if (ipaddr && retval > 0)
- VIRT_ADD_ASSOC_STRING(return_value, "ip", ipaddr);
-
- /* Get netmask */
- netmask = get_string_from_xpath(xml, "//network/ip/@netmask", NULL,
&retval);
- if (netmask && retval > 0) {
- int subnet_bits = get_subnet_bits(netmask);
- VIRT_ADD_ASSOC_STRING(return_value, "netmask", netmask);
- add_assoc_long(return_value, "netmask_bits", (long) subnet_bits);
-
- /* Format CIDR address representation */
- ipaddr[strlen(ipaddr) - 1] = ipaddr[strlen(ipaddr) - 1] - 1;
- snprintf(fixedtemp, sizeof(fixedtemp), "%s/%d", ipaddr, subnet_bits);
- VIRT_ADD_ASSOC_STRING(return_value, "ip_range", fixedtemp);
- }
-
- /* Get forwarding settings */
- mode = get_string_from_xpath(xml, "//network/forward/@mode", NULL,
&retval);
- if (mode && retval > 0)
- VIRT_ADD_ASSOC_STRING(return_value, "forwarding", mode);
-
- /* Get forwarding settings */
- dev = get_string_from_xpath(xml, "//network/forward/@dev", NULL,
&retval);
- if (dev && retval > 0)
- VIRT_ADD_ASSOC_STRING(return_value, "forward_dev", dev);
-
- /* Get DHCP values */
- dhcp_start = get_string_from_xpath(xml, "//network/ip/dhcp/range/@start",
NULL, &retval);
- dhcp_end = get_string_from_xpath(xml, "//network/ip/dhcp/range/@end", NULL,
&retval);
- if (dhcp_start && dhcp_end && retval > 0) {
- VIRT_ADD_ASSOC_STRING(return_value, "dhcp_start", dhcp_start);
- VIRT_ADD_ASSOC_STRING(return_value, "dhcp_end", dhcp_end);
- }
-
- free(dhcp_end);
- free(dhcp_start);
- free(dev);
- free(mode);
- free(netmask);
- free(ipaddr);
- free(name);
- free(xml);
-}
-
-/*
- * Function name: libvirt_network_set_active
- * Since version: 0.4.1(-1)
- * Description: Function is used to set the activity state of the network
- * Arguments: @res [resource]: libvirt network resource
- * @flags [int]: active
- * Returns: TRUE if success, FALSE on error
- */
-PHP_FUNCTION(libvirt_network_set_active)
-{
- php_libvirt_network *network;
- zval *znetwork;
- zend_long act = 0;
-
- DPRINTF("%s: Setting network activity...\n", PHPFUNC);
-
- GET_NETWORK_FROM_ARGS("rl", &znetwork, &act);
-
- if ((act != 0) && (act != 1)) {
- set_error("Invalid network activity state" TSRMLS_CC);
- RETURN_FALSE;
- }
-
- DPRINTF("%s: %sabling network...\n", PHPFUNC, (act == 1) ? "En" :
"Dis");
-
- if (act == 1) {
- if (virNetworkCreate(network->network) == 0) {
- // Network is up and running
- RETURN_TRUE;
- } else {
- // We don't have to set error since it's caught by libvirt error
handler itself
- RETURN_FALSE;
- }
- }
-
- if (virNetworkDestroy(network->network) == 0) {
- // Network is down
- RETURN_TRUE;
- } else {
- // Caught by libvirt error handler too
- RETURN_FALSE;
- }
-}
-
-/*
- * Function name: libvirt_network_get_xml_desc
- * Since version: 0.4.1(-1)
- * Description: Function is used to get the XML description for the network
- * Arguments: @res [resource]: libvirt network resource
- * @xpath [string]: optional xPath expression string to get just this
entry, can be NULL
- * Returns: network XML string or result of xPath expression
- */
-PHP_FUNCTION(libvirt_network_get_xml_desc)
-{
- php_libvirt_network *network;
- zval *znetwork;
- char *xml = NULL;
- char *xpath = NULL;
- char *tmp;
- strsize_t xpath_len;
- int retval = -1;
-
- GET_NETWORK_FROM_ARGS("r|s", &znetwork, &xpath, &xpath_len);
- if (xpath_len < 1)
- xpath = NULL;
-
- xml = virNetworkGetXMLDesc(network->network, 0);
-
- if (xml == NULL) {
- set_error_if_unset("Cannot get network XML" TSRMLS_CC);
- RETURN_FALSE;
- }
-
- tmp = get_string_from_xpath(xml, xpath, NULL, &retval);
- if ((tmp == NULL) || (retval < 0)) {
- VIRT_RETVAL_STRING(xml);
- } else {
- VIRT_RETVAL_STRING(tmp);
- }
-
- free(xml);
- free(tmp);
-}
-
-/*
- * Function name: libvirt_network_get_uuid_string
- * Since version: 0.5.3
- * Description: Function is used to get network's UUID in string format
- * Arguments: @res [resource]: libvirt network resource
- * Returns: network UUID string or FALSE on failure
- */
-PHP_FUNCTION(libvirt_network_get_uuid_string)
-{
- php_libvirt_network *network = NULL;
- zval *znetwork;
- char *uuid = NULL;
- int ret = -1;
-
- GET_NETWORK_FROM_ARGS("r", &znetwork);
-
- uuid = (char *) emalloc(VIR_UUID_STRING_BUFLEN);
- ret = virNetworkGetUUIDString(network->network, uuid);
-
- DPRINTF("%s: virNetworkGetUUIDString(%p) returned %d (%s)\n", PHPFUNC,
- network->network, ret, uuid);
-
- if (ret != 0)
- RETURN_FALSE;
-
- VIRT_RETURN_STRING(uuid);
- efree(uuid);
-}
-
-/*
- * Function name: libvirt_network_get_uuid
- * Since version: 0.5.3
- * Descirption: Function is used to get network's UUID in binary format
- * Arguments: @res [resource]: libvirt netowrk resource
- * Returns: network UUID in binary format or FALSE on failure
- */
-PHP_FUNCTION(libvirt_network_get_uuid)
-{
- php_libvirt_network *network = NULL;
- zval *znetwork;
- char *uuid = NULL;
- int ret = -1;
-
- GET_NETWORK_FROM_ARGS("r", &znetwork);
-
- uuid = (char *) emalloc(VIR_UUID_BUFLEN);
- ret = virNetworkGetUUID(network->network, (unsigned char *)uuid);
-
- DPRINTF("%s: virNetworkGetUUID(%p, %p) returned %d\n", PHPFUNC,
- network->network, uuid, ret);
-
- if (ret != 0)
- RETURN_FALSE;
-
- VIRT_RETVAL_STRING(uuid);
- efree(uuid);
-}
-
-/*
- * Function name: libvirt_network_get_name
- * Since version: 0.5.3
- * Description: Function is used to get network's name
- * Arguments: @res [resource]: libvirt network resource
- * Returns: network name string or FALSE on failure
- */
-PHP_FUNCTION(libvirt_network_get_name)
-{
- php_libvirt_network *network = NULL;
- zval *znetwork;
- const char *name = NULL;
-
- GET_NETWORK_FROM_ARGS("r", &znetwork);
- name = virNetworkGetName(network->network);
-
- DPRINTF("%s: virNetworkGetName(%p) returned %s\n", PHPFUNC,
- network->network, name);
-
- if (name == NULL)
- RETURN_FALSE;
-
- /* name should not be freed as its lifetime is the same as network resource */
- VIRT_RETURN_STRING(name);
-}
-
-/*
- * Function name: libvirt_network_get_autostart
- * Since version: 0.5.4
- * Description: Function is getting the autostart value for the network
- * Arguments: @res [resource]: libvirt network resource
- * Returns: autostart value or -1 on error
- */
-PHP_FUNCTION(libvirt_network_get_autostart)
-{
- php_libvirt_network *network = NULL;
- zval *znetwork;
- int autostart;
-
- GET_NETWORK_FROM_ARGS("r", &znetwork);
-
- if (virNetworkGetAutostart(network->network, &autostart) != 0)
- RETURN_LONG(-1);
-
- RETURN_LONG((long) autostart);
-}
-
-/*
- * Function name: libvirt_network_set_autostart
- * Since version: 0.5.4
- * Description: Function is setting the autostart value for the network
- * Arguments: @res [resource]: libvirt network resource
- * @flags [int]: flag to enable/disable autostart
- * Returns: TRUE on success, FALSE on error
- */
-PHP_FUNCTION(libvirt_network_set_autostart)
-{
- php_libvirt_network *network = NULL;
- zval *znetwork;
- zend_long autostart = 0;
-
- GET_NETWORK_FROM_ARGS("rl", &znetwork, &autostart);
-
- if (virNetworkSetAutostart(network->network, autostart) < 0)
- RETURN_FALSE;
-
- RETURN_TRUE;
-}
-
/* NWFilter functions */
/*
diff --git a/src/libvirt-php.h b/src/libvirt-php.h
index 0752c6e..8b6e9e4 100644
--- a/src/libvirt-php.h
+++ b/src/libvirt-php.h
@@ -108,7 +108,6 @@ typedef uint64_t arch_uint;
#define PHP_LIBVIRT_WORLD_EXTNAME "libvirt"
/* Internal resource identifier objects */
-#define INT_RESOURCE_NETWORK 0x04
#define INT_RESOURCE_NODEDEV 0x08
#define INT_RESOURCE_STORAGEPOOL 0x10
#define INT_RESOURCE_VOLUME 0x20
@@ -152,11 +151,6 @@ typedef struct _php_libvirt_snapshot {
php_libvirt_domain* domain;
} php_libvirt_snapshot;
-typedef struct _php_libvirt_network {
- virNetworkPtr network;
- php_libvirt_connection* conn;
-} php_libvirt_network;
-
typedef struct _php_libvirt_nodedev {
virNodeDevicePtr device;
php_libvirt_connection* conn;
@@ -227,10 +221,10 @@ int streamSink(virStreamPtr st ATTRIBUTE_UNUSED,
const char *bytes, size_t nbytes, void *opaque);
const char *get_feature_binary(const char *name);
long get_next_free_numeric_value(virDomainPtr domain, char *xpath);
+int get_subnet_bits(char *ip);
#define PHP_LIBVIRT_STORAGEPOOL_RES_NAME "Libvirt storagepool"
#define PHP_LIBVIRT_VOLUME_RES_NAME "Libvirt volume"
-#define PHP_LIBVIRT_NETWORK_RES_NAME "Libvirt virtual network"
#define PHP_LIBVIRT_NODEDEV_RES_NAME "Libvirt node device"
#define PHP_LIBVIRT_SNAPSHOT_RES_NAME "Libvirt domain snapshot"
#define PHP_LIBVIRT_NWFILTER_RES_NAME "Libvirt nwfilter"
@@ -282,20 +276,6 @@ PHP_FUNCTION(libvirt_storagepool_set_autostart);
PHP_FUNCTION(libvirt_storagepool_get_autostart);
PHP_FUNCTION(libvirt_storagepool_build);
PHP_FUNCTION(libvirt_storagepool_delete);
-/* Network functions */
-PHP_FUNCTION(libvirt_network_define_xml);
-PHP_FUNCTION(libvirt_network_undefine);
-PHP_FUNCTION(libvirt_network_get);
-PHP_FUNCTION(libvirt_network_get_xml_desc);
-PHP_FUNCTION(libvirt_network_get_bridge);
-PHP_FUNCTION(libvirt_network_get_information);
-PHP_FUNCTION(libvirt_network_get_active);
-PHP_FUNCTION(libvirt_network_set_active);
-PHP_FUNCTION(libvirt_network_get_uuid_string);
-PHP_FUNCTION(libvirt_network_get_uuid);
-PHP_FUNCTION(libvirt_network_get_name);
-PHP_FUNCTION(libvirt_network_get_autostart);
-PHP_FUNCTION(libvirt_network_set_autostart);
/* Nodedev functions */
PHP_FUNCTION(libvirt_nodedev_get);
PHP_FUNCTION(libvirt_nodedev_capabilities);
@@ -313,8 +293,6 @@ PHP_FUNCTION(libvirt_nwfilter_lookup_by_uuid_string);
PHP_FUNCTION(libvirt_nwfilter_lookup_by_uuid);
/* Listing functions */
PHP_FUNCTION(libvirt_list_nodedevs);
-PHP_FUNCTION(libvirt_list_all_networks);
-PHP_FUNCTION(libvirt_list_networks);
PHP_FUNCTION(libvirt_list_all_nwfilters);
PHP_FUNCTION(libvirt_list_nwfilters);
PHP_FUNCTION(libvirt_list_domain_snapshots);
--
2.13.3