MAJOR: acl: remove the arg_mask from the ACL definition and use the sample fetch's

Now that ACLs solely rely on sample fetch functions, make them use the
same arg mask. All inconsistencies have been fixed separately prior to
this patch, so this patch almost only adds a new pointer indirection
and removes all references to ARG*() in the definitions.

The parsing is still performed by the ACL code though.
diff --git a/include/types/acl.h b/include/types/acl.h
index fb457ca..3e62ae2 100644
--- a/include/types/acl.h
+++ b/include/types/acl.h
@@ -237,7 +237,6 @@
 	int (*parse)(const char **text, struct acl_pattern *pattern, int *opaque, char **err);
 	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 */
diff --git a/src/acl.c b/src/acl.c
index 8e6f97a..a996c63 100644
--- a/src/acl.c
+++ b/src/acl.c
@@ -1023,7 +1023,7 @@
 	expr->args = empty_arg_list;
 
 	arg = strchr(args[0], '(');
-	if (aclkw->arg_mask) {
+	if (aclkw->smp->arg_mask) {
 		int nbargs = 0;
 		char *end;
 
@@ -1041,7 +1041,7 @@
 			 * An error is also reported if some mandatory arguments are
 			 * missing.
 			 */
-			nbargs = make_arg_list(arg, end - arg, aclkw->arg_mask, &expr->args,
+			nbargs = make_arg_list(arg, end - arg, aclkw->smp->arg_mask, &expr->args,
 					       err, NULL, NULL);
 			if (nbargs < 0) {
 				/* note that make_arg_list will have set <err> here */
@@ -1060,15 +1060,15 @@
 				goto out_free_expr;
 			}
 		}
-		else if (ARGM(aclkw->arg_mask) == 1) {
-			int type = (aclkw->arg_mask >> 4) & 15;
+		else if (ARGM(aclkw->smp->arg_mask) == 1) {
+			int type = (aclkw->smp->arg_mask >> 4) & 15;
 
 			/* If a proxy is noted as a mandatory argument, we'll fake
 			 * an empty one so that acl_find_targets() resolves it as
 			 * the current one later.
 			 */
 			if (type != ARGT_FE && type != ARGT_BE && type != ARGT_TAB) {
-				memprintf(err, "ACL keyword '%s' expects %d arguments", aclkw->kw, ARGM(aclkw->arg_mask));
+				memprintf(err, "ACL keyword '%s' expects %d arguments", aclkw->kw, ARGM(aclkw->smp->arg_mask));
 				goto out_free_expr;
 			}
 
@@ -1083,9 +1083,9 @@
 			expr->args[0].data.str.len = 0;
 			expr->args[1].type = ARGT_STOP;
 		}
-		else if (ARGM(aclkw->arg_mask)) {
+		else if (ARGM(aclkw->smp->arg_mask)) {
 			/* there were some mandatory arguments */
-			memprintf(err, "ACL keyword '%s' expects %d arguments", aclkw->kw, ARGM(aclkw->arg_mask));
+			memprintf(err, "ACL keyword '%s' expects %d arguments", aclkw->kw, ARGM(aclkw->smp->arg_mask));
 			goto out_free_expr;
 		}
 	}
@@ -1977,8 +1977,8 @@
  * Please take care of keeping this list alphabetically sorted.
  */
 static struct acl_kw_list acl_kws = {{ },{
-	{ "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 },
+	{ "always_false", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING },
+	{ "always_true",  NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING },
 	{ /* END */ },
 }};
 
diff --git a/src/backend.c b/src/backend.c
index d0d132b..c4035e5 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",     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) },
+	{ "avg_queue",     NULL, acl_parse_int,     acl_match_int,     ACL_USE_NOTHING },
+	{ "be_conn",       NULL, acl_parse_int,     acl_match_int,     ACL_USE_NOTHING },
+	{ "be_id",         NULL, acl_parse_int,     acl_match_int,     ACL_USE_NOTHING },
+	{ "be_sess_rate",  NULL, acl_parse_int,     acl_match_int,     ACL_USE_NOTHING },
+	{ "connslots",     NULL, acl_parse_int,     acl_match_int,     ACL_USE_NOTHING },
+	{ "nbsrv",         NULL, acl_parse_int,     acl_match_int,     ACL_USE_NOTHING },
+	{ "queue",         NULL, acl_parse_int,     acl_match_int,     ACL_USE_NOTHING },
+	{ "srv_conn",      NULL, acl_parse_int,     acl_match_int,     ACL_USE_NOTHING },
+	{ "srv_id",        NULL, acl_parse_int,     acl_match_int,     ACL_USE_RTR_INTERNAL },
+	{ "srv_is_up",     NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING },
+	{ "srv_sess_rate", NULL, acl_parse_int,     acl_match_int,     ACL_USE_NOTHING },
 	{ /* END */ },
 }};
 
diff --git a/src/frontend.c b/src/frontend.c
index 589a541..f259ade 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",      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) },
+	{ "fe_conn",      NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "fe_id",        NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "fe_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
 	{ /* END */ },
 }};
 
diff --git a/src/listener.c b/src/listener.c
index 28c5bf0..862e1e4 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",  NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
-	{ "so_id",     NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
+	{ "dst_conn",  NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "so_id",     NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
 	{ /* END */ },
 }};
 
diff --git a/src/payload.c b/src/payload.c
index 4a032ed..34b21ed 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",            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 },
+	{ "payload",            NULL,             acl_parse_str,        acl_match_str,     ACL_USE_L6REQ_VOLATILE, val_payload },
+	{ "payload_lv",         NULL,             acl_parse_str,        acl_match_str,     ACL_USE_L6REQ_VOLATILE, val_payload_lv },
+	{ "rep_ssl_hello_type", NULL,             acl_parse_int,        acl_match_int,     ACL_USE_L6RTR_VOLATILE },
+	{ "req_len",            NULL,             acl_parse_int,        acl_match_int,     ACL_USE_L6REQ_VOLATILE },
+	{ "req_rdp_cookie",     "rdp_cookie",     acl_parse_str,        acl_match_str,     ACL_USE_L6REQ_VOLATILE },
+	{ "req_rdp_cookie_cnt", "rdp_cookie_cnt", acl_parse_int,        acl_match_int,     ACL_USE_L6REQ_VOLATILE },
+	{ "req_ssl_hello_type", NULL,             acl_parse_int,        acl_match_int,     ACL_USE_L6REQ_VOLATILE },
+	{ "req_ssl_sni",        NULL,             acl_parse_str,        acl_match_str,     ACL_USE_L6REQ_VOLATILE },
+	{ "req_ssl_ver",        NULL,             acl_parse_dotted_ver, acl_match_int,     ACL_USE_L6REQ_VOLATILE },
+	{ "wait_end",           NULL,             acl_parse_nothing,    acl_match_nothing, ACL_USE_NOTHING },
 	{ /* END */ },
 }};
 
diff --git a/src/proto_http.c b/src/proto_http.c
index d49b37c..a835fdc 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -9522,104 +9522,104 @@
  * Please take care of keeping this list alphabetically sorted.
  */
 static struct acl_kw_list acl_kws = {{ },{
-	{ "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 },
+	{ "base",            "base",          acl_parse_str,     acl_match_str,     ACL_USE_L7REQ_VOLATILE },
+	{ "base_beg",        "base",          acl_parse_str,     acl_match_beg,     ACL_USE_L7REQ_VOLATILE },
+	{ "base_dir",        "base",          acl_parse_str,     acl_match_dir,     ACL_USE_L7REQ_VOLATILE },
+	{ "base_dom",        "base",          acl_parse_str,     acl_match_dom,     ACL_USE_L7REQ_VOLATILE },
+	{ "base_end",        "base",          acl_parse_str,     acl_match_end,     ACL_USE_L7REQ_VOLATILE },
+	{ "base_len",        "base",          acl_parse_int,     acl_match_len,     ACL_USE_L7REQ_VOLATILE },
+	{ "base_reg",        "base",          acl_parse_reg,     acl_match_reg,     ACL_USE_L7REQ_VOLATILE },
+	{ "base_sub",        "base",          acl_parse_str,     acl_match_sub,     ACL_USE_L7REQ_VOLATILE },
 
-	{ "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) },
+	{ "cook",            "cook",          acl_parse_str,     acl_match_str,     ACL_USE_L7REQ_VOLATILE },
+	{ "cook_beg",        "cook",          acl_parse_str,     acl_match_beg,     ACL_USE_L7REQ_VOLATILE },
+	{ "cook_cnt",        "cook_cnt",      acl_parse_int,     acl_match_int,     ACL_USE_L7REQ_VOLATILE },
+	{ "cook_dir",        "cook",          acl_parse_str,     acl_match_dir,     ACL_USE_L7REQ_VOLATILE },
+	{ "cook_dom",        "cook",          acl_parse_str,     acl_match_dom,     ACL_USE_L7REQ_VOLATILE },
+	{ "cook_end",        "cook",          acl_parse_str,     acl_match_end,     ACL_USE_L7REQ_VOLATILE },
+	{ "cook_len",        "cook",          acl_parse_int,     acl_match_len,     ACL_USE_L7REQ_VOLATILE },
+	{ "cook_reg",        "cook",          acl_parse_reg,     acl_match_reg,     ACL_USE_L7REQ_VOLATILE },
+	{ "cook_sub",        "cook",          acl_parse_str,     acl_match_sub,     ACL_USE_L7REQ_VOLATILE },
+	{ "cook_val",        "cook_val",      acl_parse_int,     acl_match_int,     ACL_USE_L7REQ_VOLATILE },
 
-	{ "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 },
+	{ "hdr",             "hdr",           acl_parse_str,     acl_match_str,     ACL_USE_L7REQ_VOLATILE, val_hdr },
+	{ "hdr_beg",         "hdr",           acl_parse_str,     acl_match_beg,     ACL_USE_L7REQ_VOLATILE, val_hdr },
+	{ "hdr_cnt",         "hdr_cnt",       acl_parse_int,     acl_match_int,     ACL_USE_L7REQ_VOLATILE          },
+	{ "hdr_dir",         "hdr",           acl_parse_str,     acl_match_dir,     ACL_USE_L7REQ_VOLATILE, val_hdr },
+	{ "hdr_dom",         "hdr",           acl_parse_str,     acl_match_dom,     ACL_USE_L7REQ_VOLATILE, val_hdr },
+	{ "hdr_end",         "hdr",           acl_parse_str,     acl_match_end,     ACL_USE_L7REQ_VOLATILE, val_hdr },
+	{ "hdr_ip",          "hdr_ip",        acl_parse_ip,      acl_match_ip,      ACL_USE_L7REQ_VOLATILE, val_hdr },
+	{ "hdr_len",         "hdr",           acl_parse_int,     acl_match_len,     ACL_USE_L7REQ_VOLATILE, val_hdr },
+	{ "hdr_reg",         "hdr",           acl_parse_reg,     acl_match_reg,     ACL_USE_L7REQ_VOLATILE, val_hdr },
+	{ "hdr_sub",         "hdr",           acl_parse_str,     acl_match_sub,     ACL_USE_L7REQ_VOLATILE, val_hdr },
+	{ "hdr_val",         "hdr_val",       acl_parse_int,     acl_match_int,     ACL_USE_L7REQ_VOLATILE, val_hdr },
 
-	{ "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_auth",       NULL,            acl_parse_nothing, acl_match_nothing, ACL_USE_L7REQ_VOLATILE },
+	{ "http_auth_group", NULL,            acl_parse_strcat,  acl_match_auth,    ACL_USE_L7REQ_VOLATILE },
 
-	{ "http_first_req",  NULL,            acl_parse_nothing, acl_match_nothing, ACL_USE_L7REQ_PERMANENT, 0 },
+	{ "http_first_req",  NULL,            acl_parse_nothing, acl_match_nothing, ACL_USE_L7REQ_PERMANENT },
 
-	{ "method",          NULL,            acl_parse_meth,    acl_match_meth,    ACL_USE_L7REQ_PERMANENT, 0 },
+	{ "method",          NULL,            acl_parse_meth,    acl_match_meth,    ACL_USE_L7REQ_PERMANENT },
 
-	{ "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 },
+	{ "path",            "path",          acl_parse_str,     acl_match_str,     ACL_USE_L7REQ_VOLATILE },
+	{ "path_beg",        "path",          acl_parse_str,     acl_match_beg,     ACL_USE_L7REQ_VOLATILE },
+	{ "path_dir",        "path",          acl_parse_str,     acl_match_dir,     ACL_USE_L7REQ_VOLATILE },
+	{ "path_dom",        "path",          acl_parse_str,     acl_match_dom,     ACL_USE_L7REQ_VOLATILE },
+	{ "path_end",        "path",          acl_parse_str,     acl_match_end,     ACL_USE_L7REQ_VOLATILE },
+	{ "path_len",        "path",          acl_parse_int,     acl_match_len,     ACL_USE_L7REQ_VOLATILE },
+	{ "path_reg",        "path",          acl_parse_reg,     acl_match_reg,     ACL_USE_L7REQ_VOLATILE },
+	{ "path_sub",        "path",          acl_parse_str,     acl_match_sub,     ACL_USE_L7REQ_VOLATILE },
 
-	{ "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 },
+	{ "req_proto_http",  NULL,            acl_parse_nothing, acl_match_nothing, ACL_USE_L7REQ_PERMANENT },
+	{ "req_ver",         NULL,            acl_parse_ver,     acl_match_str,     ACL_USE_L7REQ_VOLATILE  },
+	{ "resp_ver",        NULL,            acl_parse_ver,     acl_match_str,     ACL_USE_L7RTR_VOLATILE  },
 
-	{ "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) },
+	{ "scook",           "scook",         acl_parse_str,     acl_match_str,     ACL_USE_L7RTR_VOLATILE },
+	{ "scook_beg",       "scook",         acl_parse_str,     acl_match_beg,     ACL_USE_L7RTR_VOLATILE },
+	{ "scook_cnt",       "scook_cnt",     acl_parse_int,     acl_match_int,     ACL_USE_L7RTR_VOLATILE },
+	{ "scook_dir",       "scook",         acl_parse_str,     acl_match_dir,     ACL_USE_L7RTR_VOLATILE },
+	{ "scook_dom",       "scook",         acl_parse_str,     acl_match_dom,     ACL_USE_L7RTR_VOLATILE },
+	{ "scook_end",       "scook",         acl_parse_str,     acl_match_end,     ACL_USE_L7RTR_VOLATILE },
+	{ "scook_len",       "scook",         acl_parse_int,     acl_match_len,     ACL_USE_L7RTR_VOLATILE },
+	{ "scook_reg",       "scook",         acl_parse_reg,     acl_match_reg,     ACL_USE_L7RTR_VOLATILE },
+	{ "scook_sub",       "scook",         acl_parse_str,     acl_match_sub,     ACL_USE_L7RTR_VOLATILE },
+	{ "scook_val",       "scook_val",     acl_parse_int,     acl_match_int,     ACL_USE_L7RTR_VOLATILE },
 
-	{ "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 },
+	{ "shdr",            "shdr",          acl_parse_str,     acl_match_str,     ACL_USE_L7RTR_VOLATILE, val_hdr },
+	{ "shdr_beg",        "shdr",          acl_parse_str,     acl_match_beg,     ACL_USE_L7RTR_VOLATILE, val_hdr },
+	{ "shdr_cnt",        "shdr_cnt",      acl_parse_int,     acl_match_int,     ACL_USE_L7RTR_VOLATILE          },
+	{ "shdr_dir",        "shdr",          acl_parse_str,     acl_match_dir,     ACL_USE_L7RTR_VOLATILE, val_hdr },
+	{ "shdr_dom",        "shdr",          acl_parse_str,     acl_match_dom,     ACL_USE_L7RTR_VOLATILE, val_hdr },
+	{ "shdr_end",        "shdr",          acl_parse_str,     acl_match_end,     ACL_USE_L7RTR_VOLATILE, val_hdr },
+	{ "shdr_ip",         "shdr_ip",       acl_parse_ip,      acl_match_ip,      ACL_USE_L7RTR_VOLATILE, val_hdr },
+	{ "shdr_len",        "shdr",          acl_parse_int,     acl_match_len,     ACL_USE_L7RTR_VOLATILE, val_hdr },
+	{ "shdr_reg",        "shdr",          acl_parse_reg,     acl_match_reg,     ACL_USE_L7RTR_VOLATILE, val_hdr },
+	{ "shdr_sub",        "shdr",          acl_parse_str,     acl_match_sub,     ACL_USE_L7RTR_VOLATILE, val_hdr },
+	{ "shdr_val",        "shdr_val",      acl_parse_int,     acl_match_int,     ACL_USE_L7RTR_VOLATILE, val_hdr },
 
-	{ "status",          NULL,            acl_parse_int,     acl_match_int,     ACL_USE_L7RTR_PERMANENT, 0 },
+	{ "status",          NULL,            acl_parse_int,     acl_match_int,     ACL_USE_L7RTR_PERMANENT },
 
-	{ "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 },
+	{ "url",             "url",           acl_parse_str,     acl_match_str,     ACL_USE_L7REQ_VOLATILE },
+	{ "url_beg",         "url",           acl_parse_str,     acl_match_beg,     ACL_USE_L7REQ_VOLATILE },
+	{ "url_dir",         "url",           acl_parse_str,     acl_match_dir,     ACL_USE_L7REQ_VOLATILE },
+	{ "url_dom",         "url",           acl_parse_str,     acl_match_dom,     ACL_USE_L7REQ_VOLATILE },
+	{ "url_end",         "url",           acl_parse_str,     acl_match_end,     ACL_USE_L7REQ_VOLATILE },
+	{ "url_ip",          "url_ip",        acl_parse_ip,      acl_match_ip,      ACL_USE_L7REQ_VOLATILE },
+	{ "url_len",         "url",           acl_parse_int,     acl_match_len,     ACL_USE_L7REQ_VOLATILE },
+	{ "url_port",        "url_port",      acl_parse_int,     acl_match_int,     ACL_USE_L7REQ_VOLATILE },
+	{ "url_reg",         "url",           acl_parse_reg,     acl_match_reg,     ACL_USE_L7REQ_VOLATILE },
+	{ "url_sub",         "url",           acl_parse_str,     acl_match_sub,     ACL_USE_L7REQ_VOLATILE },
 
-	{ "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) },
+	{ "urlp",            "urlp",          acl_parse_str,     acl_match_str,     ACL_USE_L7REQ_VOLATILE },
+	{ "urlp_beg",        "urlp",          acl_parse_str,     acl_match_beg,     ACL_USE_L7REQ_VOLATILE },
+	{ "urlp_dir",        "urlp",          acl_parse_str,     acl_match_dir,     ACL_USE_L7REQ_VOLATILE },
+	{ "urlp_dom",        "urlp",          acl_parse_str,     acl_match_dom,     ACL_USE_L7REQ_VOLATILE },
+	{ "urlp_end",        "urlp",          acl_parse_str,     acl_match_end,     ACL_USE_L7REQ_VOLATILE },
+	{ "urlp_ip",         "urlp",          acl_parse_ip,      acl_match_ip,      ACL_USE_L7REQ_VOLATILE },
+	{ "urlp_len",        "urlp",          acl_parse_int,     acl_match_len,     ACL_USE_L7REQ_VOLATILE },
+	{ "urlp_reg",        "urlp",          acl_parse_reg,     acl_match_reg,     ACL_USE_L7REQ_VOLATILE },
+	{ "urlp_sub",        "urlp",          acl_parse_str,     acl_match_sub,     ACL_USE_L7REQ_VOLATILE },
+	{ "urlp_val",        "urlp_val",      acl_parse_int,     acl_match_int,     ACL_USE_L7REQ_VOLATILE },
 
 	{ /* END */ },
 }};
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index b939369..8f631f8 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",      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 },
+	{ "dst",      NULL, acl_parse_ip,  acl_match_ip,  ACL_USE_TCP4_PERMANENT },
+	{ "dst_port", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP_PERMANENT  },
+	{ "src",      NULL, acl_parse_ip,  acl_match_ip,  ACL_USE_TCP4_PERMANENT },
+	{ "src_port", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP_PERMANENT  },
 	{ /* END */ },
 }};
 
diff --git a/src/session.c b/src/session.c
index c0d8da5..0a2d0b2 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",  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) },
+	{ "sc1_bytes_in_rate",  NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_bytes_out_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_clr_gpc0",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_conn_cnt",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_conn_cur",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_conn_rate",      NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_get_gpc0",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_http_err_cnt",   NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_http_err_rate",  NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_http_req_cnt",   NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_http_req_rate",  NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_inc_gpc0",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_kbytes_in",      NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "sc1_kbytes_out",     NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "sc1_sess_cnt",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_sess_rate",      NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc1_trackers",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_bytes_in_rate",  NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_bytes_out_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_clr_gpc0",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_conn_cnt",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_conn_cur",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_conn_rate",      NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_get_gpc0",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_http_err_cnt",   NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_http_err_rate",  NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_http_req_cnt",   NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_http_req_rate",  NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_inc_gpc0",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_kbytes_in",      NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "sc2_kbytes_out",     NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "sc2_sess_cnt",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_sess_rate",      NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "sc2_trackers",       NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "src_bytes_in_rate",  NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_bytes_out_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_clr_gpc0",       NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_conn_cnt",       NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_conn_cur",       NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_conn_rate",      NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_get_gpc0",       NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_http_err_cnt",   NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_http_err_rate",  NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_http_req_cnt",   NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_http_req_rate",  NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_inc_gpc0",       NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_kbytes_in",      NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_kbytes_out",     NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_sess_cnt",       NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_sess_rate",      NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "src_updt_conn_cnt",  NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE },
+	{ "table_avl",          NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
+	{ "table_cnt",          NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
 	{ /* END */ },
 }};
 
diff --git a/src/ssl_sock.c b/src/ssl_sock.c
index 1106d1d..ade1fe8 100644
--- a/src/ssl_sock.c
+++ b/src/ssl_sock.c
@@ -2967,40 +2967,40 @@
  * Please take care of keeping this list alphabetically sorted.
  */
 static struct acl_kw_list acl_kws = {{ },{
-	{ "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 },
+	{ "ssl_c_ca_err",           NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_c_ca_err_depth",     NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_c_err",              NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_c_i_dn",             NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_c_key_alg",          NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_c_notafter",         NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_c_notbefore",        NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_c_sig_alg",          NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_c_s_dn",             NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_c_serial",           NULL,         acl_parse_bin,     acl_match_bin,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_c_used",             NULL,         acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_c_verify",           NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_c_version",          NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_f_i_dn",             NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_f_key_alg",          NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_f_notafter",         NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_f_notbefore",        NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_f_sig_alg",          NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_f_s_dn",             NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_f_serial",           NULL,         acl_parse_bin,     acl_match_bin,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_f_version",          NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_fc",                 NULL,         acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_fc_alg_keysize",     NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_fc_cipher",          NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_fc_has_crt",         NULL,         acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_fc_has_sni",         NULL,         acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT },
 #ifdef OPENSSL_NPN_NEGOTIATED
-	{ "ssl_fc_npn",             NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT, 0 },
+	{ "ssl_fc_npn",             NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
 #endif
-	{ "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 },
+	{ "ssl_fc_protocol",        NULL,         acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_fc_use_keysize",     NULL,         acl_parse_int,     acl_match_int,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_fc_sni",             "ssl_fc_sni", acl_parse_str,     acl_match_str,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_fc_sni_end",         "ssl_fc_sni", acl_parse_str,     acl_match_end,     ACL_USE_L6REQ_PERMANENT },
+	{ "ssl_fc_sni_reg",         "ssl_fc_sni", acl_parse_reg,     acl_match_reg,     ACL_USE_L6REQ_PERMANENT },
 	{ /* END */ },
 }};