From 281d2b2be00fe2a11157a8fea1068daa282bbddd Mon Sep 17 00:00:00 2001 From: guy Date: Sun, 18 Jul 2004 19:44:41 +0000 Subject: [PATCH] Just because AF_INET6 is defined, that doesn't mean "struct sockaddr_in6" is defined - the former, but not the latter, is defined in FreeBSD 3.4. Just copy the appropriate number of bytes from the "sa_data" field of a "struct sockaddr". git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@11413 f5534014-38df-0310-8fa8-9805f1628bb7 --- pcap-util.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/pcap-util.c b/pcap-util.c index c0b92c91c4..6f3a7e6fe2 100644 --- a/pcap-util.c +++ b/pcap-util.c @@ -198,30 +198,23 @@ void if_info_add_address(if_info_t *if_info, struct sockaddr *addr) { if_addr_t *ip_addr; - struct sockaddr_in *ai; -#ifdef AF_INET6 - struct sockaddr_in6 *ai6; -#endif switch (addr->sa_family) { case AF_INET: - ai = (struct sockaddr_in *)addr; ip_addr = g_malloc(sizeof(*ip_addr)); ip_addr->family = FAM_IPv4; - ip_addr->ip_addr.ip4_addr = - *((guint32 *)&(ai->sin_addr.s_addr)); + memcpy((void *)&ip_addr->ip_addr.ip4_addr, + (void *)&addr->sa_data, 4); if_info->ip_addr = g_slist_append(if_info->ip_addr, ip_addr); break; #ifdef AF_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 *)&ai6->sin6_addr.s6_addr, - sizeof ip_addr->ip_addr.ip6_addr); + (void *)&addr->sa_data, 16); if_info->ip_addr = g_slist_append(if_info->ip_addr, ip_addr); break; #endif -- 2.34.1