From: Yu Date: Thu, 18 Apr 2019 06:11:24 +0000 (+0900) Subject: Add function to get current IP from connman module X-Git-Tag: submit/tizen/20190429.011734^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=93c46ed73ce38ff5b3e8b87d812dd3da5968d41b;p=platform%2Fcore%2Fconnectivity%2Finm-manager.git Add function to get current IP from connman module Change-Id: I471cf503fbbb772f800ce00f6317cfdd13cd847d Signed-off-by: Yu Jiung --- diff --git a/include/inm-connman.h b/include/inm-connman.h index 91c8edf..9a2a01e 100644 --- a/include/inm-connman.h +++ b/include/inm-connman.h @@ -85,6 +85,11 @@ typedef enum { CONNMAN_SERVICE_ERROR_INVALID_KEY, } connman_service_error_e; +typedef enum { + CONNMAN_IP_TYPE_V4, + CONNMAN_IP_TYPE_V6, +} connman_ip_type_e; + int inm_connman_init(); int inm_connman_deinit(); @@ -109,6 +114,7 @@ int inm_connman_get_current_connection(GVariant **current_conn); int inm_connman_get_connections(GVariant **connections); int inm_connman_get_current_service_type(connman_service_type_e *type); int inm_connman_get_current_service_iface(gchar **ifname); +int inm_connman_get_current_service_ip(connman_ip_type_e type, gchar **ip); int inm_connman_get_current_service_gateway(gchar **gateway_ip); int inm_connman_tech_get_state(connman_service_type_e type, diff --git a/src/inm-connman-service.c b/src/inm-connman-service.c index e91c410..4e2d316 100644 --- a/src/inm-connman-service.c +++ b/src/inm-connman-service.c @@ -2917,6 +2917,35 @@ int inm_connman_get_current_service_iface(gchar **ifname) return ret; } +int inm_connman_get_current_service_ip(connman_ip_type_e type, gchar **ip) +{ + connman_service_s *service = NULL; + char ip_str[INET6_ADDRSTRLEN] = {0,}; + int ret = INM_CONNMAN_ERROR_NONE; + + __INM_FUNC_ENTER__; + + service = __get_current_service(); + if (service == NULL) { + INM_LOGW("No current connections"); + __INM_FUNC_EXIT__; + return INM_CONNMAN_ERROR_NO_CONNECTION; + } + + if (type == CONNMAN_IP_TYPE_V4) + inet_ntop(AF_INET, &(service->ip.address), ip_str, INET_ADDRSTRLEN); + else if (type == CONNMAN_IP_TYPE_V6) + inet_ntop(AF_INET6, &(service->ipv6.address), ip_str, INET6_ADDRSTRLEN); + + if (strlen(ip_str) != 0) + *ip = g_strdup(ip_str); + else + ret = INM_CONNMAN_ERROR_OPERATION_FAILED; + + __INM_FUNC_EXIT__; + return ret; +} + int inm_connman_get_current_service_gateway(gchar **gateway_ip) { connman_service_s *service = NULL;