From: Willy Tarreau Date: Mon, 14 Jan 2019 15:04:01 +0000 (+0100) Subject: MINOR: backend: add new fields in lbprm to store more LB options X-Git-Tag: v2.0-dev1~208 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=20e68378f1e20112458bbee4c9c3646a74261b5a;p=thirdparty%2Fhaproxy.git MINOR: backend: add new fields in lbprm to store more LB options Some algorithms require a few extra options (up to 3). Let's provide some room in lbprm to store them, and make sure they're passed from defaults to backends. --- diff --git a/include/types/backend.h b/include/types/backend.h index 3271eea4c7..e67f0be54a 100644 --- a/include/types/backend.h +++ b/include/types/backend.h @@ -146,6 +146,9 @@ struct lbprm { int wdiv; /* ratio between effective weight and user weight */ char *arg_str; /* name of the URL parameter/header/cookie used for hashing */ int arg_len; /* strlen(arg_str), computed only once */ + int arg_opt1; /* extra option 1 for the LB algo (algo-specific) */ + int arg_opt2; /* extra option 2 for the LB algo (algo-specific) */ + int arg_opt3; /* extra option 3 for the LB algo (algo-specific) */ struct server *fbck; /* first backup server when !PR_O_USE_ALL_BK, or NULL */ struct lb_map map; /* LB parameters for map-based algorithms */ struct lb_fwrr fwrr; diff --git a/src/cfgparse-listen.c b/src/cfgparse-listen.c index 4a6c73b237..9774bba5f8 100644 --- a/src/cfgparse-listen.c +++ b/src/cfgparse-listen.c @@ -467,9 +467,14 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm) curproxy->rdp_cookie_name = strdup(defproxy.rdp_cookie_name); curproxy->rdp_cookie_len = defproxy.rdp_cookie_len; + if (defproxy.lbprm.arg_str) curproxy->lbprm.arg_str = strdup(defproxy.lbprm.arg_str); curproxy->lbprm.arg_len = defproxy.lbprm.arg_len; + curproxy->lbprm.arg_opt1 = defproxy.lbprm.arg_opt1; + curproxy->lbprm.arg_opt2 = defproxy.lbprm.arg_opt2; + curproxy->lbprm.arg_opt3 = defproxy.lbprm.arg_opt3; + curproxy->uri_whole = defproxy.uri_whole; curproxy->uri_len_limit = defproxy.uri_len_limit; curproxy->uri_dirs_depth1 = defproxy.uri_dirs_depth1;