Mailing List Archive

r1663 - in trunk/varnish-cache: bin/varnishd include lib/libvcl
Author: phk
Date: 2007-07-10 21:59:39 +0200 (Tue, 10 Jul 2007)
New Revision: 1663

Modified:
trunk/varnish-cache/bin/varnishd/cache_vrt.c
trunk/varnish-cache/include/vrt.h
trunk/varnish-cache/lib/libvcl/vcc_fixed_token.c
trunk/varnish-cache/lib/libvcl/vcc_string.c
Log:
Add conversion from IP to string format to allow things like:

set bereq.http.HeyYou = client.ip " asked for " req.url;



Modified: trunk/varnish-cache/bin/varnishd/cache_vrt.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_vrt.c 2007-07-10 19:46:16 UTC (rev 1662)
+++ trunk/varnish-cache/bin/varnishd/cache_vrt.c 2007-07-10 19:59:39 UTC (rev 1663)
@@ -472,3 +472,19 @@
clock_gettime(CLOCK_MONOTONIC, &now);
return (now.tv_sec - sp->obj->lru_stamp);
}
+
+/*--------------------------------------------------------------------*/
+
+char *
+VRT_IP_string(struct sess *sp, struct sockaddr *sa)
+{
+ char h[64], p[8], *q;
+
+ TCP_name(sa, sa->sa_len, h, sizeof h, p, sizeof p);
+ q = WS_Alloc(sp->http->ws, strlen(h) + strlen(p) + 2);
+ AN(q);
+ strcpy(q, h);
+ strcat(q, ":");
+ strcat(q, p);
+ return (q);
+}

Modified: trunk/varnish-cache/include/vrt.h
===================================================================
--- trunk/varnish-cache/include/vrt.h 2007-07-10 19:46:16 UTC (rev 1662)
+++ trunk/varnish-cache/include/vrt.h 2007-07-10 19:59:39 UTC (rev 1663)
@@ -85,6 +85,7 @@
void VRT_free_backends(struct VCL_conf *cp);
void VRT_fini_backend(struct backend *be);

+char *VRT_IP_string(struct sess *sp, struct sockaddr *sa);

#define VRT_done(sp, hand) \
do { \

Modified: trunk/varnish-cache/lib/libvcl/vcc_fixed_token.c
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_fixed_token.c 2007-07-10 19:46:16 UTC (rev 1662)
+++ trunk/varnish-cache/lib/libvcl/vcc_fixed_token.c 2007-07-10 19:59:39 UTC (rev 1663)
@@ -441,6 +441,7 @@
vsb_cat(sb, "void VRT_free_backends(struct VCL_conf *cp);\n");
vsb_cat(sb, "void VRT_fini_backend(struct backend *be);\n");
vsb_cat(sb, "\n");
+ vsb_cat(sb, "char *VRT_IP_string(struct sess *sp, struct sockaddr *sa);\n");
vsb_cat(sb, "\n");
vsb_cat(sb, "#define VRT_done(sp, hand) \\\n");
vsb_cat(sb, " do { \\\n");

Modified: trunk/varnish-cache/lib/libvcl/vcc_string.c
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_string.c 2007-07-10 19:46:16 UTC (rev 1662)
+++ trunk/varnish-cache/lib/libvcl/vcc_string.c 2007-07-10 19:59:39 UTC (rev 1663)
@@ -66,6 +66,9 @@
case STRING:
Fb(tl, 0, "%s", vp->rname);
break;
+ case IP:
+ Fb(tl, 0, "VRT_IP_string(sp, %s)", vp->rname);
+ break;
default:
vsb_printf(tl->sb,
"String representation of '%s' not implemented yet.\n",