diff --git a/include/haproxy/vars-t.h b/include/haproxy/vars-t.h index 06f2712e1..ab83b4ebe 100644 --- a/include/haproxy/vars-t.h +++ b/include/haproxy/vars-t.h @@ -28,6 +28,7 @@ /* flags used when setting/clearing variables */ #define VF_UPDATEONLY 0x00000001 // SCOPE_PROC variables are only updated #define VF_CREATEONLY 0x00000002 // do nothing if the variable already exists +#define VF_PERMANENT 0x00000004 // variables known to the config parser enum vars_scope { SCOPE_SESS = 0, @@ -54,6 +55,8 @@ struct var_desc { struct var { struct list l; /* Used for chaining vars. */ const char *name; /* Contains the variable name. */ + uint flags; // VF_* + /* 32-bit hole here */ struct sample_data data; /* data storage. */ }; diff --git a/src/vars.c b/src/vars.c index 52f19c560..30aff97e8 100644 --- a/src/vars.c +++ b/src/vars.c @@ -357,6 +357,7 @@ static int smp_fetch_var(const struct arg *args, struct sample *smp, const char * - VF_UPDATEONLY: if the scope is SCOPE_PROC, the variable may only be * updated but not created. * - VF_CREATEONLY: do nothing if the variable already exists (success). + * - VF_PERMANENT: this flag will be passed to the variable upon creation * * It returns 0 on failure, non-zero on success. */ @@ -408,6 +409,7 @@ static int var_set(const char *name, enum vars_scope scope, struct sample *smp, goto unlock; LIST_APPEND(&vars->head, &var->l); var->name = name; + var->flags = flags & VF_PERMANENT; } /* Set type. */