struct applet promex_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<PROMEX>", /* used for logging */
.init = promex_appctx_init,
.release = promex_appctx_release,
#undef _
}
+#define APPLET_FL_NEW_API 0x00000001 /* Set if the applet is based on the new API (using applet's buffers) */
+
/* Applet descriptor */
struct applet {
enum obj_type obj_type; /* object type = OBJ_TYPE_APPLET */
+ unsigned int flags; /* APPLET_FL_* flags */
/* 3 unused bytes here */
char *name; /* applet's name to report in logs */
int (*init)(struct appctx *); /* callback to init resources, may be NULL.
struct applet http_cache_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<CACHE>", /* used for logging */
.fct = http_cache_io_handler,
.rcv_buf = appctx_htx_rcv_buf,
static struct applet cli_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<CLI>", /* used for logging */
.fct = cli_io_handler,
.rcv_buf = appctx_raw_rcv_buf,
/* master CLI */
static struct applet mcli_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<MCLI>", /* used for logging */
.fct = cli_io_handler,
.rcv_buf = appctx_raw_rcv_buf,
/* DNS tcp session applet */
static struct applet dns_session_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<STRMDNS>", /* used for logging */
.fct = dns_session_io_handler,
.rcv_buf = appctx_raw_rcv_buf,
struct applet spoe_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<SPOE>", /* used for logging */
.fct = spoe_handle_appctx,
.init = spoe_init_appctx,
/* This struct define the applet. */
static struct applet update_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<LUA_TCP>",
.fct = hlua_socket_handler,
.rcv_buf = appctx_raw_rcv_buf,
/* Add applet pointer in the rule. */
rule->applet.obj_type = OBJ_TYPE_APPLET;
+ rule->applet.flags = APPLET_FL_NEW_API;
rule->applet.name = fcn->name;
rule->applet.init = hlua_applet_http_init;
rule->applet.rcv_buf = appctx_htx_rcv_buf;
/* Add applet pointer in the rule. */
rule->applet.obj_type = OBJ_TYPE_APPLET;
+ rule->applet.flags = APPLET_FL_NEW_API;
rule->applet.name = fcn->name;
rule->applet.init = hlua_applet_tcp_init;
rule->applet.rcv_buf = appctx_raw_rcv_buf;
/* HTTP client applet */
static struct applet httpclient_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<HTTPCLIENT>",
.fct = httpclient_applet_io_handler,
.rcv_buf = appctx_htx_rcv_buf,
static struct applet syslog_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<SYSLOG>", /* used for logging */
.fct = syslog_io_handler,
.rcv_buf = appctx_raw_rcv_buf,
static struct applet peer_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<PEER>", /* used for logging */
.fct = peer_io_handler,
.rcv_buf = appctx_raw_rcv_buf,
static struct applet sink_forward_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<SINKFWD>", /* used for logging */
.fct = sink_forward_io_handler,
.rcv_buf = appctx_raw_rcv_buf,
static struct applet sink_forward_oc_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<SINKFWDOC>", /* used for logging */
.fct = sink_forward_oc_io_handler,
.rcv_buf = appctx_raw_rcv_buf,
struct applet http_stats_applet = {
.obj_type = OBJ_TYPE_APPLET,
+ .flags = APPLET_FL_NEW_API,
.name = "<STATS>", /* used for logging */
.fct = http_stats_io_handler,
.rcv_buf = appctx_htx_rcv_buf,