[MEDIUM] acl: set types on all currently known ACL verbs
All currently known ACL verbs have been assigned a type which makes
it possible to detect inconsistencies, such as response values used
in request rules.
diff --git a/src/proto_http.c b/src/proto_http.c
index 5b1221f..5b11cb2 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -5746,48 +5746,49 @@
/* Note: must not be declared <const> as its list will be overwritten */
static struct acl_kw_list acl_kws = {{ },{
- { "method", acl_parse_meth, acl_fetch_meth, acl_match_meth },
- { "req_ver", acl_parse_ver, acl_fetch_rqver, acl_match_str },
- { "resp_ver", acl_parse_ver, acl_fetch_stver, acl_match_str },
- { "status", acl_parse_int, acl_fetch_stcode, acl_match_int },
+ { "method", acl_parse_meth, acl_fetch_meth, acl_match_meth, ACL_USE_L7REQ_PERMANENT },
+ { "req_ver", acl_parse_ver, acl_fetch_rqver, acl_match_str, ACL_USE_L7REQ_VOLATILE },
+ { "resp_ver", acl_parse_ver, acl_fetch_stver, acl_match_str, ACL_USE_L7RTR_VOLATILE },
+ { "status", acl_parse_int, acl_fetch_stcode, acl_match_int, ACL_USE_L7RTR_PERMANENT },
- { "url", acl_parse_str, acl_fetch_url, acl_match_str },
- { "url_beg", acl_parse_str, acl_fetch_url, acl_match_beg },
- { "url_end", acl_parse_str, acl_fetch_url, acl_match_end },
- { "url_sub", acl_parse_str, acl_fetch_url, acl_match_sub },
- { "url_dir", acl_parse_str, acl_fetch_url, acl_match_dir },
- { "url_dom", acl_parse_str, acl_fetch_url, acl_match_dom },
- { "url_reg", acl_parse_reg, acl_fetch_url, acl_match_reg },
- { "url_ip", acl_parse_ip, acl_fetch_url_ip, acl_match_ip },
- { "url_port", acl_parse_int, acl_fetch_url_port, acl_match_int },
+ { "url", acl_parse_str, acl_fetch_url, acl_match_str, ACL_USE_L7REQ_VOLATILE },
+ { "url_beg", acl_parse_str, acl_fetch_url, acl_match_beg, ACL_USE_L7REQ_VOLATILE },
+ { "url_end", acl_parse_str, acl_fetch_url, acl_match_end, ACL_USE_L7REQ_VOLATILE },
+ { "url_sub", acl_parse_str, acl_fetch_url, acl_match_sub, ACL_USE_L7REQ_VOLATILE },
+ { "url_dir", acl_parse_str, acl_fetch_url, acl_match_dir, ACL_USE_L7REQ_VOLATILE },
+ { "url_dom", acl_parse_str, acl_fetch_url, acl_match_dom, ACL_USE_L7REQ_VOLATILE },
+ { "url_reg", acl_parse_reg, acl_fetch_url, acl_match_reg, ACL_USE_L7REQ_VOLATILE },
+ { "url_ip", acl_parse_ip, acl_fetch_url_ip, acl_match_ip, ACL_USE_L7REQ_VOLATILE },
+ { "url_port", acl_parse_int, acl_fetch_url_port, acl_match_int, ACL_USE_L7REQ_VOLATILE },
- { "hdr", acl_parse_str, acl_fetch_chdr, acl_match_str },
- { "hdr_reg", acl_parse_reg, acl_fetch_chdr, acl_match_reg },
- { "hdr_beg", acl_parse_str, acl_fetch_chdr, acl_match_beg },
- { "hdr_end", acl_parse_str, acl_fetch_chdr, acl_match_end },
- { "hdr_sub", acl_parse_str, acl_fetch_chdr, acl_match_sub },
- { "hdr_dir", acl_parse_str, acl_fetch_chdr, acl_match_dir },
- { "hdr_dom", acl_parse_str, acl_fetch_chdr, acl_match_dom },
- { "hdr_cnt", acl_parse_int, acl_fetch_chdr_cnt,acl_match_int },
- { "hdr_val", acl_parse_int, acl_fetch_chdr_val,acl_match_int },
+ /* note: we should set hdr* to use ACL_USE_HDR_VOLATILE, and chdr* to use L7REQ_VOLATILE */
+ { "hdr", acl_parse_str, acl_fetch_chdr, acl_match_str, ACL_USE_L7REQ_VOLATILE },
+ { "hdr_reg", acl_parse_reg, acl_fetch_chdr, acl_match_reg, ACL_USE_L7REQ_VOLATILE },
+ { "hdr_beg", acl_parse_str, acl_fetch_chdr, acl_match_beg, ACL_USE_L7REQ_VOLATILE },
+ { "hdr_end", acl_parse_str, acl_fetch_chdr, acl_match_end, ACL_USE_L7REQ_VOLATILE },
+ { "hdr_sub", acl_parse_str, acl_fetch_chdr, acl_match_sub, ACL_USE_L7REQ_VOLATILE },
+ { "hdr_dir", acl_parse_str, acl_fetch_chdr, acl_match_dir, ACL_USE_L7REQ_VOLATILE },
+ { "hdr_dom", acl_parse_str, acl_fetch_chdr, acl_match_dom, ACL_USE_L7REQ_VOLATILE },
+ { "hdr_cnt", acl_parse_int, acl_fetch_chdr_cnt,acl_match_int, ACL_USE_L7REQ_VOLATILE },
+ { "hdr_val", acl_parse_int, acl_fetch_chdr_val,acl_match_int, ACL_USE_L7REQ_VOLATILE },
- { "shdr", acl_parse_str, acl_fetch_shdr, acl_match_str },
- { "shdr_reg", acl_parse_reg, acl_fetch_shdr, acl_match_reg },
- { "shdr_beg", acl_parse_str, acl_fetch_shdr, acl_match_beg },
- { "shdr_end", acl_parse_str, acl_fetch_shdr, acl_match_end },
- { "shdr_sub", acl_parse_str, acl_fetch_shdr, acl_match_sub },
- { "shdr_dir", acl_parse_str, acl_fetch_shdr, acl_match_dir },
- { "shdr_dom", acl_parse_str, acl_fetch_shdr, acl_match_dom },
- { "shdr_cnt", acl_parse_int, acl_fetch_shdr_cnt,acl_match_int },
- { "shdr_val", acl_parse_int, acl_fetch_shdr_val,acl_match_int },
+ { "shdr", acl_parse_str, acl_fetch_shdr, acl_match_str, ACL_USE_L7RTR_VOLATILE },
+ { "shdr_reg", acl_parse_reg, acl_fetch_shdr, acl_match_reg, ACL_USE_L7RTR_VOLATILE },
+ { "shdr_beg", acl_parse_str, acl_fetch_shdr, acl_match_beg, ACL_USE_L7RTR_VOLATILE },
+ { "shdr_end", acl_parse_str, acl_fetch_shdr, acl_match_end, ACL_USE_L7RTR_VOLATILE },
+ { "shdr_sub", acl_parse_str, acl_fetch_shdr, acl_match_sub, ACL_USE_L7RTR_VOLATILE },
+ { "shdr_dir", acl_parse_str, acl_fetch_shdr, acl_match_dir, ACL_USE_L7RTR_VOLATILE },
+ { "shdr_dom", acl_parse_str, acl_fetch_shdr, acl_match_dom, ACL_USE_L7RTR_VOLATILE },
+ { "shdr_cnt", acl_parse_int, acl_fetch_shdr_cnt,acl_match_int, ACL_USE_L7RTR_VOLATILE },
+ { "shdr_val", acl_parse_int, acl_fetch_shdr_val,acl_match_int, ACL_USE_L7RTR_VOLATILE },
- { "path", acl_parse_str, acl_fetch_path, acl_match_str },
- { "path_reg", acl_parse_reg, acl_fetch_path, acl_match_reg },
- { "path_beg", acl_parse_str, acl_fetch_path, acl_match_beg },
- { "path_end", acl_parse_str, acl_fetch_path, acl_match_end },
- { "path_sub", acl_parse_str, acl_fetch_path, acl_match_sub },
- { "path_dir", acl_parse_str, acl_fetch_path, acl_match_dir },
- { "path_dom", acl_parse_str, acl_fetch_path, acl_match_dom },
+ { "path", acl_parse_str, acl_fetch_path, acl_match_str, ACL_USE_L7REQ_VOLATILE },
+ { "path_reg", acl_parse_reg, acl_fetch_path, acl_match_reg, ACL_USE_L7REQ_VOLATILE },
+ { "path_beg", acl_parse_str, acl_fetch_path, acl_match_beg, ACL_USE_L7REQ_VOLATILE },
+ { "path_end", acl_parse_str, acl_fetch_path, acl_match_end, ACL_USE_L7REQ_VOLATILE },
+ { "path_sub", acl_parse_str, acl_fetch_path, acl_match_sub, ACL_USE_L7REQ_VOLATILE },
+ { "path_dir", acl_parse_str, acl_fetch_path, acl_match_dir, ACL_USE_L7REQ_VOLATILE },
+ { "path_dom", acl_parse_str, acl_fetch_path, acl_match_dom, ACL_USE_L7REQ_VOLATILE },
{ NULL, NULL, NULL, NULL },