[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:
Willy Tarreau 2010-06-06 14:30:13 +02:00
parent 08d5f98294
commit 69b870f862
3 changed files with 6 additions and 1 deletions

View File

@ -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

View File

@ -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))

View File

@ -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) },
}; };
/* /*