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",
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",
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",
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;