]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: applet: Add support for flags on applets with a flag about the new API
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 25 Jul 2025 13:40:29 +0000 (15:40 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 25 Jul 2025 13:44:02 +0000 (15:44 +0200)
A new field was added in the applet structure to be able to set flags on the
applets The first one is related to the new API. APPLET_FL_NEW_API is set
for applets based on the new API. It was set on all HAProxy's applets.

12 files changed:
addons/promex/service-prometheus.c
include/haproxy/applet-t.h
src/cache.c
src/cli.c
src/dns.c
src/flt_spoe.c
src/hlua.c
src/http_client.c
src/log.c
src/peers.c
src/sink.c
src/stats-html.c

index 42240a9d69d52e7db08ec832c0422b28b5a534d7..33e6f5a73df3283279e4d4c56a94a1e7cb5940cc 100644 (file)
@@ -2144,6 +2144,7 @@ static void promex_appctx_handle_io(struct appctx *appctx)
 
 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,
index 9c0eac9e3a7414a949150e7f88aed4046dd9d2a7..adeb9da12f6adc74a41ca2720034d9e9968cd995 100644 (file)
@@ -81,9 +81,12 @@ static forceinline char *appctx_show_flags(char *buf, size_t len, const char *de
 #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.
index 04dfe7af15ff24d8bd470bb704123b9c30ed0470..c4f2a5cf43ffe47d44a85eb873a62b8516a0bd26 100644 (file)
@@ -3139,6 +3139,7 @@ INITCALL1(STG_REGISTER, http_req_keywords_register, &http_req_actions);
 
 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,
index 13e8a34ed3c74716de8d968d07df0bf1c8df557d..6ca73059d35b1eb4bec3b4256adb4d94acb5c766 100644 (file)
--- a/src/cli.c
+++ b/src/cli.c
@@ -3899,6 +3899,7 @@ error:
 
 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,
@@ -3909,6 +3910,7 @@ static struct applet cli_applet = {
 /* 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,
index 9c36b598e4dd63ca21e5b714beff01ae3f70459a..bb4ffc6d8fff5743c84cd593d08b1d1386dbb2eb 100644 (file)
--- a/src/dns.c
+++ b/src/dns.c
@@ -952,6 +952,7 @@ static void dns_session_release(struct appctx *appctx)
 /* 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,
index 6810008f22092d82dc4a4a9b5e46af59ac144369..3a42076cfc8aaaac5ec435501bcd9b0c21b3978c 100644 (file)
@@ -538,6 +538,7 @@ static void spoe_handle_appctx(struct appctx *appctx)
 
 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,
index 32cf20ff8e5c1d800563f9dc1ef44fe294384341..314c5e20d75908cf20013d81cdc8fc15bf10ab76 100644 (file)
@@ -3437,6 +3437,7 @@ static int hlua_socket_getsockname(struct lua_State *L)
 /* 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,
@@ -11610,6 +11611,7 @@ static enum act_parse_ret action_register_service_http(const char **args, int *c
 
        /* 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;
@@ -11797,6 +11799,7 @@ static enum act_parse_ret action_register_service_tcp(const char **args, int *cu
 
        /* 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;
index 4a3524b5d65e2cd98e60063cf0671271a66eba3f..33490bae9eb940d85446b4c2ee057d811241805e 100644 (file)
@@ -1019,6 +1019,7 @@ void httpclient_applet_release(struct appctx *appctx)
 /* 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,
index b5d85b9b3a59f4da432daef82a305c1b0eb35c79..3eca3c154eced419215b5efea929a498e21d42c8 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -5967,6 +5967,7 @@ out:
 
 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,
index 88e5cf50ef0f1d377ef4d155eb7173f22b334f6e..e116e2fdd3ac6c45ebb5b9363f02f1007e610826 100644 (file)
@@ -3228,6 +3228,7 @@ out:
 
 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,
index ce948ff009596ed055294d22f6b76e5309a41ca3..22e5a3636c4ff4e44d35dc865d36e42f93e767d4 100644 (file)
@@ -600,6 +600,7 @@ static void sink_forward_session_release(struct appctx *appctx)
 
 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,
@@ -610,6 +611,7 @@ static struct applet sink_forward_applet = {
 
 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,
index 045af08577051ff42a4ee8591af2b05533e8ca4c..cd93630f62b52ed1bb09c93a7ca5d427337d5fac 100644 (file)
@@ -2103,6 +2103,7 @@ static void http_stats_release(struct appctx *appctx)
 
 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,