X-Git-Url: http://review.tizen.org/git/?p=platform%2Fupstream%2Fconnman.git;a=blobdiff_plain;f=src%2Fdhcp.c;h=7c446cf81e246c10418e30ccfdc58a901916c55d;hp=5cef0387e59fd66e2e7bd2653f5c65ea7794852a;hb=00b8c314dc2cfb641494d413f4b00d90a10ecbeb;hpb=b6922282a9e5ede695b4294ffc4d696838523dd6 diff --git a/src/dhcp.c b/src/dhcp.c index 5cef038..7c446cf 100644 --- a/src/dhcp.c +++ b/src/dhcp.c @@ -285,6 +285,14 @@ static void no_lease_cb(GDHCPClient *dhcp_client, gpointer user_data) dhcp->ipv4ll_client); #if defined TIZEN_EXT + if (dhcp->network && + connman_network_get_bool(dhcp->network, "WiFi.RoamingDHCP")) { + connman_network_set_bool(dhcp->network, "WiFi.RoamingDHCP", false); + __connman_network_enable_ipconfig(dhcp->network, dhcp->ipconfig); + + return; + } + if (connman_setting_get_bool("EnableAutoIp") == false) { DBG("link-local address autoconfiguration is disabled."); if (dhcp->network) @@ -563,6 +571,17 @@ static void lease_available_cb(GDHCPClient *dhcp_client, gpointer user_data) __connman_service_notify_ipv4_configuration(service); } +#if defined TIZEN_EXT + if (connman_network_get_bool(dhcp->network, "WiFi.RoamingDHCP")) { + + if (ip_change) + connman_service_notify_reconnection( + connman_service_lookup_from_network(dhcp->network)); + + connman_network_set_bool(dhcp->network, "WiFi.RoamingDHCP", false); + } +#endif + if (ip_change) { __connman_ipconfig_set_local(dhcp->ipconfig, address); __connman_ipconfig_set_prefixlen(dhcp->ipconfig, prefixlen); @@ -829,9 +848,15 @@ int __connman_dhcp_start(struct connman_ipconfig *ipconfig, dhcp->user_data = user_data; #if defined TIZEN_EXT - DBG("Start DHCP with DHCPDISCOVER request"); + if (connman_network_get_bool(network, "WiFi.RoamingDHCP")) { + const char *last_addr = __connman_ipconfig_get_dhcp_address(ipconfig); - return g_dhcp_client_start(dhcp->dhcp_client, NULL); + DBG("Start DHCP with last address request"); + return g_dhcp_client_start(dhcp->dhcp_client, last_addr); + } else { + DBG("Start DHCP with DHCPDISCOVER request"); + return g_dhcp_client_start(dhcp->dhcp_client, NULL); + } #else return g_dhcp_client_start(dhcp->dhcp_client, last_addr); #endif