diff options
author | Jukka Rissanen <jukka.rissanen@linux.intel.com> | 2013-04-25 14:47:49 +0300 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2013-04-26 12:31:32 +0300 |
commit | 409f346fbf0cc54c04682fdb8982a76e1ce53b21 (patch) | |
tree | fb9df123a82f0f15c5b918da489f1d3d6bd535e5 | |
parent | 03055c5a5eabca0f8bc1daf9e7f20708fa11e324 (diff) | |
download | connman-409f346fbf0cc54c04682fdb8982a76e1ce53b21.tar.gz connman-409f346fbf0cc54c04682fdb8982a76e1ce53b21.tar.bz2 connman-409f346fbf0cc54c04682fdb8982a76e1ce53b21.zip |
device: Add support functions needed by ethernet tethering
-rw-r--r-- | include/device.h | 3 | ||||
-rw-r--r-- | src/device.c | 43 |
2 files changed, 46 insertions, 0 deletions
diff --git a/include/device.h b/include/device.h index b372821f..33825756 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 2e0dbdca..5feeee12 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 |