diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-01-21 01:55:57 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-01-21 01:55:57 +0100 |
commit | 3b6dd9aa9030e27513a4635e7a718feb4eea5ba1 (patch) | |
tree | 74a834d307802b389e36b81a72eda08822341c91 /src/network.c | |
parent | acd4243c17aa6a9896e2e7de41deb3369e8144c6 (diff) | |
download | connman-3b6dd9aa9030e27513a4635e7a718feb4eea5ba1.tar.gz connman-3b6dd9aa9030e27513a4635e7a718feb4eea5ba1.tar.bz2 connman-3b6dd9aa9030e27513a4635e7a718feb4eea5ba1.zip |
Add support for disconnecting networks first
Diffstat (limited to 'src/network.c')
-rw-r--r-- | src/network.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/network.c b/src/network.c index 3e27e7ef..6571da65 100644 --- a/src/network.c +++ b/src/network.c @@ -233,6 +233,12 @@ static DBusMessage *do_connect(DBusConnection *conn, return __connman_error_failed(msg); if (network->driver && network->driver->connect) { + enum connman_device_mode mode; + + mode = connman_device_get_mode(network->device); + if (mode == CONNMAN_DEVICE_MODE_NETWORK_SINGLE) + __connman_device_disconnect(network->device); + err = network->driver->connect(network); if (err < 0 && err != -EINPROGRESS) return __connman_error_failed(msg); @@ -684,6 +690,17 @@ int connman_network_set_connected(struct connman_network *network, } /** + * 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 @@ -756,6 +773,19 @@ int connman_network_connect(struct connman_network *network) return 0; } +int __connman_network_disconnect(struct connman_network *network) +{ + if (network->connected == FALSE) + return -ENOTCONN; + + if (network->driver && network->driver->disconnect) + return network->driver->disconnect(network); + + network->connected = FALSE; + + return 0; +} + /** * connman_network_set_string: * @network: network structure |