X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fac%2Fsocket.h;h=790f3f183bdf00514876c3315d605fba67b23a73;hb=aeba60b61ca48082fbec6ea6f27efffd283566e9;hp=027ed88765844d1b77938427e331dba9a40201b9;hpb=1f1993989a468c70774246b6eadb246543ac6dfe;p=openldap diff --git a/include/ac/socket.h b/include/ac/socket.h index 027ed88765..790f3f183b 100644 --- a/include/ac/socket.h +++ b/include/ac/socket.h @@ -1,13 +1,17 @@ /* Generic socket.h */ /* $OpenLDAP$ */ -/* - * Copyright 1998-2000 The OpenLDAP Foundation, Redwood City, California, USA +/* This work is part of OpenLDAP Software . + * + * Copyright 1998-2008 The OpenLDAP Foundation. * All rights reserved. * - * Redistribution and use in source and binary forms are permitted only - * as authorized by the OpenLDAP Public License. A copy of this - * license is available at http://www.OpenLDAP.org/license.html or - * in file LICENSE in the top-level directory of the distribution. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . */ #ifndef _AC_SOCKET_H_ @@ -17,6 +21,10 @@ #include #endif +#ifdef HAVE_POLL_H +#include +#endif + #ifdef HAVE_SYS_SOCKET_H #include @@ -54,8 +62,6 @@ #include #elif HAVE_WINSOCK #include -#else -#define WSACleanup() #endif #ifdef HAVE_PCNFS @@ -74,23 +80,31 @@ #undef sock_errstr #define sock_errno() errno #define sock_errstr(e) STRERROR(e) +#define sock_errset(e) errno = (e) #ifdef HAVE_WINSOCK -# define tcp_close( s ) closesocket( s ) # define tcp_read( s, buf, len ) recv( s, buf, len, 0 ) # define tcp_write( s, buf, len ) send( s, buf, len, 0 ) # define ioctl( s, c, a ) ioctlsocket( (s), (c), (a) ) # define ioctl_t u_long # define AC_SOCKET_INVALID ((unsigned int) ~0) +# ifdef SD_BOTH +# define tcp_close( s ) (shutdown( s, SD_BOTH ), closesocket( s )) +# else +# define tcp_close( s ) closesocket( s ) +# endif + #define EWOULDBLOCK WSAEWOULDBLOCK #define EINPROGRESS WSAEINPROGRESS #define ETIMEDOUT WSAETIMEDOUT #undef sock_errno #undef sock_errstr +#undef sock_errset #define sock_errno() WSAGetLastError() #define sock_errstr(e) ber_pvt_wsa_err2string(e) +#define sock_errset(e) WSASetLastError(e) LBER_F( char * ) ber_pvt_wsa_err2string LDAP_P((int)); @@ -120,16 +134,21 @@ LBER_F( char * ) ber_pvt_wsa_err2string LDAP_P((int)); # endif #else -# define tcp_close( s ) close( s ) # define tcp_read( s, buf, len) read( s, buf, len ) # define tcp_write( s, buf, len) write( s, buf, len ) +# ifdef SHUT_RDWR +# define tcp_close( s ) (shutdown( s, SHUT_RDWR ), close( s )) +# else +# define tcp_close( s ) close( s ) +# endif + #ifdef HAVE_PIPE /* - * Only use pipe() on systems where file and socket descriptors + * Only use pipe() on systems where file and socket descriptors * are interchangable */ -#define USE_PIPE HAVE_PIPE +# define USE_PIPE HAVE_PIPE #endif #endif /* MACOS */ @@ -146,7 +165,7 @@ LBER_F( char * ) ber_pvt_wsa_err2string LDAP_P((int)); #endif #if !defined( HAVE_INET_ATON ) && !defined( inet_aton ) -#define inet_aton ldap_pvt_inet_aton +# define inet_aton ldap_pvt_inet_aton struct in_addr; LDAP_F (int) ldap_pvt_inet_aton LDAP_P(( const char *, struct in_addr * )); #endif @@ -176,4 +195,41 @@ LDAP_F (int) ldap_pvt_inet_aton LDAP_P(( const char *, struct in_addr * )); # endif #endif +#ifndef INET_ADDRSTRLEN +# define INET_ADDRSTRLEN 16 +#endif +#ifndef INET6_ADDRSTRLEN +# define INET6_ADDRSTRLEN 46 +#endif + +#if defined( HAVE_GETADDRINFO ) || defined( HAVE_GETNAMEINFO ) +# ifdef HAVE_GAI_STRERROR +# define AC_GAI_STRERROR(x) (gai_strerror((x))) +# else +# define AC_GAI_STRERROR(x) (ldap_pvt_gai_strerror((x))) + LDAP_F (char *) ldap_pvt_gai_strerror( int ); +# endif +#endif + +#ifndef HAVE_GETPEEREID +LDAP_LUTIL_F( int ) getpeereid( int s, uid_t *, gid_t * ); +#endif + +/* DNS RFC defines max host name as 255. New systems seem to use 1024 */ +#ifndef NI_MAXHOST +#define NI_MAXHOST 256 +#endif + +#ifdef HAVE_POLL_H +# ifndef INFTIM +# define INFTIM (-1) +# endif +#undef POLL_OTHER +#define POLL_OTHER (POLLERR|POLLHUP) +#undef POLL_READ +#define POLL_READ (POLLIN|POLLPRI|POLL_OTHER) +#undef POLL_WRITE +#define POLL_WRITE (POLLOUT|POLL_OTHER) +#endif + #endif /* _AC_SOCKET_H_ */