{
if_addr_t *ip_addr;
struct sockaddr_in *ai;
+#ifdef INET6
+ struct sockaddr_in6 *ai6;
+#endif
switch (addr->sa_family) {
if_info->ip_addr = g_slist_append(if_info->ip_addr, ip_addr);
break;
-#ifdef AF_INET6
+#ifdef INET6
case AF_INET6:
+ ai6 = (struct sockaddr_in6 *)addr;
ip_addr = g_malloc(sizeof(*ip_addr));
ip_addr->family = FAM_IPv6;
memcpy((void *)&ip_addr->ip_addr.ip6_addr,
- (void *)&addr->sa_data, 16);
+ (void *)&ai6->sin6_addr.s6_addr,
+ sizeof ip_addr->ip_addr.ip6_addr);
if_info->ip_addr = g_slist_append(if_info->ip_addr, ip_addr);
break;
#endif