From 409f346fbf0cc54c04682fdb8982a76e1ce53b21 Mon Sep 17 00:00:00 2001 From: Jukka Rissanen Date: Thu, 25 Apr 2013 14:47:49 +0300 Subject: [PATCH] device: Add support functions needed by ethernet tethering --- include/device.h | 3 +++ src/device.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/include/device.h b/include/device.h index b372821..3382575 100644 --- a/include/device.h +++ b/include/device.h @@ -113,6 +113,9 @@ int connman_device_set_regdom(struct connman_device *device, void connman_device_regdom_notify(struct connman_device *device, int result, const char *alpha2); struct connman_device *connman_device_create_from_index(int index); +struct connman_device *connman_device_find_by_index(int index); +int connman_device_disconnect_service(struct connman_device *device); +int connman_device_reconnect_service(struct connman_device *device); struct connman_device_driver { const char *name; diff --git a/src/device.c b/src/device.c index 2e0dbdc..5feeee1 100644 --- a/src/device.c +++ b/src/device.c @@ -647,6 +647,36 @@ int __connman_device_disconnect(struct connman_device *device) return 0; } +int connman_device_disconnect_service(struct connman_device *device) +{ + DBG("device %p", device); + + device->reconnect = FALSE; + + if (device->network) { + struct connman_service *service = + connman_service_lookup_from_network(device->network); + + if (service != NULL) + __connman_service_disconnect(service); + else + connman_network_set_connected(device->network, FALSE); + } + + return 0; +} + +int connman_device_reconnect_service(struct connman_device *device) +{ + DBG("device %p", device); + + device->reconnect = TRUE; + + __connman_service_auto_connect(); + + return 0; +} + static void mark_network_available(gpointer key, gpointer value, gpointer user_data) { @@ -1035,6 +1065,19 @@ struct connman_device *__connman_device_find_device( return NULL; } +struct connman_device *connman_device_find_by_index(int index) +{ + GSList *list; + + for (list = device_list; list != NULL; list = list->next) { + struct connman_device *device = list->data; + if (device->index == index) + return device; + } + + return NULL; +} + /** * connman_device_set_regdom * @device: device structure -- 2.7.4