diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-04-21 05:33:42 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-04-21 05:33:42 +0100 |
commit | e95ec7c1d780788f4c85a630d5dc4c84d36353e9 (patch) | |
tree | ab98ac0740690519a30c66775f26b00be0a0c8fe /src/device.c | |
parent | f6ba1ce230293171982ae107adc20e5a6a5d2a0e (diff) | |
download | connman-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.c | 27 |
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); } |