Instead of having similar code in __connman_network_clear_ipconfig, use
the previously factored out ipconfig disconnection code.
---
src/network.c | 39 ++++++---------------------------------
1 file changed, 6 insertions(+), 33 deletions(-)
diff --git a/src/network.c b/src/network.c
index 9fb9b55..badc4c9 100644
--- a/src/network.c
+++ b/src/network.c
@@ -1604,43 +1604,16 @@ static int manual_ipv4_set(struct connman_network
*network,
int __connman_network_clear_ipconfig(struct connman_network *network,
struct connman_ipconfig *ipconfig)
{
- struct connman_service *service;
- enum connman_ipconfig_method method;
- enum connman_ipconfig_type type;
-
- service = connman_service_lookup_from_network(network);
- if (service == NULL)
- return -EINVAL;
+ int err;
- method = __connman_ipconfig_get_method(ipconfig);
- type = __connman_ipconfig_get_config_type(ipconfig);
+ if (network->connected == FALSE && network->connecting == FALSE)
+ return -ENOTCONN;
- switch (method) {
- case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
- case CONNMAN_IPCONFIG_METHOD_OFF:
- case CONNMAN_IPCONFIG_METHOD_FIXED:
- return -EINVAL;
- case CONNMAN_IPCONFIG_METHOD_AUTO:
- release_dhcpv6(network);
- break;
- case CONNMAN_IPCONFIG_METHOD_MANUAL:
- __connman_ipconfig_address_remove(ipconfig);
- break;
- case CONNMAN_IPCONFIG_METHOD_DHCP:
- __connman_dhcp_stop(network);
- break;
- }
+ err = set_ipconfig_disconnected(network, ipconfig);
- if (type == CONNMAN_IPCONFIG_TYPE_IPV6)
- __connman_service_ipconfig_indicate_state(service,
- CONNMAN_SERVICE_STATE_CONFIGURATION,
- CONNMAN_IPCONFIG_TYPE_IPV6);
- else if (type == CONNMAN_IPCONFIG_TYPE_IPV4)
- __connman_service_ipconfig_indicate_state(service,
- CONNMAN_SERVICE_STATE_CONFIGURATION,
- CONNMAN_IPCONFIG_TYPE_IPV4);
+ __connman_ipconfig_disable(ipconfig);
- return 0;
+ return err;
}
int __connman_network_set_ipconfig(struct connman_network *network,
--
1.7.10.4
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman