+/**
+ * connman_network_get_connected:
+ * @network: network structure
+ *
+ * Get network connection status
+ */
+connman_bool_t connman_network_get_connected(struct connman_network *network)
+{
+ return network->connected;
+}
+
+/**
+ * connman_network_set_remember:
+ * @network: network structure
+ * @remember: remember state
+ *
+ * Change remember state of network (known networks)
+ */
+int connman_network_set_remember(struct connman_network *network,
+ connman_bool_t remember)
+{
+ DBG("network %p remember %d", network, remember);
+
+ if (network->remember == remember)
+ return -EALREADY;
+
+ network->remember = remember;
+
+ return 0;
+}
+
+/**
+ * connman_network_get_remember:
+ * @network: network structure
+ *
+ * Get network remember setting
+ */
+connman_bool_t connman_network_get_remember(struct connman_network *network)
+{
+ return network->remember;
+}
+
+/**
+ * connman_network_connect:
+ * @network: network structure
+ *
+ * Connect network
+ */
+int connman_network_connect(struct connman_network *network)
+{
+ if (network->connected == TRUE)
+ return -EALREADY;
+
+ if (network->driver && network->driver->connect)
+ return network->driver->connect(network);
+
+ network->connected = TRUE;
+
+ return 0;
+}
+
+int __connman_network_disconnect(struct connman_network *network)
+{
+ if (network->connected == FALSE)
+ return -ENOTCONN;
+
+ connman_element_unregister_children(&network->element);
+
+ if (network->driver && network->driver->disconnect)
+ return network->driver->disconnect(network);
+
+ network->connected = FALSE;
+
+ return 0;
+}
+
+/**
+ * connman_network_set_string:
+ * @network: network structure
+ * @key: unique identifier
+ * @value: string value
+ *
+ * Set string value for specific key
+ */
+int connman_network_set_string(struct connman_network *network,
+ const char *key, const char *value)
+{
+ DBG("network %p key %s value %s", network, key, value);
+
+ if (g_str_equal(key, "Address") == TRUE) {
+ g_free(network->address);
+ network->address = g_strdup(value);
+ } else if (g_str_equal(key, "Name") == TRUE) {
+ g_free(network->name);
+ network->name = g_strdup(value);
+ } else if (g_str_equal(key, "Node") == TRUE) {
+ g_free(network->node);
+ network->node = g_strdup(value);
+ } else if (g_str_equal(key, "WiFi.Mode") == TRUE) {
+ g_free(network->wifi.mode);
+ network->wifi.mode = g_strdup(value);
+ } else if (g_str_equal(key, "WiFi.Security") == TRUE) {
+ g_free(network->wifi.security);
+ network->wifi.security = g_strdup(value);
+ } else if (g_str_equal(key, "WiFi.Passphrase") == TRUE) {
+ g_free(network->wifi.passphrase);
+ network->wifi.passphrase = g_strdup(value);
+ }
+
+ return connman_element_set_string(&network->element, key, value);
+}
+
+/**
+ * connman_network_get_string:
+ * @network: network structure
+ * @key: unique identifier
+ *
+ * Get string value for specific key
+ */
+const char *connman_network_get_string(struct connman_network *network,
+ const char *key)
+{
+ DBG("network %p key %s", network, key);
+
+ if (g_str_equal(key, "Address") == TRUE)
+ return network->address;
+ else if (g_str_equal(key, "Name") == TRUE)
+ return network->name;
+ else if (g_str_equal(key, "Node") == TRUE)
+ return network->node;
+ else if (g_str_equal(key, "WiFi.Mode") == TRUE)
+ return network->wifi.mode;
+ else if (g_str_equal(key, "WiFi.Security") == TRUE)
+ return network->wifi.security;
+ else if (g_str_equal(key, "WiFi.Passphrase") == TRUE)
+ return network->wifi.passphrase;
+
+ return connman_element_get_string(&network->element, key);
+}
+
+/**
+ * connman_network_set_uint8:
+ * @network: network structure
+ * @key: unique identifier
+ * @value: integer value
+ *
+ * Set integer value for specific key
+ */
+int connman_network_set_uint8(struct connman_network *network,
+ const char *key, connman_uint8_t value)
+{
+ DBG("network %p key %s value %d", network, key, value);
+
+ if (g_str_equal(key, "Priority") == TRUE)
+ network->priority = value;
+ else if (g_str_equal(key, "Strength") == TRUE)
+ network->strength = value;
+
+ return connman_element_set_uint8(&network->element, key, value);
+}
+
+/**
+ * connman_network_get_uint8:
+ * @network: network structure
+ * @key: unique identifier
+ *
+ * Get integer value for specific key
+ */
+connman_uint8_t connman_network_get_uint8(struct connman_network *network,
+ const char *key)
+{
+ DBG("network %p key %s", network, key);
+
+ if (g_str_equal(key, "Priority") == TRUE)
+ return network->priority;
+ else if (g_str_equal(key, "Strength") == TRUE)
+ return network->strength;
+
+ return connman_element_get_uint8(&network->element, key);
+}
+
+/**
+ * connman_network_set_blob:
+ * @network: network structure
+ * @key: unique identifier
+ * @data: blob data
+ * @size: blob size
+ *
+ * Set binary blob value for specific key
+ */
+int connman_network_set_blob(struct connman_network *network,
+ const char *key, const void *data, unsigned int size)
+{
+ DBG("network %p key %s size %d", network, key, size);
+
+ if (g_str_equal(key, "WiFi.SSID") == TRUE) {
+ g_free(network->wifi.ssid);
+ network->wifi.ssid = g_try_malloc(size);
+ if (network->wifi.ssid != NULL) {
+ memcpy(network->wifi.ssid, data, size);
+ network->wifi.ssid_len = size;
+ } else
+ network->wifi.ssid_len = 0;
+ }
+
+ return connman_element_set_blob(&network->element, key, data, size);
+}
+
+/**
+ * connman_network_get_blob:
+ * @network: network structure
+ * @key: unique identifier
+ * @size: pointer to blob size
+ *
+ * Get binary blob value for specific key
+ */
+const void *connman_network_get_blob(struct connman_network *network,
+ const char *key, unsigned int *size)
+{
+ DBG("network %p key %s", network, key);
+
+ if (g_str_equal(key, "WiFi.SSID") == TRUE) {
+ if (size != NULL)
+ *size = network->wifi.ssid_len;
+ return network->wifi.ssid;
+ }
+
+ return connman_element_get_blob(&network->element, key, size);
+}
+