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/backend.c b/src/backend.c
index 4c2d9e8..d0d132b 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -1599,17 +1599,17 @@
* Please take care of keeping this list alphabetically sorted.
*/
static struct acl_kw_list acl_kws = {{ },{
- { "avg_queue", acl_parse_int, smp_fetch_avg_queue_size, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
- { "be_conn", acl_parse_int, smp_fetch_be_conn, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
- { "be_id", acl_parse_int, smp_fetch_be_id, acl_match_int, ACL_USE_NOTHING, 0 },
- { "be_sess_rate", acl_parse_int, smp_fetch_be_sess_rate, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
- { "connslots", acl_parse_int, smp_fetch_connslots, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
- { "nbsrv", acl_parse_int, smp_fetch_nbsrv, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
- { "queue", acl_parse_int, smp_fetch_queue_size, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
- { "srv_conn", acl_parse_int, smp_fetch_srv_conn, acl_match_int, ACL_USE_NOTHING, ARG1(1,SRV) },
- { "srv_id", acl_parse_int, smp_fetch_srv_id, acl_match_int, ACL_USE_RTR_INTERNAL, 0 },
- { "srv_is_up", acl_parse_nothing, smp_fetch_srv_is_up, acl_match_nothing, ACL_USE_NOTHING, ARG1(1,SRV) },
- { "srv_sess_rate", acl_parse_int, smp_fetch_srv_sess_rate, acl_match_int, ACL_USE_NOTHING, ARG1(1,SRV) },
+ { "avg_queue", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
+ { "be_conn", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
+ { "be_id", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+ { "be_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
+ { "connslots", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
+ { "nbsrv", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
+ { "queue", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
+ { "srv_conn", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,SRV) },
+ { "srv_id", NULL, acl_parse_int, acl_match_int, ACL_USE_RTR_INTERNAL, 0 },
+ { "srv_is_up", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING, ARG1(1,SRV) },
+ { "srv_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,SRV) },
{ /* END */ },
}};