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/include/proto/acl.h b/include/proto/acl.h
index 569136a..58591ab 100644
--- a/include/proto/acl.h
+++ b/include/proto/acl.h
@@ -124,6 +124,11 @@
  */
 void acl_unregister_keywords(struct acl_kw_list *kwl);
 
+/* initializes ACLs by resolving the sample fetch names they rely upon.
+ * Returns 0 on success, otherwise an error.
+ */
+int init_acl();
+
 
 /*
  *
diff --git a/include/proto/sample.h b/include/proto/sample.h
index 3137948..036ac76 100644
--- a/include/proto/sample.h
+++ b/include/proto/sample.h
@@ -35,5 +35,6 @@
 void sample_register_fetches(struct sample_fetch_kw_list *psl);
 void sample_register_convs(struct sample_conv_kw_list *psl);
 const char *sample_src_names(unsigned int use);
+struct sample_fetch *find_sample_fetch(const char *kw, int len);
 
 #endif /* _PROTO_SAMPLE_H */
diff --git a/include/types/acl.h b/include/types/acl.h
index 0cdcef2..fb457ca 100644
--- a/include/types/acl.h
+++ b/include/types/acl.h
@@ -233,14 +233,14 @@
 struct acl_expr;
 struct acl_keyword {
 	const char *kw;
+	char *fetch_kw;
 	int (*parse)(const char **text, struct acl_pattern *pattern, int *opaque, char **err);
-	int (*fetch)(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
-	             const struct arg *args, struct sample *smp);
 	int (*match)(struct sample *smp, struct acl_pattern *pattern);
 	unsigned int requires;   /* bit mask of all ACL_USE_* required to evaluate this keyword */
 	int arg_mask; /* mask describing up to 7 arg types */
 	int (*val_args)(struct arg *arg_p, char **err_msg);  /* argument validation function */
 	/* must be after the config params */
+	struct sample_fetch *smp; /* the sample fetch we depend on */
 	int use_cnt;
 };
 
diff --git a/src/acl.c b/src/acl.c
index fe5c869..8e6f97a 100644
--- a/src/acl.c
+++ b/src/acl.c
@@ -27,6 +27,7 @@
 #include <proto/channel.h>
 #include <proto/log.h>
 #include <proto/proxy.h>
+#include <proto/sample.h>
 #include <proto/stick_table.h>
 
 #include <ebsttree.h>
@@ -1583,7 +1584,7 @@
 				/* we need to reset context and flags */
 				memset(&smp, 0, sizeof(smp));
 			fetch_next:
-				if (!expr->kw->fetch(px, l4, l7, opt, expr->args, &smp)) {
+				if (!expr->kw->smp->process(px, l4, l7, opt, expr->args, &smp)) {
 					/* maybe we could not fetch because of missing data */
 					if (smp.flags & SMP_F_MAY_CHANGE && !(opt & SMP_OPT_FINAL))
 						acl_res |= ACL_PAT_MISS;
@@ -1901,6 +1902,35 @@
 	return cfgerr;
 }
 
+/* initializes ACLs by resolving the sample fetch names they rely upon.
+ * Returns 0 on success, otherwise an error.
+ */
+int init_acl()
+{
+	int err = 0;
+	int index;
+	const char *name;
+	struct acl_kw_list *kwl;
+	struct sample_fetch *smp;
+
+	list_for_each_entry(kwl, &acl_keywords.list, list) {
+		for (index = 0; kwl->kw[index].kw != NULL; index++) {
+			name = kwl->kw[index].fetch_kw;
+			if (!name)
+				name = kwl->kw[index].kw;
+
+			smp = find_sample_fetch(name, strlen(name));
+			if (!smp) {
+				Alert("Critical internal error: ACL keyword '%s' relies on sample fetch '%s' which was not registered!\n",
+				      kwl->kw[index].kw, name);
+				err++;
+				continue;
+			}
+			kwl->kw[index].smp = smp;
+		}
+	}
+	return err;
+}
 
 /************************************************************************/
 /*       All supported sample fetch functions must be declared here     */
@@ -1947,8 +1977,8 @@
  * Please take care of keeping this list alphabetically sorted.
  */
 static struct acl_kw_list acl_kws = {{ },{
-	{ "always_false", acl_parse_nothing, smp_fetch_false, acl_match_nothing, ACL_USE_NOTHING, 0 },
-	{ "always_true",  acl_parse_nothing, smp_fetch_true,  acl_match_nothing, ACL_USE_NOTHING, 0 },
+	{ "always_false", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING, 0 },
+	{ "always_true",  NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING, 0 },
 	{ /* END */ },
 }};
 
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 */ },
 }};
 
diff --git a/src/frontend.c b/src/frontend.c
index d7b0939..589a541 100644
--- a/src/frontend.c
+++ b/src/frontend.c
@@ -268,9 +268,9 @@
  * Please take care of keeping this list alphabetically sorted.
  */
 static struct acl_kw_list acl_kws = {{ },{
-	{ "fe_conn",      acl_parse_int, smp_fetch_fe_conn,      acl_match_int, ACL_USE_NOTHING, ARG1(1,FE) },
-	{ "fe_id",        acl_parse_int, smp_fetch_fe_id,        acl_match_int, ACL_USE_NOTHING, 0          },
-	{ "fe_sess_rate", acl_parse_int, smp_fetch_fe_sess_rate, acl_match_int, ACL_USE_NOTHING, ARG1(1,FE) },
+	{ "fe_conn",      NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,FE) },
+	{ "fe_id",        NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0          },
+	{ "fe_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,FE) },
 	{ /* END */ },
 }};
 
diff --git a/src/haproxy.c b/src/haproxy.c
index 1782bce..9cbec7f 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -471,6 +471,8 @@
 	strftime(localtimezone, 6, "%z", &curtime);
 
 	signal_init();
+	if (init_acl() != 0)
+		exit(1);
 	init_task();
 	init_session();
 	init_connection();
diff --git a/src/listener.c b/src/listener.c
index e9ce07e..28c5bf0 100644
--- a/src/listener.c
+++ b/src/listener.c
@@ -653,8 +653,8 @@
  * Please take care of keeping this list alphabetically sorted.
  */
 static struct acl_kw_list acl_kws = {{ },{
-	{ "dst_conn",   acl_parse_int,   smp_fetch_dconn,    acl_match_int, ACL_USE_NOTHING, 0 },
-	{ "so_id",      acl_parse_int,   smp_fetch_so_id,    acl_match_int, ACL_USE_NOTHING, 0 },
+	{ "dst_conn",  NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+	{ "so_id",     NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
 	{ /* END */ },
 }};
 
diff --git a/src/payload.c b/src/payload.c
index 21d72a7..4a032ed 100644
--- a/src/payload.c
+++ b/src/payload.c
@@ -669,16 +669,16 @@
  * Please take care of keeping this list alphabetically sorted.
  */
 static struct acl_kw_list acl_kws = {{ },{
-	{ "payload",            acl_parse_str,        smp_fetch_payload,        acl_match_str,     ACL_USE_L6REQ_VOLATILE, ARG2(2,UINT,UINT),      val_payload },
-	{ "payload_lv",         acl_parse_str,        smp_fetch_payload_lv,     acl_match_str,     ACL_USE_L6REQ_VOLATILE, ARG3(2,UINT,UINT,SINT), val_payload_lv },
-	{ "rep_ssl_hello_type", acl_parse_int,        smp_fetch_ssl_hello_type, acl_match_int,     ACL_USE_L6RTR_VOLATILE, 0 },
-	{ "req_len",            acl_parse_int,        smp_fetch_req_len,        acl_match_int,     ACL_USE_L6REQ_VOLATILE, 0 },
-	{ "req_rdp_cookie",     acl_parse_str,        smp_fetch_rdp_cookie,     acl_match_str,     ACL_USE_L6REQ_VOLATILE, ARG1(0,STR) },
-	{ "req_rdp_cookie_cnt", acl_parse_int,        smp_fetch_rdp_cookie_cnt, acl_match_int,     ACL_USE_L6REQ_VOLATILE, ARG1(0,STR) },
-	{ "req_ssl_hello_type", acl_parse_int,        smp_fetch_ssl_hello_type, acl_match_int,     ACL_USE_L6REQ_VOLATILE, 0 },
-	{ "req_ssl_sni",        acl_parse_str,        smp_fetch_ssl_hello_sni,  acl_match_str,     ACL_USE_L6REQ_VOLATILE, 0 },
-	{ "req_ssl_ver",        acl_parse_dotted_ver, smp_fetch_req_ssl_ver,    acl_match_int,     ACL_USE_L6REQ_VOLATILE, 0 },
-	{ "wait_end",           acl_parse_nothing,    smp_fetch_wait_end,       acl_match_nothing, ACL_USE_NOTHING, 0 },
+	{ "payload",            NULL,             acl_parse_str,        acl_match_str,     ACL_USE_L6REQ_VOLATILE, ARG2(2,UINT,UINT),      val_payload },
+	{ "payload_lv",         NULL,             acl_parse_str,        acl_match_str,     ACL_USE_L6REQ_VOLATILE, ARG3(2,UINT,UINT,SINT), val_payload_lv },
+	{ "rep_ssl_hello_type", NULL,             acl_parse_int,        acl_match_int,     ACL_USE_L6RTR_VOLATILE, 0 },
+	{ "req_len",            NULL,             acl_parse_int,        acl_match_int,     ACL_USE_L6REQ_VOLATILE, 0 },
+	{ "req_rdp_cookie",     "rdp_cookie",     acl_parse_str,        acl_match_str,     ACL_USE_L6REQ_VOLATILE, ARG1(0,STR) },
+	{ "req_rdp_cookie_cnt", "rdp_cookie_cnt", acl_parse_int,        acl_match_int,     ACL_USE_L6REQ_VOLATILE, ARG1(0,STR) },
+	{ "req_ssl_hello_type", NULL,             acl_parse_int,        acl_match_int,     ACL_USE_L6REQ_VOLATILE, 0 },
+	{ "req_ssl_sni",        NULL,             acl_parse_str,        acl_match_str,     ACL_USE_L6REQ_VOLATILE, 0 },
+	{ "req_ssl_ver",        NULL,             acl_parse_dotted_ver, acl_match_int,     ACL_USE_L6REQ_VOLATILE, 0 },
+	{ "wait_end",           NULL,             acl_parse_nothing,    acl_match_nothing, ACL_USE_NOTHING, 0 },
 	{ /* END */ },
 }};
 
diff --git a/src/proto_http.c b/src/proto_http.c
index e11d2a7..d49b37c 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -9522,106 +9522,106 @@
  * Please take care of keeping this list alphabetically sorted.
  */
 static struct acl_kw_list acl_kws = {{ },{
-	{ "base",            acl_parse_str,     smp_fetch_base,           acl_match_str,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "base_beg",        acl_parse_str,     smp_fetch_base,           acl_match_beg,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "base_dir",        acl_parse_str,     smp_fetch_base,           acl_match_dir,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "base_dom",        acl_parse_str,     smp_fetch_base,           acl_match_dom,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "base_end",        acl_parse_str,     smp_fetch_base,           acl_match_end,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "base_len",        acl_parse_int,     smp_fetch_base,           acl_match_len,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "base_reg",        acl_parse_reg,     smp_fetch_base,           acl_match_reg,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "base_sub",        acl_parse_str,     smp_fetch_base,           acl_match_sub,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "base",            "base",          acl_parse_str,     acl_match_str,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "base_beg",        "base",          acl_parse_str,     acl_match_beg,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "base_dir",        "base",          acl_parse_str,     acl_match_dir,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "base_dom",        "base",          acl_parse_str,     acl_match_dom,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "base_end",        "base",          acl_parse_str,     acl_match_end,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "base_len",        "base",          acl_parse_int,     acl_match_len,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "base_reg",        "base",          acl_parse_reg,     acl_match_reg,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "base_sub",        "base",          acl_parse_str,     acl_match_sub,     ACL_USE_L7REQ_VOLATILE, 0 },
 
-	{ "cook",            acl_parse_str,     smp_fetch_cookie,         acl_match_str,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
-	{ "cook_beg",        acl_parse_str,     smp_fetch_cookie,         acl_match_beg,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
-	{ "cook_cnt",        acl_parse_int,     smp_fetch_cookie_cnt,     acl_match_int,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
-	{ "cook_dir",        acl_parse_str,     smp_fetch_cookie,         acl_match_dir,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
-	{ "cook_dom",        acl_parse_str,     smp_fetch_cookie,         acl_match_dom,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
-	{ "cook_end",        acl_parse_str,     smp_fetch_cookie,         acl_match_end,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
-	{ "cook_len",        acl_parse_int,     smp_fetch_cookie,         acl_match_len,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
-	{ "cook_reg",        acl_parse_reg,     smp_fetch_cookie,         acl_match_reg,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
-	{ "cook_sub",        acl_parse_str,     smp_fetch_cookie,         acl_match_sub,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
-	{ "cook_val",        acl_parse_int,     smp_fetch_cookie_val,     acl_match_int,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
+	{ "cook",            "cook",          acl_parse_str,     acl_match_str,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
+	{ "cook_beg",        "cook",          acl_parse_str,     acl_match_beg,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
+	{ "cook_cnt",        "cook_cnt",      acl_parse_int,     acl_match_int,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
+	{ "cook_dir",        "cook",          acl_parse_str,     acl_match_dir,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
+	{ "cook_dom",        "cook",          acl_parse_str,     acl_match_dom,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
+	{ "cook_end",        "cook",          acl_parse_str,     acl_match_end,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
+	{ "cook_len",        "cook",          acl_parse_int,     acl_match_len,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
+	{ "cook_reg",        "cook",          acl_parse_reg,     acl_match_reg,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
+	{ "cook_sub",        "cook",          acl_parse_str,     acl_match_sub,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
+	{ "cook_val",        "cook_val",      acl_parse_int,     acl_match_int,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
 
-	{ "hdr",             acl_parse_str,     smp_fetch_hdr,            acl_match_str,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "hdr_beg",         acl_parse_str,     smp_fetch_hdr,            acl_match_beg,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "hdr_cnt",         acl_parse_int,     smp_fetch_hdr_cnt,        acl_match_int,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
-	{ "hdr_dir",         acl_parse_str,     smp_fetch_hdr,            acl_match_dir,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "hdr_dom",         acl_parse_str,     smp_fetch_hdr,            acl_match_dom,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "hdr_end",         acl_parse_str,     smp_fetch_hdr,            acl_match_end,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "hdr_ip",          acl_parse_ip,      smp_fetch_hdr_ip,         acl_match_ip,      ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "hdr_len",         acl_parse_int,     smp_fetch_hdr,            acl_match_len,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "hdr_reg",         acl_parse_reg,     smp_fetch_hdr,            acl_match_reg,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "hdr_sub",         acl_parse_str,     smp_fetch_hdr,            acl_match_sub,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "hdr_val",         acl_parse_int,     smp_fetch_hdr_val,        acl_match_int,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "hdr",             "hdr",           acl_parse_str,     acl_match_str,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "hdr_beg",         "hdr",           acl_parse_str,     acl_match_beg,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "hdr_cnt",         "hdr_cnt",       acl_parse_int,     acl_match_int,     ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
+	{ "hdr_dir",         "hdr",           acl_parse_str,     acl_match_dir,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "hdr_dom",         "hdr",           acl_parse_str,     acl_match_dom,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "hdr_end",         "hdr",           acl_parse_str,     acl_match_end,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "hdr_ip",          "hdr_ip",        acl_parse_ip,      acl_match_ip,      ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "hdr_len",         "hdr",           acl_parse_int,     acl_match_len,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "hdr_reg",         "hdr",           acl_parse_reg,     acl_match_reg,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "hdr_sub",         "hdr",           acl_parse_str,     acl_match_sub,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "hdr_val",         "hdr_val",       acl_parse_int,     acl_match_int,     ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
 
-	{ "http_auth",       acl_parse_nothing, smp_fetch_http_auth,      acl_match_nothing, ACL_USE_L7REQ_VOLATILE, ARG1(0,USR) },
-	{ "http_auth_group", acl_parse_strcat,  smp_fetch_http_auth_grp,  acl_match_auth,    ACL_USE_L7REQ_VOLATILE, ARG1(1,USR) },
+	{ "http_auth",       NULL,            acl_parse_nothing, acl_match_nothing, ACL_USE_L7REQ_VOLATILE, ARG1(1,USR) },
+	{ "http_auth_group", NULL,            acl_parse_strcat,  acl_match_auth,    ACL_USE_L7REQ_VOLATILE, ARG1(1,USR) },
 
-	{ "http_first_req",  acl_parse_nothing, smp_fetch_http_first_req, acl_match_nothing, ACL_USE_L7REQ_PERMANENT, 0 },
+	{ "http_first_req",  NULL,            acl_parse_nothing, acl_match_nothing, ACL_USE_L7REQ_PERMANENT, 0 },
 
-	{ "method",          acl_parse_meth,    smp_fetch_meth,           acl_match_meth,    ACL_USE_L7REQ_PERMANENT, 0 },
+	{ "method",          NULL,            acl_parse_meth,    acl_match_meth,    ACL_USE_L7REQ_PERMANENT, 0 },
 
-	{ "path",            acl_parse_str,     smp_fetch_path,           acl_match_str,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "path_beg",        acl_parse_str,     smp_fetch_path,           acl_match_beg,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "path_dir",        acl_parse_str,     smp_fetch_path,           acl_match_dir,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "path_dom",        acl_parse_str,     smp_fetch_path,           acl_match_dom,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "path_end",        acl_parse_str,     smp_fetch_path,           acl_match_end,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "path_len",        acl_parse_int,     smp_fetch_path,           acl_match_len,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "path_reg",        acl_parse_reg,     smp_fetch_path,           acl_match_reg,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "path_sub",        acl_parse_str,     smp_fetch_path,           acl_match_sub,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "path",            "path",          acl_parse_str,     acl_match_str,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "path_beg",        "path",          acl_parse_str,     acl_match_beg,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "path_dir",        "path",          acl_parse_str,     acl_match_dir,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "path_dom",        "path",          acl_parse_str,     acl_match_dom,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "path_end",        "path",          acl_parse_str,     acl_match_end,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "path_len",        "path",          acl_parse_int,     acl_match_len,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "path_reg",        "path",          acl_parse_reg,     acl_match_reg,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "path_sub",        "path",          acl_parse_str,     acl_match_sub,     ACL_USE_L7REQ_VOLATILE, 0 },
 
-	{ "req_proto_http",  acl_parse_nothing, smp_fetch_proto_http,     acl_match_nothing, ACL_USE_L7REQ_PERMANENT, 0 },
-	{ "req_ver",         acl_parse_ver,     smp_fetch_rqver,          acl_match_str,     ACL_USE_L7REQ_VOLATILE,  0 },
-	{ "resp_ver",        acl_parse_ver,     smp_fetch_stver,          acl_match_str,     ACL_USE_L7RTR_VOLATILE,  0 },
+	{ "req_proto_http",  NULL,            acl_parse_nothing, acl_match_nothing, ACL_USE_L7REQ_PERMANENT, 0 },
+	{ "req_ver",         NULL,            acl_parse_ver,     acl_match_str,     ACL_USE_L7REQ_VOLATILE,  0 },
+	{ "resp_ver",        NULL,            acl_parse_ver,     acl_match_str,     ACL_USE_L7RTR_VOLATILE,  0 },
 
-	{ "scook",           acl_parse_str,     smp_fetch_cookie,         acl_match_str,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
-	{ "scook_beg",       acl_parse_str,     smp_fetch_cookie,         acl_match_beg,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
-	{ "scook_cnt",       acl_parse_int,     smp_fetch_cookie_cnt,     acl_match_int,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
-	{ "scook_dir",       acl_parse_str,     smp_fetch_cookie,         acl_match_dir,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
-	{ "scook_dom",       acl_parse_str,     smp_fetch_cookie,         acl_match_dom,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
-	{ "scook_end",       acl_parse_str,     smp_fetch_cookie,         acl_match_end,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
-	{ "scook_len",       acl_parse_int,     smp_fetch_cookie,         acl_match_len,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
-	{ "scook_reg",       acl_parse_reg,     smp_fetch_cookie,         acl_match_reg,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
-	{ "scook_sub",       acl_parse_str,     smp_fetch_cookie,         acl_match_sub,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
-	{ "scook_val",       acl_parse_int,     smp_fetch_cookie_val,     acl_match_int,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
+	{ "scook",           "scook",         acl_parse_str,     acl_match_str,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
+	{ "scook_beg",       "scook",         acl_parse_str,     acl_match_beg,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
+	{ "scook_cnt",       "scook_cnt",     acl_parse_int,     acl_match_int,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
+	{ "scook_dir",       "scook",         acl_parse_str,     acl_match_dir,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
+	{ "scook_dom",       "scook",         acl_parse_str,     acl_match_dom,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
+	{ "scook_end",       "scook",         acl_parse_str,     acl_match_end,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
+	{ "scook_len",       "scook",         acl_parse_int,     acl_match_len,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
+	{ "scook_reg",       "scook",         acl_parse_reg,     acl_match_reg,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
+	{ "scook_sub",       "scook",         acl_parse_str,     acl_match_sub,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
+	{ "scook_val",       "scook_val",     acl_parse_int,     acl_match_int,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
 
-	{ "shdr",            acl_parse_str,     smp_fetch_hdr,            acl_match_str,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "shdr_beg",        acl_parse_str,     smp_fetch_hdr,            acl_match_beg,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "shdr_cnt",        acl_parse_int,     smp_fetch_hdr_cnt,        acl_match_int,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
-	{ "shdr_dir",        acl_parse_str,     smp_fetch_hdr,            acl_match_dir,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "shdr_dom",        acl_parse_str,     smp_fetch_hdr,            acl_match_dom,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "shdr_end",        acl_parse_str,     smp_fetch_hdr,            acl_match_end,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "shdr_ip",         acl_parse_ip,      smp_fetch_hdr_ip,         acl_match_ip,      ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "shdr_len",        acl_parse_int,     smp_fetch_hdr,            acl_match_len,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "shdr_reg",        acl_parse_reg,     smp_fetch_hdr,            acl_match_reg,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "shdr_sub",        acl_parse_str,     smp_fetch_hdr,            acl_match_sub,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
-	{ "shdr_val",        acl_parse_int,     smp_fetch_hdr_val,        acl_match_int,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "shdr",            "shdr",          acl_parse_str,     acl_match_str,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "shdr_beg",        "shdr",          acl_parse_str,     acl_match_beg,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "shdr_cnt",        "shdr_cnt",      acl_parse_int,     acl_match_int,     ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
+	{ "shdr_dir",        "shdr",          acl_parse_str,     acl_match_dir,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "shdr_dom",        "shdr",          acl_parse_str,     acl_match_dom,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "shdr_end",        "shdr",          acl_parse_str,     acl_match_end,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "shdr_ip",         "shdr_ip",       acl_parse_ip,      acl_match_ip,      ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "shdr_len",        "shdr",          acl_parse_int,     acl_match_len,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "shdr_reg",        "shdr",          acl_parse_reg,     acl_match_reg,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "shdr_sub",        "shdr",          acl_parse_str,     acl_match_sub,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
+	{ "shdr_val",        "shdr_val",      acl_parse_int,     acl_match_int,     ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
 
-	{ "status",          acl_parse_int,     smp_fetch_stcode,         acl_match_int,     ACL_USE_L7RTR_PERMANENT, 0 },
+	{ "status",          NULL,            acl_parse_int,     acl_match_int,     ACL_USE_L7RTR_PERMANENT, 0 },
 
-	{ "url",             acl_parse_str,     smp_fetch_url,            acl_match_str,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "url_beg",         acl_parse_str,     smp_fetch_url,            acl_match_beg,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "url_dir",         acl_parse_str,     smp_fetch_url,            acl_match_dir,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "url_dom",         acl_parse_str,     smp_fetch_url,            acl_match_dom,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "url_end",         acl_parse_str,     smp_fetch_url,            acl_match_end,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "url_ip",          acl_parse_ip,      smp_fetch_url_ip,         acl_match_ip,      ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "url_len",         acl_parse_int,     smp_fetch_url,            acl_match_len,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "url_port",        acl_parse_int,     smp_fetch_url_port,       acl_match_int,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "url_reg",         acl_parse_reg,     smp_fetch_url,            acl_match_reg,     ACL_USE_L7REQ_VOLATILE, 0 },
-	{ "url_sub",         acl_parse_str,     smp_fetch_url,            acl_match_sub,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "url",             "url",           acl_parse_str,     acl_match_str,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "url_beg",         "url",           acl_parse_str,     acl_match_beg,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "url_dir",         "url",           acl_parse_str,     acl_match_dir,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "url_dom",         "url",           acl_parse_str,     acl_match_dom,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "url_end",         "url",           acl_parse_str,     acl_match_end,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "url_ip",          "url_ip",        acl_parse_ip,      acl_match_ip,      ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "url_len",         "url",           acl_parse_int,     acl_match_len,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "url_port",        "url_port",      acl_parse_int,     acl_match_int,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "url_reg",         "url",           acl_parse_reg,     acl_match_reg,     ACL_USE_L7REQ_VOLATILE, 0 },
+	{ "url_sub",         "url",           acl_parse_str,     acl_match_sub,     ACL_USE_L7REQ_VOLATILE, 0 },
 
-	{ "urlp",            acl_parse_str,     smp_fetch_url_param,      acl_match_str,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
-	{ "urlp_beg",        acl_parse_str,     smp_fetch_url_param,      acl_match_beg,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
-	{ "urlp_dir",        acl_parse_str,     smp_fetch_url_param,      acl_match_dir,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
-	{ "urlp_dom",        acl_parse_str,     smp_fetch_url_param,      acl_match_dom,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
-	{ "urlp_end",        acl_parse_str,     smp_fetch_url_param,      acl_match_end,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
-	{ "urlp_ip",         acl_parse_ip,      smp_fetch_url_param,      acl_match_ip,      ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
-	{ "urlp_len",        acl_parse_int,     smp_fetch_url_param,      acl_match_len,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
-	{ "urlp_reg",        acl_parse_reg,     smp_fetch_url_param,      acl_match_reg,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
-	{ "urlp_sub",        acl_parse_str,     smp_fetch_url_param,      acl_match_sub,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
-	{ "urlp_val",        acl_parse_int,     smp_fetch_url_param_val,  acl_match_int,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
+	{ "urlp",            "urlp",          acl_parse_str,     acl_match_str,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
+	{ "urlp_beg",        "urlp",          acl_parse_str,     acl_match_beg,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
+	{ "urlp_dir",        "urlp",          acl_parse_str,     acl_match_dir,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
+	{ "urlp_dom",        "urlp",          acl_parse_str,     acl_match_dom,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
+	{ "urlp_end",        "urlp",          acl_parse_str,     acl_match_end,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
+	{ "urlp_ip",         "urlp",          acl_parse_ip,      acl_match_ip,      ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
+	{ "urlp_len",        "urlp",          acl_parse_int,     acl_match_len,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
+	{ "urlp_reg",        "urlp",          acl_parse_reg,     acl_match_reg,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
+	{ "urlp_sub",        "urlp",          acl_parse_str,     acl_match_sub,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
+	{ "urlp_val",        "urlp_val",      acl_parse_int,     acl_match_int,     ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
 
-	{ NULL, NULL, NULL, NULL },
+	{ /* END */ },
 }};
 
 /************************************************************************/
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index 3d2efcd..b939369 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -1612,10 +1612,10 @@
  * Please take care of keeping this list alphabetically sorted.
  */
 static struct acl_kw_list acl_kws = {{ },{
-	{ "dst",      acl_parse_ip,  smp_fetch_dst,   acl_match_ip,  ACL_USE_TCP4_PERMANENT, 0 },
-	{ "dst_port", acl_parse_int, smp_fetch_dport, acl_match_int, ACL_USE_TCP_PERMANENT,  0 },
-	{ "src",      acl_parse_ip,  smp_fetch_src,   acl_match_ip,  ACL_USE_TCP4_PERMANENT, 0 },
-	{ "src_port", acl_parse_int, smp_fetch_sport, acl_match_int, ACL_USE_TCP_PERMANENT,  0 },
+	{ "dst",      NULL, acl_parse_ip,  acl_match_ip,  ACL_USE_TCP4_PERMANENT, 0 },
+	{ "dst_port", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP_PERMANENT,  0 },
+	{ "src",      NULL, acl_parse_ip,  acl_match_ip,  ACL_USE_TCP4_PERMANENT, 0 },
+	{ "src_port", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP_PERMANENT,  0 },
 	{ /* END */ },
 }};
 
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 */ },
 }};
 
diff --git a/src/ssl_sock.c b/src/ssl_sock.c
index 590c353..1106d1d 100644
--- a/src/ssl_sock.c
+++ b/src/ssl_sock.c
@@ -2967,41 +2967,41 @@
  * Please take care of keeping this list alphabetically sorted.
  */
 static struct acl_kw_list acl_kws = {{ },{
-	{ "ssl_c_ca_err",           acl_parse_int, smp_fetch_ssl_c_ca_err,       acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_c_ca_err_depth",     acl_parse_int, smp_fetch_ssl_c_ca_err_depth, acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_c_err",              acl_parse_int, smp_fetch_ssl_c_err,          acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_c_i_dn",             acl_parse_str, smp_fetch_ssl_c_i_dn,         acl_match_str,     ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
-	{ "ssl_c_key_alg",          acl_parse_str, smp_fetch_ssl_c_key_alg,      acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_c_notafter",         acl_parse_str, smp_fetch_ssl_c_notafter,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_c_notbefore",        acl_parse_str, smp_fetch_ssl_c_notbefore,    acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_c_sig_alg",          acl_parse_str, smp_fetch_ssl_c_sig_alg,      acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_c_s_dn",             acl_parse_str, smp_fetch_ssl_c_s_dn,         acl_match_str,     ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
-	{ "ssl_c_serial",           acl_parse_bin, smp_fetch_ssl_c_serial,       acl_match_bin,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_c_used",             acl_parse_nothing, smp_fetch_ssl_c_used,     acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_c_verify",           acl_parse_int, smp_fetch_ssl_c_verify,       acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_c_version",          acl_parse_int, smp_fetch_ssl_c_version,      acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_f_i_dn",             acl_parse_str, smp_fetch_ssl_f_i_dn,         acl_match_str,     ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
-	{ "ssl_f_key_alg",          acl_parse_str, smp_fetch_ssl_f_key_alg,      acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_f_notafter",         acl_parse_str, smp_fetch_ssl_f_notafter,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_f_notbefore",        acl_parse_str, smp_fetch_ssl_f_notbefore,    acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_f_sig_alg",          acl_parse_str, smp_fetch_ssl_f_sig_alg,      acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_f_s_dn",             acl_parse_str, smp_fetch_ssl_f_s_dn,         acl_match_str,     ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
-	{ "ssl_f_serial",           acl_parse_bin, smp_fetch_ssl_f_serial,       acl_match_bin,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_f_version",          acl_parse_int, smp_fetch_ssl_f_version,      acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_fc",                 acl_parse_nothing, smp_fetch_ssl_fc,         acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_fc_alg_keysize",     acl_parse_int, smp_fetch_ssl_fc_alg_keysize, acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_fc_cipher",          acl_parse_str, smp_fetch_ssl_fc_cipher,      acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_fc_has_crt",         acl_parse_nothing, smp_fetch_ssl_fc_has_crt, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_fc_has_sni",         acl_parse_nothing, smp_fetch_ssl_fc_has_sni, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_c_ca_err",           NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_c_ca_err_depth",     NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_c_err",              NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_c_i_dn",             NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
+	{ "ssl_c_key_alg",          NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_c_notafter",         NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_c_notbefore",        NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_c_sig_alg",          NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_c_s_dn",             NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
+	{ "ssl_c_serial",           NULL,         acl_parse_bin,     acl_match_bin,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_c_used",             NULL,         acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_c_verify",           NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_c_version",          NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_f_i_dn",             NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
+	{ "ssl_f_key_alg",          NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_f_notafter",         NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_f_notbefore",        NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_f_sig_alg",          NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_f_s_dn",             NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
+	{ "ssl_f_serial",           NULL,         acl_parse_bin,     acl_match_bin,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_f_version",          NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_fc",                 NULL,         acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_fc_alg_keysize",     NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_fc_cipher",          NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_fc_has_crt",         NULL,         acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_fc_has_sni",         NULL,         acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
 #ifdef OPENSSL_NPN_NEGOTIATED
-	{ "ssl_fc_npn",             acl_parse_str, smp_fetch_ssl_fc_npn,         acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_fc_npn",             NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
 #endif
-	{ "ssl_fc_protocol",        acl_parse_str, smp_fetch_ssl_fc_protocol,    acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_fc_use_keysize",     acl_parse_int, smp_fetch_ssl_fc_use_keysize, acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_fc_sni",             acl_parse_str, smp_fetch_ssl_fc_sni,         acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_fc_sni_end",         acl_parse_str, smp_fetch_ssl_fc_sni,         acl_match_end,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ "ssl_fc_sni_reg",         acl_parse_reg, smp_fetch_ssl_fc_sni,         acl_match_reg,     ACL_USE_L6REQ_PERMANENT, 0 },
-	{ NULL, NULL, NULL, NULL },
+	{ "ssl_fc_protocol",        NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_fc_use_keysize",     NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_fc_sni",             "ssl_fc_sni", acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_fc_sni_end",         "ssl_fc_sni", acl_parse_str,     acl_match_end,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_fc_sni_reg",         "ssl_fc_sni", acl_parse_reg,     acl_match_reg,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ /* END */ },
 }};
 
 /* Note: must not be declared <const> as its list will be overwritten.