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.
This commit is contained in:
Willy Tarreau 2013-01-11 16:56:48 +01:00
parent 8ed669b12a
commit c48c90dfa5
10 changed files with 210 additions and 211 deletions

View File

@ -237,7 +237,6 @@ struct acl_keyword {
int (*parse)(const char **text, struct acl_pattern *pattern, int *opaque, char **err); int (*parse)(const char **text, struct acl_pattern *pattern, int *opaque, char **err);
int (*match)(struct sample *smp, struct acl_pattern *pattern); int (*match)(struct sample *smp, struct acl_pattern *pattern);
unsigned int requires; /* bit mask of all ACL_USE_* required to evaluate this keyword */ 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 */ int (*val_args)(struct arg *arg_p, char **err_msg); /* argument validation function */
/* must be after the config params */ /* must be after the config params */
struct sample_fetch *smp; /* the sample fetch we depend on */ struct sample_fetch *smp; /* the sample fetch we depend on */

View File

@ -1023,7 +1023,7 @@ struct acl_expr *parse_acl_expr(const char **args, char **err)
expr->args = empty_arg_list; expr->args = empty_arg_list;
arg = strchr(args[0], '('); arg = strchr(args[0], '(');
if (aclkw->arg_mask) { if (aclkw->smp->arg_mask) {
int nbargs = 0; int nbargs = 0;
char *end; 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 * An error is also reported if some mandatory arguments are
* missing. * 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); err, NULL, NULL);
if (nbargs < 0) { if (nbargs < 0) {
/* note that make_arg_list will have set <err> here */ /* 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; goto out_free_expr;
} }
} }
else if (ARGM(aclkw->arg_mask) == 1) { else if (ARGM(aclkw->smp->arg_mask) == 1) {
int type = (aclkw->arg_mask >> 4) & 15; int type = (aclkw->smp->arg_mask >> 4) & 15;
/* If a proxy is noted as a mandatory argument, we'll fake /* If a proxy is noted as a mandatory argument, we'll fake
* an empty one so that acl_find_targets() resolves it as * an empty one so that acl_find_targets() resolves it as
* the current one later. * the current one later.
*/ */
if (type != ARGT_FE && type != ARGT_BE && type != ARGT_TAB) { 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; 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[0].data.str.len = 0;
expr->args[1].type = ARGT_STOP; expr->args[1].type = ARGT_STOP;
} }
else if (ARGM(aclkw->arg_mask)) { else if (ARGM(aclkw->smp->arg_mask)) {
/* there were some mandatory arguments */ /* 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; 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. * Please take care of keeping this list alphabetically sorted.
*/ */
static struct acl_kw_list acl_kws = {{ },{ static struct acl_kw_list acl_kws = {{ },{
{ "always_false", 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, 0 }, { "always_true", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING },
{ /* END */ }, { /* END */ },
}}; }};

View File

@ -1599,17 +1599,17 @@ static struct sample_fetch_kw_list smp_kws = {{ },{
* Please take care of keeping this list alphabetically sorted. * Please take care of keeping this list alphabetically sorted.
*/ */
static struct acl_kw_list acl_kws = {{ },{ static struct acl_kw_list acl_kws = {{ },{
{ "avg_queue", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) }, { "avg_queue", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
{ "be_conn", 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 },
{ "be_id", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 }, { "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, ARG1(1,BE) }, { "be_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
{ "connslots", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) }, { "connslots", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
{ "nbsrv", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) }, { "nbsrv", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
{ "queue", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) }, { "queue", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
{ "srv_conn", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,SRV) }, { "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, 0 }, { "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, ARG1(1,SRV) }, { "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, ARG1(1,SRV) }, { "srv_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
{ /* END */ }, { /* END */ },
}}; }};

View File

@ -268,9 +268,9 @@ static struct sample_fetch_kw_list smp_kws = {{ },{
* Please take care of keeping this list alphabetically sorted. * Please take care of keeping this list alphabetically sorted.
*/ */
static struct acl_kw_list acl_kws = {{ },{ static struct acl_kw_list acl_kws = {{ },{
{ "fe_conn", 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, 0 }, { "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, ARG1(1,FE) }, { "fe_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
{ /* END */ }, { /* END */ },
}}; }};

View File

@ -653,8 +653,8 @@ static struct sample_fetch_kw_list smp_kws = {{ },{
* Please take care of keeping this list alphabetically sorted. * Please take care of keeping this list alphabetically sorted.
*/ */
static struct acl_kw_list acl_kws = {{ },{ static struct acl_kw_list acl_kws = {{ },{
{ "dst_conn", 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, 0 }, { "so_id", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
{ /* END */ }, { /* END */ },
}}; }};

View File

@ -669,16 +669,16 @@ static struct sample_fetch_kw_list smp_kws = {{ },{
* Please take care of keeping this list alphabetically sorted. * Please take care of keeping this list alphabetically sorted.
*/ */
static struct acl_kw_list acl_kws = {{ },{ 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", 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, ARG3(2,UINT,UINT,SINT), val_payload_lv }, { "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, 0 }, { "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, 0 }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "wait_end", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING },
{ /* END */ }, { /* END */ },
}}; }};

View File

@ -9522,104 +9522,104 @@ static int val_usr(struct arg *arg, char **err_msg)
* Please take care of keeping this list alphabetically sorted. * Please take care of keeping this list alphabetically sorted.
*/ */
static struct acl_kw_list acl_kws = {{ },{ static struct acl_kw_list acl_kws = {{ },{
{ "base", "base", acl_parse_str, acl_match_str, 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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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", "cook", acl_parse_str, acl_match_str, ACL_USE_L7REQ_VOLATILE },
{ "cook_beg", "cook", acl_parse_str, acl_match_beg, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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", "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, ARG2(0,STR,SINT), 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, ARG1(0,STR) }, { "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, ARG2(0,STR,SINT), val_hdr }, { "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, ARG2(0,STR,SINT), 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, ARG2(0,STR,SINT), 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, ARG2(0,STR,SINT), 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, ARG2(0,STR,SINT), 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, ARG2(0,STR,SINT), 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, ARG2(0,STR,SINT), 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, ARG2(0,STR,SINT), 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", 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, ARG1(1,USR) }, { "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", "path", acl_parse_str, acl_match_str, ACL_USE_L7REQ_VOLATILE },
{ "path_beg", "path", acl_parse_str, acl_match_beg, ACL_USE_L7REQ_VOLATILE, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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_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, 0 }, { "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, 0 }, { "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", "scook", acl_parse_str, acl_match_str, ACL_USE_L7RTR_VOLATILE },
{ "scook_beg", "scook", acl_parse_str, acl_match_beg, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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, ARG1(0,STR) }, { "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", "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, ARG2(0,STR,SINT), 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, ARG1(0,STR) }, { "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, ARG2(0,STR,SINT), val_hdr }, { "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, ARG2(0,STR,SINT), 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, ARG2(0,STR,SINT), 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, ARG2(0,STR,SINT), 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, ARG2(0,STR,SINT), 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, ARG2(0,STR,SINT), 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, ARG2(0,STR,SINT), 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, ARG2(0,STR,SINT), 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", "url", acl_parse_str, acl_match_str, ACL_USE_L7REQ_VOLATILE },
{ "url_beg", "url", acl_parse_str, acl_match_beg, ACL_USE_L7REQ_VOLATILE, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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", "urlp", acl_parse_str, acl_match_str, ACL_USE_L7REQ_VOLATILE },
{ "urlp_beg", "urlp", acl_parse_str, acl_match_beg, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) }, { "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, ARG2(1,STR,STR) }, { "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, ARG2(1,STR,STR) }, { "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, ARG2(1,STR,STR) }, { "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, ARG2(1,STR,STR) }, { "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, ARG2(1,STR,STR) }, { "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, ARG2(1,STR,STR) }, { "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, ARG2(1,STR,STR) }, { "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, ARG2(1,STR,STR) }, { "urlp_val", "urlp_val", acl_parse_int, acl_match_int, ACL_USE_L7REQ_VOLATILE },
{ /* END */ }, { /* END */ },
}}; }};

View File

@ -1612,10 +1612,10 @@ static struct cfg_kw_list cfg_kws = {{ },{
* Please take care of keeping this list alphabetically sorted. * Please take care of keeping this list alphabetically sorted.
*/ */
static struct acl_kw_list acl_kws = {{ },{ static struct acl_kw_list acl_kws = {{ },{
{ "dst", NULL, acl_parse_ip, acl_match_ip, ACL_USE_TCP4_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, 0 }, { "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, 0 }, { "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, 0 }, { "src_port", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP_PERMANENT },
{ /* END */ }, { /* END */ },
}}; }};

View 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. * Please take care of keeping this list alphabetically sorted.
*/ */
static struct acl_kw_list acl_kws = {{ },{ static struct acl_kw_list acl_kws = {{ },{
{ "sc1_bytes_in_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "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, ARG1(1,TAB) }, { "table_avl", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING },
{ "table_cnt", 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 },
{ /* END */ }, { /* END */ },
}}; }};

View File

@ -2967,40 +2967,40 @@ static struct sample_fetch_kw_list sample_fetch_keywords = {{ },{
* Please take care of keeping this list alphabetically sorted. * Please take care of keeping this list alphabetically sorted.
*/ */
static struct acl_kw_list acl_kws = {{ },{ 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", 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, 0 }, { "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, 0 }, { "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, ARG2(0,STR,SINT) }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, ARG2(0,STR,SINT) }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, ARG2(0,STR,SINT) }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, ARG2(0,STR,SINT) }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "ssl_fc_has_sni", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT },
#ifdef OPENSSL_NPN_NEGOTIATED #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 #endif
{ "ssl_fc_protocol", NULL, acl_parse_str, acl_match_str, 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, 0 }, { "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, 0 }, { "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, 0 }, { "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, 0 }, { "ssl_fc_sni_reg", "ssl_fc_sni", acl_parse_reg, acl_match_reg, ACL_USE_L6REQ_PERMANENT },
{ /* END */ }, { /* END */ },
}}; }};