Rev 299: AIX needs sin_len field for bind() in
http://samba.org/~tridge/ctdb
tridge at samba.org
tridge at samba.org
Mon May 14 23:42:53 GMT 2007
------------------------------------------------------------
revno: 299
revision-id: tridge at samba.org-20070514234252-lkr0iynk4eys7ff1
parent: tridge at samba.org-20070514040133-2ktprtc6t6161yy5
committer: Andrew Tridgell <tridge at samba.org>
branch nick: tridge
timestamp: Tue 2007-05-15 09:42:52 +1000
message:
AIX needs sin_len field for bind()
modified:
configure.ac configure.ac-20061117234101-o3qt14umlg9en8z0-10
tcp/tcp_connect.c tcp_connect.c-20061128004937-x70q1cu5xzg5g2tm-1
=== modified file 'configure.ac'
--- a/configure.ac 2007-05-05 07:18:06 +0000
+++ b/configure.ac 2007-05-14 23:42:52 +0000
@@ -30,6 +30,16 @@
m4_include(libevents.m4)
m4_include(ib/config.m4)
+AC_CACHE_CHECK([for sin_len in sock],ctdb_cv_HAVE_SOCK_SIN_LEN,[
+AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>],
+[struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
+ctdb_cv_HAVE_SOCK_SIN_LEN=yes,ctdb_cv_HAVE_SOCK_SIN_LEN=no)])
+if test x"$ctdb_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
+ AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
+fi
+
AC_SUBST(EXTRA_OBJ)
AC_OUTPUT(Makefile)
=== modified file 'tcp/tcp_connect.c'
--- a/tcp/tcp_connect.c 2007-05-01 03:25:02 +0000
+++ b/tcp/tcp_connect.c 2007-05-14 23:42:52 +0000
@@ -125,6 +125,10 @@
set_nonblocking(tnode->fd);
+ ZERO_STRUCT(sock_out);
+#ifdef HAVE_SOCK_SIN_LEN
+ sock_out.sin_len = sizeof(sock_out);
+#endif
if (ctdb_tcp_get_address(ctdb, node->address.address, &sock_out.sin_addr) != 0) {
return;
}
@@ -138,6 +142,10 @@
* the remote side is actually routable in case CTDB traffic will run on
* a dedicated non-routeable network.
*/
+ ZERO_STRUCT(sock_in);
+#ifdef HAVE_SOCK_SIN_LEN
+ sock_in.sin_len = sizeof(sock_in);
+#endif
if (ctdb_tcp_get_address(ctdb, ctdb->address.address, &sock_in.sin_addr) != 0) {
return;
}
@@ -239,6 +247,10 @@
}
for (i=0;i<ctdb->num_nodes;i++) {
+ ZERO_STRUCT(sock);
+#ifdef HAVE_SOCK_SIN_LEN
+ sock.sin_len = sizeof(sock);
+#endif
sock.sin_port = htons(ctdb->nodes[i]->address.port);
sock.sin_family = PF_INET;
if (ctdb_tcp_get_address(ctdb, ctdb->nodes[i]->address.address,
@@ -309,6 +321,10 @@
return ctdb_tcp_listen_automatic(ctdb);
}
+ ZERO_STRUCT(sock);
+#ifdef HAVE_SOCK_SIN_LEN
+ sock.sin_len = sizeof(sock);
+#endif
sock.sin_port = htons(ctdb->address.port);
sock.sin_family = PF_INET;
More information about the samba-cvs
mailing list