From: Willy Tarreau Date: Wed, 7 Oct 2020 15:49:42 +0000 (+0200) Subject: MEDIUM: proxy: add mode PR_MODE_PEERS to flag peers frontends X-Git-Tag: v2.3-dev6~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a389c9e1e39cbdb88eb06206fb1daf39798ac5d5;p=thirdparty%2Fhaproxy.git 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 a17537aa5a..da728a37ed 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 0bc4b82a26..12585d0618 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 8402cf3299..3edd643d60 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);