[stgt] [PATCH 13/15] tgt: BSD builds, some setsockopt are not supported

Boaz Harrosh bharrosh at panasas.com
Sun Mar 1 17:55:20 CET 2009


Some setsockopt() options are not defined or supported
in BSD. overide setsockopt() to an internal routine and
define these Linux options to be -1, Then if the option is -1
just return with no error, else call the original function.

Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
---
 usr/bsd/os.c         |   11 +++++++++++
 usr/bsd/sys/socket.h |   23 +++++++++++++++++++++++
 2 files changed, 34 insertions(+), 0 deletions(-)
 create mode 100644 usr/bsd/sys/socket.h

diff --git a/usr/bsd/os.c b/usr/bsd/os.c
index 12d2ec4..6c98d15 100644
--- a/usr/bsd/os.c
+++ b/usr/bsd/os.c
@@ -62,3 +62,14 @@ int os_getnameinfo_ss(struct sockaddr_storage *ss, char *host, size_t hostlen,
 	return getnameinfo((struct sockaddr *)ss, slen, host, hostlen,
 			   serv, servlen, flags);
 }
+
+int bsd_setsockopt(int s, int level, int optname, const void *optval,
+		   socklen_t optlen)
+{
+	if (optname == BSD_NOT_SUPPORTED)
+		return 0;
+
+#undef setsockop
+	return setsockopt(s, level, optname, optval, optlen);
+}
+
diff --git a/usr/bsd/sys/socket.h b/usr/bsd/sys/socket.h
new file mode 100644
index 0000000..c7d7b13
--- /dev/null
+++ b/usr/bsd/sys/socket.h
@@ -0,0 +1,23 @@
+#ifndef __TGTBSD_SYS_SOCKET_H__
+#define __TGTBSD_SYS_SOCKET_H__
+
+/* Overide socket.h on BSD to define Linux specific options, in which case
+ * just return success.
+ */
+
+#include <../include/sys/socket.h>
+
+#define setsockopt bsd_setsockopt
+
+#define BSD_NOT_SUPPORTED -1
+#define TCP_KEEPIDLE	BSD_NOT_SUPPORTED
+#define TCP_KEEPCNT	BSD_NOT_SUPPORTED
+#define TCP_KEEPINTVL	BSD_NOT_SUPPORTED
+#define TCP_CORK	BSD_NOT_SUPPORTED
+#define SOL_TCP		BSD_NOT_SUPPORTED
+
+/* is in bsd/os.c */
+int bsd_setsockopt(int s, int level, int optname, const void *optval,
+		   socklen_t optlen);
+
+#endif /* __TGTBSD_SYS_SOCKET_H__ */
-- 
1.6.0.6

--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list