MEDIUM: proxy: add mode PR_MODE_PEERS to flag peers frontends
For now we cannot easily distinguish a peers frontend from another one,
which will be problematic to avoid reporting them when stopping their
listeners. Let's add PR_MODE_PEERS for this. It's not supposed to cause
any issue since all non-HTTP proxies are handled similarly now.
diff --git a/include/haproxy/proxy-t.h b/include/haproxy/proxy-t.h
index a17537a..da728a3 100644
--- a/include/haproxy/proxy-t.h
+++ b/include/haproxy/proxy-t.h
@@ -49,6 +49,7 @@
PR_MODE_HEALTH,
PR_MODE_CLI,
PR_MODE_SYSLOG,
+ PR_MODE_PEERS,
PR_MODES
} __attribute__((packed));
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 0bc4b82..12585d0 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -2355,9 +2355,10 @@
cfgerr += proxy_cfg_ensure_no_http(curproxy);
break;
case PR_MODE_SYSLOG:
+ case PR_MODE_PEERS:
case PR_MODES:
/* should not happen, bug gcc warn missing switch statement */
- ha_alert("config : %s '%s' cannot use syslog mode for this proxy.\n",
+ ha_alert("config : %s '%s' cannot use peers or syslog mode for this proxy. NOTE: PLEASE REPORT THIS TO DEVELOPERS AS YOU'RE NOT SUPPOSED TO BE ABLE TO CREATE A CONFIGURATION TRIGGERING THIS!\n",
proxy_type_str(curproxy), curproxy->id);
cfgerr++;
break;
diff --git a/src/peers.c b/src/peers.c
index 8402cf3..3edd643 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -2521,6 +2521,7 @@
{
fe->last_change = now.tv_sec;
fe->cap = PR_CAP_FE | PR_CAP_BE;
+ fe->mode = PR_MODE_PEERS;
fe->maxconn = 0;
fe->conn_retries = CONN_RETRIES;
fe->timeout.client = MS_TO_TICKS(5000);