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

Reply via email to