MAJOR: acl: make all ACLs reference the fetch function via a sample.
ACL fetch functions used to directly reference a fetch function. Now that all ACL fetches have their sample fetches equivalent, we can make ACLs reference a sample fetch keyword instead. In order to simplify the code, a sample keyword name may be NULL if it is the same as the ACL's, which is the most common case. A minor change appeared, http_auth always expects one argument though the ACL allowed it to be missing and reported as such afterwards, so fix the ACL to match this. This is not really a bug.
This commit is contained in:
parent
281c799e25
commit
8ed669b12a
@ -124,6 +124,11 @@ void acl_register_keywords(struct acl_kw_list *kwl);
|
||||
*/
|
||||
void acl_unregister_keywords(struct acl_kw_list *kwl);
|
||||
|
||||
/* initializes ACLs by resolving the sample fetch names they rely upon.
|
||||
* Returns 0 on success, otherwise an error.
|
||||
*/
|
||||
int init_acl();
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
|
@ -35,5 +35,6 @@ struct sample *sample_fetch_string(struct proxy *px, struct session *l4, void *l
|
||||
void sample_register_fetches(struct sample_fetch_kw_list *psl);
|
||||
void sample_register_convs(struct sample_conv_kw_list *psl);
|
||||
const char *sample_src_names(unsigned int use);
|
||||
struct sample_fetch *find_sample_fetch(const char *kw, int len);
|
||||
|
||||
#endif /* _PROTO_SAMPLE_H */
|
||||
|
@ -233,14 +233,14 @@ struct session;
|
||||
struct acl_expr;
|
||||
struct acl_keyword {
|
||||
const char *kw;
|
||||
char *fetch_kw;
|
||||
int (*parse)(const char **text, struct acl_pattern *pattern, int *opaque, char **err);
|
||||
int (*fetch)(struct proxy *px, struct session *l4, void *l7, unsigned int opt,
|
||||
const struct arg *args, struct sample *smp);
|
||||
int (*match)(struct sample *smp, struct acl_pattern *pattern);
|
||||
unsigned int requires; /* bit mask of all ACL_USE_* required to evaluate this keyword */
|
||||
int arg_mask; /* mask describing up to 7 arg types */
|
||||
int (*val_args)(struct arg *arg_p, char **err_msg); /* argument validation function */
|
||||
/* must be after the config params */
|
||||
struct sample_fetch *smp; /* the sample fetch we depend on */
|
||||
int use_cnt;
|
||||
};
|
||||
|
||||
|
36
src/acl.c
36
src/acl.c
@ -27,6 +27,7 @@
|
||||
#include <proto/channel.h>
|
||||
#include <proto/log.h>
|
||||
#include <proto/proxy.h>
|
||||
#include <proto/sample.h>
|
||||
#include <proto/stick_table.h>
|
||||
|
||||
#include <ebsttree.h>
|
||||
@ -1583,7 +1584,7 @@ int acl_exec_cond(struct acl_cond *cond, struct proxy *px, struct session *l4, v
|
||||
/* we need to reset context and flags */
|
||||
memset(&smp, 0, sizeof(smp));
|
||||
fetch_next:
|
||||
if (!expr->kw->fetch(px, l4, l7, opt, expr->args, &smp)) {
|
||||
if (!expr->kw->smp->process(px, l4, l7, opt, expr->args, &smp)) {
|
||||
/* maybe we could not fetch because of missing data */
|
||||
if (smp.flags & SMP_F_MAY_CHANGE && !(opt & SMP_OPT_FINAL))
|
||||
acl_res |= ACL_PAT_MISS;
|
||||
@ -1901,6 +1902,35 @@ acl_find_targets(struct proxy *p)
|
||||
return cfgerr;
|
||||
}
|
||||
|
||||
/* initializes ACLs by resolving the sample fetch names they rely upon.
|
||||
* Returns 0 on success, otherwise an error.
|
||||
*/
|
||||
int init_acl()
|
||||
{
|
||||
int err = 0;
|
||||
int index;
|
||||
const char *name;
|
||||
struct acl_kw_list *kwl;
|
||||
struct sample_fetch *smp;
|
||||
|
||||
list_for_each_entry(kwl, &acl_keywords.list, list) {
|
||||
for (index = 0; kwl->kw[index].kw != NULL; index++) {
|
||||
name = kwl->kw[index].fetch_kw;
|
||||
if (!name)
|
||||
name = kwl->kw[index].kw;
|
||||
|
||||
smp = find_sample_fetch(name, strlen(name));
|
||||
if (!smp) {
|
||||
Alert("Critical internal error: ACL keyword '%s' relies on sample fetch '%s' which was not registered!\n",
|
||||
kwl->kw[index].kw, name);
|
||||
err++;
|
||||
continue;
|
||||
}
|
||||
kwl->kw[index].smp = smp;
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
/* All supported sample fetch functions must be declared here */
|
||||
@ -1947,8 +1977,8 @@ 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", acl_parse_nothing, smp_fetch_false, acl_match_nothing, ACL_USE_NOTHING, 0 },
|
||||
{ "always_true", acl_parse_nothing, smp_fetch_true, acl_match_nothing, ACL_USE_NOTHING, 0 },
|
||||
{ "always_false", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING, 0 },
|
||||
{ "always_true", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING, 0 },
|
||||
{ /* END */ },
|
||||
}};
|
||||
|
||||
|
@ -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", acl_parse_int, smp_fetch_avg_queue_size, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
|
||||
{ "be_conn", acl_parse_int, smp_fetch_be_conn, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
|
||||
{ "be_id", acl_parse_int, smp_fetch_be_id, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "be_sess_rate", acl_parse_int, smp_fetch_be_sess_rate, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
|
||||
{ "connslots", acl_parse_int, smp_fetch_connslots, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
|
||||
{ "nbsrv", acl_parse_int, smp_fetch_nbsrv, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
|
||||
{ "queue", acl_parse_int, smp_fetch_queue_size, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
|
||||
{ "srv_conn", acl_parse_int, smp_fetch_srv_conn, acl_match_int, ACL_USE_NOTHING, ARG1(1,SRV) },
|
||||
{ "srv_id", acl_parse_int, smp_fetch_srv_id, acl_match_int, ACL_USE_RTR_INTERNAL, 0 },
|
||||
{ "srv_is_up", acl_parse_nothing, smp_fetch_srv_is_up, acl_match_nothing, ACL_USE_NOTHING, ARG1(1,SRV) },
|
||||
{ "srv_sess_rate", acl_parse_int, smp_fetch_srv_sess_rate, acl_match_int, ACL_USE_NOTHING, ARG1(1,SRV) },
|
||||
{ "avg_queue", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
|
||||
{ "be_conn", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
|
||||
{ "be_id", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "be_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
|
||||
{ "connslots", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
|
||||
{ "nbsrv", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
|
||||
{ "queue", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,BE) },
|
||||
{ "srv_conn", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,SRV) },
|
||||
{ "srv_id", NULL, acl_parse_int, acl_match_int, ACL_USE_RTR_INTERNAL, 0 },
|
||||
{ "srv_is_up", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING, ARG1(1,SRV) },
|
||||
{ "srv_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,SRV) },
|
||||
{ /* END */ },
|
||||
}};
|
||||
|
||||
|
@ -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", acl_parse_int, smp_fetch_fe_conn, acl_match_int, ACL_USE_NOTHING, ARG1(1,FE) },
|
||||
{ "fe_id", acl_parse_int, smp_fetch_fe_id, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "fe_sess_rate", acl_parse_int, smp_fetch_fe_sess_rate, acl_match_int, ACL_USE_NOTHING, ARG1(1,FE) },
|
||||
{ "fe_conn", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,FE) },
|
||||
{ "fe_id", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "fe_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,FE) },
|
||||
{ /* END */ },
|
||||
}};
|
||||
|
||||
|
@ -471,6 +471,8 @@ void init(int argc, char **argv)
|
||||
strftime(localtimezone, 6, "%z", &curtime);
|
||||
|
||||
signal_init();
|
||||
if (init_acl() != 0)
|
||||
exit(1);
|
||||
init_task();
|
||||
init_session();
|
||||
init_connection();
|
||||
|
@ -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", acl_parse_int, smp_fetch_dconn, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "so_id", acl_parse_int, smp_fetch_so_id, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "dst_conn", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "so_id", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ /* END */ },
|
||||
}};
|
||||
|
||||
|
@ -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", acl_parse_str, smp_fetch_payload, acl_match_str, ACL_USE_L6REQ_VOLATILE, ARG2(2,UINT,UINT), val_payload },
|
||||
{ "payload_lv", acl_parse_str, smp_fetch_payload_lv, acl_match_str, ACL_USE_L6REQ_VOLATILE, ARG3(2,UINT,UINT,SINT), val_payload_lv },
|
||||
{ "rep_ssl_hello_type", acl_parse_int, smp_fetch_ssl_hello_type, acl_match_int, ACL_USE_L6RTR_VOLATILE, 0 },
|
||||
{ "req_len", acl_parse_int, smp_fetch_req_len, acl_match_int, ACL_USE_L6REQ_VOLATILE, 0 },
|
||||
{ "req_rdp_cookie", acl_parse_str, smp_fetch_rdp_cookie, acl_match_str, ACL_USE_L6REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "req_rdp_cookie_cnt", acl_parse_int, smp_fetch_rdp_cookie_cnt, acl_match_int, ACL_USE_L6REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "req_ssl_hello_type", acl_parse_int, smp_fetch_ssl_hello_type, acl_match_int, ACL_USE_L6REQ_VOLATILE, 0 },
|
||||
{ "req_ssl_sni", acl_parse_str, smp_fetch_ssl_hello_sni, acl_match_str, ACL_USE_L6REQ_VOLATILE, 0 },
|
||||
{ "req_ssl_ver", acl_parse_dotted_ver, smp_fetch_req_ssl_ver, acl_match_int, ACL_USE_L6REQ_VOLATILE, 0 },
|
||||
{ "wait_end", acl_parse_nothing, smp_fetch_wait_end, acl_match_nothing, ACL_USE_NOTHING, 0 },
|
||||
{ "payload", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_VOLATILE, ARG2(2,UINT,UINT), val_payload },
|
||||
{ "payload_lv", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_VOLATILE, ARG3(2,UINT,UINT,SINT), val_payload_lv },
|
||||
{ "rep_ssl_hello_type", NULL, acl_parse_int, acl_match_int, ACL_USE_L6RTR_VOLATILE, 0 },
|
||||
{ "req_len", NULL, acl_parse_int, acl_match_int, ACL_USE_L6REQ_VOLATILE, 0 },
|
||||
{ "req_rdp_cookie", "rdp_cookie", acl_parse_str, acl_match_str, ACL_USE_L6REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "req_rdp_cookie_cnt", "rdp_cookie_cnt", acl_parse_int, acl_match_int, ACL_USE_L6REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "req_ssl_hello_type", NULL, acl_parse_int, acl_match_int, ACL_USE_L6REQ_VOLATILE, 0 },
|
||||
{ "req_ssl_sni", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_VOLATILE, 0 },
|
||||
{ "req_ssl_ver", NULL, acl_parse_dotted_ver, acl_match_int, ACL_USE_L6REQ_VOLATILE, 0 },
|
||||
{ "wait_end", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING, 0 },
|
||||
{ /* END */ },
|
||||
}};
|
||||
|
||||
|
174
src/proto_http.c
174
src/proto_http.c
@ -9522,106 +9522,106 @@ 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", acl_parse_str, smp_fetch_base, acl_match_str, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_beg", acl_parse_str, smp_fetch_base, acl_match_beg, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_dir", acl_parse_str, smp_fetch_base, acl_match_dir, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_dom", acl_parse_str, smp_fetch_base, acl_match_dom, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_end", acl_parse_str, smp_fetch_base, acl_match_end, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_len", acl_parse_int, smp_fetch_base, acl_match_len, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_reg", acl_parse_reg, smp_fetch_base, acl_match_reg, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_sub", acl_parse_str, smp_fetch_base, acl_match_sub, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base", "base", acl_parse_str, acl_match_str, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_beg", "base", acl_parse_str, acl_match_beg, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_dir", "base", acl_parse_str, acl_match_dir, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_dom", "base", acl_parse_str, acl_match_dom, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_end", "base", acl_parse_str, acl_match_end, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_len", "base", acl_parse_int, acl_match_len, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_reg", "base", acl_parse_reg, acl_match_reg, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "base_sub", "base", acl_parse_str, acl_match_sub, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
|
||||
{ "cook", acl_parse_str, smp_fetch_cookie, acl_match_str, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_beg", acl_parse_str, smp_fetch_cookie, acl_match_beg, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_cnt", acl_parse_int, smp_fetch_cookie_cnt, acl_match_int, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_dir", acl_parse_str, smp_fetch_cookie, acl_match_dir, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_dom", acl_parse_str, smp_fetch_cookie, acl_match_dom, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_end", acl_parse_str, smp_fetch_cookie, acl_match_end, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_len", acl_parse_int, smp_fetch_cookie, acl_match_len, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_reg", acl_parse_reg, smp_fetch_cookie, acl_match_reg, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_sub", acl_parse_str, smp_fetch_cookie, acl_match_sub, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_val", acl_parse_int, smp_fetch_cookie_val, acl_match_int, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook", "cook", acl_parse_str, acl_match_str, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_beg", "cook", acl_parse_str, acl_match_beg, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_cnt", "cook_cnt", acl_parse_int, acl_match_int, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_dir", "cook", acl_parse_str, acl_match_dir, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_dom", "cook", acl_parse_str, acl_match_dom, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_end", "cook", acl_parse_str, acl_match_end, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_len", "cook", acl_parse_int, acl_match_len, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_reg", "cook", acl_parse_reg, acl_match_reg, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_sub", "cook", acl_parse_str, acl_match_sub, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "cook_val", "cook_val", acl_parse_int, acl_match_int, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
|
||||
{ "hdr", acl_parse_str, smp_fetch_hdr, acl_match_str, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_beg", acl_parse_str, smp_fetch_hdr, acl_match_beg, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_cnt", acl_parse_int, smp_fetch_hdr_cnt, acl_match_int, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "hdr_dir", acl_parse_str, smp_fetch_hdr, acl_match_dir, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_dom", acl_parse_str, smp_fetch_hdr, acl_match_dom, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_end", acl_parse_str, smp_fetch_hdr, acl_match_end, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_ip", acl_parse_ip, smp_fetch_hdr_ip, acl_match_ip, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_len", acl_parse_int, smp_fetch_hdr, acl_match_len, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_reg", acl_parse_reg, smp_fetch_hdr, acl_match_reg, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_sub", acl_parse_str, smp_fetch_hdr, acl_match_sub, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_val", acl_parse_int, smp_fetch_hdr_val, acl_match_int, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr", "hdr", acl_parse_str, acl_match_str, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_beg", "hdr", acl_parse_str, acl_match_beg, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_cnt", "hdr_cnt", acl_parse_int, acl_match_int, ACL_USE_L7REQ_VOLATILE, ARG1(0,STR) },
|
||||
{ "hdr_dir", "hdr", acl_parse_str, acl_match_dir, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_dom", "hdr", acl_parse_str, acl_match_dom, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_end", "hdr", acl_parse_str, acl_match_end, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_ip", "hdr_ip", acl_parse_ip, acl_match_ip, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_len", "hdr", acl_parse_int, acl_match_len, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_reg", "hdr", acl_parse_reg, acl_match_reg, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_sub", "hdr", acl_parse_str, acl_match_sub, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "hdr_val", "hdr_val", acl_parse_int, acl_match_int, ACL_USE_L7REQ_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
|
||||
{ "http_auth", acl_parse_nothing, smp_fetch_http_auth, acl_match_nothing, ACL_USE_L7REQ_VOLATILE, ARG1(0,USR) },
|
||||
{ "http_auth_group", acl_parse_strcat, smp_fetch_http_auth_grp, acl_match_auth, ACL_USE_L7REQ_VOLATILE, ARG1(1,USR) },
|
||||
{ "http_auth", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_L7REQ_VOLATILE, ARG1(1,USR) },
|
||||
{ "http_auth_group", NULL, acl_parse_strcat, acl_match_auth, ACL_USE_L7REQ_VOLATILE, ARG1(1,USR) },
|
||||
|
||||
{ "http_first_req", acl_parse_nothing, smp_fetch_http_first_req, acl_match_nothing, ACL_USE_L7REQ_PERMANENT, 0 },
|
||||
{ "http_first_req", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_L7REQ_PERMANENT, 0 },
|
||||
|
||||
{ "method", acl_parse_meth, smp_fetch_meth, acl_match_meth, ACL_USE_L7REQ_PERMANENT, 0 },
|
||||
{ "method", NULL, acl_parse_meth, acl_match_meth, ACL_USE_L7REQ_PERMANENT, 0 },
|
||||
|
||||
{ "path", acl_parse_str, smp_fetch_path, acl_match_str, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_beg", acl_parse_str, smp_fetch_path, acl_match_beg, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_dir", acl_parse_str, smp_fetch_path, acl_match_dir, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_dom", acl_parse_str, smp_fetch_path, acl_match_dom, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_end", acl_parse_str, smp_fetch_path, acl_match_end, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_len", acl_parse_int, smp_fetch_path, acl_match_len, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_reg", acl_parse_reg, smp_fetch_path, acl_match_reg, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_sub", acl_parse_str, smp_fetch_path, acl_match_sub, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path", "path", acl_parse_str, acl_match_str, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_beg", "path", acl_parse_str, acl_match_beg, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_dir", "path", acl_parse_str, acl_match_dir, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_dom", "path", acl_parse_str, acl_match_dom, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_end", "path", acl_parse_str, acl_match_end, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_len", "path", acl_parse_int, acl_match_len, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_reg", "path", acl_parse_reg, acl_match_reg, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "path_sub", "path", acl_parse_str, acl_match_sub, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
|
||||
{ "req_proto_http", acl_parse_nothing, smp_fetch_proto_http, acl_match_nothing, ACL_USE_L7REQ_PERMANENT, 0 },
|
||||
{ "req_ver", acl_parse_ver, smp_fetch_rqver, acl_match_str, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "resp_ver", acl_parse_ver, smp_fetch_stver, acl_match_str, ACL_USE_L7RTR_VOLATILE, 0 },
|
||||
{ "req_proto_http", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_L7REQ_PERMANENT, 0 },
|
||||
{ "req_ver", NULL, acl_parse_ver, acl_match_str, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "resp_ver", NULL, acl_parse_ver, acl_match_str, ACL_USE_L7RTR_VOLATILE, 0 },
|
||||
|
||||
{ "scook", acl_parse_str, smp_fetch_cookie, acl_match_str, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_beg", acl_parse_str, smp_fetch_cookie, acl_match_beg, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_cnt", acl_parse_int, smp_fetch_cookie_cnt, acl_match_int, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_dir", acl_parse_str, smp_fetch_cookie, acl_match_dir, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_dom", acl_parse_str, smp_fetch_cookie, acl_match_dom, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_end", acl_parse_str, smp_fetch_cookie, acl_match_end, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_len", acl_parse_int, smp_fetch_cookie, acl_match_len, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_reg", acl_parse_reg, smp_fetch_cookie, acl_match_reg, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_sub", acl_parse_str, smp_fetch_cookie, acl_match_sub, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_val", acl_parse_int, smp_fetch_cookie_val, acl_match_int, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook", "scook", acl_parse_str, acl_match_str, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_beg", "scook", acl_parse_str, acl_match_beg, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_cnt", "scook_cnt", acl_parse_int, acl_match_int, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_dir", "scook", acl_parse_str, acl_match_dir, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_dom", "scook", acl_parse_str, acl_match_dom, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_end", "scook", acl_parse_str, acl_match_end, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_len", "scook", acl_parse_int, acl_match_len, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_reg", "scook", acl_parse_reg, acl_match_reg, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_sub", "scook", acl_parse_str, acl_match_sub, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "scook_val", "scook_val", acl_parse_int, acl_match_int, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
|
||||
{ "shdr", acl_parse_str, smp_fetch_hdr, acl_match_str, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_beg", acl_parse_str, smp_fetch_hdr, acl_match_beg, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_cnt", acl_parse_int, smp_fetch_hdr_cnt, acl_match_int, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "shdr_dir", acl_parse_str, smp_fetch_hdr, acl_match_dir, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_dom", acl_parse_str, smp_fetch_hdr, acl_match_dom, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_end", acl_parse_str, smp_fetch_hdr, acl_match_end, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_ip", acl_parse_ip, smp_fetch_hdr_ip, acl_match_ip, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_len", acl_parse_int, smp_fetch_hdr, acl_match_len, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_reg", acl_parse_reg, smp_fetch_hdr, acl_match_reg, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_sub", acl_parse_str, smp_fetch_hdr, acl_match_sub, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_val", acl_parse_int, smp_fetch_hdr_val, acl_match_int, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr", "shdr", acl_parse_str, acl_match_str, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_beg", "shdr", acl_parse_str, acl_match_beg, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_cnt", "shdr_cnt", acl_parse_int, acl_match_int, ACL_USE_L7RTR_VOLATILE, ARG1(0,STR) },
|
||||
{ "shdr_dir", "shdr", acl_parse_str, acl_match_dir, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_dom", "shdr", acl_parse_str, acl_match_dom, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_end", "shdr", acl_parse_str, acl_match_end, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_ip", "shdr_ip", acl_parse_ip, acl_match_ip, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_len", "shdr", acl_parse_int, acl_match_len, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_reg", "shdr", acl_parse_reg, acl_match_reg, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_sub", "shdr", acl_parse_str, acl_match_sub, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
{ "shdr_val", "shdr_val", acl_parse_int, acl_match_int, ACL_USE_L7RTR_VOLATILE, ARG2(0,STR,SINT), val_hdr },
|
||||
|
||||
{ "status", acl_parse_int, smp_fetch_stcode, acl_match_int, ACL_USE_L7RTR_PERMANENT, 0 },
|
||||
{ "status", NULL, acl_parse_int, acl_match_int, ACL_USE_L7RTR_PERMANENT, 0 },
|
||||
|
||||
{ "url", acl_parse_str, smp_fetch_url, acl_match_str, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_beg", acl_parse_str, smp_fetch_url, acl_match_beg, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_dir", acl_parse_str, smp_fetch_url, acl_match_dir, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_dom", acl_parse_str, smp_fetch_url, acl_match_dom, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_end", acl_parse_str, smp_fetch_url, acl_match_end, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_ip", acl_parse_ip, smp_fetch_url_ip, acl_match_ip, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_len", acl_parse_int, smp_fetch_url, acl_match_len, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_port", acl_parse_int, smp_fetch_url_port, acl_match_int, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_reg", acl_parse_reg, smp_fetch_url, acl_match_reg, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_sub", acl_parse_str, smp_fetch_url, acl_match_sub, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url", "url", acl_parse_str, acl_match_str, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_beg", "url", acl_parse_str, acl_match_beg, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_dir", "url", acl_parse_str, acl_match_dir, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_dom", "url", acl_parse_str, acl_match_dom, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_end", "url", acl_parse_str, acl_match_end, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_ip", "url_ip", acl_parse_ip, acl_match_ip, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_len", "url", acl_parse_int, acl_match_len, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_port", "url_port", acl_parse_int, acl_match_int, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_reg", "url", acl_parse_reg, acl_match_reg, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
{ "url_sub", "url", acl_parse_str, acl_match_sub, ACL_USE_L7REQ_VOLATILE, 0 },
|
||||
|
||||
{ "urlp", acl_parse_str, smp_fetch_url_param, acl_match_str, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_beg", acl_parse_str, smp_fetch_url_param, acl_match_beg, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_dir", acl_parse_str, smp_fetch_url_param, acl_match_dir, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_dom", acl_parse_str, smp_fetch_url_param, acl_match_dom, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_end", acl_parse_str, smp_fetch_url_param, acl_match_end, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_ip", acl_parse_ip, smp_fetch_url_param, acl_match_ip, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_len", acl_parse_int, smp_fetch_url_param, acl_match_len, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_reg", acl_parse_reg, smp_fetch_url_param, acl_match_reg, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_sub", acl_parse_str, smp_fetch_url_param, acl_match_sub, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_val", acl_parse_int, smp_fetch_url_param_val, acl_match_int, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp", "urlp", acl_parse_str, acl_match_str, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_beg", "urlp", acl_parse_str, acl_match_beg, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_dir", "urlp", acl_parse_str, acl_match_dir, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_dom", "urlp", acl_parse_str, acl_match_dom, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_end", "urlp", acl_parse_str, acl_match_end, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_ip", "urlp", acl_parse_ip, acl_match_ip, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_len", "urlp", acl_parse_int, acl_match_len, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_reg", "urlp", acl_parse_reg, acl_match_reg, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_sub", "urlp", acl_parse_str, acl_match_sub, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
{ "urlp_val", "urlp_val", acl_parse_int, acl_match_int, ACL_USE_L7REQ_VOLATILE, ARG2(1,STR,STR) },
|
||||
|
||||
{ NULL, NULL, NULL, NULL },
|
||||
{ /* END */ },
|
||||
}};
|
||||
|
||||
/************************************************************************/
|
||||
|
@ -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", acl_parse_ip, smp_fetch_dst, acl_match_ip, ACL_USE_TCP4_PERMANENT, 0 },
|
||||
{ "dst_port", acl_parse_int, smp_fetch_dport, acl_match_int, ACL_USE_TCP_PERMANENT, 0 },
|
||||
{ "src", acl_parse_ip, smp_fetch_src, acl_match_ip, ACL_USE_TCP4_PERMANENT, 0 },
|
||||
{ "src_port", acl_parse_int, smp_fetch_sport, acl_match_int, ACL_USE_TCP_PERMANENT, 0 },
|
||||
{ "dst", NULL, acl_parse_ip, acl_match_ip, ACL_USE_TCP4_PERMANENT, 0 },
|
||||
{ "dst_port", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP_PERMANENT, 0 },
|
||||
{ "src", NULL, acl_parse_ip, acl_match_ip, ACL_USE_TCP4_PERMANENT, 0 },
|
||||
{ "src_port", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP_PERMANENT, 0 },
|
||||
{ /* END */ },
|
||||
}};
|
||||
|
||||
|
106
src/session.c
106
src/session.c
@ -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", acl_parse_int, smp_fetch_sc1_bytes_in_rate, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_bytes_out_rate", acl_parse_int, smp_fetch_sc1_bytes_out_rate, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_clr_gpc0", acl_parse_int, smp_fetch_sc1_clr_gpc0, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_conn_cnt", acl_parse_int, smp_fetch_sc1_conn_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_conn_cur", acl_parse_int, smp_fetch_sc1_conn_cur, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_conn_rate", acl_parse_int, smp_fetch_sc1_conn_rate, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_get_gpc0", acl_parse_int, smp_fetch_sc1_get_gpc0, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_http_err_cnt", acl_parse_int, smp_fetch_sc1_http_err_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_http_err_rate", acl_parse_int, smp_fetch_sc1_http_err_rate, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_http_req_cnt", acl_parse_int, smp_fetch_sc1_http_req_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_http_req_rate", acl_parse_int, smp_fetch_sc1_http_req_rate, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_inc_gpc0", acl_parse_int, smp_fetch_sc1_inc_gpc0, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_kbytes_in", acl_parse_int, smp_fetch_sc1_kbytes_in, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
|
||||
{ "sc1_kbytes_out", acl_parse_int, smp_fetch_sc1_kbytes_out, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
|
||||
{ "sc1_sess_cnt", acl_parse_int, smp_fetch_sc1_sess_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_sess_rate", acl_parse_int, smp_fetch_sc1_sess_rate, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_trackers", acl_parse_int, smp_fetch_sc1_trackers, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_bytes_in_rate", acl_parse_int, smp_fetch_sc2_bytes_in_rate, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_bytes_out_rate", acl_parse_int, smp_fetch_sc2_bytes_out_rate, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_clr_gpc0", acl_parse_int, smp_fetch_sc2_clr_gpc0, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_conn_cnt", acl_parse_int, smp_fetch_sc2_conn_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_conn_cur", acl_parse_int, smp_fetch_sc2_conn_cur, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_conn_rate", acl_parse_int, smp_fetch_sc2_conn_rate, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_get_gpc0", acl_parse_int, smp_fetch_sc2_get_gpc0, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_http_err_cnt", acl_parse_int, smp_fetch_sc2_http_err_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_http_err_rate", acl_parse_int, smp_fetch_sc2_http_err_rate, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_http_req_cnt", acl_parse_int, smp_fetch_sc2_http_req_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_http_req_rate", acl_parse_int, smp_fetch_sc2_http_req_rate, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_inc_gpc0", acl_parse_int, smp_fetch_sc2_inc_gpc0, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_kbytes_in", acl_parse_int, smp_fetch_sc2_kbytes_in, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
|
||||
{ "sc2_kbytes_out", acl_parse_int, smp_fetch_sc2_kbytes_out, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
|
||||
{ "sc2_sess_cnt", acl_parse_int, smp_fetch_sc2_sess_cnt, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_sess_rate", acl_parse_int, smp_fetch_sc2_sess_rate, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_trackers", acl_parse_int, smp_fetch_sc2_trackers, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "src_bytes_in_rate", acl_parse_int, smp_fetch_src_bytes_in_rate, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_bytes_out_rate", acl_parse_int, smp_fetch_src_bytes_out_rate, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_clr_gpc0", acl_parse_int, smp_fetch_src_clr_gpc0, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_conn_cnt", acl_parse_int, smp_fetch_src_conn_cnt, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_conn_cur", acl_parse_int, smp_fetch_src_conn_cur, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_conn_rate", acl_parse_int, smp_fetch_src_conn_rate, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_get_gpc0", acl_parse_int, smp_fetch_src_get_gpc0, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_http_err_cnt", acl_parse_int, smp_fetch_src_http_err_cnt, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_http_err_rate", acl_parse_int, smp_fetch_src_http_err_rate, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_http_req_cnt", acl_parse_int, smp_fetch_src_http_req_cnt, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_http_req_rate", acl_parse_int, smp_fetch_src_http_req_rate, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_inc_gpc0", acl_parse_int, smp_fetch_src_inc_gpc0, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_kbytes_in", acl_parse_int, smp_fetch_src_kbytes_in, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_kbytes_out", acl_parse_int, smp_fetch_src_kbytes_out, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_sess_cnt", acl_parse_int, smp_fetch_src_sess_cnt, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_sess_rate", acl_parse_int, smp_fetch_src_sess_rate, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_updt_conn_cnt", acl_parse_int, smp_fetch_src_updt_conn_cnt, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "table_avl", acl_parse_int, smp_fetch_table_avl, acl_match_int, ACL_USE_NOTHING, ARG1(1,TAB) },
|
||||
{ "table_cnt", acl_parse_int, smp_fetch_table_cnt, acl_match_int, ACL_USE_NOTHING, ARG1(1,TAB) },
|
||||
{ "sc1_bytes_in_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_bytes_out_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_clr_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_conn_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_conn_cur", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_conn_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_get_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_http_err_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_http_err_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_http_req_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_http_req_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_inc_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_kbytes_in", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
|
||||
{ "sc1_kbytes_out", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
|
||||
{ "sc1_sess_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc1_trackers", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_bytes_in_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_bytes_out_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_clr_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_conn_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_conn_cur", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_conn_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_get_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_http_err_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_http_err_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_http_req_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_http_req_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_inc_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_kbytes_in", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
|
||||
{ "sc2_kbytes_out", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, 0 },
|
||||
{ "sc2_sess_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "sc2_trackers", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, 0 },
|
||||
{ "src_bytes_in_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_bytes_out_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_clr_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_conn_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_conn_cur", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_conn_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_get_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_http_err_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_http_err_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_http_req_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_http_req_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_inc_gpc0", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_kbytes_in", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_kbytes_out", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_sess_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_sess_rate", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "src_updt_conn_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_TCP4_VOLATILE, ARG1(1,TAB) },
|
||||
{ "table_avl", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,TAB) },
|
||||
{ "table_cnt", NULL, acl_parse_int, acl_match_int, ACL_USE_NOTHING, ARG1(1,TAB) },
|
||||
{ /* END */ },
|
||||
}};
|
||||
|
||||
|
@ -2967,41 +2967,41 @@ 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", acl_parse_int, smp_fetch_ssl_c_ca_err, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_ca_err_depth", acl_parse_int, smp_fetch_ssl_c_ca_err_depth, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_err", acl_parse_int, smp_fetch_ssl_c_err, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_i_dn", acl_parse_str, smp_fetch_ssl_c_i_dn, acl_match_str, ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
|
||||
{ "ssl_c_key_alg", acl_parse_str, smp_fetch_ssl_c_key_alg, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_notafter", acl_parse_str, smp_fetch_ssl_c_notafter, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_notbefore", acl_parse_str, smp_fetch_ssl_c_notbefore, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_sig_alg", acl_parse_str, smp_fetch_ssl_c_sig_alg, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_s_dn", acl_parse_str, smp_fetch_ssl_c_s_dn, acl_match_str, ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
|
||||
{ "ssl_c_serial", acl_parse_bin, smp_fetch_ssl_c_serial, acl_match_bin, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_used", acl_parse_nothing, smp_fetch_ssl_c_used, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_verify", acl_parse_int, smp_fetch_ssl_c_verify, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_version", acl_parse_int, smp_fetch_ssl_c_version, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_f_i_dn", acl_parse_str, smp_fetch_ssl_f_i_dn, acl_match_str, ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
|
||||
{ "ssl_f_key_alg", acl_parse_str, smp_fetch_ssl_f_key_alg, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_f_notafter", acl_parse_str, smp_fetch_ssl_f_notafter, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_f_notbefore", acl_parse_str, smp_fetch_ssl_f_notbefore, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_f_sig_alg", acl_parse_str, smp_fetch_ssl_f_sig_alg, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_f_s_dn", acl_parse_str, smp_fetch_ssl_f_s_dn, acl_match_str, ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
|
||||
{ "ssl_f_serial", acl_parse_bin, smp_fetch_ssl_f_serial, acl_match_bin, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_f_version", acl_parse_int, smp_fetch_ssl_f_version, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc", acl_parse_nothing, smp_fetch_ssl_fc, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_alg_keysize", acl_parse_int, smp_fetch_ssl_fc_alg_keysize, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_cipher", acl_parse_str, smp_fetch_ssl_fc_cipher, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_has_crt", acl_parse_nothing, smp_fetch_ssl_fc_has_crt, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_has_sni", acl_parse_nothing, smp_fetch_ssl_fc_has_sni, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_ca_err", NULL, acl_parse_int, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_ca_err_depth", NULL, acl_parse_int, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_err", NULL, acl_parse_int, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_i_dn", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
|
||||
{ "ssl_c_key_alg", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_notafter", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_notbefore", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_sig_alg", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_s_dn", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
|
||||
{ "ssl_c_serial", NULL, acl_parse_bin, acl_match_bin, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_used", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_verify", NULL, acl_parse_int, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_c_version", NULL, acl_parse_int, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_f_i_dn", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
|
||||
{ "ssl_f_key_alg", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_f_notafter", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_f_notbefore", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_f_sig_alg", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_f_s_dn", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, ARG2(0,STR,SINT) },
|
||||
{ "ssl_f_serial", NULL, acl_parse_bin, acl_match_bin, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_f_version", NULL, acl_parse_int, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_alg_keysize", NULL, acl_parse_int, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_cipher", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_has_crt", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_has_sni", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
#ifdef OPENSSL_NPN_NEGOTIATED
|
||||
{ "ssl_fc_npn", acl_parse_str, smp_fetch_ssl_fc_npn, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_npn", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
#endif
|
||||
{ "ssl_fc_protocol", acl_parse_str, smp_fetch_ssl_fc_protocol, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_use_keysize", acl_parse_int, smp_fetch_ssl_fc_use_keysize, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_sni", acl_parse_str, smp_fetch_ssl_fc_sni, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_sni_end", acl_parse_str, smp_fetch_ssl_fc_sni, acl_match_end, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_sni_reg", acl_parse_reg, smp_fetch_ssl_fc_sni, acl_match_reg, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ NULL, NULL, NULL, NULL },
|
||||
{ "ssl_fc_protocol", NULL, acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_use_keysize", NULL, acl_parse_int, acl_match_int, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_sni", "ssl_fc_sni", acl_parse_str, acl_match_str, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_sni_end", "ssl_fc_sni", acl_parse_str, acl_match_end, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ "ssl_fc_sni_reg", "ssl_fc_sni", acl_parse_reg, acl_match_reg, ACL_USE_L6REQ_PERMANENT, 0 },
|
||||
{ /* END */ },
|
||||
}};
|
||||
|
||||
/* Note: must not be declared <const> as its list will be overwritten.
|
||||
|
Loading…
x
Reference in New Issue
Block a user