Add functions for network creation
[connman] / src / network.c
index 6a27d03..02067e6 100644 (file)
 
 #include "connman.h"
 
+struct connman_network {
+       struct connman_element element;
+       enum connman_network_type type;
+
+       struct connman_network_driver *driver;
+       void *driver_data;
+};
+
+static void network_destruct(struct connman_element *element)
+{
+       DBG("element %p name %s", element, element->name);
+}
+
+/**
+ * connman_network_create:
+ * @identifier: network identifier (for example an unqiue name)
+ *
+ * Allocate a new network and assign the #identifier to it.
+ *
+ * Returns: a newly-allocated #connman_network structure
+ */
+struct connman_network *connman_network_create(const char *identifier,
+                                               enum connman_network_type type)
+{
+       struct connman_network *network;
+
+       DBG("identifier %s type %d", identifier, type);
+
+       network = g_try_new0(struct connman_network, 1);
+       if (network == NULL)
+               return NULL;
+
+       DBG("network %p", network);
+
+       network->element.refcount = 1;
+
+       network->element.name = g_strdup(identifier);
+       network->element.type = CONNMAN_ELEMENT_TYPE_NETWORK;
+       network->element.index = -1;
+
+       network->element.network = network;
+       network->element.destruct = network_destruct;
+
+       network->type = type;
+
+       return network;
+}
+
+/**
+ * connman_network_ref:
+ * @network: network structure
+ *
+ * Increase reference counter of  network
+ */
+struct connman_network *connman_network_ref(struct connman_network *network)
+{
+       if (connman_element_ref(&network->element) == NULL)
+               return NULL;
+
+       return network;
+}
+
+/**
+ * connman_network_unref:
+ * @network: network structure
+ *
+ * Decrease reference counter of network
+ */
+void connman_network_unref(struct connman_network *network)
+{
+       connman_element_unref(&network->element);
+}
+
 static int network_probe(struct connman_element *element)
 {
        return 0;