wez             Fri Dec  5 19:00:32 2003 EDT

  Modified files:              
    /php-src/ext/ftp    ftp.c 
    /php-src/ext/sockets        sockets.c 
    /php-src/ext/standard       info.c 
    /php-src/main       network.c php_network.h 
    /php-src/win32/build        config.w32 confutils.js 
  Log:
  Detect and enable IPv6 support under win32.
  The ws2tcpip.h header links to IPv6 functions dynamically
  and the generated binary will run on win98 and later.
  
Index: php-src/ext/ftp/ftp.c
diff -u php-src/ext/ftp/ftp.c:1.93 php-src/ext/ftp/ftp.c:1.94
--- php-src/ext/ftp/ftp.c:1.93  Thu Sep 18 13:51:55 2003
+++ php-src/ext/ftp/ftp.c       Fri Dec  5 19:00:28 2003
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: ftp.c,v 1.93 2003/09/18 17:51:55 pollita Exp $ */
+/* $Id: ftp.c,v 1.94 2003/12/06 00:00:28 wez Exp $ */
 
 #include "php.h"
 
@@ -714,7 +714,7 @@
        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;
        }
@@ -1454,7 +1454,7 @@
 
        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|")];
Index: php-src/ext/sockets/sockets.c
diff -u php-src/ext/sockets/sockets.c:1.155 php-src/ext/sockets/sockets.c:1.156
--- php-src/ext/sockets/sockets.c:1.155 Fri Oct 24 14:44:40 2003
+++ php-src/ext/sockets/sockets.c       Fri Dec  5 19:00:29 2003
@@ -19,7 +19,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: sockets.c,v 1.155 2003/10/24 18:44:40 helly Exp $ */
+/* $Id: sockets.c,v 1.156 2003/12/06 00:00:29 wez Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -357,12 +357,12 @@
        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
@@ -370,7 +370,7 @@
        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;
@@ -450,7 +450,7 @@
 
        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);
@@ -871,7 +871,7 @@
        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
@@ -892,7 +892,7 @@
        }
        
        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);                 
@@ -947,7 +947,7 @@
        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
@@ -968,7 +968,7 @@
        }
 
        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);                 
@@ -1029,7 +1029,7 @@
     }
 
        if (arg1 != AF_UNIX 
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
                && arg1 != AF_INET6
 #endif
                && arg1 != AF_INET) {
@@ -1063,7 +1063,7 @@
        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;
@@ -1078,7 +1078,7 @@
        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");
@@ -1189,7 +1189,7 @@
                                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;
@@ -1298,7 +1298,7 @@
        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
@@ -1361,7 +1361,7 @@
                        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);
@@ -1407,7 +1407,7 @@
        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;
@@ -1445,7 +1445,7 @@
                        
                        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;
@@ -1647,7 +1647,7 @@
        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) {
Index: php-src/ext/standard/info.c
diff -u php-src/ext/standard/info.c:1.239 php-src/ext/standard/info.c:1.240
--- php-src/ext/standard/info.c:1.239   Mon Sep 22 00:18:24 2003
+++ php-src/ext/standard/info.c Fri Dec  5 19:00:30 2003
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: info.c,v 1.239 2003/09/22 04:18:24 iliaa Exp $ */
+/* $Id: info.c,v 1.240 2003/12/06 00:00:30 wez Exp $ */
 
 #include "php.h"
 #include "php_ini.h"
@@ -467,6 +467,11 @@
                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;
Index: php-src/main/network.c
diff -u php-src/main/network.c:1.106 php-src/main/network.c:1.107
--- php-src/main/network.c:1.106        Tue Dec  2 18:13:43 2003
+++ php-src/main/network.c      Fri Dec  5 19:00:31 2003
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: network.c,v 1.106 2003/12/02 23:13:43 wez Exp $ */
+/* $Id: network.c,v 1.107 2003/12/06 00:00:31 wez Exp $ */
 
 /*#define DEBUG_MAIN_NETWORK 1*/
 
@@ -103,7 +103,7 @@
 # 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
@@ -168,7 +168,7 @@
 {
        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
@@ -179,13 +179,13 @@
        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.
@@ -488,7 +488,7 @@
        struct sockaddr **psal;
        int n;
        char *errstr = NULL;
-#ifdef HAVE_IPV6
+#if HAVE_IPV6
        struct sockaddr_in6 *in6 = (struct sockaddr_in6*)sa;
 #endif
 
@@ -860,7 +860,7 @@
 {
        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;
@@ -888,7 +888,7 @@
        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
Index: php-src/main/php_network.h
diff -u php-src/main/php_network.h:1.47 php-src/main/php_network.h:1.48
--- php-src/main/php_network.h:1.47     Tue Dec  2 18:13:43 2003
+++ php-src/main/php_network.h  Fri Dec  5 19:00:31 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_network.h,v 1.47 2003/12/02 23:13:43 wez Exp $ */
+/* $Id: php_network.h,v 1.48 2003/12/06 00:00:31 wez Exp $ */
 
 #ifndef _PHP_NETWORK_H
 #define _PHP_NETWORK_H
@@ -27,7 +27,12 @@
 # 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
Index: php-src/win32/build/config.w32
diff -u php-src/win32/build/config.w32:1.10 php-src/win32/build/config.w32:1.11
--- php-src/win32/build/config.w32:1.10 Thu Dec  4 21:41:00 2003
+++ php-src/win32/build/config.w32      Fri Dec  5 19:00:31 2003
@@ -1,5 +1,5 @@
 // vim:ft=javascript
-// $Id: config.w32,v 1.10 2003/12/05 02:41:00 wez Exp $
+// $Id: config.w32,v 1.11 2003/12/06 00:00:31 wez Exp $
 // "Master" config file; think of it as a configure.in
 // equivalent.
 
@@ -181,3 +181,17 @@
 
 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);
+
Index: php-src/win32/build/confutils.js
diff -u php-src/win32/build/confutils.js:1.17 php-src/win32/build/confutils.js:1.18
--- php-src/win32/build/confutils.js:1.17       Thu Dec  4 21:41:00 2003
+++ php-src/win32/build/confutils.js    Fri Dec  5 19:00:31 2003
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-// $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;
@@ -427,14 +427,14 @@
 
        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"), "_");

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to