]> granicus.if.org Git - apache/commitdiff
Add IPv6 variable to mod_rewrite.
authorPaul Querna <pquerna@apache.org>
Tue, 27 Jan 2009 02:12:37 +0000 (02:12 +0000)
committerPaul Querna <pquerna@apache.org>
Tue, 27 Jan 2009 02:12:37 +0000 (02:12 +0000)
Submitted by: Ryan Phillips <ryan-apache trolocsis.com>

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@737973 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
modules/mappers/mod_rewrite.c

diff --git a/CHANGES b/CHANGES
index b971f48adda6f2583550bc194cd4c0eb43d90bb2..f7e611b1297064c5f9ca6a67d1055ae460d1889e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,9 @@
 Changes with Apache 2.3.2
 [ When backported to 2.2.x, remove entry from this file ]
 
+ *) mod_rewrite: Add IPV6 variable to RewriteCond
+    [Ryan Phillips <ryan-apache trolocsis.com>]
+
  *) core: Enhance KeepAliveTimeout to support a value in milliseconds.
     PR 46275. [Takashi Sato]
 
index a92c256b90f23cee0fc7074191ee930bee5fc078..04aa460b0aab06f2925a3e5b462d5d81cefba691 100644 (file)
@@ -82,6 +82,9 @@
 #if APR_HAVE_CTYPE_H
 #include <ctype.h>
 #endif
+#if APR_HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
 
 #include "ap_config.h"
 #include "httpd.h"
@@ -1946,6 +1949,18 @@ static char *lookup_variable(char *var, rewrite_ctx *ctx)
                 rewritelog((r, 1, ctx->perdir, "RESULT='%s'", result));
                 return (char *)result;
             }
+            else if (!strcmp(var, "IPV6")) {
+                int flag = FALSE;
+#if APR_HAVE_IPV6
+                apr_sockaddr_t *addr = r->connection->remote_addr;
+                flag = (addr->family == AF_INET6 &&
+                        !IN6_IS_ADDR_V4MAPPED((struct in6_addr *)addr->ipaddr_ptr));
+                rewritelog((r, 1, ctx->perdir, "IPV6='%s'", flag ? "on" : "off"));
+#else
+                rewritelog((r, 1, ctx->perdir, "IPV6='off' (IPv6 is not enabled)"));
+#endif
+                result = (flag ? "on" : "off");
+            }
             break;
 
         case  5: