diff options
Diffstat (limited to 'src/peer.c')
-rw-r--r-- | src/peer.c | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -82,7 +82,7 @@ static void stop_dhcp_server(struct connman_peer *peer) peer->dhcp_server = NULL; if (peer->ip_pool) - __connman_ippool_unref(peer->ip_pool); + __connman_ippool_free(peer->ip_pool); peer->ip_pool = NULL; peer->lease_ip = 0; } @@ -606,6 +606,9 @@ static int peer_connect(struct connman_peer *peer) { int err = -ENOTSUP; + if (is_connected(peer)) + return -EISCONN; + if (peer_driver->connect) err = peer_driver->connect(peer, CONNMAN_PEER_WPS_UNKNOWN, NULL); @@ -1177,6 +1180,18 @@ const char *__connman_peer_get_path(struct connman_peer *peer) return peer->path; } +static void disconnect_peer_hash_table(gpointer key, + gpointer value, gpointer user_data) +{ + struct connman_peer *peer = value; + peer_disconnect(peer); +} + +void __connman_peer_disconnect_all(void) +{ + g_hash_table_foreach(peers_table, disconnect_peer_hash_table, NULL); +} + int __connman_peer_init(void) { DBG(""); |