Instead of having similar code in __connman_network_set_ipconfig, use
the previously factored out ipconfig connection code. With this change
manual_ipv4_set is not used anymore and the function prototype is also
changed.

Remove also the function call to __connman_network_set_ipconfig as the
function prototype has changed and it is being called from the wrong
place.
---
 src/connman.h |    3 +--
 src/network.c |   72 ++++++---------------------------------------------------
 src/service.c |    5 ----
 3 files changed, 8 insertions(+), 72 deletions(-)

diff --git a/src/connman.h b/src/connman.h
index 1e6bfec..ab0779a 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -527,8 +527,7 @@ int __connman_network_disconnect(struct connman_network 
*network);
 int __connman_network_clear_ipconfig(struct connman_network *network,
                                        struct connman_ipconfig *ipconfig);
 int __connman_network_set_ipconfig(struct connman_network *network,
-                               struct connman_ipconfig *ipconfig_ipv4,
-                               struct connman_ipconfig *ipconfig_ipv6);
+               struct connman_ipconfig *ipconfig);
 
 const char *__connman_network_get_type(struct connman_network *network);
 const char *__connman_network_get_group(struct connman_network *network);
diff --git a/src/network.c b/src/network.c
index badc4c9..9742ac9 100644
--- a/src/network.c
+++ b/src/network.c
@@ -1581,26 +1581,6 @@ int __connman_network_disconnect(struct connman_network 
*network)
        return err;
 }
 
-static int manual_ipv4_set(struct connman_network *network,
-                               struct connman_ipconfig *ipconfig)
-{
-       struct connman_service *service;
-       int err;
-
-       service = connman_service_lookup_from_network(network);
-       if (service == NULL)
-               return -EINVAL;
-
-       err = __connman_ipconfig_address_add(ipconfig);
-       if (err < 0) {
-               connman_network_set_error(network,
-                       CONNMAN_NETWORK_ERROR_CONFIGURE_FAIL);
-               return err;
-       }
-
-       return __connman_ipconfig_gateway_add(ipconfig);
-}
-
 int __connman_network_clear_ipconfig(struct connman_network *network,
                                        struct connman_ipconfig *ipconfig)
 {
@@ -1617,56 +1597,18 @@ int __connman_network_clear_ipconfig(struct 
connman_network *network,
 }
 
 int __connman_network_set_ipconfig(struct connman_network *network,
-                                       struct connman_ipconfig *ipconfig_ipv4,
-                                       struct connman_ipconfig *ipconfig_ipv6)
+               struct connman_ipconfig *ipconfig)
 {
-       enum connman_ipconfig_method method;
-       int ret;
-
-       if (network == NULL)
-               return -EINVAL;
-
-       if (ipconfig_ipv6) {
-               method = __connman_ipconfig_get_method(ipconfig_ipv6);
+       int err;
 
-               switch (method) {
-               case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
-               case CONNMAN_IPCONFIG_METHOD_OFF:
-                       break;
-               case CONNMAN_IPCONFIG_METHOD_AUTO:
-                       autoconf_ipv6_set(network);
-                       break;
-               case CONNMAN_IPCONFIG_METHOD_FIXED:
-               case CONNMAN_IPCONFIG_METHOD_MANUAL:
-                       ret = manual_ipv6_set(network, ipconfig_ipv6);
-                       if (ret != 0) {
-                               connman_network_set_error(network,
-                                       CONNMAN_NETWORK_ERROR_ASSOCIATE_FAIL);
-                               return ret;
-                       }
-                       break;
-               case CONNMAN_IPCONFIG_METHOD_DHCP:
-                       break;
-               }
-       }
+       if (network->connected == FALSE && network->connecting == FALSE)
+               return -ENOTCONN;
 
-       if (ipconfig_ipv4) {
-               method = __connman_ipconfig_get_method(ipconfig_ipv4);
+       __connman_ipconfig_enable(ipconfig);
 
-               switch (method) {
-               case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
-               case CONNMAN_IPCONFIG_METHOD_OFF:
-               case CONNMAN_IPCONFIG_METHOD_FIXED:
-               case CONNMAN_IPCONFIG_METHOD_AUTO:
-                       return -EINVAL;
-               case CONNMAN_IPCONFIG_METHOD_MANUAL:
-                       return manual_ipv4_set(network, ipconfig_ipv4);
-               case CONNMAN_IPCONFIG_METHOD_DHCP:
-                       return __connman_dhcp_start(network, dhcp_callback);
-               }
-       }
+       err = set_ipconfig_connected(network, ipconfig);
 
-       return 0;
+       return err;
 }
 
 int connman_network_set_ipaddress(struct connman_network *network,
diff --git a/src/service.c b/src/service.c
index 96cb7c0..5c7a014 100644
--- a/src/service.c
+++ b/src/service.c
@@ -3306,11 +3306,6 @@ static DBusMessage *set_property(DBusConnection *conn,
                else
                        ipv6_configuration_changed(service);
 
-               if (is_connecting(service) || is_connected(service))
-                       __connman_network_set_ipconfig(service->network,
-                                       service->ipconfig_ipv4,
-                                       service->ipconfig_ipv6);
-
                service_save(service);
        } else
                return __connman_error_invalid_property(msg);
-- 
1.7.10.4

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to