struct connman_service *__connman_service_create_from_provider(struct connman_provider *provider);
void __connman_service_update_from_network(struct connman_network *network);
void __connman_service_remove_from_network(struct connman_network *network);
-void __connman_service_reset_from_networks(struct connman_service *service, GHashTable *networks);
void __connman_service_create_ip4config(struct connman_service *service,
int index);
int connman_device_remove_network(struct connman_device *device,
struct connman_network *network)
{
- struct connman_service *service;
const char *identifier;
DBG("device %p network %p", device, network);
if (network == NULL)
return 0;
- service = __connman_service_lookup_from_network(network);
-
identifier = connman_network_get_identifier(network);
- g_hash_table_steal(device->networks, identifier);
-
- if (service != NULL)
- __connman_service_reset_from_networks(service, device->networks);
-
- free_network(network);
+ g_hash_table_remove(device->networks, identifier);
return 0;
}
__connman_service_put(service);
}
-void __connman_service_reset_from_networks(struct connman_service *service,
- GHashTable *networks)
-{
- struct connman_network *network;
- GHashTableIter iter;
- gpointer key, value;
-
- DBG("service %p", service);
-
- network = NULL;
-
- g_hash_table_iter_init(&iter, networks);
-
- while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) {
- struct connman_network *iter_network = value;
- uint8_t strength, iter_strength;
-
- if (network == NULL) {
- network = iter_network;
- continue;
- }
-
- strength = connman_network_get_strength(network);
- iter_strength = connman_network_get_strength(iter_network);
-
- if (iter_strength > strength)
- network = iter_network;
- }
-
- if (network == NULL) {
- service->network = NULL;
- return;
- }
-
- __connman_service_create_from_network(network);
-}
-
/**
* __connman_service_create_from_provider:
* @provider: provider structure