From: Andrew Tridgell Date: Mon, 14 May 2007 23:42:52 +0000 (+1000) Subject: AIX needs sin_len field for bind() X-Git-Tag: tevent-0.9.20~348^2~2732 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7d3870d41f60702944e7e7ecb84b00e61335e139;p=thirdparty%2Fsamba.git AIX needs sin_len field for bind() (This used to be ctdb commit cd6c35d4aa4f4a4cfeedf6902cda84e43d7aeba4) --- diff --git a/ctdb/configure.ac b/ctdb/configure.ac index dd379b98cc6..e6930a68025 100644 --- a/ctdb/configure.ac +++ b/ctdb/configure.ac @@ -30,6 +30,16 @@ m4_include(libtdb.m4) 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 +#include +#include ], +[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) diff --git a/ctdb/tcp/tcp_connect.c b/ctdb/tcp/tcp_connect.c index d5c943bc42f..ac82e4f5757 100644 --- a/ctdb/tcp/tcp_connect.c +++ b/ctdb/tcp/tcp_connect.c @@ -125,6 +125,10 @@ void ctdb_tcp_node_connect(struct event_context *ev, struct timed_event *te, 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 @@ void ctdb_tcp_node_connect(struct event_context *ev, struct timed_event *te, * 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 @@ static int ctdb_tcp_listen_automatic(struct ctdb_context *ctdb) } for (i=0;inum_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 @@ int ctdb_tcp_listen(struct ctdb_context *ctdb) 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;