]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: listener: add listener_index_id() to index a listener by its ID
authorWilly Tarreau <w@1wt.eu>
Sat, 23 Aug 2025 17:37:26 +0000 (19:37 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 16 Sep 2025 07:23:46 +0000 (09:23 +0200)
This avoids needlessly exposing the tree's root and the mechanics outside
of the low-level code.

include/haproxy/listener.h
src/cfgparse.c
src/listener.c

index 296fbd13973bdd1dabb76799fcc803d7cc03c026..88146e0a49d8b32a9eb730880a6b7021e17838d1 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 
+#include <import/eb32tree.h>
+
 #include <haproxy/api.h>
 #include <haproxy/listener-t.h>
+#include <haproxy/proxy-t.h>
 
 struct proxy;
 struct task;
@@ -236,6 +239,12 @@ enum li_status get_li_status(struct listener *l);
 /* number of times an accepted connection resulted in maxconn being reached */
 extern ullong maxconn_reached;
 
+/* index listener <li>'s id into proxy <px>'s used_listener_id */
+static inline void listener_index_id(struct proxy *px, struct listener *li)
+{
+       eb32_insert(&px->conf.used_listener_id, &li->conf.id);
+}
+
 static inline uint accept_queue_ring_len(const struct accept_queue_ring *ring)
 {
        uint idx, head, tail, len;
index b03628a067bf2fce46e5400dcb619c891b8202f2..3aef28aee22b28c8ee20156296eaf64b4b3229d7 100644 (file)
@@ -4292,7 +4292,7 @@ init_proxies_list_stage2:
                                }
                                next_id = listener_get_next_id(curproxy, next_id);
                                listener->conf.id.key = listener->luid = next_id;
-                               eb32_insert(&curproxy->conf.used_listener_id, &listener->conf.id);
+                               listener_index_id(curproxy, listener);
                        }
                        next_id++;
 
index 5f74abe5a1489f7f71db52bea8185b35cdd48fe3..87ac573ed88f63e719917ceddf5e79eb879d8e9a 100644 (file)
@@ -1874,7 +1874,7 @@ int bind_complete_thread_setup(struct bind_conf *bind_conf, int *err_code)
                                        tmp_li->luid = 0;
                                        eb32_delete(&tmp_li->conf.id);
                                        if (new_li->luid)
-                                               eb32_insert(&fe->conf.used_listener_id, &new_li->conf.id);
+                                               listener_index_id(fe, new_li);
                                        new_li = tmp_li;
                                }
                        }
@@ -1898,7 +1898,7 @@ int bind_complete_thread_setup(struct bind_conf *bind_conf, int *err_code)
                        li->luid = 0;
                        eb32_delete(&li->conf.id);
                        if (new_li->luid)
-                               eb32_insert(&fe->conf.used_listener_id, &new_li->conf.id);
+                               listener_index_id(fe, new_li);
                }
        }
 
@@ -2256,7 +2256,7 @@ static int bind_parse_id(char **args, int cur_arg, struct proxy *px, struct bind
                return ERR_ALERT | ERR_FATAL;
        }
 
-       eb32_insert(&px->conf.used_listener_id, &new->conf.id);
+       listener_index_id(px, new);
        return 0;
 }