The branch, master has been updated
       via  47f307d swrap: Bump version to 1.1.2.
       via  afe2f47 swrap: Add support for eventfd with unsigned count variable.
       via  539fa2c swrap: Add a trace message for swrap_socket().
       via  8efc095 swrap: Implement fcntl() to catch F_DUPFD.
       via  2efd5b2 swrap: Include the function name in the debug output.
       via  872e1ae swrap: Silence alignment warnings.
       via  088db7f swrap: Fix type punning warnings when loading functions.
       via  b3c72e1 swrap: Fix access to struct members in log messages.
       via  9ba259e swrap: Fix whitespace errors.
       via  a504686 swrap: Update copyright notice.
       via  9731516 swrap: Wrap fopen to detect stale file descriptors.
       via  f8584ab swrap: Use swrap_address in swrap_accept().
       via  891e837 swrap: Remove unused sockaddr_dup() function.
       via  8897474 swrap: Use swrap_address in the socket_info struct.
       via  4402ba1 swrap: Use a sockaddr_un for the unix path in socket_info.
       via  9da1ff9 swrap: Rename swrap_pcap_dump_packet().
       via  79e545b swrap: Rename swrap_pcap_get_fd().
       via  7d4c6cf swrap: Rename swrap_marshall_packet().
       via  e64ea9c swrap: Rename swrap_packet_init().
       via  c626aad swrap: Rename socket_wrapper_pcap_file().
       via  2be25ab swrap: Fix type punning warnings.
       via  95c9917 Provide a compatible declaration of CMSG_ALIGN
       via  5e70d80 SO_PROTOCOL is platform-dependent
       via  6163643 swrap: fix another discard const warning in swrap_bind()
       via  f6fe9a9 swrap: fix discard const warning in swrap_bind()
       via  bebbd28 swrap: fix discard const warning in swrap_remove_stale()
       via  a7a4779 swrap: fix build when neither HAVE_STRUCT_IN_PKTINFO nor 
IP_RECVDSTADDR is defined
      from  6c05cd3 s3: smb2cli: query info return length check was reversed.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 47f307d112a4eaec0d375ee1604c13ed7449b3c4
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:26:35 2014 +0200

    swrap: Bump version to 1.1.2.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Matthieu Patou <m...@matws.net>
    
    Autobuild-User(master): Andreas Schneider <a...@cryptomilk.org>
    Autobuild-Date(master): Thu Oct  2 12:00:14 CEST 2014 on sn-devel-104

commit afe2f47c0fd17c215857e800296de795d48c004d
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:25:32 2014 +0200

    swrap: Add support for eventfd with unsigned count variable.
    
    The prototype in glibc 2.20.90 changed.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 539fa2c04f6220e72a63ab492fae298c86b00954
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:24:55 2014 +0200

    swrap: Add a trace message for swrap_socket().
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 8efc0952adda9273e90ffbbc0c691c9ff4b9b947
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:24:27 2014 +0200

    swrap: Implement fcntl() to catch F_DUPFD.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 2efd5b242928c2e048b5421d52e35dd2e13dca15
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:23:53 2014 +0200

    swrap: Include the function name in the debug output.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 872e1ae0ef22f659f52241c753f7f9b1b6f5b279
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:23:25 2014 +0200

    swrap: Silence alignment warnings.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 088db7f7b561c1b87a890359c67b551bc1a48593
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:22:59 2014 +0200

    swrap: Fix type punning warnings when loading functions.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit b3c72e151f5dc479e600118dbdca2fdc006dbd83
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:22:13 2014 +0200

    swrap: Fix access to struct members in log messages.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 9ba259e68aa755037a1a720da3662fe07a0a7ee4
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:20:53 2014 +0200

    swrap: Fix whitespace errors.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit a5046865661f814bab8af7f84f8ebd81a62067b7
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:20:15 2014 +0200

    swrap: Update copyright notice.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 9731516e7f87cc16412eb830840d0393e8a4f823
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:18:48 2014 +0200

    swrap: Wrap fopen to detect stale file descriptors.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit f8584abfef0974a19547927258369b04e03d6336
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:18:14 2014 +0200

    swrap: Use swrap_address in swrap_accept().
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 891e837c3c0ca3db2ae2d59d04296aa67eb25d3a
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:17:42 2014 +0200

    swrap: Remove unused sockaddr_dup() function.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 889747486560e71d27c5a5255c825c4ebd62f8f9
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:17:10 2014 +0200

    swrap: Use swrap_address in the socket_info struct.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 4402ba10b5afc57e72b45ce640c14764d5f0f2c7
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:16:25 2014 +0200

    swrap: Use a sockaddr_un for the unix path in socket_info.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 9da1ff9ad1d7983bd11693263f3dfcd1ed9685d4
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:15:38 2014 +0200

    swrap: Rename swrap_pcap_dump_packet().
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 79e545b304db8b3fa6fcb21a6f1e023e0ae0f3b4
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:14:44 2014 +0200

    swrap: Rename swrap_pcap_get_fd().
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 7d4c6cf25d5f424156fa0a6f90673744c5eba18e
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:14:04 2014 +0200

    swrap: Rename swrap_marshall_packet().
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit e64ea9cb79b804c299d0213b2cca207fb000a3b8
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:13:10 2014 +0200

    swrap: Rename swrap_packet_init().
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit c626aad36a9757d584b9f10f0ba55dda72499c50
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:11:49 2014 +0200

    swrap: Rename socket_wrapper_pcap_file().
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 2be25abcb13353c26712ec8bc50f65ad53d390d4
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Oct 2 07:09:33 2014 +0200

    swrap: Fix type punning warnings.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 95c9917c8638f1eb5480e851c8dfbb808f1687bd
Author: Jakub Hrozek <jakub.hro...@gmail.com>
Date:   Thu Oct 2 07:05:35 2014 +0200

    Provide a compatible declaration of CMSG_ALIGN
    
    Some platforms (like OSX) do support some of the CMGS macros, but don't
    have a CMSG_ALIGN macro of their own.
    
    Signed-off-by: Jakub Hrozek <jakub.hro...@gmail.com>
    Reviewed-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 5e70d80e7d7752a1df16b871d57fbcd8334a44e6
Author: Jakub Hrozek <jakub.hro...@gmail.com>
Date:   Thu Oct 2 07:04:15 2014 +0200

    SO_PROTOCOL is platform-dependent
    
    SO_PROTOCOL is not defined on all platforms. In particular, OSX doesn't
    include it and so far I haven't found any compatible declaration.
    
    Signed-off-by: Jakub Hrozek <jakub.hro...@gmail.com>
    Reviewed-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Michael Adam <ob...@samba.org>

commit 616364378da073f841d46fb299c81adb05d5222d
Author: Michael Adam <ob...@samba.org>
Date:   Thu Oct 2 07:03:22 2014 +0200

    swrap: fix another discard const warning in swrap_bind()
    
    Signed-off-by: Michael Adam <ob...@samba.org>
    Reviewed-by: Andreas Schneider <a...@samba.org>

commit f6fe9a997d2f5a1c504ea53886e00cfb33ec76d0
Author: Michael Adam <ob...@samba.org>
Date:   Thu Oct 2 07:02:36 2014 +0200

    swrap: fix discard const warning in swrap_bind()
    
    Signed-off-by: Michael Adam <ob...@samba.org>
    Reviewed-by: Andreas Schneider <a...@samba.org>

commit bebbd289859cff50d63cdbe76d214b67fd33e3f8
Author: Michael Adam <ob...@samba.org>
Date:   Thu Oct 2 07:01:34 2014 +0200

    swrap: fix discard const warning in swrap_remove_stale()
    
    Signed-off-by: Michael Adam <ob...@samba.org>
    Reviewed-by: Andreas Schneider <a...@samba.org>

commit a7a47796fd7ca1fa830a8c2644042c311b9796da
Author: Michael Adam <ob...@samba.org>
Date:   Thu Oct 2 07:00:44 2014 +0200

    swrap: fix build when neither HAVE_STRUCT_IN_PKTINFO nor IP_RECVDSTADDR is 
defined
    
    Signed-off-by: Michael Adam <ob...@samba.org>
    Reviewed-by: Andreas Schneider <a...@samba.org>

-----------------------------------------------------------------------

Summary of changes:
 lib/socket_wrapper/socket_wrapper.c |  824 +++++++++++++++++++++--------------
 lib/socket_wrapper/wscript          |    2 +-
 2 files changed, 506 insertions(+), 320 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/socket_wrapper/socket_wrapper.c 
b/lib/socket_wrapper/socket_wrapper.c
index afd9343..d5c343d 100644
--- a/lib/socket_wrapper/socket_wrapper.c
+++ b/lib/socket_wrapper/socket_wrapper.c
@@ -1,7 +1,7 @@
 /*
- * Copyright (C) Jelmer Vernooij 2005,2008 <jel...@samba.org>
- * Copyright (C) Stefan Metzmacher 2006-2009 <me...@samba.org>
- * Copyright (C) Andreas Schneider 2013 <a...@samba.org>
+ * Copyright (c) 2005-2008 Jelmer Vernooij <jel...@samba.org>
+ * Copyright (C) 2006-2014 Stefan Metzmacher <me...@samba.org>
+ * Copyright (C) 2013-2014 Andreas Schneider <a...@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;
@@ -263,10 +272,12 @@ void swrap_destructor(void) DESTRUCTOR_ATTRIBUTE;
 # define SWRAP_LOG(...)
 #else
 
-static void swrap_log(enum swrap_dbglvl_e dbglvl, const char *format, ...) 
PRINTF_ATTRIBUTE(2, 3);
-# define SWRAP_LOG(dbglvl, ...) swrap_log((dbglvl), __VA_ARGS__)
+static void swrap_log(enum swrap_dbglvl_e dbglvl, const char *func, const char 
*format, ...) PRINTF_ATTRIBUTE(3, 4);
+# define SWRAP_LOG(dbglvl, ...) swrap_log((dbglvl), __func__, __VA_ARGS__)
 
-static void swrap_log(enum swrap_dbglvl_e dbglvl, const char *format, ...)
+static void swrap_log(enum swrap_dbglvl_e dbglvl,
+                     const char *func,
+                     const char *format, ...)
 {
        char buffer[1024];
        va_list va;
@@ -286,23 +297,23 @@ static void swrap_log(enum swrap_dbglvl_e dbglvl, const 
char *format, ...)
                switch (dbglvl) {
                        case SWRAP_LOG_ERROR:
                                fprintf(stderr,
-                                       "SWRAP_ERROR(%d): %s\n",
-                                       (int)getpid(), buffer);
+                                       "SWRAP_ERROR(%d) - %s: %s\n",
+                                       (int)getpid(), func, buffer);
                                break;
                        case SWRAP_LOG_WARN:
                                fprintf(stderr,
-                                       "SWRAP_WARN(%d): %s\n",
-                                       (int)getpid(), buffer);
+                                       "SWRAP_WARN(%d) - %s: %s\n",
+                                       (int)getpid(), func, buffer);
                                break;
                        case SWRAP_LOG_DEBUG:
                                fprintf(stderr,
-                                       "SWRAP_DEBUG(%d): %s\n",
-                                       (int)getpid(), buffer);
+                                       "SWRAP_DEBUG(%d) - %s: %s\n",
+                                       (int)getpid(), func, buffer);
                                break;
                        case SWRAP_LOG_TRACE:
                                fprintf(stderr,
-                                       "SWRAP_TRACE(%d): %s\n",
-                                       (int)getpid(), buffer);
+                                       "SWRAP_TRACE(%d) - %s: %s\n",
+                                       (int)getpid(), func, buffer);
                                break;
                }
        }
@@ -328,6 +339,8 @@ struct swrap_libc_fns {
                            socklen_t addrlen);
        int (*libc_dup)(int fd);
        int (*libc_dup2)(int oldfd, int newfd);
+       int (*libc_fcntl)(int fd, int cmd, ...);
+       FILE *(*libc_fopen)(const char *name, const char *mode);
 #ifdef HAVE_EVENTFD
        int (*libc_eventfd)(int count, int flags);
 #endif
@@ -510,8 +523,9 @@ static void *_swrap_load_lib_function(enum swrap_lib lib, 
const char *fn_name)
 
 #define swrap_load_lib_function(lib, fn_name) \
        if (swrap.fns.libc_##fn_name == NULL) { \
+               void *swrap_cast_ptr = _swrap_load_lib_function(lib, #fn_name); 
\
                *(void **) (&swrap.fns.libc_##fn_name) = \
-                       _swrap_load_lib_function(lib, #fn_name); \
+                       swrap_cast_ptr; \
        }
 
 
@@ -578,6 +592,28 @@ static int libc_eventfd(int count, int flags)
 }
 #endif
 
+static int libc_vfcntl(int fd, int cmd, va_list ap)
+{
+       long int args[4];
+       int rc;
+       int i;
+
+       swrap_load_lib_function(SWRAP_LIBC, fcntl);
+
+       for (i = 0; i < 4; i++) {
+               args[i] = va_arg(ap, long int);
+       }
+
+       rc = swrap.fns.libc_fcntl(fd,
+                                 cmd,
+                                 args[0],
+                                 args[1],
+                                 args[2],
+                                 args[3]);
+
+       return rc;
+}
+
 static int libc_getpeername(int sockfd,
                            struct sockaddr *addr,
                            socklen_t *addrlen)
@@ -636,6 +672,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 +856,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 +1006,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 +1053,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 +1100,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 +1127,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 +1180,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 +1189,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 +1231,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 +1242,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 +1266,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 +1281,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;
@@ -1394,14 +1430,14 @@ static int sockaddr_convert_to_un(struct socket_info 
*si,
 
        switch (in_addr->sa_family) {
        case AF_UNSPEC: {
-               struct sockaddr_in *sin;
+               const struct sockaddr_in *sin;
                if (si->family != AF_INET) {
                        break;
                }
                if (in_len < sizeof(struct sockaddr_in)) {
                        break;
                }
-               sin = (struct sockaddr_in *)in_addr;
+               sin = (const struct sockaddr_in *)(const void *)in_addr;
                if(sin->sin_addr.s_addr != htonl(INADDR_ANY)) {
                        break;
                }
@@ -1440,8 +1476,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 +1485,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 +1633,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 +1650,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 +1695,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;
@@ -1696,16 +1732,16 @@ static uint8_t *swrap_packet_init(struct timeval *tval,
 
        switch (src->sa_family) {
        case AF_INET:
-               src_in = (const struct sockaddr_in *)src;
-               dest_in = (const struct sockaddr_in *)dest;
+               src_in = (const struct sockaddr_in *)(const void *)src;
+               dest_in = (const struct sockaddr_in *)(const void *)dest;
                src_port = src_in->sin_port;
                dest_port = dest_in->sin_port;
                ip_hdr_len = sizeof(ip->v4);
                break;
 #ifdef HAVE_IPV6
        case AF_INET6:
-               src_in6 = (const struct sockaddr_in6 *)src;
-               dest_in6 = (const struct sockaddr_in6 *)dest;
+               src_in6 = (const struct sockaddr_in6 *)(const void *)src;
+               dest_in6 = (const struct sockaddr_in6 *)(const void *)dest;
                src_port = src_in6->sin6_port;
                dest_port = dest_in6->sin6_port;
                ip_hdr_len = sizeof(ip->v6);
@@ -1767,14 +1803,14 @@ static uint8_t *swrap_packet_init(struct timeval *tval,
 
        buf = base;
 
-       frame = (struct swrap_packet_frame *)buf;
+       frame = (struct swrap_packet_frame *)(void *)buf;
        frame->seconds          = tval->tv_sec;
        frame->micro_seconds    = tval->tv_usec;
        frame->recorded_length  = wire_len - icmp_truncate_len;
        frame->full_length      = wire_len - icmp_truncate_len;
        buf += SWRAP_PACKET_FRAME_SIZE;
 
-       ip = (union swrap_packet_ip *)buf;
+       ip = (union swrap_packet_ip *)(void *)buf;
        switch (src->sa_family) {
        case AF_INET:
                ip->v4.ver_hdrlen       = 0x45; /* version 4 and 5 * 32 bit 
words */
@@ -1805,7 +1841,7 @@ static uint8_t *swrap_packet_init(struct timeval *tval,
        }
 
        if (unreachable) {
-               pay = (union swrap_packet_payload *)buf;
+               pay = (union swrap_packet_payload *)(void *)buf;
                switch (src->sa_family) {
                case AF_INET:
                        pay->icmp4.type         = 0x03; /* destination 
unreachable */
@@ -1815,7 +1851,7 @@ static uint8_t *swrap_packet_init(struct timeval *tval,
                        buf += SWRAP_PACKET_PAYLOAD_ICMP4_SIZE;
 
                        /* set the ip header in the ICMP payload */
-                       ip = (union swrap_packet_ip *)buf;
+                       ip = (union swrap_packet_ip *)(void *)buf;
                        ip->v4.ver_hdrlen       = 0x45; /* version 4 and 5 * 32 
bit words */
                        ip->v4.tos              = 0x00;
                        ip->v4.packet_length    = htons(wire_len - 
icmp_hdr_len);
@@ -1841,7 +1877,7 @@ static uint8_t *swrap_packet_init(struct timeval *tval,
                        buf += SWRAP_PACKET_PAYLOAD_ICMP6_SIZE;
 
                        /* set the ip header in the ICMP payload */
-                       ip = (union swrap_packet_ip *)buf;
+                       ip = (union swrap_packet_ip *)(void *)buf;
                        ip->v6.ver_prio         = 0x60; /* version 4 and 5 * 32 
bit words */
                        ip->v6.flow_label_high  = 0x00;
                        ip->v6.flow_label_low   = 0x0000;
@@ -1858,7 +1894,7 @@ static uint8_t *swrap_packet_init(struct timeval *tval,
                }
        }
 
-       pay = (union swrap_packet_payload *)buf;
+       pay = (union swrap_packet_payload *)(void *)buf;
 
        switch (socket_type) {
        case SOCK_STREAM:
@@ -1893,7 +1929,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 +1958,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 +1988,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;


-- 
Samba Shared Repository

Reply via email to