From 960f2cb0565f2d1d0bebd86f732e08108f3bda2f Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 24 Nov 2016 12:02:29 +0100 Subject: [PATCH] MINOR: proxy: create new function cli_find_frontend() to find a frontend Several CLI commands require a frontend, so let's have a function to look this one up and prepare the appropriate error message and the appctx's state in case of failure. --- include/proto/proxy.h | 2 ++ src/proxy.c | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/include/proto/proxy.h b/include/proto/proxy.h index 2b649665e..a0fa454d4 100644 --- a/include/proto/proxy.h +++ b/include/proto/proxy.h @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -56,6 +57,7 @@ int proxy_cfg_ensure_no_http(struct proxy *curproxy); void init_new_proxy(struct proxy *p); int get_backend_server(const char *bk_name, const char *sv_name, struct proxy **bk, struct server **sv); +struct proxy *cli_find_frontend(struct appctx *appctx, const char *arg); /* * This function returns a string containing the type of the proxy in a format diff --git a/src/proxy.c b/src/proxy.c index dc6d3e1c6..86b8384a5 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -29,6 +29,7 @@ #include #include +#include #include #include #include @@ -1216,6 +1217,29 @@ static struct cfg_kw_list cfg_kws = {ILH, { { 0, NULL, NULL }, }}; +/* Expects to find a frontend named and returns it, otherwise displays various + * adequate error messages and returns NULL. This function is designed to be used by + * functions requiring a frontend on the CLI. + */ +struct proxy *cli_find_frontend(struct appctx *appctx, const char *arg) +{ + struct proxy *px; + + if (!*arg) { + appctx->ctx.cli.msg = "A frontend name is expected.\n"; + appctx->st0 = STAT_CLI_PRINT; + return NULL; + } + + px = proxy_fe_by_name(arg); + if (!px) { + appctx->ctx.cli.msg = "No such frontend.\n"; + appctx->st0 = STAT_CLI_PRINT; + return NULL; + } + return px; +} + __attribute__((constructor)) static void __proxy_module_init(void) {