memset(&ftp->pasvaddr, 0, n);
sa = (struct sockaddr *) &ftp->pasvaddr;
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
if (getpeername(ftp->fd, sa, &n) < 0) {
return 0;
}
data->listener = fd;
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
if (sa->sa_family == AF_INET6) {
/* need to use EPRT */
char eprtarg[INET6_ADDRSTRLEN + sizeof("|x||xxxxx|")];
return (buf ? (char *) buf : "");
}
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
/* Sets addr by hostname, or by ip in string form (AF_INET6) */
static int php_set_inet6_addr(struct sockaddr_in6 *sin6, char *string, php_socket *php_sock TSRMLS_DC)
{
struct in6_addr tmp;
-#ifdef HAVE_GETADDRINFO
+#if HAVE_GETADDRINFO
struct addrinfo hints;
struct addrinfo *addrinfo = NULL;
#endif
if (inet_pton(AF_INET6, string, &tmp)) {
memcpy(&(sin6->sin6_addr.s6_addr), &(tmp.s6_addr), sizeof(struct in6_addr));
} else {
-#ifdef HAVE_GETADDRINFO
+#if HAVE_GETADDRINFO
memset(&hints, 0, sizeof(struct addrinfo));
hints.ai_family = PF_INET6;
REGISTER_LONG_CONSTANT("AF_UNIX", AF_UNIX, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("AF_INET", AF_INET, CONST_CS | CONST_PERSISTENT);
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
REGISTER_LONG_CONSTANT("AF_INET6", AF_INET6, CONST_CS | CONST_PERSISTENT);
#endif
REGISTER_LONG_CONSTANT("SOCK_STREAM", SOCK_STREAM, CONST_CS | CONST_PERSISTENT);
php_socket *php_sock;
struct sockaddr *sa;
struct sockaddr_in *sin;
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
struct sockaddr_in6 *sin6;
char addr6[INET6_ADDRSTRLEN+1];
#endif
}
switch (sa->sa_family) {
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
case AF_INET6:
sin6 = (struct sockaddr_in6 *) sa;
inet_ntop(AF_INET6, &sin6->sin6_addr, addr6, INET6_ADDRSTRLEN);
php_socket *php_sock;
struct sockaddr *sa;
struct sockaddr_in *sin;
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
struct sockaddr_in6 *sin6;
char addr6[INET6_ADDRSTRLEN+1];
#endif
}
switch (sa->sa_family) {
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
case AF_INET6:
sin6 = (struct sockaddr_in6 *) sa;
inet_ntop(AF_INET6, &sin6->sin6_addr, addr6, INET6_ADDRSTRLEN);
}
if (arg1 != AF_UNIX
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
&& arg1 != AF_INET6
#endif
&& arg1 != AF_INET) {
zval *arg1;
php_socket *php_sock;
struct sockaddr_in sin;
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
struct sockaddr_in6 sin6;
#endif
struct sockaddr_un s_un;
ZEND_FETCH_RESOURCE(php_sock, php_socket *, &arg1, -1, le_socket_name, le_socket);
switch(php_sock->type) {
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
case AF_INET6:
if (argc != 3) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Socket of type AF_INET6 requires 3 arguments");
retval = bind(php_sock->bsd_socket, (struct sockaddr *)sa, sizeof(struct sockaddr_in));
break;
}
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
case AF_INET6:
{
struct sockaddr_in6 *sa = (struct sockaddr_in6 *) sock_type;
php_socket *php_sock;
struct sockaddr_un s_un;
struct sockaddr_in sin;
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
struct sockaddr_in6 sin6;
char addr6[INET6_ADDRSTRLEN];
#endif
ZVAL_STRING(arg5, address ? address : "0.0.0.0", 1);
ZVAL_LONG(arg6, ntohs(sin.sin_port));
break;
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
case AF_INET6:
slen = sizeof(sin6);
memset(&sin6, 0, slen);
php_socket *php_sock;
struct sockaddr_un s_un;
struct sockaddr_in sin;
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
struct sockaddr_in6 sin6;
#endif
int retval, buf_len, addr_len;
retval = sendto(php_sock->bsd_socket, buf, (len > buf_len) ? buf_len : len, flags, (struct sockaddr *) &sin, sizeof(sin));
break;
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
case AF_INET6:
if (argc != 6) {
WRONG_PARAM_COUNT;
php_sock[1] = (php_socket*)emalloc(sizeof(php_socket));
if (domain != AF_INET
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
&& domain != AF_INET6
#endif
&& domain != AF_UNIX) {
php_info_print_table_row(2, "Thread Safety", "disabled" );
#endif
+#if HAVE_IPV6
+ php_info_print_table_row(2, "IPv6 Support", "enabled" );
+#else
+ php_info_print_table_row(2, "IPv6 Support", "disabled" );
+#endif
{
HashTable *url_stream_wrappers_hash;
char *stream_protocol, *stream_protocols_buf = NULL;
# define PHP_TIMEOUT_ERROR_VALUE ETIMEDOUT
#endif
-#ifdef HAVE_GETADDRINFO
+#if HAVE_GETADDRINFO
#ifdef HAVE_GAI_STRERROR
# define PHP_GAI_STRERROR(x) (gai_strerror(x))
#else
{
struct sockaddr **sap;
int n;
-#ifdef HAVE_GETADDRINFO
+#if HAVE_GETADDRINFO
static int ipv6_borked = -1; /* the way this is used *is* thread safe */
struct addrinfo hints, *res, *sai;
#else
if (host == NULL) {
return 0;
}
-#ifdef HAVE_GETADDRINFO
+#if HAVE_GETADDRINFO
memset(&hints, '\0', sizeof(hints));
hints.ai_family = AF_INET; /* default to regular inet (see below) */
hints.ai_socktype = socktype;
-# ifdef HAVE_IPV6
+# if HAVE_IPV6
/* probe for a working IPv6 stack; even if detected as having v6 at compile
* time, at runtime some stacks are slow to resolve or have other issues
* if they are not correctly configured.
struct sockaddr **psal;
int n;
char *errstr = NULL;
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
struct sockaddr_in6 *in6 = (struct sockaddr_in6*)sa;
#endif
{
memset(addr, 0, sizeof(php_sockaddr_storage));
switch (family) {
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
case AF_INET6: {
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) addr;
sin6->sin6_family = AF_INET6;
switch (((struct sockaddr *)addr)->sa_family) {
case AF_INET:
return sizeof(struct sockaddr_in);
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
case AF_INET6:
return sizeof(struct sockaddr_in6);
#endif
# endif
# undef FD_SETSIZE
# include "arpa/inet.h"
-# define socklen_t unsigned int
+# if HAVE_WS2TCPIP_H
+ /* IPv6 stuff, also defines socklen_t */
+# include <ws2tcpip.h>
+# else
+typedef unsigned int socklen_t;
+# endif
#else
# undef closesocket
# define closesocket close
STDOUT.WriteBlankLines(1);
+/* Can we build with IPv6 support? */
+ARG_ENABLE("ipv6", "Disable IPv6 support (default is turn it on if available)", "yes");
+
+var main_network_has_ipv6 = 0;
+if (PHP_IPV6 == "yes") {
+ main_network_has_ipv6 = CHECK_HEADER_ADD_INCLUDE("ws2tcpip.h", "CFLAGS") ? 1 : 0;
+}
+if (main_network_has_ipv6) {
+ STDOUT.WriteLine("Enabling IPv6 support");
+}
+AC_DEFINE('HAVE_GETADDRINFO', main_network_has_ipv6);
+AC_DEFINE('HAVE_GAI_STRERROR', main_network_has_ipv6);
+AC_DEFINE('HAVE_IPV6', main_network_has_ipv6);
+
+----------------------------------------------------------------------+
*/
-// $Id: confutils.js,v 1.17 2003-12-05 02:41:00 wez Exp $
+// $Id: confutils.js,v 1.18 2003-12-06 00:00:31 wez Exp $
var STDOUT = WScript.StdOut;
var STDERR = WScript.StdErr;
if (typeof(p) == "string") {
ADD_FLAG(flag_name, '/I "' + p + '" ');
- have = 1;
} else if (p == false) {
/* not found in the defaults or the explicit paths,
* so check the general extra includes; if we find
* it here, no need to add another /I for it as we
* already have it covered */
p = search_paths(header_name, PHP_EXTRA_INCLUDES, null);
- }
+ }
+ have = p ? 1 : 0
sym = header_name.toUpperCase();
sym = sym.replace(new RegExp("[\\\\/\.-]", "g"), "_");