Commit c8a967ca authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Update the list of variables in accordance with the new scheme.


git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@1616 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent b89df101
...@@ -14,10 +14,21 @@ struct sockaddr * VRT_r_server_ip(struct sess *); ...@@ -14,10 +14,21 @@ struct sockaddr * VRT_r_server_ip(struct sess *);
const char * VRT_r_req_request(struct sess *); const char * VRT_r_req_request(struct sess *);
const char * VRT_r_req_url(struct sess *); const char * VRT_r_req_url(struct sess *);
const char * VRT_r_req_proto(struct sess *); const char * VRT_r_req_proto(struct sess *);
void VRT_l_req_hash(struct sess *, const char *);
struct backend * VRT_r_req_backend(struct sess *); struct backend * VRT_r_req_backend(struct sess *);
void VRT_l_req_backend(struct sess *, struct backend *); void VRT_l_req_backend(struct sess *, struct backend *);
const char * VRT_r_req_http_(struct sess *); const char * VRT_r_bereq_request(struct sess *);
void VRT_l_req_hash(struct sess *, const char *); void VRT_l_bereq_request(struct sess *, const char *);
const char * VRT_r_bereq_url(struct sess *);
void VRT_l_bereq_url(struct sess *, const char *);
const char * VRT_r_bereq_proto(struct sess *);
void VRT_l_bereq_proto(struct sess *, const char *);
const char * VRT_r_obj_proto(struct sess *);
void VRT_l_obj_proto(struct sess *, const char *);
int VRT_r_obj_status(struct sess *);
void VRT_l_obj_status(struct sess *, int);
const char * VRT_r_obj_response(struct sess *);
void VRT_l_obj_response(struct sess *, const char *);
unsigned VRT_r_obj_valid(struct sess *); unsigned VRT_r_obj_valid(struct sess *);
void VRT_l_obj_valid(struct sess *, unsigned); void VRT_l_obj_valid(struct sess *, unsigned);
unsigned VRT_r_obj_cacheable(struct sess *); unsigned VRT_r_obj_cacheable(struct sess *);
...@@ -25,6 +36,8 @@ void VRT_l_obj_cacheable(struct sess *, unsigned); ...@@ -25,6 +36,8 @@ void VRT_l_obj_cacheable(struct sess *, unsigned);
double VRT_r_obj_ttl(struct sess *); double VRT_r_obj_ttl(struct sess *);
void VRT_l_obj_ttl(struct sess *, double); void VRT_l_obj_ttl(struct sess *, double);
const char * VRT_r_resp_proto(struct sess *); const char * VRT_r_resp_proto(struct sess *);
void VRT_l_resp_proto(struct sess *, const char *);
int VRT_r_resp_status(struct sess *); int VRT_r_resp_status(struct sess *);
void VRT_l_resp_status(struct sess *, int);
const char * VRT_r_resp_response(struct sess *); const char * VRT_r_resp_response(struct sess *);
const char * VRT_r_resp_http_(struct sess *); void VRT_l_resp_response(struct sess *, const char *);
...@@ -462,10 +462,21 @@ vcl_output_lang_h(struct vsb *sb) ...@@ -462,10 +462,21 @@ vcl_output_lang_h(struct vsb *sb)
vsb_cat(sb, "const char * VRT_r_req_request(struct sess *);\n"); vsb_cat(sb, "const char * VRT_r_req_request(struct sess *);\n");
vsb_cat(sb, "const char * VRT_r_req_url(struct sess *);\n"); vsb_cat(sb, "const char * VRT_r_req_url(struct sess *);\n");
vsb_cat(sb, "const char * VRT_r_req_proto(struct sess *);\n"); vsb_cat(sb, "const char * VRT_r_req_proto(struct sess *);\n");
vsb_cat(sb, "void VRT_l_req_hash(struct sess *, const char *);\n");
vsb_cat(sb, "struct backend * VRT_r_req_backend(struct sess *);\n"); vsb_cat(sb, "struct backend * VRT_r_req_backend(struct sess *);\n");
vsb_cat(sb, "void VRT_l_req_backend(struct sess *, struct backend *);\n"); vsb_cat(sb, "void VRT_l_req_backend(struct sess *, struct backend *);\n");
vsb_cat(sb, "const char * VRT_r_req_http_(struct sess *);\n"); vsb_cat(sb, "const char * VRT_r_bereq_request(struct sess *);\n");
vsb_cat(sb, "void VRT_l_req_hash(struct sess *, const char *);\n"); vsb_cat(sb, "void VRT_l_bereq_request(struct sess *, const char *);\n");
vsb_cat(sb, "const char * VRT_r_bereq_url(struct sess *);\n");
vsb_cat(sb, "void VRT_l_bereq_url(struct sess *, const char *);\n");
vsb_cat(sb, "const char * VRT_r_bereq_proto(struct sess *);\n");
vsb_cat(sb, "void VRT_l_bereq_proto(struct sess *, const char *);\n");
vsb_cat(sb, "const char * VRT_r_obj_proto(struct sess *);\n");
vsb_cat(sb, "void VRT_l_obj_proto(struct sess *, const char *);\n");
vsb_cat(sb, "int VRT_r_obj_status(struct sess *);\n");
vsb_cat(sb, "void VRT_l_obj_status(struct sess *, int);\n");
vsb_cat(sb, "const char * VRT_r_obj_response(struct sess *);\n");
vsb_cat(sb, "void VRT_l_obj_response(struct sess *, const char *);\n");
vsb_cat(sb, "unsigned VRT_r_obj_valid(struct sess *);\n"); vsb_cat(sb, "unsigned VRT_r_obj_valid(struct sess *);\n");
vsb_cat(sb, "void VRT_l_obj_valid(struct sess *, unsigned);\n"); vsb_cat(sb, "void VRT_l_obj_valid(struct sess *, unsigned);\n");
vsb_cat(sb, "unsigned VRT_r_obj_cacheable(struct sess *);\n"); vsb_cat(sb, "unsigned VRT_r_obj_cacheable(struct sess *);\n");
...@@ -473,7 +484,9 @@ vcl_output_lang_h(struct vsb *sb) ...@@ -473,7 +484,9 @@ vcl_output_lang_h(struct vsb *sb)
vsb_cat(sb, "double VRT_r_obj_ttl(struct sess *);\n"); vsb_cat(sb, "double VRT_r_obj_ttl(struct sess *);\n");
vsb_cat(sb, "void VRT_l_obj_ttl(struct sess *, double);\n"); vsb_cat(sb, "void VRT_l_obj_ttl(struct sess *, double);\n");
vsb_cat(sb, "const char * VRT_r_resp_proto(struct sess *);\n"); vsb_cat(sb, "const char * VRT_r_resp_proto(struct sess *);\n");
vsb_cat(sb, "void VRT_l_resp_proto(struct sess *, const char *);\n");
vsb_cat(sb, "int VRT_r_resp_status(struct sess *);\n"); vsb_cat(sb, "int VRT_r_resp_status(struct sess *);\n");
vsb_cat(sb, "void VRT_l_resp_status(struct sess *, int);\n");
vsb_cat(sb, "const char * VRT_r_resp_response(struct sess *);\n"); vsb_cat(sb, "const char * VRT_r_resp_response(struct sess *);\n");
vsb_cat(sb, "const char * VRT_r_resp_http_(struct sess *);\n"); vsb_cat(sb, "void VRT_l_resp_response(struct sess *, const char *);\n");
} }
...@@ -30,75 +30,123 @@ ...@@ -30,75 +30,123 @@
# Generate various .c and .h files for the VCL compiler and the interfaces # Generate various .c and .h files for the VCL compiler and the interfaces
# for it. # for it.
# Objects which operate on backends # Objects available in backends
set beobj { set beobj {
{ backend.host WO HOSTNAME } { backend.host WO HOSTNAME }
{ backend.port WO PORTNAME } { backend.port WO PORTNAME }
{ backend.dnsttl WO TIME } { backend.dnsttl WO TIME }
} }
# Objects which operate on sessions # Variables available in sessions
# Comments are stripped from #...\n
set spobj { set spobj {
# Connection related parameters
{ client.ip { client.ip
RO IP RO IP
{recv pipe pass hash miss hit fetch } {recv pipe pass hash miss hit fetch }
}
{ client.bandwidth # Not implemented yet
NO
} }
{ server.ip { server.ip
RO IP RO IP
{recv pipe pass hash miss hit fetch } {recv pipe pass hash miss hit fetch }
} }
# Request paramters
{ req.request { req.request
RO STRING RO STRING
{recv pipe pass hash miss hit fetch } {recv pipe pass hash miss hit fetch }
} }
{ req.url { req.url
RO STRING RO STRING
{recv pipe pass hash miss hit fetch } {recv pipe pass hash miss hit fetch }
} }
{ req.proto { req.proto
RO STRING RO STRING
{recv pipe pass hash miss hit fetch } {recv pipe pass hash miss hit fetch }
}
{ req.backend
RW BACKEND
{recv pipe pass hash miss hit fetch }
} }
{ req.http. { req.http.
RO HEADER RW HEADER
{recv pipe pass hash miss hit fetch } {recv pipe pass hash miss hit fetch }
} }
# Possibly misnamed, not really part of the request
{ req.hash { req.hash
WO HASH WO HASH
{ hash } { hash }
}
{ req.backend
RW BACKEND
{recv pipe pass hash miss hit fetch }
}
# Request sent to backend
{ bereq.request
RW STRING
{ pipe pass miss }
} }
{ bereq.url
RW STRING
{ pipe pass miss }
}
{ bereq.proto
RW STRING
{ pipe pass miss }
}
{ bereq.http.
RW HEADER
{ pipe pass miss }
}
# The (possibly) cached object
{ obj.proto
RW STRING
{ hit fetch deliver }
}
{ obj.status
RW INT
{ fetch }
}
{ obj.response
RW STRING
{ fetch }
}
{ obj.http.
RW HEADER
{ hit fetch deliver }
}
{ obj.valid { obj.valid
RW BOOL RW BOOL
{ hit fetch discard timeout} { hit fetch discard timeout}
} }
{ obj.cacheable { obj.cacheable
RW BOOL RW BOOL
{ hit fetch discard timeout} { hit fetch discard timeout}
} }
{ obj.ttl { obj.ttl
RW TIME RW TIME
{ hit fetch discard timeout} { hit fetch discard timeout}
} }
# The response we send back
{ resp.proto { resp.proto
RO STRING RW STRING
{ fetch } { fetch }
} }
{ resp.status { resp.status
RO INT RW INT
{ fetch } { fetch }
} }
{ resp.response { resp.response
RO STRING RW STRING
{ fetch } { fetch }
} }
{ resp.http. { resp.http.
RO HEADER RW HEADER
{ fetch } { fetch }
} }
} }
...@@ -146,21 +194,27 @@ proc method_map {m} { ...@@ -146,21 +194,27 @@ proc method_map {m} {
proc vars {v ty pa} { proc vars {v ty pa} {
global tt fo fp global tt fo fp
regsub -all "#\[^\n\]*\n" $v "" v
foreach v $v { foreach v $v {
set n [lindex $v 0] set n [lindex $v 0]
regsub -all {[.]} $n "_" m regsub -all {[.]} $n "_" m
set a [lindex $v 1] set a [lindex $v 1]
if {$a == "NO"} continue
set t [lindex $v 2] set t [lindex $v 2]
puts $fo "\t\{ \"$n\", $t, [string length $n]," puts $fo "\t\{ \"$n\", $t, [string length $n],"
if {$a == "RO" || $a == "RW"} { if {$a == "RO" || $a == "RW"} {
puts $fo "\t \"VRT_r_${m}($pa)\"," puts $fo "\t \"VRT_r_${m}($pa)\","
puts $fp "$tt($t) VRT_r_${m}($ty);" if {$t != "HEADER"} {
puts $fp "$tt($t) VRT_r_${m}($ty);"
}
} else { } else {
puts $fo "\t NULL," puts $fo "\t NULL,"
} }
if {$a == "WO" || $a == "RW"} { if {$a == "WO" || $a == "RW"} {
puts $fo "\t \"VRT_l_${m}($pa, \"," puts $fo "\t \"VRT_l_${m}($pa, \","
puts $fp "void VRT_l_${m}($ty, $tt($t));" if {$t != "HEADER"} {
puts $fp "void VRT_l_${m}($ty, $tt($t));"
}
} else { } else {
puts $fo "\t NULL," puts $fo "\t NULL,"
} }
......
...@@ -62,16 +62,10 @@ struct var vcc_vars[] = { ...@@ -62,16 +62,10 @@ struct var vcc_vars[] = {
V_RO, V_RO,
VCL_MET_RECV | VCL_MET_PIPE | VCL_MET_PASS | VCL_MET_HASH | VCL_MET_MISS | VCL_MET_HIT | VCL_MET_FETCH VCL_MET_RECV | VCL_MET_PIPE | VCL_MET_PASS | VCL_MET_HASH | VCL_MET_MISS | VCL_MET_HIT | VCL_MET_FETCH
}, },
{ "req.backend", BACKEND, 11,
"VRT_r_req_backend(sp)",
"VRT_l_req_backend(sp, ",
V_RW,
VCL_MET_RECV | VCL_MET_PIPE | VCL_MET_PASS | VCL_MET_HASH | VCL_MET_MISS | VCL_MET_HIT | VCL_MET_FETCH
},
{ "req.http.", HEADER, 9, { "req.http.", HEADER, 9,
"VRT_r_req_http_(sp)", "VRT_r_req_http_(sp)",
NULL, "VRT_l_req_http_(sp, ",
V_RO, V_RW,
VCL_MET_RECV | VCL_MET_PIPE | VCL_MET_PASS | VCL_MET_HASH | VCL_MET_MISS | VCL_MET_HIT | VCL_MET_FETCH VCL_MET_RECV | VCL_MET_PIPE | VCL_MET_PASS | VCL_MET_HASH | VCL_MET_MISS | VCL_MET_HIT | VCL_MET_FETCH
}, },
{ "req.hash", HASH, 8, { "req.hash", HASH, 8,
...@@ -80,6 +74,60 @@ struct var vcc_vars[] = { ...@@ -80,6 +74,60 @@ struct var vcc_vars[] = {
V_WO, V_WO,
VCL_MET_HASH VCL_MET_HASH
}, },
{ "req.backend", BACKEND, 11,
"VRT_r_req_backend(sp)",
"VRT_l_req_backend(sp, ",
V_RW,
VCL_MET_RECV | VCL_MET_PIPE | VCL_MET_PASS | VCL_MET_HASH | VCL_MET_MISS | VCL_MET_HIT | VCL_MET_FETCH
},
{ "bereq.request", STRING, 13,
"VRT_r_bereq_request(sp)",
"VRT_l_bereq_request(sp, ",
V_RW,
VCL_MET_PIPE | VCL_MET_PASS | VCL_MET_MISS
},
{ "bereq.url", STRING, 9,
"VRT_r_bereq_url(sp)",
"VRT_l_bereq_url(sp, ",
V_RW,
VCL_MET_PIPE | VCL_MET_PASS | VCL_MET_MISS
},
{ "bereq.proto", STRING, 11,
"VRT_r_bereq_proto(sp)",
"VRT_l_bereq_proto(sp, ",
V_RW,
VCL_MET_PIPE | VCL_MET_PASS | VCL_MET_MISS
},
{ "bereq.http.", HEADER, 11,
"VRT_r_bereq_http_(sp)",
"VRT_l_bereq_http_(sp, ",
V_RW,
VCL_MET_PIPE | VCL_MET_PASS | VCL_MET_MISS
},
{ "obj.proto", STRING, 9,
"VRT_r_obj_proto(sp)",
"VRT_l_obj_proto(sp, ",
V_RW,
VCL_MET_HIT | VCL_MET_FETCH | VCL_MET_DELIVER
},
{ "obj.status", INT, 10,
"VRT_r_obj_status(sp)",
"VRT_l_obj_status(sp, ",
V_RW,
VCL_MET_FETCH
},
{ "obj.response", STRING, 12,
"VRT_r_obj_response(sp)",
"VRT_l_obj_response(sp, ",
V_RW,
VCL_MET_FETCH
},
{ "obj.http.", HEADER, 9,
"VRT_r_obj_http_(sp)",
"VRT_l_obj_http_(sp, ",
V_RW,
VCL_MET_HIT | VCL_MET_FETCH | VCL_MET_DELIVER
},
{ "obj.valid", BOOL, 9, { "obj.valid", BOOL, 9,
"VRT_r_obj_valid(sp)", "VRT_r_obj_valid(sp)",
"VRT_l_obj_valid(sp, ", "VRT_l_obj_valid(sp, ",
...@@ -100,26 +148,26 @@ struct var vcc_vars[] = { ...@@ -100,26 +148,26 @@ struct var vcc_vars[] = {
}, },
{ "resp.proto", STRING, 10, { "resp.proto", STRING, 10,
"VRT_r_resp_proto(sp)", "VRT_r_resp_proto(sp)",
NULL, "VRT_l_resp_proto(sp, ",
V_RO, V_RW,
VCL_MET_FETCH VCL_MET_FETCH
}, },
{ "resp.status", INT, 11, { "resp.status", INT, 11,
"VRT_r_resp_status(sp)", "VRT_r_resp_status(sp)",
NULL, "VRT_l_resp_status(sp, ",
V_RO, V_RW,
VCL_MET_FETCH VCL_MET_FETCH
}, },
{ "resp.response", STRING, 13, { "resp.response", STRING, 13,
"VRT_r_resp_response(sp)", "VRT_r_resp_response(sp)",
NULL, "VRT_l_resp_response(sp, ",
V_RO, V_RW,
VCL_MET_FETCH VCL_MET_FETCH
}, },
{ "resp.http.", HEADER, 10, { "resp.http.", HEADER, 10,
"VRT_r_resp_http_(sp)", "VRT_r_resp_http_(sp)",
NULL, "VRT_l_resp_http_(sp, ",
V_RO, V_RW,
VCL_MET_FETCH VCL_MET_FETCH
}, },
{ NULL } { NULL }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment