]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MAJOR: acl: remove the arg_mask from the ACL definition and use the sample fetch's
authorWilly Tarreau <w@1wt.eu>
Fri, 11 Jan 2013 15:56:48 +0000 (16:56 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 3 Apr 2013 00:12:58 +0000 (02:12 +0200)
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.

include/types/acl.h
src/acl.c
src/backend.c
src/frontend.c
src/listener.c
src/payload.c
src/proto_http.c
src/proto_tcp.c
src/session.c
src/ssl_sock.c

index fb457ca3eb05f197e7b29a87888debad02ee9e71..3e62ae2d3260530b9b31440dc169b680cd4d8d82 100644 (file)
@@ -237,7 +237,6 @@ struct acl_keyword {
        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 */
index 8e6f97ae7ce9d9a32aba1771d07f3e1aa6d203fe..a996c634e61f843b3e60e7cb03f56369658c812e 100644 (file)
--- a/src/acl.c
+++ b/src/acl.c
@@ -1023,7 +1023,7 @@ struct acl_expr *parse_acl_expr(const char **args, char **err)
        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 @@ struct acl_expr *parse_acl_expr(const char **args, char **err)
                         * 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 @@ struct acl_expr *parse_acl_expr(const char **args, char **err)
                                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 @@ struct acl_expr *parse_acl_expr(const char **args, char **err)
                        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 @@ static struct sample_fetch_kw_list smp_kws = {{ },{
  * 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 */ },
 }};
 
index d0d132bcf3e4bfcc729b2af419fbd48133a5f8a5..c4035e556eb106d822f6ffdff2dc28b0c1f8a096 100644 (file)
@@ -1599,17 +1599,17 @@ static struct sample_fetch_kw_list smp_kws = {{ },{
  * 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 */ },
 }};
 
index 589a541dcb46b22730bd7c103b351d853ae38673..f259adeddd263d623186f54dae399b5b227a5e04 100644 (file)
@@ -268,9 +268,9 @@ static struct sample_fetch_kw_list smp_kws = {{ },{
  * 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 */ },
 }};
 
index 28c5bf038b16bf7b14a4e559263ecce248918fd4..862e1e473294bf4ad73ebf71ee439d3af476aeb8 100644 (file)
@@ -653,8 +653,8 @@ static struct sample_fetch_kw_list smp_kws = {{ },{
  * 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 */ },
 }};
 
index 4a032ed37eb6763b19a3300020011dfa3e2483ef..34b21eddddec1a16f025bc606ecde6b311a9fdcb 100644 (file)
@@ -669,16 +669,16 @@ static struct sample_fetch_kw_list smp_kws = {{ },{
  * 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 */ },
 }};
 
index d49b37c921b04e523c387b75914f27adc2e95ca4..a835fdceb1daac0fe95a30e921c7cfb989bfccb1 100644 (file)
@@ -9522,104 +9522,104 @@ static int val_usr(struct arg *arg, char **err_msg)
  * 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 },
-
-       { "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",             "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",       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",  NULL,            acl_parse_nothing, acl_match_nothing, ACL_USE_L7REQ_PERMANENT, 0 },
-
-       { "method",          NULL,            acl_parse_meth,    acl_match_meth,    ACL_USE_L7REQ_PERMANENT, 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",  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",           "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",            "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",          NULL,            acl_parse_int,     acl_match_int,     ACL_USE_L7RTR_PERMANENT, 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",            "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) },
+       { "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 },
+       { "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, 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 },
+       { "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 },
+
+       { "method",          NULL,            acl_parse_meth,    acl_match_meth,    ACL_USE_L7REQ_PERMANENT },
+
+       { "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 },
+       { "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 },
+       { "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, 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 },
+
+       { "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 },
+       { "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 */ },
 }};
index b939369784af0087e539687a05a78d76a181317c..8f631f88858ea30d6fb04283aea4f62f767de4a8 100644 (file)
@@ -1612,10 +1612,10 @@ static struct cfg_kw_list cfg_kws = {{ },{
  * 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 */ },
 }};
 
index c0d8da5c227727fe07a52b4f3c52fefc14b93658..0a2d0b2655be51936f1d817cd64a17195b879ba4 100644 (file)
@@ -3613,59 +3613,59 @@ smp_fetch_table_avl(struct proxy *px, struct session *l4, void *l7, unsigned int
  * 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 */ },
 }};
 
index 1106d1d3620ce4d2e6f73cd8c649f9deb5ea2473..ade1fe8b41f99c5aeb79840da338a6ead05519bc 100644 (file)
@@ -2967,40 +2967,40 @@ static struct sample_fetch_kw_list sample_fetch_keywords = {{ },{
  * 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 */ },
 }};