"struct sockaddr_in"s and "struct sockaddr_in6"s are sufficient to serve
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 18 Jul 2004 23:07:04 +0000 (23:07 +0000)
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 18 Jul 2004 23:07:04 +0000 (23:07 +0000)
as transport endpoint addresses, so the "sa_data" field includes port
numbers.  Revert the IPv4 code; we'll fix the IPv6 code later (we'll
have to check whether "struct sockaddr_in6" is defined, and not support
IPv6 addresses if it's not, even if AF_INET6 is defined).

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@11420 f5534014-38df-0310-8fa8-9805f1628bb7

pcap-util.c

index 6f3a7e6fe2484a07d7bd3daf88063768b6bf4ad8..2f3e80e6cd2cb9ec5ad603655dd4e214f2c18dcb 100644 (file)
@@ -198,14 +198,16 @@ void
 if_info_add_address(if_info_t *if_info, struct sockaddr *addr)
 {
        if_addr_t *ip_addr;
+       struct sockaddr_in *ai;
 
        switch (addr->sa_family) {
 
        case AF_INET:
+               ai = (struct sockaddr_in *)addr;
                ip_addr = g_malloc(sizeof(*ip_addr));
                ip_addr->family = FAM_IPv4;
-               memcpy((void *)&ip_addr->ip_addr.ip4_addr,
-                   (void *)&addr->sa_data, 4);
+               ip_addr->ip_addr.ip4_addr =
+                   *((guint32 *)&(ai->sin_addr.s_addr));
                if_info->ip_addr = g_slist_append(if_info->ip_addr, ip_addr);
                break;