From 0d3b96f6fe23316f15444576b5a590a917beb8a5 Mon Sep 17 00:00:00 2001 From: Niraj Kumar Goit Date: Fri, 24 Mar 2017 09:55:24 +0530 Subject: [connman] Configure IPv6 after IPv4 dhcp succeed. To speed up Wi-Fi connection modified IP configuration logic in connman. Start IPv6 configuration once IPv4 dhcp configuration succeed. Change-Id: I8a33d533f36b42fa0b7450f3b34a5d2238d06e49 Signed-off-by: Niraj Kumar Goit --- src/network.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/network.c b/src/network.c index eb7851ca..58288293 100755 --- a/src/network.c +++ b/src/network.c @@ -111,6 +111,8 @@ struct connman_network { }; +static void autoconf_ipv6_set(struct connman_network *network); + static const char *type2string(enum connman_network_type type) { switch (type) { @@ -223,12 +225,27 @@ static void dhcp_callback(struct connman_ipconfig *ipconfig, struct connman_network *network, bool success, gpointer data) { +#if defined TIZEN_EXT + struct connman_service *service; + struct connman_ipconfig *ipconfig_ipv6; +#endif + network->connecting = false; if (success) dhcp_success(network); else dhcp_failure(network); + +#if defined TIZEN_EXT + service = connman_service_lookup_from_network(network); + ipconfig_ipv6 = __connman_service_get_ip6config(service); + if (__connman_ipconfig_get_method(ipconfig_ipv6) == CONNMAN_IPCONFIG_METHOD_AUTO) { + DBG("IPv6 autoconf start"); + set_configuration(network, CONNMAN_IPCONFIG_TYPE_IPV6); + autoconf_ipv6_set(network); + } +#endif } static int set_connected_manual(struct connman_network *network) @@ -387,7 +404,6 @@ err: return err; } -static void autoconf_ipv6_set(struct connman_network *network); static void dhcpv6_callback(struct connman_network *network, enum __connman_dhcpv6_status status, gpointer data); @@ -1800,7 +1816,9 @@ int __connman_network_enable_ipconfig(struct connman_network *network, return -ENOSYS; case CONNMAN_IPCONFIG_TYPE_IPV6: +#if !defined TIZEN_EXT set_configuration(network, type); +#endif method = __connman_ipconfig_get_method(ipconfig); @@ -1823,11 +1841,16 @@ int __connman_network_enable_ipconfig(struct connman_network *network, CONNMAN_SERVICE_STATE_CONFIGURATION, CONNMAN_IPCONFIG_TYPE_IPV6); #endif +#if !defined TIZEN_EXT autoconf_ipv6_set(network); +#endif break; case CONNMAN_IPCONFIG_METHOD_FIXED: case CONNMAN_IPCONFIG_METHOD_MANUAL: +#if defined TIZEN_EXT + set_configuration(network, type); +#endif r = manual_ipv6_set(network, ipconfig); break; -- cgit v1.2.3