From: Marc-Aurel Zent marc_aurel@me.com
--- dlls/wpcap/unixlib.h | 14 ++++++-------- dlls/wpcap/wpcap.c | 13 +++++++------ 2 files changed, 13 insertions(+), 14 deletions(-)
diff --git a/dlls/wpcap/unixlib.h b/dlls/wpcap/unixlib.h index 8cd64ef0210..9ebcf225c5d 100644 --- a/dlls/wpcap/unixlib.h +++ b/dlls/wpcap/unixlib.h @@ -17,18 +17,16 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-struct sockaddr_hdr -{ - unsigned short sa_family; -}; +/* Oblique struct that either holds a Unix or Win32 sockaddr depending on context */ +struct pcap_sockaddr;
struct pcap_address { struct pcap_address *next; - struct sockaddr_hdr *addr; - struct sockaddr_hdr *netmask; - struct sockaddr_hdr *broadaddr; - struct sockaddr_hdr *dstaddr; + struct pcap_sockaddr *addr; + struct pcap_sockaddr *netmask; + struct pcap_sockaddr *broadaddr; + struct pcap_sockaddr *dstaddr; };
struct pcap_interface diff --git a/dlls/wpcap/wpcap.c b/dlls/wpcap/wpcap.c index df35954bfa7..0e6c55d4904 100644 --- a/dlls/wpcap/wpcap.c +++ b/dlls/wpcap/wpcap.c @@ -238,11 +238,12 @@ static char *build_win32_description( const struct pcap_interface *unix_dev ) return ret; }
-static struct sockaddr_hdr *dup_sockaddr( const struct sockaddr_hdr *addr ) +static struct pcap_sockaddr *dup_sockaddr( const struct pcap_sockaddr *addr ) { - struct sockaddr_hdr *ret; + struct pcap_sockaddr *ret; + short sa_family = *((short *)addr);
- switch (addr->sa_family) + switch (sa_family) { case AF_INET: { @@ -251,7 +252,7 @@ static struct sockaddr_hdr *dup_sockaddr( const struct sockaddr_hdr *addr ) dst->sin_family = src->sin_family; dst->sin_port = src->sin_port; dst->sin_addr = src->sin_addr; - ret = (struct sockaddr_hdr *)dst; + ret = (struct pcap_sockaddr *)dst; break; } case AF_INET6: @@ -263,11 +264,11 @@ static struct sockaddr_hdr *dup_sockaddr( const struct sockaddr_hdr *addr ) dst->sin6_flowinfo = src->sin6_flowinfo; dst->sin6_addr = src->sin6_addr; dst->sin6_scope_id = src->sin6_scope_id; - ret = (struct sockaddr_hdr *)dst; + ret = (struct pcap_sockaddr *)dst; break; } default: - FIXME( "address family %u not supported\n", addr->sa_family ); + FIXME( "address family %d not supported\n", sa_family ); return NULL; }