Tru64: _SOCKADDR_LEN is good.
authorJarkko Hietaniemi <jhi@iki.fi>
Tue, 7 Oct 2014 20:21:54 +0000 (22:21 +0200)
committerJarkko Hietaniemi <jhi@iki.fi>
Tue, 7 Oct 2014 21:33:52 +0000 (23:33 +0200)
Declare it as early as possible.  The earlier position lead into
getting a mix of different APIs with mismatching sockadddrs.

perl.h

diff --git a/perl.h b/perl.h
index e6e1320..091d2d1 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -1063,6 +1063,14 @@ EXTERN_C int usleep(unsigned int);
 #   endif
 #endif /* !HAS_BCMP */
 
+/* In Tru64 define _SOCKADDR_LEN to use 4.4BSD and IPv6 interfaces.
+ * Define it before any network headers like netinet/in.h or sys/socket.h.
+ * For OSF/1 3.2, however, defining _SOCKADDR_LEN would be
+ * a bad idea since it breaks send() and recv(). */
+#if defined(__osf__) && defined(__alpha) && !defined(_SOCKADDR_LEN) && !defined(DEC_OSF1_3_X)
+#   define _SOCKADDR_LEN
+#endif
+
 #ifdef I_NETINET_IN
 #   include <netinet/in.h>
 #endif
@@ -1128,14 +1136,6 @@ EXTERN_C int usleep(unsigned int);
 #  define WIN32SCK_IS_STDSCK           /* don't pull in custom wsock layer */
 #endif
 
-/* In Tru64 use the 4.4BSD struct msghdr, not the 4.3 one.
- * This is important for using IPv6.
- * For OSF/1 3.2, however, defining _SOCKADDR_LEN would be
- * a bad idea since it breaks send() and recv(). */
-#if defined(__osf__) && defined(__alpha) && !defined(_SOCKADDR_LEN) && !defined(DEC_OSF1_3_X)
-#   define _SOCKADDR_LEN
-#endif
-
 #if defined(HAS_SOCKET) && !defined(WIN32) /* WIN32 handles sockets via win32.h */
 # include <sys/socket.h>
 # if defined(USE_SOCKS) && defined(I_SOCKS)