From 431fc98ce5dbd730aa54f732103cb09855fb30fc Mon Sep 17 00:00:00 2001 From: Frederic Lecaille Date: Thu, 19 Mar 2026 14:43:50 +0100 Subject: [PATCH] MINOR: obj_type: add OBJ_TYPE_HXLOAD for haload stream objects This patch introduces the OBJ_TYPE_HXLOAD object type to represent haload stream objects (struct hastream). It also adds the associated inline helper functions objt_hastream() and __objt_hastream() to allow safe casting and retrieval of hastream contexts from a generic object pointer, following the standard container_of pattern. --- include/haproxy/obj_type-t.h | 1 + include/haproxy/obj_type.h | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/include/haproxy/obj_type-t.h b/include/haproxy/obj_type-t.h index fd232b347..4c75d6d8d 100644 --- a/include/haproxy/obj_type-t.h +++ b/include/haproxy/obj_type-t.h @@ -47,6 +47,7 @@ enum obj_type { OBJ_TYPE_DGRAM, /* object is a struct quic_dgram */ #endif OBJ_TYPE_HATERM, /* object is a struct hstream */ + OBJ_TYPE_HXLOAD, /* object is a struct hxstream */ OBJ_TYPE_ENTRIES /* last one : number of entries */ } __attribute__((packed)) ; diff --git a/include/haproxy/obj_type.h b/include/haproxy/obj_type.h index bd850b969..1e29476de 100644 --- a/include/haproxy/obj_type.h +++ b/include/haproxy/obj_type.h @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -203,6 +204,19 @@ static inline struct hstream *objt_hstream(enum obj_type *t) return __objt_hstream(t); } +static inline struct hastream *__objt_hastream(enum obj_type *t) +{ + return container_of(t, struct hastream, obj_type); +} + +static inline struct hastream *objt_hastream(enum obj_type *t) +{ + if (!t || *t != OBJ_TYPE_HXLOAD) + return NULL; + + return __objt_hastream(t); +} + #ifdef USE_QUIC static inline struct quic_dgram *__objt_dgram(enum obj_type *t) {