From 26e8e1c27fcfa0ba8c3d069d1eaae99fe3d34903 Mon Sep 17 00:00:00 2001 From: Paul Querna Date: Tue, 27 Jan 2009 02:12:37 +0000 Subject: [PATCH] Add IPv6 variable to mod_rewrite. Submitted by: Ryan Phillips git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@737973 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ modules/mappers/mod_rewrite.c | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/CHANGES b/CHANGES index b971f48add..f7e611b129 100644 --- 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 ] + *) core: Enhance KeepAliveTimeout to support a value in milliseconds. PR 46275. [Takashi Sato] diff --git a/modules/mappers/mod_rewrite.c b/modules/mappers/mod_rewrite.c index a92c256b90..04aa460b0a 100644 --- a/modules/mappers/mod_rewrite.c +++ b/modules/mappers/mod_rewrite.c @@ -82,6 +82,9 @@ #if APR_HAVE_CTYPE_H #include #endif +#if APR_HAVE_NETINET_IN_H +#include +#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: -- 2.40.0