mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-11 05:54:39 +00:00
[MINOR] stick_table: add support for "conn_cum" data type.
This one can be parsed on the "stick-table" after with the "store" keyword. It will hold the number of connections matching the entry, for use with ACLs or anything else.
This commit is contained in:
parent
08d5f98294
commit
69b870f862
@ -5053,7 +5053,9 @@ stick-table type {ip | integer | string [len <length>] } size <size>
|
|||||||
may be used by ACLs in order to control various criteria related
|
may be used by ACLs in order to control various criteria related
|
||||||
to the activity of the client matching the stick-table. For each
|
to the activity of the client matching the stick-table. For each
|
||||||
item specified here, the size of each entry will be inflated so
|
item specified here, the size of each entry will be inflated so
|
||||||
that the additional data can fit.
|
that the additional data can fit. At the moment, only "conn_cum"
|
||||||
|
is supported, which can be used to store and retrieve the total
|
||||||
|
number of connections matching the entry since it was created.
|
||||||
|
|
||||||
The is only one stick-table per backend. At the moment of writing this doc,
|
The is only one stick-table per backend. At the moment of writing this doc,
|
||||||
it does not seem useful to have multiple tables per backend. If this happens
|
it does not seem useful to have multiple tables per backend. If this happens
|
||||||
|
@ -41,11 +41,13 @@ enum {
|
|||||||
|
|
||||||
/* The types of extra data we can store in a stick table */
|
/* The types of extra data we can store in a stick table */
|
||||||
enum {
|
enum {
|
||||||
|
STKTABLE_DT_CONN_CUM, /* cumulated number of connections */
|
||||||
STKTABLE_DATA_TYPES /* Number of data types, must always be last */
|
STKTABLE_DATA_TYPES /* Number of data types, must always be last */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* stick_table extra data. This is mainly used for casting or size computation */
|
/* stick_table extra data. This is mainly used for casting or size computation */
|
||||||
union stktable_data {
|
union stktable_data {
|
||||||
|
unsigned int conn_cum;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define stktable_data_size(type) (sizeof(((union stktable_data*)0)->type))
|
#define stktable_data_size(type) (sizeof(((union stktable_data*)0)->type))
|
||||||
|
@ -477,6 +477,7 @@ int stktable_compatible_pattern(struct pattern_expr *expr, unsigned long table_t
|
|||||||
|
|
||||||
/* Extra data types processing */
|
/* Extra data types processing */
|
||||||
struct stktable_data_type stktable_data_types[STKTABLE_DATA_TYPES] = {
|
struct stktable_data_type stktable_data_types[STKTABLE_DATA_TYPES] = {
|
||||||
|
[STKTABLE_DT_CONN_CUM] = { .name = "conn_cum", .data_length = stktable_data_size(conn_cum) },
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user