From 189f74d4ff7b89995a89191bed9f8ae795fdbccf Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Fri, 15 Mar 2024 09:01:11 +0100 Subject: [PATCH] MINOR: cfgparse: Add a global option to expose deprecated directives Similarly to "expose-exprimental-directives" option, there is no a global option to expose some deprecated directives. Idea is to have a way to silent warnings about deprecated directives when there is no alternative solution. Of course, deprecated directives covered by this option are not listed and may change. It is only a best effort to let users upgrade smoothly. --- doc/configuration.txt | 7 +++++++ include/haproxy/global.h | 1 + src/cfgparse-global.c | 3 +++ src/haproxy.c | 1 + 4 files changed, 12 insertions(+) diff --git a/doc/configuration.txt b/doc/configuration.txt index 34db076bb..5b8188d61 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -1262,6 +1262,7 @@ The following keywords are supported in the "global" section : - deviceatlas-log-level - deviceatlas-properties-cookie - deviceatlas-separator + - expose-deprecated-directives - expose-experimental-directives - external-check - fd-hard-limit @@ -1738,6 +1739,12 @@ deviceatlas-separator Sets the character separator for the API properties results. This directive is optional and set to | by default if not set. +expose-deprecated-directives + This statement must appear before using some directives tagged as deprecated + to silent warnings and make sure the config file will not be rejected. Not + all deprecated directives are concerned, only those without any alternative + solution. + expose-experimental-directives This statement must appear before using directives tagged as experimental or the config file will be rejected. diff --git a/include/haproxy/global.h b/include/haproxy/global.h index 2e7fa6bff..555346878 100644 --- a/include/haproxy/global.h +++ b/include/haproxy/global.h @@ -78,6 +78,7 @@ static inline int already_warned(unsigned int warning) } extern unsigned int experimental_directives_allowed; +extern unsigned int deprecated_directives_allowed; struct cfg_keyword; int check_kw_experimental(struct cfg_keyword *kw, const char *file, int linenum, diff --git a/src/cfgparse-global.c b/src/cfgparse-global.c index f31e7a05a..b173511c9 100644 --- a/src/cfgparse-global.c +++ b/src/cfgparse-global.c @@ -75,6 +75,9 @@ int cfg_parse_global(const char *file, int linenum, char **args, int kwm) alertif_too_many_args(0, file, linenum, args, &err_code); goto out; } + else if (strcmp(args[0], "expose-deprecated-directives") == 0) { + deprecated_directives_allowed = 1; + } else if (strcmp(args[0], "expose-experimental-directives") == 0) { experimental_directives_allowed = 1; } diff --git a/src/haproxy.c b/src/haproxy.c index b83c20eb8..723335a6e 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -267,6 +267,7 @@ unsigned int warned = 0; unsigned int tainted = 0; unsigned int experimental_directives_allowed = 0; +unsigned int deprecated_directives_allowed = 0; int check_kw_experimental(struct cfg_keyword *kw, const char *file, int linenum, char **errmsg)