comp-manager: make comp_is_local_ip() function uses both IPv6 and IPv6 when comparing.
authorsaerome.kim <saerome.kim@samsung.com>
Wed, 11 Apr 2018 12:39:09 +0000 (21:39 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Mon, 2 Jul 2018 10:38:50 +0000 (19:38 +0900)
Signed-off-by: saerome.kim <saerome.kim@samsung.com>
src/companion-manager/include/comp_util.h
src/companion-manager/src/comp_group.c
src/companion-manager/src/comp_util.c

index 3fe04c1..0c5edd2 100644 (file)
@@ -28,7 +28,7 @@ extern "C"
 
 void comp_remove_ip_info(void);
 int comp_make_ip_info(void);
-int comp_compare_ip_and_ifname(char *ipdata);
+int comp_is_local_ip(char *ipdata);
 
 #ifdef __cplusplus
 }
index 6aa2306..270d772 100644 (file)
@@ -348,7 +348,7 @@ GVariant *comp_group_get_remote_mot_enabled_devices()
                g_variant_builder_add(&builder, "{sv}", "Address",
                                                          g_variant_new_string(device->addr));
                g_variant_builder_add(&builder, "{sv}", "DeviceType",
-                                               g_variant_new_uint16(comp_compare_ip_and_ifname(device->addr)));
+                                                         g_variant_new_uint16(comp_is_local_ip(device->addr)));
                g_variant_builder_add(&builder, "{sv}", "Ifindex",
                                                          g_variant_new_int32(device->ifindex));
                g_variant_builder_add(&builder, "{sv}", "RouteData",
@@ -761,7 +761,7 @@ GVariant *comp_group_get_mowned_devices()
                g_variant_builder_add(&builder, "{sv}", "Address",
                                                          g_variant_new_string(device->addr));
                g_variant_builder_add(&builder, "{sv}", "DeviceType",
-                                               g_variant_new_uint16(comp_compare_ip_and_ifname(device->addr)));
+                                                         g_variant_new_uint16(comp_is_local_ip(device->addr)));
                g_variant_builder_add(&builder, "{sv}", "Ifindex",
                                                          g_variant_new_int32(device->ifindex));
                g_variant_builder_add(&builder, "{sv}", "RouteData",
@@ -818,7 +818,7 @@ GVariant *comp_group_get_my_mowned_devices()
                g_variant_builder_add(&builder, "{sv}", "Address",
                                                          g_variant_new_string(my_device->addr));
                g_variant_builder_add(&builder, "{sv}", "DeviceType",
-                                               g_variant_new_uint16(comp_compare_ip_and_ifname(my_device->addr)));
+                                                         g_variant_new_uint16(comp_is_local_ip(my_device->addr)));
                g_variant_builder_add(&builder, "{sv}", "Ifindex",
                                                          g_variant_new_int32(my_device->ifindex));
                g_variant_builder_add(&builder, "{sv}", "RouteData",
index 7f756e0..ae3bfa2 100644 (file)
@@ -285,35 +285,32 @@ int comp_make_ip_info(void)
     return 0;
 }
 
-int comp_compare_ip_and_ifname(char *ipdata)
+int comp_is_local_ip(char *ipdata)
 {
        char *ip = NULL;
        char *ifname = NULL;
+       char *save_str = NULL;
        GList *iter = NULL;
+       ipv6_info_s *ipv6info = NULL;
+       ipv4_info_s *ipv4info = NULL;
+
+       ip = strtok_r(ipdata, "%", &save_str);
+       ifname = strtok_r(NULL, "%", &save_str);
+
+       iter = g_list_first(g_ip_info.ipv6_list);
+       while (NULL != iter) {
+               ipv6info = iter->data;
+               if (ipv6info && ipv6info->ip && !strncmp(ipv6info->ip, ip, INET6_ADDRSTRLEN))
+                       return LOCAL_IP;
+               iter = g_list_next(iter);
+       }
 
-       ip = strtok_r(ipdata, "%", &ipdata);
-       ifname = strtok_r(ipdata, "%", &ipdata);
-
-       /* In case IPv4 ip = 192.168.86.90, ifname = (null) */
-       if (NULL == ifname) {
-               ipv4_info_s *ipv4info = NULL;
-               iter = g_list_first(g_ip_info.ipv4_list);
-               while (NULL != iter) {
-                       ipv4info = iter->data;
-                       if (ipv4info && ipv4info->ip && !strncmp(ipv4info->ip, ip, INET_ADDRSTRLEN))
-                               return LOCAL_IP;
-                       iter = g_list_next(iter);
-               }
-       } else {
-               /* In case IPv4 ip = fe80::7edd:90ff:feb1:1b57, ifname = wlan0 */
-               ipv6_info_s *ipv6info = NULL;
-               iter = g_list_first(g_ip_info.ipv6_list);
-               while (NULL != iter) {
-                       ipv6info = iter->data;
-                       if (ipv6info && ipv6info->ip && !strncmp(ipv6info->ip, ip, INET6_ADDRSTRLEN))
-                               return LOCAL_IP;
-                       iter = g_list_next(iter);
-               }
+       iter = g_list_first(g_ip_info.ipv4_list);
+       while (NULL != iter) {
+               ipv4info = iter->data;
+               if (ipv4info && ipv4info->ip && !strncmp(ipv4info->ip, ip, INET_ADDRSTRLEN))
+                       return LOCAL_IP;
+               iter = g_list_next(iter);
        }
 
        return REMOTE_IP;