summaryrefslogtreecommitdiff
path: root/src/device.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-04-21 05:33:42 +0100
committerMarcel Holtmann <marcel@holtmann.org>2009-04-21 05:33:42 +0100
commite95ec7c1d780788f4c85a630d5dc4c84d36353e9 (patch)
treeab98ac0740690519a30c66775f26b00be0a0c8fe /src/device.c
parentf6ba1ce230293171982ae107adc20e5a6a5d2a0e (diff)
downloadconnman-e95ec7c1d780788f4c85a630d5dc4c84d36353e9.tar.gz
connman-e95ec7c1d780788f4c85a630d5dc4c84d36353e9.tar.bz2
connman-e95ec7c1d780788f4c85a630d5dc4c84d36353e9.zip
Fix carrier and disconnected interaction
Diffstat (limited to 'src/device.c')
-rw-r--r--src/device.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/device.c b/src/device.c
index b0210b0c..13684ee0 100644
--- a/src/device.c
+++ b/src/device.c
@@ -170,6 +170,18 @@ static int set_carrier(struct connman_device *device, connman_bool_t carrier)
enum connman_element_type type = CONNMAN_ELEMENT_TYPE_UNKNOWN;
struct connman_element *element;
+ device->disconnected = TRUE;
+
+ switch (device->policy) {
+ case CONNMAN_DEVICE_POLICY_UNKNOWN:
+ case CONNMAN_DEVICE_POLICY_IGNORE:
+ case CONNMAN_DEVICE_POLICY_OFF:
+ case CONNMAN_DEVICE_POLICY_MANUAL:
+ return 0;
+ case CONNMAN_DEVICE_POLICY_AUTO:
+ break;
+ }
+
switch (device->element.ipv4.method) {
case CONNMAN_IPV4_METHOD_UNKNOWN:
case CONNMAN_IPV4_METHOD_OFF:
@@ -191,6 +203,8 @@ static int set_carrier(struct connman_device *device, connman_bool_t carrier)
&device->element) < 0)
connman_element_unref(element);
+ device->disconnected = FALSE;
+
__connman_service_indicate_configuration(service);
}
} else
@@ -1258,19 +1272,6 @@ int connman_device_set_carrier(struct connman_device *device,
device->carrier = carrier;
- if (carrier == TRUE)
- device->disconnected = FALSE;
-
- switch (device->policy) {
- case CONNMAN_DEVICE_POLICY_UNKNOWN:
- case CONNMAN_DEVICE_POLICY_IGNORE:
- case CONNMAN_DEVICE_POLICY_OFF:
- return 0;
- case CONNMAN_DEVICE_POLICY_AUTO:
- case CONNMAN_DEVICE_POLICY_MANUAL:
- break;
- }
-
return set_carrier(device, device->carrier);
}