MINOR: stats: add helper to get status string

move listen status to a helper, defining both status enum and string
definition.
this will be helpful to be reused in prometheus code. It also removes
this hard-to-read nested ternary.

Signed-off-by: William Dauchy <wdauchy@gmail.com>
diff --git a/include/haproxy/listener-t.h b/include/haproxy/listener-t.h
index ce5ed40..7d3998e 100644
--- a/include/haproxy/listener-t.h
+++ b/include/haproxy/listener-t.h
@@ -84,6 +84,15 @@
  * not rely on this state.
  */
 
+/* listener status for stats */
+enum li_status {
+	LI_STATUS_WAITING = 0,
+	LI_STATUS_OPEN,
+	LI_STATUS_FULL,
+
+	LI_STATE_COUNT /* must be last */
+};
+
 /* listener socket options */
 #define LI_O_NONE               0x0000
 #define LI_O_NOLINGER           0x0001  /* disable linger on this socket */
diff --git a/include/haproxy/listener.h b/include/haproxy/listener.h
index 1be8551..f229efa 100644
--- a/include/haproxy/listener.h
+++ b/include/haproxy/listener.h
@@ -218,6 +218,9 @@
 
 extern struct accept_queue_ring accept_queue_rings[MAX_THREADS] __attribute__((aligned(64)));
 
+extern const char* li_status_st[LI_STATE_COUNT];
+enum li_status get_li_status(struct listener *l);
+
 #endif /* _HAPROXY_LISTENER_H */
 
 /*
diff --git a/src/listener.c b/src/listener.c
index 0b929b9..9ca910b 100644
--- a/src/listener.c
+++ b/src/listener.c
@@ -46,6 +46,12 @@
 static struct mt_list global_listener_queue = MT_LIST_HEAD_INIT(global_listener_queue);
 static struct task *global_listener_queue_task;
 
+/* listener status for stats */
+const char* li_status_st[LI_STATE_COUNT] = {
+	[LI_STATUS_WAITING] = "WAITING",
+	[LI_STATUS_OPEN]    = "OPEN",
+	[LI_STATUS_FULL]    = "FULL",
+};
 
 #if defined(USE_THREAD)
 
@@ -183,6 +189,18 @@
 
 #endif // USE_THREAD
 
+/* helper to get listener status for stats */
+enum li_status get_li_status(struct listener *l)
+{
+	if (!l->maxconn || l->nbconn < l->maxconn) {
+		if (l->state == LI_LIMITED)
+			return LI_STATUS_WAITING;
+		else
+			return LI_STATUS_OPEN;
+	}
+	return LI_STATUS_FULL;
+}
+
 /* adjust the listener's state and its proxy's listener counters if needed.
  * It must be called under the listener's lock, but uses atomic ops to change
  * the proxy's counters so that the proxy lock is not needed.
diff --git a/src/stats.c b/src/stats.c
index 1e0db0b..a63178d 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -1898,7 +1898,7 @@
 				metric = mkf_u64(FN_COUNTER, l->counters->denied_sess);
 				break;
 			case ST_F_STATUS:
-				metric = mkf_str(FO_STATUS, (!l->maxconn || l->nbconn < l->maxconn) ? (l->state == LI_LIMITED) ? "WAITING" : "OPEN" : "FULL");
+				metric = mkf_str(FO_STATUS, li_status_st[get_li_status(l)]);
 				break;
 			case ST_F_PID:
 				metric = mkf_u32(FO_KEY, relative_pid);