From a389c9e1e39cbdb88eb06206fb1daf39798ac5d5 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 7 Oct 2020 17:49:42 +0200 Subject: [PATCH] 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. --- include/haproxy/proxy-t.h | 1 + src/cfgparse.c | 3 ++- src/peers.c | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) 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 @@ enum pr_mode { 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 @@ int check_config_validity() 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 @@ void peers_setup_frontend(struct proxy *fe) { 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); -- 1.7.10.4