MAJOR: acl: make all ACLs reference the fetch function via a sample.
ACL fetch functions used to directly reference a fetch function. Now
that all ACL fetches have their sample fetches equivalent, we can make
ACLs reference a sample fetch keyword instead.
In order to simplify the code, a sample keyword name may be NULL if it
is the same as the ACL's, which is the most common case.
A minor change appeared, http_auth always expects one argument though
the ACL allowed it to be missing and reported as such afterwards, so
fix the ACL to match this. This is not really a bug.
diff --git a/src/session.c b/src/session.c
index 4b8a116..c0d8da5 100644
--- a/src/session.c
+++ b/src/session.c
@@ -3613,59 +3613,59 @@
* Please take care of keeping this list alphabetically sorted.
*/
static struct acl_kw_list acl_kws = {{ },{
- { "sc1_bytes_in_rate", acl_parse_int, smp_fetch_sc1_bytes_in_rate, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_bytes_out_rate", acl_parse_int, smp_fetch_sc1_bytes_out_rate, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_clr_gpc0", acl_parse_int, smp_fetch_sc1_clr_gpc0, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_conn_cnt", acl_parse_int, smp_fetch_sc1_conn_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_conn_cur", acl_parse_int, smp_fetch_sc1_conn_cur, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_conn_rate", acl_parse_int, smp_fetch_sc1_conn_rate, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_get_gpc0", acl_parse_int, smp_fetch_sc1_get_gpc0, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_http_err_cnt", acl_parse_int, smp_fetch_sc1_http_err_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_http_err_rate", acl_parse_int, smp_fetch_sc1_http_err_rate, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_http_req_cnt", acl_parse_int, smp_fetch_sc1_http_req_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_http_req_rate", acl_parse_int, smp_fetch_sc1_http_req_rate, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_inc_gpc0", acl_parse_int, smp_fetch_sc1_inc_gpc0, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_kbytes_in", acl_parse_int, smp_fetch_sc1_kbytes_in, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
- { "sc1_kbytes_out", acl_parse_int, smp_fetch_sc1_kbytes_out, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
- { "sc1_sess_cnt", acl_parse_int, smp_fetch_sc1_sess_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_sess_rate", acl_parse_int, smp_fetch_sc1_sess_rate, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc1_trackers", acl_parse_int, smp_fetch_sc1_trackers, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_bytes_in_rate", acl_parse_int, smp_fetch_sc2_bytes_in_rate, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_bytes_out_rate", acl_parse_int, smp_fetch_sc2_bytes_out_rate, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_clr_gpc0", acl_parse_int, smp_fetch_sc2_clr_gpc0, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_conn_cnt", acl_parse_int, smp_fetch_sc2_conn_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_conn_cur", acl_parse_int, smp_fetch_sc2_conn_cur, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_conn_rate", acl_parse_int, smp_fetch_sc2_conn_rate, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_get_gpc0", acl_parse_int, smp_fetch_sc2_get_gpc0, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_http_err_cnt", acl_parse_int, smp_fetch_sc2_http_err_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_http_err_rate", acl_parse_int, smp_fetch_sc2_http_err_rate, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_http_req_cnt", acl_parse_int, smp_fetch_sc2_http_req_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_http_req_rate", acl_parse_int, smp_fetch_sc2_http_req_rate, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_inc_gpc0", acl_parse_int, smp_fetch_sc2_inc_gpc0, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_kbytes_in", acl_parse_int, smp_fetch_sc2_kbytes_in, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
- { "sc2_kbytes_out", acl_parse_int, smp_fetch_sc2_kbytes_out, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
- { "sc2_sess_cnt", acl_parse_int, smp_fetch_sc2_sess_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_sess_rate", acl_parse_int, smp_fetch_sc2_sess_rate, acl_match_int, ACL_USE_NOTHING, 0 },
- { "sc2_trackers", acl_parse_int, smp_fetch_sc2_trackers, acl_match_int, ACL_USE_NOTHING, 0 },
- { "src_bytes_in_rate", acl_parse_int, smp_fetch_src_bytes_in_rate, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_bytes_out_rate", acl_parse_int, smp_fetch_src_bytes_out_rate, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_clr_gpc0", acl_parse_int, smp_fetch_src_clr_gpc0, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_conn_cnt", acl_parse_int, smp_fetch_src_conn_cnt, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_conn_cur", acl_parse_int, smp_fetch_src_conn_cur, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_conn_rate", acl_parse_int, smp_fetch_src_conn_rate, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_get_gpc0", acl_parse_int, smp_fetch_src_get_gpc0, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_http_err_cnt", acl_parse_int, smp_fetch_src_http_err_cnt, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_http_err_rate", acl_parse_int, smp_fetch_src_http_err_rate, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_http_req_cnt", acl_parse_int, smp_fetch_src_http_req_cnt, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_http_req_rate", acl_parse_int, smp_fetch_src_http_req_rate, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_inc_gpc0", acl_parse_int, smp_fetch_src_inc_gpc0, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_kbytes_in", acl_parse_int, smp_fetch_src_kbytes_in, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_kbytes_out", acl_parse_int, smp_fetch_src_kbytes_out, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_sess_cnt", acl_parse_int, smp_fetch_src_sess_cnt, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_sess_rate", acl_parse_int, smp_fetch_src_sess_rate, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "src_updt_conn_cnt", acl_parse_int, smp_fetch_src_updt_conn_cnt, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
- { "table_avl", acl_parse_int, smp_fetch_table_avl, acl_match_int, ACL_USE_NOTHING, ARG1(1,TAB) },
- { "table_cnt", acl_parse_int, smp_fetch_table_cnt, acl_match_int, ACL_USE_NOTHING, ARG1(1,TAB) },
+ { "sc1_bytes_in_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_bytes_out_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_clr_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_conn_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_conn_cur", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_conn_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_get_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_http_err_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_http_err_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_http_req_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_http_req_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_inc_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_kbytes_in", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
+ { "sc1_kbytes_out", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
+ { "sc1_sess_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc1_trackers", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_bytes_in_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_bytes_out_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_clr_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_conn_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_conn_cur", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_conn_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_get_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_http_err_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_http_err_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_http_req_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_http_req_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_inc_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_kbytes_in", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
+ { "sc2_kbytes_out", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
+ { "sc2_sess_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "sc2_trackers", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "src_bytes_in_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_bytes_out_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_clr_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_conn_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_conn_cur", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_conn_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_get_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_http_err_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_http_err_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_http_req_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_http_req_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_inc_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_kbytes_in", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_kbytes_out", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_sess_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "src_updt_conn_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
+ { "table_avl", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,TAB) },
+ { "table_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,TAB) },
{ /* END */ },
}};