[SCM] Socket Wrapper Repository - branch master updated
Andreas Schneider
asn at samba.org
Mon Sep 1 03:31:30 MDT 2014
The branch, master has been updated
via 442ac15 swrap: Fix whitespace errors.
via 98dda4f swrap: Update copyright notice.
via e3f7e8c swrap: Wrap fopen to detect stale file descriptors.
via 9694d99 swrap: Use swrap_address in swrap_accept().
via 3f53182 swrap: Remove unused sockaddr_dup() function.
via eedb8e7 swrap: Use swrap_address in the socket_info struct.
via bb76c42 swrap: Use a sockaddr_un for the unix path in socket_info.
via 2b587c8 swrap: Rename swrap_pcap_dump_packet().
via 7942896 swrap: Rename swrap_pcap_get_fd().
via d094f2c swrap: Rename swrap_marshall_packet().
via 016569e swrap: Rename swrap_packet_init().
via 8af84a5 swrap: Rename socket_wrapper_pcap_file().
via 29ea9ce echo_srv: Fix type punning warnings.
via 0c921aa tests: Fix type punning warnings.
via fa6fee0 swrap: Fix type punning warnings.
via 6637a81 cmake: Set strict aliasing and strict overflow checks.
from c83b7d4 Add #define __APPLE_USE_RFC_3542 to CFLAGS
http://gitweb.samba.org/?p=socket_wrapper.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 442ac150e96595ba4025f9f508ce25b9d8a62b23
Author: Andreas Schneider <asn at samba.org>
Date: Mon Sep 1 09:17:06 2014 +0200
swrap: Fix whitespace errors.
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 98dda4f6d01ebea315a7a3d335ae26064394bcf0
Author: Andreas Schneider <asn at samba.org>
Date: Fri Aug 29 13:12:58 2014 +0200
swrap: Update copyright notice.
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit e3f7e8ce9158420379fbba3164c05bd845708c60
Author: Andreas Schneider <asn at samba.org>
Date: Wed Aug 27 16:00:43 2014 +0200
swrap: Wrap fopen to detect stale file descriptors.
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 9694d9924f3f7e88852936a8a27101986bb47223
Author: Andreas Schneider <asn at samba.org>
Date: Wed May 21 15:14:56 2014 +0200
swrap: Use swrap_address in swrap_accept().
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 3f531827c0223be4a88ae8c09b4361c2c59a2769
Author: Andreas Schneider <asn at samba.org>
Date: Wed May 21 15:15:38 2014 +0200
swrap: Remove unused sockaddr_dup() function.
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit eedb8e72cf898d623dc93f881878ca2fcbbb7402
Author: Andreas Schneider <asn at samba.org>
Date: Wed May 21 14:56:35 2014 +0200
swrap: Use swrap_address in the socket_info struct.
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit bb76c424e29b17398c342cf64cadfe96ced7b997
Author: Andreas Schneider <asn at samba.org>
Date: Wed May 21 14:06:05 2014 +0200
swrap: Use a sockaddr_un for the unix path in socket_info.
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 2b587c81f8e29118206a40a20422d0f08f61da5c
Author: Andreas Schneider <asn at samba.org>
Date: Wed May 21 11:01:46 2014 +0200
swrap: Rename swrap_pcap_dump_packet().
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 7942896ce6bd0ad7a169aea5cba062f50727d265
Author: Andreas Schneider <asn at samba.org>
Date: Wed May 21 10:59:29 2014 +0200
swrap: Rename swrap_pcap_get_fd().
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit d094f2c18684755bb204bb29d74dc0fe6256fa81
Author: Andreas Schneider <asn at samba.org>
Date: Wed May 21 10:58:48 2014 +0200
swrap: Rename swrap_marshall_packet().
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 016569e151f8a7d238f2b3401aac80fbc78d2b87
Author: Andreas Schneider <asn at samba.org>
Date: Wed May 21 10:57:36 2014 +0200
swrap: Rename swrap_packet_init().
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 8af84a5b318e419dcd2ebfd4020d5792424a7240
Author: Andreas Schneider <asn at samba.org>
Date: Wed May 21 10:55:48 2014 +0200
swrap: Rename socket_wrapper_pcap_file().
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 29ea9ce132d2dca6b6de10b3d740b3ce38bccb55
Author: Andreas Schneider <asn at samba.org>
Date: Fri Aug 29 17:37:51 2014 +0200
echo_srv: Fix type punning warnings.
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 0c921aa3129a5b1b0ff9c7fae2c0b2ca6bde7510
Author: Andreas Schneider <asn at samba.org>
Date: Fri Aug 29 10:33:16 2014 +0200
tests: Fix type punning warnings.
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit fa6fee05250c844eb0e00ee47b87ea2e5cd383bf
Author: Andreas Schneider <asn at samba.org>
Date: Fri Aug 29 10:25:51 2014 +0200
swrap: Fix type punning warnings.
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 6637a810c7548bcea3fdaa88d4ffe2ed612bcf7a
Author: Andreas Schneider <asn at samba.org>
Date: Thu Aug 28 15:22:35 2014 +0200
cmake: Set strict aliasing and strict overflow checks.
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
-----------------------------------------------------------------------
Summary of changes:
cmake/Modules/DefineCompilerFlags.cmake | 4 +
src/socket_wrapper.c | 659 +++++++++++++++++-------------
tests/CMakeLists.txt | 1 +
tests/echo_srv.c | 178 ++++----
tests/test_echo_tcp_bind.c | 163 +++++---
tests/test_echo_tcp_connect.c | 30 +-
tests/test_echo_tcp_get_peer_sock_name.c | 370 ++++++++++-------
tests/test_echo_tcp_socket.c | 20 +-
tests/test_echo_tcp_socket_options.c | 48 ++--
tests/test_echo_tcp_write_read.c | 30 +-
tests/test_echo_tcp_writev_readv.c | 32 +-
tests/test_echo_udp_send_recv.c | 28 +-
tests/test_echo_udp_sendmsg_recvmsg.c | 54 ++--
tests/test_echo_udp_sendto_recvfrom.c | 62 ++--
tests/torture.h | 17 +
15 files changed, 942 insertions(+), 754 deletions(-)
Changeset truncated at 500 lines:
diff --git a/cmake/Modules/DefineCompilerFlags.cmake b/cmake/Modules/DefineCompilerFlags.cmake
index 4a747d2..53481c3 100644
--- a/cmake/Modules/DefineCompilerFlags.cmake
+++ b/cmake/Modules/DefineCompilerFlags.cmake
@@ -15,10 +15,14 @@ if (UNIX AND NOT WIN32)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wshadow -Wmissing-prototypes -Wdeclaration-after-statement")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused -Wfloat-equal -Wpointer-arith -Wwrite-strings -Wformat-security")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-format-attribute -Wcast-align -Wcast-qual")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-field-initializers")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=pointer-arith -Werror=declaration-after-statement")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=implicit-function-declaration -Werror=write-strings")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast")
+ # -Werror=strict-aliasing is broken
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstrict-aliasing -Wstrict-aliasing=2")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstrict-overflow -Wstrict-overflow=5 -Werror=strict-overflow")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE")
if (OSX)
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c
index 930ab58..1b3352b 100644
--- a/src/socket_wrapper.c
+++ b/src/socket_wrapper.c
@@ -1,7 +1,7 @@
/*
- * Copyright (C) Jelmer Vernooij 2005,2008 <jelmer at samba.org>
- * Copyright (C) Stefan Metzmacher 2006-2009 <metze at samba.org>
- * Copyright (C) Andreas Schneider 2013 <asn at samba.org>
+ * Copyright (c) 2005-2008 Jelmer Vernooij <jelmer at samba.org>
+ * Copyright (C) 2006-2014 Stefan Metzmacher <metze at samba.org>
+ * Copyright (C) 2013-2014 Andreas Schneider <asn at samba.org>
*
* All rights reserved.
*
@@ -210,6 +210,19 @@ enum swrap_dbglvl_e {
* without changing the format above */
#define MAX_WRAPPED_INTERFACES 40
+struct swrap_address {
+ socklen_t sa_socklen;
+ union {
+ struct sockaddr s;
+ struct sockaddr_in in;
+#ifdef HAVE_IPV6
+ struct sockaddr_in6 in6;
+#endif
+ struct sockaddr_un un;
+ struct sockaddr_storage ss;
+ } sa;
+};
+
struct socket_info_fd {
struct socket_info_fd *prev, *next;
int fd;
@@ -229,16 +242,12 @@ struct socket_info
int defer_connect;
int pktinfo;
- char *tmp_path;
-
- struct sockaddr *bindname;
- socklen_t bindname_len;
-
- struct sockaddr *myname;
- socklen_t myname_len;
+ /* The unix path so we can unlink it on close() */
+ struct sockaddr_un un_addr;
- struct sockaddr *peername;
- socklen_t peername_len;
+ struct swrap_address bindname;
+ struct swrap_address myname;
+ struct swrap_address peername;
struct {
unsigned long pck_snd;
@@ -328,6 +337,7 @@ struct swrap_libc_fns {
socklen_t addrlen);
int (*libc_dup)(int fd);
int (*libc_dup2)(int oldfd, int newfd);
+ FILE *(*libc_fopen)(const char *name, const char *mode);
#ifdef HAVE_EVENTFD
int (*libc_eventfd)(int count, int flags);
#endif
@@ -636,6 +646,13 @@ static int libc_listen(int sockfd, int backlog)
return swrap.fns.libc_listen(sockfd, backlog);
}
+static FILE *libc_fopen(const char *name, const char *mode)
+{
+ swrap_load_lib_function(SWRAP_LIBC, fopen);
+
+ return swrap.fns.libc_fopen(name, mode);
+}
+
static int libc_vopen(const char *pathname, int flags, va_list ap)
{
long int mode = 0;
@@ -813,22 +830,15 @@ static const struct in6_addr *swrap_ipv6(void)
}
#endif
-static struct sockaddr *sockaddr_dup(const void *data, socklen_t len)
-{
- struct sockaddr *ret = (struct sockaddr *)malloc(len);
- memcpy(ret, data, len);
- return ret;
-}
-
-static void set_port(int family, int prt, struct sockaddr *addr)
+static void set_port(int family, int prt, struct swrap_address *addr)
{
switch (family) {
case AF_INET:
- ((struct sockaddr_in *)addr)->sin_port = htons(prt);
+ addr->sa.in.sin_port = htons(prt);
break;
#ifdef HAVE_IPV6
case AF_INET6:
- ((struct sockaddr_in6 *)addr)->sin6_port = htons(prt);
+ addr->sa.in6.sin6_port = htons(prt);
break;
#endif
}
@@ -970,7 +980,7 @@ static int convert_in_un_remote(struct socket_info *si, const struct sockaddr *i
switch (inaddr->sa_family) {
case AF_INET: {
- const struct sockaddr_in *in =
+ const struct sockaddr_in *in =
(const struct sockaddr_in *)(const void *)inaddr;
unsigned int addr = ntohl(in->sin_addr.s_addr);
char u_type = '\0';
@@ -1017,7 +1027,7 @@ static int convert_in_un_remote(struct socket_info *si, const struct sockaddr *i
}
#ifdef HAVE_IPV6
case AF_INET6: {
- const struct sockaddr_in6 *in =
+ const struct sockaddr_in6 *in =
(const struct sockaddr_in6 *)(const void *)inaddr;
struct in6_addr cmp1, cmp2;
@@ -1064,14 +1074,14 @@ static int convert_in_un_remote(struct socket_info *si, const struct sockaddr *i
}
if (is_bcast) {
- snprintf(un->sun_path, sizeof(un->sun_path), "%s/EINVAL",
+ snprintf(un->sun_path, sizeof(un->sun_path), "%s/EINVAL",
socket_wrapper_dir());
SWRAP_LOG(SWRAP_LOG_DEBUG, "un path [%s]", un->sun_path);
/* the caller need to do more processing */
return 0;
}
- snprintf(un->sun_path, sizeof(un->sun_path), "%s/"SOCKET_FORMAT,
+ snprintf(un->sun_path, sizeof(un->sun_path), "%s/"SOCKET_FORMAT,
socket_wrapper_dir(), type, iface, prt);
SWRAP_LOG(SWRAP_LOG_DEBUG, "un path [%s]", un->sun_path);
@@ -1091,7 +1101,7 @@ static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr *in
switch (si->family) {
case AF_INET: {
- const struct sockaddr_in *in =
+ const struct sockaddr_in *in =
(const struct sockaddr_in *)(const void *)inaddr;
unsigned int addr = ntohl(in->sin_addr.s_addr);
char u_type = '\0';
@@ -1144,7 +1154,7 @@ static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr *in
}
/* Store the bind address for connect() */
- if (si->bindname == NULL) {
+ if (si->bindname.sa_socklen == 0) {
struct sockaddr_in bind_in;
socklen_t blen = sizeof(struct sockaddr_in);
@@ -1153,15 +1163,15 @@ static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr *in
bind_in.sin_port = in->sin_port;
bind_in.sin_addr.s_addr = htonl(0x7F000000 | iface);
- si->bindname = sockaddr_dup(&bind_in, blen);
- si->bindname_len = blen;
+ si->bindname.sa_socklen = blen;
+ memcpy(&si->bindname.sa.in, &bind_in, blen);
}
break;
}
#ifdef HAVE_IPV6
case AF_INET6: {
- const struct sockaddr_in6 *in =
+ const struct sockaddr_in6 *in =
(const struct sockaddr_in6 *)(const void *)inaddr;
struct in6_addr cmp1, cmp2;
@@ -1195,7 +1205,7 @@ static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr *in
}
/* Store the bind address for connect() */
- if (si->bindname == NULL) {
+ if (si->bindname.sa_socklen == 0) {
struct sockaddr_in6 bind_in;
socklen_t blen = sizeof(struct sockaddr_in6);
@@ -1206,8 +1216,8 @@ static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr *in
bind_in.sin6_addr = *swrap_ipv6();
bind_in.sin6_addr.s6_addr[15] = iface;
- si->bindname = sockaddr_dup(&bind_in, blen);
- si->bindname_len = blen;
+ memcpy(&si->bindname.sa.in6, &bind_in, blen);
+ si->bindname.sa_socklen = blen;
}
break;
@@ -1230,12 +1240,12 @@ static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr *in
if (prt == 0) {
/* handle auto-allocation of ephemeral ports */
for (prt = 5001; prt < 10000; prt++) {
- snprintf(un->sun_path, sizeof(un->sun_path), "%s/"SOCKET_FORMAT,
+ snprintf(un->sun_path, sizeof(un->sun_path), "%s/"SOCKET_FORMAT,
socket_wrapper_dir(), type, iface, prt);
if (stat(un->sun_path, &st) == 0) continue;
- set_port(si->family, prt, si->myname);
- set_port(si->family, prt, si->bindname);
+ set_port(si->family, prt, &si->myname);
+ set_port(si->family, prt, &si->bindname);
break;
}
@@ -1245,7 +1255,7 @@ static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr *in
}
}
- snprintf(un->sun_path, sizeof(un->sun_path), "%s/"SOCKET_FORMAT,
+ snprintf(un->sun_path, sizeof(un->sun_path), "%s/"SOCKET_FORMAT,
socket_wrapper_dir(), type, iface, prt);
SWRAP_LOG(SWRAP_LOG_DEBUG, "un path [%s]", un->sun_path);
return 0;
@@ -1440,8 +1450,8 @@ static int sockaddr_convert_to_un(struct socket_info *si,
return -1;
}
-static int sockaddr_convert_from_un(const struct socket_info *si,
- const struct sockaddr_un *in_addr,
+static int sockaddr_convert_from_un(const struct socket_info *si,
+ const struct sockaddr_un *in_addr,
socklen_t un_addrlen,
int family,
struct sockaddr *out_addr,
@@ -1449,7 +1459,7 @@ static int sockaddr_convert_from_un(const struct socket_info *si,
{
int ret;
- if (out_addr == NULL || out_addrlen == NULL)
+ if (out_addr == NULL || out_addrlen == NULL)
return 0;
if (un_addrlen == 0) {
@@ -1597,7 +1607,7 @@ union swrap_packet_payload {
SWRAP_PACKET_IP_SIZE + \
SWRAP_PACKET_PAYLOAD_SIZE)
-static const char *socket_wrapper_pcap_file(void)
+static const char *swrap_pcap_init_file(void)
{
static int initialized = 0;
static const char *s = NULL;
@@ -1614,7 +1624,7 @@ static const char *socket_wrapper_pcap_file(void)
/*
* TODO: don't use the structs use plain buffer offsets
* and PUSH_U8(), PUSH_U16() and PUSH_U32()
- *
+ *
* for now make sure we disable PCAP support
* if the struct has alignment!
*/
@@ -1659,17 +1669,17 @@ static const char *socket_wrapper_pcap_file(void)
return s;
}
-static uint8_t *swrap_packet_init(struct timeval *tval,
- const struct sockaddr *src,
- const struct sockaddr *dest,
- int socket_type,
- const uint8_t *payload,
- size_t payload_len,
- unsigned long tcp_seqno,
- unsigned long tcp_ack,
- unsigned char tcp_ctl,
- int unreachable,
- size_t *_packet_len)
+static uint8_t *swrap_pcap_packet_init(struct timeval *tval,
+ const struct sockaddr *src,
+ const struct sockaddr *dest,
+ int socket_type,
+ const uint8_t *payload,
+ size_t payload_len,
+ unsigned long tcp_seqno,
+ unsigned long tcp_ack,
+ unsigned char tcp_ctl,
+ int unreachable,
+ size_t *_packet_len)
{
uint8_t *base;
uint8_t *buf;
@@ -1893,7 +1903,7 @@ static uint8_t *swrap_packet_init(struct timeval *tval,
return base;
}
-static int swrap_get_pcap_fd(const char *fname)
+static int swrap_pcap_get_fd(const char *fname)
{
static int fd = -1;
@@ -1922,11 +1932,11 @@ static int swrap_get_pcap_fd(const char *fname)
return fd;
}
-static uint8_t *swrap_marshall_packet(struct socket_info *si,
- const struct sockaddr *addr,
- enum swrap_packet_type type,
- const void *buf, size_t len,
- size_t *packet_len)
+static uint8_t *swrap_pcap_marshall_packet(struct socket_info *si,
+ const struct sockaddr *addr,
+ enum swrap_packet_type type,
+ const void *buf, size_t len,
+ size_t *packet_len)
{
const struct sockaddr *src_addr;
const struct sockaddr *dest_addr;
@@ -1952,7 +1962,7 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
case SWRAP_CONNECT_SEND:
if (si->type != SOCK_STREAM) return NULL;
- src_addr = si->myname;
+ src_addr = &si->myname.sa.s;
dest_addr = addr;
tcp_seqno = si->io.pck_snd;
@@ -1966,7 +1976,7 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
case SWRAP_CONNECT_RECV:
if (si->type != SOCK_STREAM) return NULL;
- dest_addr = si->myname;
+ dest_addr = &si->myname.sa.s;
src_addr = addr;
tcp_seqno = si->io.pck_rcv;
@@ -1980,8 +1990,8 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
case SWRAP_CONNECT_UNREACH:
if (si->type != SOCK_STREAM) return NULL;
- dest_addr = si->myname;
- src_addr = addr;
+ dest_addr = &si->myname.sa.s;
+ src_addr = addr;
/* Unreachable: resend the data of SWRAP_CONNECT_SEND */
tcp_seqno = si->io.pck_snd - 1;
@@ -1994,7 +2004,7 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
case SWRAP_CONNECT_ACK:
if (si->type != SOCK_STREAM) return NULL;
- src_addr = si->myname;
+ src_addr = &si->myname.sa.s;
dest_addr = addr;
tcp_seqno = si->io.pck_snd;
@@ -2006,7 +2016,7 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
case SWRAP_ACCEPT_SEND:
if (si->type != SOCK_STREAM) return NULL;
- dest_addr = si->myname;
+ dest_addr = &si->myname.sa.s;
src_addr = addr;
tcp_seqno = si->io.pck_rcv;
@@ -2020,7 +2030,7 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
case SWRAP_ACCEPT_RECV:
if (si->type != SOCK_STREAM) return NULL;
- src_addr = si->myname;
+ src_addr = &si->myname.sa.s;
dest_addr = addr;
tcp_seqno = si->io.pck_snd;
@@ -2034,7 +2044,7 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
case SWRAP_ACCEPT_ACK:
if (si->type != SOCK_STREAM) return NULL;
- dest_addr = si->myname;
+ dest_addr = &si->myname.sa.s;
src_addr = addr;
tcp_seqno = si->io.pck_rcv;
@@ -2044,8 +2054,8 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
break;
case SWRAP_SEND:
- src_addr = si->myname;
- dest_addr = si->peername;
+ src_addr = &si->myname.sa.s;
+ dest_addr = &si->peername.sa.s;
tcp_seqno = si->io.pck_snd;
tcp_ack = si->io.pck_rcv;
@@ -2056,13 +2066,16 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
break;
case SWRAP_SEND_RST:
- dest_addr = si->myname;
- src_addr = si->peername;
+ dest_addr = &si->myname.sa.s;
+ src_addr = &si->peername.sa.s;
if (si->type == SOCK_DGRAM) {
- return swrap_marshall_packet(si, si->peername,
- SWRAP_SENDTO_UNREACH,
- buf, len, packet_len);
+ return swrap_pcap_marshall_packet(si,
+ &si->peername.sa.s,
+ SWRAP_SENDTO_UNREACH,
+ buf,
+ len,
+ packet_len);
}
tcp_seqno = si->io.pck_rcv;
@@ -2072,8 +2085,8 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
break;
case SWRAP_PENDING_RST:
- dest_addr = si->myname;
- src_addr = si->peername;
+ dest_addr = &si->myname.sa.s;
+ src_addr = &si->peername.sa.s;
if (si->type == SOCK_DGRAM) {
return NULL;
@@ -2086,8 +2099,8 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
break;
case SWRAP_RECV:
- dest_addr = si->myname;
- src_addr = si->peername;
+ dest_addr = &si->myname.sa.s;
+ src_addr = &si->peername.sa.s;
tcp_seqno = si->io.pck_rcv;
tcp_ack = si->io.pck_snd;
@@ -2098,8 +2111,8 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
break;
case SWRAP_RECV_RST:
- dest_addr = si->myname;
- src_addr = si->peername;
+ dest_addr = &si->myname.sa.s;
+ src_addr = &si->peername.sa.s;
if (si->type == SOCK_DGRAM) {
return NULL;
@@ -2112,7 +2125,7 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
break;
case SWRAP_SENDTO:
- src_addr = si->myname;
+ src_addr = &si->myname.sa.s;
dest_addr = addr;
si->io.pck_snd += len;
@@ -2120,7 +2133,7 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
break;
case SWRAP_SENDTO_UNREACH:
- dest_addr = si->myname;
+ dest_addr = &si->myname.sa.s;
src_addr = addr;
unreachable = 1;
@@ -2128,7 +2141,7 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
break;
case SWRAP_RECVFROM:
- dest_addr = si->myname;
+ dest_addr = &si->myname.sa.s;
src_addr = addr;
si->io.pck_rcv += len;
@@ -2138,8 +2151,8 @@ static uint8_t *swrap_marshall_packet(struct socket_info *si,
case SWRAP_CLOSE_SEND:
if (si->type != SOCK_STREAM) return NULL;
- src_addr = si->myname;
- dest_addr = si->peername;
+ src_addr = &si->myname.sa.s;
+ dest_addr = &si->peername.sa.s;
--
Socket Wrapper Repository
More information about the samba-cvs
mailing list