From: Jaehyun Kim Date: Wed, 11 Jan 2023 09:28:18 +0000 (+0900) Subject: Add a dbus signal and a property for DHCP status X-Git-Tag: accepted/tizen/7.0/unified/20230118.093741^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5f93d209b19a4dc17d5cc8e241c984f213b1b577;p=platform%2Fupstream%2Fconnman.git Add a dbus signal and a property for DHCP status Signal for DHCP start point has been added. And the interface name is also delivered to distinguish devices. Change-Id: I30ac4a48309c5324efb66a36c9dd431e0c847f5e Signed-off-by: Jaehyun Kim --- diff --git a/gdhcp/client.c b/gdhcp/client.c index 5e23b13..18f11a6 100755 --- a/gdhcp/client.c +++ b/gdhcp/client.c @@ -3131,6 +3131,13 @@ int g_dhcp_client_get_index(GDHCPClient *dhcp_client) return dhcp_client->ifindex; } +#if defined TIZEN_EXT +char *g_dhcp_client_get_interface(GDHCPClient *dhcp_client) +{ + return dhcp_client->interface; +} +#endif + char *g_dhcp_client_get_server_address(GDHCPClient *dhcp_client) { if (!dhcp_client) diff --git a/gdhcp/gdhcp.h b/gdhcp/gdhcp.h index d994488..041ae81 100755 --- a/gdhcp/gdhcp.h +++ b/gdhcp/gdhcp.h @@ -157,6 +157,7 @@ char *g_dhcp_client_get_server_address(GDHCPClient *client); #if defined TIZEN_EXT int g_dhcp_client_get_dhcp_lease_duration(GDHCPClient *client); +char *g_dhcp_client_get_interface(GDHCPClient *dhcp_client); #endif char *g_dhcp_client_get_address(GDHCPClient *client); diff --git a/src/connman.h b/src/connman.h index 9d99596..902dd3e 100755 --- a/src/connman.h +++ b/src/connman.h @@ -685,7 +685,7 @@ const char *__connman_network_get_ident(struct connman_network *network); bool __connman_network_get_weakness(struct connman_network *network); bool __connman_network_native_autoconnect(struct connman_network *network); #if defined TIZEN_EXT -dbus_bool_t __connman_network_notify_dhcp_changed(const char *key, void *val); +dbus_bool_t __connman_network_notify_dhcp_changed(const char *key, const char *val); bool connman_network_get_psk_sha256(struct connman_network *network); void connman_network_set_psk_sha256(struct connman_network *network, bool is_psk_sha256); #endif diff --git a/src/dhcp.c b/src/dhcp.c index ae60fcf..b17bc65 100644 --- a/src/dhcp.c +++ b/src/dhcp.c @@ -291,21 +291,22 @@ static void no_lease_cb(GDHCPClient *dhcp_client, gpointer user_data) #if defined TIZEN_EXT if (dhcp->network && connman_network_get_bool(dhcp->network, "WiFi.RoamingDHCP")) { - int lease_time = 0; connman_network_set_bool(dhcp->network, "WiFi.RoamingDHCP", false); __connman_network_enable_ipconfig(dhcp->network, dhcp->ipconfig); - __connman_network_notify_dhcp_changed("DHCP_FAIL", &lease_time); + __connman_network_notify_dhcp_changed("DHCP_FAIL", + g_dhcp_client_get_interface(dhcp_client)); return; } if (connman_setting_get_bool("EnableAutoIp") == false) { DBG("link-local address autoconfiguration is disabled."); + if (dhcp->network) { - int lease_time = 0; DBG("[DHCP-C] auto ip is not used, set dhcp-fail error and disconnect"); - __connman_network_notify_dhcp_changed("DHCP_FAIL", &lease_time); + __connman_network_notify_dhcp_changed("DHCP_FAIL", + g_dhcp_client_get_interface(dhcp_client)); connman_network_set_error(dhcp->network, CONNMAN_NETWORK_ERROR_DHCP_FAIL); } return; @@ -566,7 +567,8 @@ static void lease_available_cb(GDHCPClient *dhcp_client, gpointer user_data) #if defined TIZEN_EXT __connman_ipconfig_set_dhcp_lease_duration(dhcp->ipconfig, dhcp_lease_duration); - __connman_network_notify_dhcp_changed(DHCP_SUCCESS, &dhcp_lease_duration); + __connman_network_notify_dhcp_changed(DHCP_SUCCESS, + g_dhcp_client_get_interface(dhcp_client)); #endif /* @@ -653,6 +655,11 @@ static void ipv4ll_available_cb(GDHCPClient *ipv4ll_client, gpointer user_data) g_free(address); g_free(netmask); + +#if defined TIZEN_EXT + __connman_network_notify_dhcp_changed("DHCP_FAIL", + g_dhcp_client_get_interface(ipv4ll_client)); +#endif } static int dhcp_initialize(struct connman_dhcp *dhcp) @@ -860,6 +867,9 @@ int __connman_dhcp_start(struct connman_ipconfig *ipconfig, dhcp->user_data = user_data; #if defined TIZEN_EXT + __connman_network_notify_dhcp_changed("DHCP_STARTED", + g_dhcp_client_get_interface(dhcp->dhcp_client)); + if (network && connman_network_get_bool(network, "WiFi.RoamingDHCP")) { const char *last_addr = __connman_ipconfig_get_dhcp_address(ipconfig); diff --git a/src/network.c b/src/network.c index d702d3d..db0e72e 100755 --- a/src/network.c +++ b/src/network.c @@ -2108,14 +2108,16 @@ out: } #if defined TIZEN_EXT -dbus_bool_t __connman_network_notify_dhcp_changed(const char *key, void *val) +dbus_bool_t __connman_network_notify_dhcp_changed(const char *key, const char *val) { - int *value = (int *) val; DBusMessage *signal; DBusMessageIter iter; dbus_bool_t result = FALSE; - DBG("key %s, val %d", key, *value); + if (val) + DBG("key %s, val %s", key, val); + else + DBG("key %s, val NULL", key); signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH, CONNMAN_MANAGER_INTERFACE, "DhcpChanged"); @@ -2124,7 +2126,7 @@ dbus_bool_t __connman_network_notify_dhcp_changed(const char *key, void *val) return result; dbus_message_iter_init_append(signal, &iter); - connman_dbus_property_append_basic(&iter, key, DBUS_TYPE_INT32, val); + connman_dbus_property_append_basic(&iter, key, DBUS_TYPE_STRING, &val); result = dbus_connection_send(connection, signal, NULL); if (result)