From 0b9ce82dfa2d6a78943f1c8d416b6797c47b1da0 Mon Sep 17 00:00:00 2001 From: Baptiste Assmann Date: Tue, 30 Jan 2018 08:10:20 +0100 Subject: [PATCH] MINOR: obj_type: new object type for struct stream This patch creates a new obj_type for the struct stream in HAProxy. --- include/proto/obj_type.h | 14 ++++++++++++++ include/types/obj_type.h | 1 + include/types/stream.h | 4 +++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/include/proto/obj_type.h b/include/proto/obj_type.h index 47273caa5f..afb8d90475 100644 --- a/include/proto/obj_type.h +++ b/include/proto/obj_type.h @@ -30,6 +30,7 @@ #include #include #include +#include #include static inline enum obj_type obj_type(enum obj_type *t) @@ -51,6 +52,7 @@ static inline const char *obj_type_name(enum obj_type *t) case OBJ_TYPE_CONN: return "CONN"; case OBJ_TYPE_SRVRQ: return "SRVRQ"; case OBJ_TYPE_CS: return "CS"; + case OBJ_TYPE_STREAM: return "STREAM"; default: return "!INVAL!"; } } @@ -158,6 +160,18 @@ static inline struct dns_srvrq *objt_dns_srvrq(enum obj_type *t) return __objt_dns_srvrq(t); } +static inline struct stream *__objt_stream(enum obj_type *t) +{ + return container_of(t, struct stream, obj_type); +} + +static inline struct stream *objt_stream(enum obj_type *t) +{ + if (!t || *t != OBJ_TYPE_STREAM) + return NULL; + return __objt_stream(t); +} + static inline void *obj_base_ptr(enum obj_type *t) { switch (obj_type(t)) { diff --git a/include/types/obj_type.h b/include/types/obj_type.h index e141d69e55..94107181ec 100644 --- a/include/types/obj_type.h +++ b/include/types/obj_type.h @@ -41,6 +41,7 @@ enum obj_type { OBJ_TYPE_CONN, /* object is a struct connection */ OBJ_TYPE_SRVRQ, /* object is a struct dns_srvrq */ OBJ_TYPE_CS, /* object is a struct conn_stream */ + OBJ_TYPE_STREAM, /* object is a struct stream */ OBJ_TYPE_ENTRIES /* last one : number of entries */ } __attribute__((packed)) ; diff --git a/include/types/stream.h b/include/types/stream.h index 93a39a3ecc..b6a3e84951 100644 --- a/include/types/stream.h +++ b/include/types/stream.h @@ -151,7 +151,9 @@ struct stream { struct stktable *table; } store[8]; /* tracked stickiness values to store */ int store_count; - /* 4 unused bytes here */ + + enum obj_type obj_type; /* object type == OBJ_TYPE_STREAM */ + /* 3 unused bytes here */ struct stkctr stkctr[MAX_SESS_STKCTR]; /* content-aware stick counters */ -- 2.47.3