mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-28 15:42:30 +00:00
[MINOR] stick_table: provide functions to return stksess data from a type
This function does the indirection job in the table to find the pointer to the real data matching the requested type.
This commit is contained in:
parent
056f5683e3
commit
68129b90eb
@ -25,6 +25,9 @@
|
||||
|
||||
#include <types/stick_table.h>
|
||||
|
||||
#define stktable_data_size(type) (sizeof(((union stktable_data*)0)->type))
|
||||
#define stktable_data_cast(ptr, type) ((union stktable_data*)(ptr))->type
|
||||
|
||||
struct stksess *stksess_new(struct stktable *t, struct stktable_key *key);
|
||||
void stksess_setkey(struct stktable *t, struct stksess *ts, struct stktable_key *key);
|
||||
void stksess_free(struct stktable *t, struct stksess *ts);
|
||||
@ -57,4 +60,21 @@ static inline int stktable_alloc_data_type(struct stktable *t, int type)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* return pointer for data type <type> in sticky session <ts> of table <t>, or
|
||||
* NULL if either <ts> is NULL or the type is not stored.
|
||||
*/
|
||||
static inline void *stktable_data_ptr(struct stktable *t, struct stksess *ts, int type)
|
||||
{
|
||||
if (type >= STKTABLE_DATA_TYPES)
|
||||
return NULL;
|
||||
|
||||
if (!t->data_ofs[type]) /* type not stored */
|
||||
return NULL;
|
||||
|
||||
if (!ts)
|
||||
return NULL;
|
||||
|
||||
return (void *)ts + t->data_ofs[type];
|
||||
}
|
||||
|
||||
#endif /* _PROTO_STICK_TABLE_H */
|
||||
|
@ -50,9 +50,6 @@ union stktable_data {
|
||||
unsigned int conn_cum;
|
||||
};
|
||||
|
||||
#define stktable_data_size(type) (sizeof(((union stktable_data*)0)->type))
|
||||
#define stktable_data_cast(ptr, type) ((union stktable_data*)(ptr))->type
|
||||
|
||||
/* known data types */
|
||||
struct stktable_data_type {
|
||||
const char *name; /* name of the data type */
|
||||
|
@ -22,11 +22,10 @@
|
||||
#include <ebmbtree.h>
|
||||
#include <ebsttree.h>
|
||||
|
||||
#include <types/stick_table.h>
|
||||
|
||||
#include <proto/pattern.h>
|
||||
#include <proto/proxy.h>
|
||||
#include <proto/session.h>
|
||||
#include <proto/stick_table.h>
|
||||
#include <proto/task.h>
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user