summaryrefslogtreecommitdiff
path: root/source4/lib/socket_wrapper.h
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2005-03-28 01:00:39 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:11:18 -0500
commite91fb065fa83e2ad4e3dacec22f011baf5d3d752 (patch)
tree06113f610f9dfe5a6bc6c87e40400a00fa546f59 /source4/lib/socket_wrapper.h
parenta5ee5aae6921b844f142d3a5dd67c188612723d7 (diff)
downloadsamba-e91fb065fa83e2ad4e3dacec22f011baf5d3d752.tar.gz
samba-e91fb065fa83e2ad4e3dacec22f011baf5d3d752.tar.bz2
samba-e91fb065fa83e2ad4e3dacec22f011baf5d3d752.zip
r6088: Add the socket_wrapper library. This is a very simple library that
redirects traffic (currently just IP traffic) over unix domain sockets if the SOCKET_WRAPPER_DIR environment variable has been set. Aim is to use this for the Samba4 torture suite on the buildfarm. The socket_wrapper library can only be used if Samba was compiled with --enable-developer. test_rpc.sh passes against a local smbd with SOCKET_WRAPPER_DIR set. (and ethereal showed no traffic whatsoever) Stuff that still needs to be fixed in socketwrapper: - Give ENETUNREACH if target is not localhost - A given port number can only be used for UDP /or/ TCP, not both. - Perhaps allow some calls to circumvent socketwrapper (do we need DNS?) (This used to be commit f8a63a843ccca092d9756b64e09175d37c08550a)
Diffstat (limited to 'source4/lib/socket_wrapper.h')
-rw-r--r--source4/lib/socket_wrapper.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/source4/lib/socket_wrapper.h b/source4/lib/socket_wrapper.h
new file mode 100644
index 0000000000..6da5a2980c
--- /dev/null
+++ b/source4/lib/socket_wrapper.h
@@ -0,0 +1,48 @@
+/*
+ Copyright (C) Jelmer Vernooij 2005 <jelmer@samba.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#ifndef __SOCKET_WRAPPER_H__
+#define __SOCKET_WRAPPER_H__
+
+int swrap_socket(int domain, int type, int protocol);
+int swrap_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
+int swrap_connect(int s, const struct sockaddr *serv_addr, socklen_t addrlen);
+int swrap_bind(int s, const struct sockaddr *myaddr, socklen_t addrlen);
+int swrap_getpeername(int s, struct sockaddr *name, socklen_t *addrlen);
+int swrap_getsockname(int s, struct sockaddr *name, socklen_t *addrlen);
+int swrap_getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen);
+int swrap_setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
+ssize_t swrap_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
+ssize_t swrap_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
+int swrap_close(int);
+
+#ifdef SOCKET_WRAPPER_REPLACE
+#define accept swrap_accept
+#define connect swrap_connect
+#define bind swrap_bind
+#define getpeername swrap_getpeername
+#define getsockname swrap_getsockname
+#define getsockopt swrap_getsockopt
+#define setsockopt swrap_setsockopt
+#define recvfrom swrap_recvfrom
+#define sendto swrap_sendto
+#define socket swrap_socket
+#define close swrap_close
+#endif
+
+#endif /* __SOCKET_WRAPPER_H__ */