MINOR: ncbuf: extract common types

ncbuf is a module which provide a non-contiguous buffer type
implementation. This patch extracts some basic types related to it into
a new file ncbuf_common.h.

This patch will be useful to provide a new non-contiguous buffer
alternative implementation based on a bitmap.

This patch is not a bug fix. However, it is necessary for ncbmbuf
implementation which will be required to fix a QUIC issue on CRYPTO
frames parsing. This, it will be necessary to backport the current patch
prior to the fix to come.
This commit is contained in:
Amaury Denoyelle 2025-10-14 11:35:21 +02:00
parent f936feb3a9
commit 59f0bafef2
2 changed files with 29 additions and 23 deletions

View File

@ -1,6 +1,8 @@
#ifndef _HAPROXY_NCBUF_T_H
#define _HAPROXY_NCBUF_T_H
#include <haproxy/ncbuf_common-t.h>
/* **** public documentation ****
*
* <ncbuf> stands for non-contiguous circular buffer. This type can be used to
@ -62,15 +64,6 @@
*
*/
#include <inttypes.h>
/* ncb_sz_t is the basic type used in ncbuf to represent data and gap sizes.
* Use a bigger type to extend the maximum data size supported in the buffer.
* On the other hand, this also increases the minimal gap size which can
* cause more rejection for add/delete operations.
*/
typedef uint32_t ncb_sz_t;
/* reserved size before head used to store first data block size */
#define NCB_RESERVED_SZ (sizeof(ncb_sz_t))
@ -87,18 +80,4 @@ struct ncbuf {
ncb_sz_t head;
};
enum ncb_ret {
NCB_RET_OK = 0, /* no error */
NCB_RET_GAP_SIZE, /* operation would create a too small gap */
NCB_RET_DATA_REJ, /* operation would overwrite data with different one */
};
/* Define how insert is conducted in regards with already stored data. */
enum ncb_add_mode {
NCB_ADD_PRESERVE, /* keep the already stored data and only insert in gaps */
NCB_ADD_OVERWRT, /* overwrite old data with new ones */
NCB_ADD_COMPARE, /* compare before insert : if new data are different do not proceed */
};
#endif /* _HAPROXY_NCBUF_T_H */

View File

@ -0,0 +1,27 @@
#ifndef _HAPROXY_NCBUF_COMMON_T_H
#define _HAPROXY_NCBUF_COMMON_T_H
#include <inttypes.h>
/* ncb_sz_t is the basic type used in ncbuf to represent data and gap sizes.
* Use a bigger type to extend the maximum data size supported in the buffer.
* On the other hand, this also increases the minimal gap size which can
* cause more rejection for add/delete operations.
*/
typedef uint32_t ncb_sz_t;
enum ncb_ret {
NCB_RET_OK = 0, /* no error */
NCB_RET_GAP_SIZE, /* operation would create a too small gap */
NCB_RET_DATA_REJ, /* operation would overwrite data with different one */
};
/* Define how insert is conducted in regards with already stored data. */
enum ncb_add_mode {
NCB_ADD_PRESERVE, /* keep the already stored data and only insert in gaps */
NCB_ADD_OVERWRT, /* overwrite old data with new ones */
NCB_ADD_COMPARE, /* compare before insert : if new data are different do not proceed */
};
#endif /* _HAPROXY_NCBUF_COMMON_T_H */