Commit c6ee37a5 authored by Dridi Boukelmoune's avatar Dridi Boukelmoune

param: Declare bits parameters in the include table

With the help of PARAM_PRE and PARAM_POST macros we can deal with the
include tables bits included by the params include tables without the
nested macro evaluation limitation.
parent 00d3b77a
......@@ -95,13 +95,17 @@ struct params {
#define ptyp_boolean unsigned
#define ptyp_bytes ssize_t
#define ptyp_bytes_u unsigned
#define ptyp_debug debug_t
#define ptyp_double double
#define ptyp_experimental experimental_t
#define ptyp_feature feature_t
#define ptyp_poolparam struct poolparam
#define ptyp_thread_pool_max unsigned
#define ptyp_thread_pool_min unsigned
#define ptyp_timeout vtim_dur
#define ptyp_uint unsigned
#define ptyp_vsl_buffer unsigned
#define ptyp_vsl_mask vsl_mask_t
#define ptyp_vsl_reclen unsigned
#define PARAM(typ, fld, nm, ...) \
ptyp_##typ fld;
......@@ -109,13 +113,17 @@ struct params {
#undef ptyp_boolean
#undef ptyp_bytes
#undef ptyp_bytes_u
#undef ptyp_debug
#undef ptyp_double
#undef ptyp_experimental
#undef ptyp_feature
#undef ptyp_poolparam
#undef ptyp_thread_pool_max
#undef ptyp_thread_pool_min
#undef ptyp_timeout
#undef ptyp_uint
#undef ptyp_vsl_buffer
#undef ptyp_vsl_mask
#undef ptyp_vsl_reclen
/* Unprivileged user / group */
......@@ -123,9 +131,4 @@ struct params {
gid_t gid;
struct vre_limits vre_limits;
vsl_mask_t vsl_mask;
debug_t debug_bits;
experimental_t experimental_bits;
feature_t feature_bits;
};
......@@ -74,6 +74,9 @@ tweak_t tweak_boolean;
tweak_t tweak_bytes;
tweak_t tweak_bytes_u;
tweak_t tweak_double;
tweak_t tweak_debug;
tweak_t tweak_experimental;
tweak_t tweak_feature;
tweak_t tweak_poolparam;
tweak_t tweak_storage;
tweak_t tweak_string;
......@@ -82,6 +85,7 @@ tweak_t tweak_thread_pool_max;
tweak_t tweak_timeout;
tweak_t tweak_uint;
tweak_t tweak_vsl_buffer;
tweak_t tweak_vsl_mask;
tweak_t tweak_vsl_reclen;
extern struct parspec mgt_parspec[]; /* mgt_param_tbl.c */
......
......@@ -154,7 +154,7 @@ static const char * const VSL_tags[256] = {
# include "tbl/vsl_tags.h"
};
static int v_matchproto_(tweak_t)
int v_matchproto_(tweak_t)
tweak_vsl_mask(struct vsb *vsb, const struct parspec *par, const char *arg)
{
......@@ -172,7 +172,7 @@ static const char * const debug_tags[] = {
NULL
};
static int v_matchproto_(tweak_t)
int v_matchproto_(tweak_t)
tweak_debug(struct vsb *vsb, const struct parspec *par, const char *arg)
{
......@@ -190,7 +190,7 @@ static const char * const experimental_tags[] = {
NULL
};
static int v_matchproto_(tweak_t)
int v_matchproto_(tweak_t)
tweak_experimental(struct vsb *vsb, const struct parspec *par, const char *arg)
{
......@@ -208,7 +208,7 @@ static const char * const feature_tags[] = {
NULL
};
static int v_matchproto_(tweak_t)
int v_matchproto_(tweak_t)
tweak_feature(struct vsb *vsb, const struct parspec *par, const char *arg)
{
......@@ -221,62 +221,5 @@ tweak_feature(struct vsb *vsb, const struct parspec *par, const char *arg)
*/
struct parspec VSL_parspec[] = {
{ "vsl_mask", tweak_vsl_mask, NULL,
NULL, NULL,
/* default */
"-Debug,"
"-ExpKill,"
"-H2RxBody,"
"-H2RxHdr,"
"-H2TxBody,"
"-H2TxHdr,"
"-Hash,"
"-ObjHeader,"
"-ObjProtocol,"
"-ObjReason,"
"-ObjStatus,"
"-VCL_trace,"
"-VdpAcct,"
"-VfpAcct,"
"-WorkThread",
NULL,
"Mask individual VSL messages from being logged.\n"
"\tdefault\tSet default value\n"
"\nUse +/- prefix in front of VSL tag name to unmask/mask "
"individual VSL messages." },
{ "debug", tweak_debug, NULL,
NULL, NULL,
/* default */
"none",
NULL,
"Enable/Disable various kinds of debugging.\n"
"\tnone\tDisable all debugging\n\n"
"Use +/- prefix to set/reset individual bits:"
#define DEBUG_BIT(U, l, d) "\n\t" #l "\t" d
#include "tbl/debug_bits.h"
},
{ "experimental", tweak_experimental, NULL,
NULL, NULL,
/* default */
"none",
NULL,
"Enable/Disable experimental features.\n"
"\tnone\tDisable all experimental features\n\n"
"Use +/- prefix to set/reset individual bits:"
#define EXPERIMENTAL_BIT(U, l, d) "\n\t" #l "\t" d
#include "tbl/experimental_bits.h"
},
{ "feature", tweak_feature, NULL,
NULL, NULL,
/* default */
"+validate_headers",
NULL,
"Enable/Disable various minor features.\n"
"\tdefault\tSet default value\n"
"\tnone\tDisable all features.\n\n"
"Use +/- prefix to enable/disable individual feature:"
#define FEATURE_BIT(U, l, d) "\n\t" #l "\t" d
#include "tbl/feature_bits.h"
},
{ NULL, NULL, NULL }
};
......@@ -1726,102 +1726,99 @@ PARAM_PCRE2(
PARAM_ALIAS(deprecated_dummy, debug)
# undef PARAM_ALIAS
# undef PARAM_ALL
# undef PARAM_PCRE2
# undef PARAM_STRING
# undef PARAM_VCC
#endif /* defined(PARAM_ALL) */
#undef PARAM_MEMPOOL
#undef PARAM_POST
#undef PARAM_PRE
#undef PARAM_SIMPLE
#undef PARAM_THREAD
#undef PARAM
/*--------------------------------------------------------------------
* Bits parameters
*/
#define PARAM_BITS(nm, fld, def, descr) \
PARAM(nm, fld, nm, tweak_ ## nm, &mgt_param.fld, NULL, NULL, \
def, NULL, descr)
#if 0 /* NOT ACTUALLY DEFINED HERE */
/* actual location mgt_param_bits.c*/
/* see tbl/debug_bits.h */
PARAM(
PARAM_PRE
PARAM_BITS(
/* name */ debug,
/* type */ debug,
/* min */ NULL,
/* max */ NULL,
/* def */ NULL,
/* units */ NULL,
/* fld */ debug_bits,
/* def */ "none",
/* descr */
"Enable/Disable various kinds of debugging.\n"
" none Disable all debugging\n"
"\n"
"Use +/- prefix to set/reset individual bits:\n"
" req_state VSL Request state engine\n"
" workspace VSL Workspace operations\n"
" waiter VSL Waiter internals\n"
" waitinglist VSL Waitinglist events\n"
" syncvsl Make VSL synchronous\n"
" hashedge Edge cases in Hash\n"
" vclrel Rapid VCL release\n"
" lurker VSL Ban lurker\n"
" esi_chop Chop ESI fetch to bits\n"
" flush_head Flush after http1 head\n"
" vtc_mode Varnishtest Mode"
)
/* actual location mgt_param_bits.c*/
/* see tbl/experimental_bits.h */
PARAM(
"\tnone\tDisable all debugging\n\n"
"Use +/- prefix to set/reset individual bits:")
#ifdef PARAM_ALL
# define DEBUG_BIT(U, l, d) "\n\t" #l "\t" d
# include "tbl/debug_bits.h"
#endif
PARAM_POST
PARAM_PRE
PARAM_BITS(
/* name */ experimental,
/* type */ experimental,
/* min */ NULL,
/* max */ NULL,
/* def */ NULL,
/* units */ NULL,
/* fld */ experimental_bits,
/* def */ "none",
/* descr */
"Enable/Disable experimental features.\n"
" none Disable all experimental features\n"
"\n"
"Use +/- prefix to set/reset individual bits:\n"
" drop_pools Drop thread pools\n"
)
"\tnone\tDisable all experimental features\n\n"
"Use +/- prefix to set/reset individual bits:")
#ifdef PARAM_ALL
# define EXPERIMENTAL_BIT(U, l, d) "\n\t" #l "\t" d
# include "tbl/experimental_bits.h"
#endif
PARAM_POST
/* actual location mgt_param_bits.c*/
/* See tbl/feature_bits.h */
PARAM(
PARAM_PRE
PARAM_BITS(
/* name */ feature,
/* type */ feature,
/* min */ NULL,
/* max */ NULL,
/* def */ NULL,
/* units */ NULL,
/* fld */ feature_bits,
/* def */ "+validate_headers",
/* descr */
"Enable/Disable various minor features.\n"
" none Disable all features.\n"
"\n"
"Use +/- prefix to enable/disable individual feature:\n"
" short_panic Short panic message.\n"
" wait_silo Wait for persistent silo.\n"
" no_coredump No coredumps.\n"
" esi_ignore_https Treat HTTPS as HTTP in ESI:includes\n"
" esi_disable_xml_check Don't check of body looks like XML\n"
" esi_ignore_other_elements Ignore non-esi XML-elements\n"
" esi_remove_bom Remove UTF-8 BOM"
)
/* actual location mgt_param_bits.c*/
PARAM(
"\tdefault\tSet default value\n"
"\tnone\tDisable all features.\n\n"
"Use +/- prefix to enable/disable individual feature:")
#ifdef PARAM_ALL
# define FEATURE_BIT(U, l, d) "\n\t" #l "\t" d
# include "tbl/feature_bits.h"
#endif
PARAM_POST
PARAM_PRE
PARAM_BITS(
/* name */ vsl_mask,
/* type */ vsl_mask,
/* min */ NULL,
/* max */ NULL,
/* def */ "default",
/* units */ NULL,
/* fld */ vsl_mask,
/* def */
"-Debug,"
"-ExpKill,"
"-H2RxBody,"
"-H2RxHdr,"
"-H2TxBody,"
"-H2TxHdr,"
"-Hash,"
"-ObjHeader,"
"-ObjProtocol,"
"-ObjReason,"
"-ObjStatus,"
"-VCL_trace,"
"-VdpAcct,"
"-VfpAcct,"
"-WorkThread",
/* descr */
"Mask individual VSL messages from being logged.\n"
" default Set default value\n"
"\n"
"Use +/- prefix in front of VSL tag name to unmask/mask "
"individual VSL messages."
)
#endif /* NOT ACTUALLY DEFINED HERE */
"\tdefault\tSet default value\n"
"\nUse +/- prefix in front of VSL tag name to unmask/mask "
"individual VSL messages.")
PARAM_POST
#undef PARAM_ALL
#undef PARAM_BITS
#undef PARAM_MEMPOOL
#undef PARAM_POST
#undef PARAM_PRE
#undef PARAM_SIMPLE
#undef PARAM_THREAD
#undef PARAM
/*lint -restore */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment