4 * Copyright 1998-2001 The OpenLDAP Foundation, Redwood City, California, USA
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted only as authorized by the OpenLDAP
9 * Public License. A copy of this license is available at
10 * http://www.OpenLDAP.org/license.html or in file LICENSE in the
11 * top-level directory of the distribution.
17 #ifdef HAVE_SYS_TYPES_H
18 #include <sys/types.h>
21 #ifdef HAVE_SYS_SOCKET_H
22 #include <sys/socket.h>
28 #ifdef HAVE_SYS_SELECT_H
29 #include <sys/select.h>
32 #include <netinet/in.h>
34 #ifdef HAVE_NETINET_TCP_H
35 #include <netinet/tcp.h>
38 #ifdef HAVE_ARPA_INET_H
39 #include <arpa/inet.h>
42 #ifdef HAVE_ARPA_NAMESER_H
43 #include <arpa/nameser.h>
52 #endif /* HAVE_SYS_SOCKET_H */
64 #endif /* HAVE_PCNFS */
66 #ifndef INADDR_LOOPBACK
67 #define INADDR_LOOPBACK (0x7f000001UL)
70 #ifndef MAXHOSTNAMELEN
71 #define MAXHOSTNAMELEN 64
76 #define sock_errno() errno
77 #define sock_errstr(e) STRERROR(e)
80 # define tcp_read( s, buf, len ) recv( s, buf, len, 0 )
81 # define tcp_write( s, buf, len ) send( s, buf, len, 0 )
82 # define ioctl( s, c, a ) ioctlsocket( (s), (c), (a) )
83 # define ioctl_t u_long
84 # define AC_SOCKET_INVALID ((unsigned int) ~0)
87 # define tcp_close( s ) (shutdown( s, SD_BOTH ), closesocket( s ))
89 # define tcp_close( s ) closesocket( s )
92 #define EWOULDBLOCK WSAEWOULDBLOCK
93 #define EINPROGRESS WSAEINPROGRESS
94 #define ETIMEDOUT WSAETIMEDOUT
98 #define sock_errno() WSAGetLastError()
99 #define sock_errstr(e) ber_pvt_wsa_err2string(e)
101 LBER_F( char * ) ber_pvt_wsa_err2string LDAP_P((int));
104 # define tcp_close( s ) tcpclose( s )
105 # define tcp_read( s, buf, len ) tcpread( s, buf, len )
106 # define tcp_write( s, buf, len ) tcpwrite( s, buf, len )
110 # define tcp_close( s ) close( s )
111 # define tcp_read( s, buf, len ) recv( s, buf, len, 0 )
112 # define tcp_write( s, buf, len ) send( s, buf, len, 0 )
115 # define tcp_close( s ) do { netclose( s ); netshut() } while(0)
116 # define tcp_read( s, buf, len ) nread( s, buf, len )
117 # define tcp_write( s, buf, len ) netwrite( s, buf, len )
120 #elif HAVE_CLOSESOCKET
121 # define tcp_close( s ) closesocket( s )
124 # define tcp_read( s, buf, len ) recv( s, buf, len, 0 )
125 # define tcp_write( s, buf, len ) send( s, buf, len, 0 )
129 # define tcp_read( s, buf, len) read( s, buf, len )
130 # define tcp_write( s, buf, len) write( s, buf, len )
133 # define tcp_close( s ) (shutdown( s, SHUT_RDWR ), close( s ))
135 # define tcp_close( s ) close( s )
140 * Only use pipe() on systems where file and socket descriptors
143 #define USE_PIPE HAVE_PIPE
152 #ifndef AC_SOCKET_INVALID
153 # define AC_SOCKET_INVALID (-1)
155 #ifndef AC_SOCKET_ERROR
156 # define AC_SOCKET_ERROR (-1)
159 #if !defined( HAVE_INET_ATON ) && !defined( inet_aton )
160 #define inet_aton ldap_pvt_inet_aton
162 LDAP_F (int) ldap_pvt_inet_aton LDAP_P(( const char *, struct in_addr * ));
165 #if defined(__WIN32) && defined(_ALPHA)
166 /* NT on Alpha is hosed. */
167 # define AC_HTONL( l ) \
168 ((((l)&0xffU)<<24) + (((l)&0xff00U)<<8) + \
169 (((l)&0xff0000U)>>8) + (((l)&0xff000000U)>>24))
170 # define AC_NTOHL(l) AC_HTONL(l)
173 # define AC_HTONL( l ) htonl( l )
174 # define AC_NTOHL( l ) ntohl( l )
177 /* htons()/ntohs() may be broken much like htonl()/ntohl() */
178 #define AC_HTONS( s ) htons( s )
179 #define AC_NTOHS( s ) ntohs( s )
182 # if !defined( AF_LOCAL ) && defined( AF_UNIX )
183 # define AF_LOCAL AF_UNIX
185 # if !defined( PF_LOCAL ) && defined( PF_UNIX )
186 # define PF_LOCAL PF_UNIX
190 #ifndef INET_ADDRSTRLEN
191 # define INET_ADDRSTRLEN 16
193 #ifndef INET6_ADDRSTRLEN
194 # define INET6_ADDRSTRLEN 46
197 #ifdef HAVE_GETADDRINFO
198 # ifdef HAVE_GAI_STRERROR
199 # define AC_GAI_STRERROR(x) (gai_strerror((x)))
201 # define AC_GAI_STRERROR(x) (ldap_pvt_gai_strerror((x)))
202 char * ldap_pvt_gai_strerror( int );
206 #endif /* _AC_SOCKET_H_ */