#define PROMEX_FL_SCOPE_LI 0x00000800
#define PROMEX_FL_SCOPE_STICKTABLE 0x00001000
#define PROMEX_FL_NO_MAINT_SRV 0x00002000
+#define PROMEX_FL_EXTRA_COUNTERS 0x00004000
#define PROMEX_FL_SCOPE_ALL (PROMEX_FL_SCOPE_GLOBAL | PROMEX_FL_SCOPE_FRONT | \
PROMEX_FL_SCOPE_LI | PROMEX_FL_SCOPE_BACK | \
struct stktable *st; /* current table */
struct listener *li; /* current listener */
struct server *sv; /* current server */
+ struct stats_module *mod; /* current module for extra counters */
unsigned int flags; /* PROMEX_FL_* */
unsigned field_num; /* current field number (ST_F_* etc) */
+ unsigned mod_field_num; /* first field number of the current module (ST_F_* etc) */
int obj_state; /* current state among PROMEX_{FRONT|BACK|SRV|LI}_STATE_* */
};
ctx->st = NULL;
ctx->li = NULL;
ctx->sv = NULL;
+ ctx->mod = NULL;
ctx->flags &= ~PROMEX_FL_INFO_METRIC;
ctx->flags |= (PROMEX_FL_METRIC_HDR|PROMEX_FL_FRONT_METRIC);
ctx->obj_state = 0;
ctx->field_num = ST_F_PXNAME;
+ ctx->mod_field_num = 0;
appctx->st1 = PROMEX_DUMPER_FRONT;
__fallthrough;
ctx->st = NULL;
ctx->li = LIST_NEXT(&proxies_list->conf.listeners, struct listener *, by_fe);
ctx->sv = NULL;
+ ctx->mod = NULL;
ctx->flags &= ~PROMEX_FL_FRONT_METRIC;
ctx->flags |= (PROMEX_FL_METRIC_HDR|PROMEX_FL_LI_METRIC);
ctx->obj_state = 0;
ctx->field_num = ST_F_PXNAME;
+ ctx->mod_field_num = 0;
appctx->st1 = PROMEX_DUMPER_LI;
__fallthrough;
ctx->st = NULL;
ctx->li = NULL;
ctx->sv = NULL;
+ ctx->mod = NULL;
ctx->flags &= ~PROMEX_FL_LI_METRIC;
ctx->flags |= (PROMEX_FL_METRIC_HDR|PROMEX_FL_BACK_METRIC);
ctx->obj_state = 0;
ctx->field_num = ST_F_PXNAME;
+ ctx->mod_field_num = 0;
appctx->st1 = PROMEX_DUMPER_BACK;
__fallthrough;
ctx->st = NULL;
ctx->li = NULL;
ctx->sv = ctx->px ? ctx->px->srv : NULL;
+ ctx->mod = NULL;
ctx->flags &= ~PROMEX_FL_BACK_METRIC;
ctx->flags |= (PROMEX_FL_METRIC_HDR|PROMEX_FL_SRV_METRIC);
ctx->obj_state = 0;
ctx->field_num = ST_F_PXNAME;
+ ctx->mod_field_num = 0;
appctx->st1 = PROMEX_DUMPER_SRV;
__fallthrough;
ctx->st = stktables_list;
ctx->li = NULL;
ctx->sv = NULL;
+ ctx->mod = NULL;
ctx->flags &= ~(PROMEX_FL_METRIC_HDR|PROMEX_FL_SRV_METRIC);
ctx->flags |= (PROMEX_FL_METRIC_HDR|PROMEX_FL_STICKTABLE_METRIC);
ctx->field_num = STICKTABLE_SIZE;
+ ctx->mod_field_num = 0;
appctx->st1 = PROMEX_DUMPER_STICKTABLE;
__fallthrough;
ctx->st = NULL;
ctx->li = NULL;
ctx->sv = NULL;
+ ctx->mod = NULL;
ctx->flags &= ~(PROMEX_FL_METRIC_HDR|PROMEX_FL_STICKTABLE_METRIC);
ctx->field_num = 0;
+ ctx->mod_field_num = 0;
appctx->st1 = PROMEX_DUMPER_DONE;
__fallthrough;
ctx->st = NULL;
ctx->li = NULL;
ctx->sv = NULL;
+ ctx->mod = NULL;
ctx->flags = 0;
ctx->field_num = 0;
+ ctx->mod_field_num = 0;
appctx->st1 = PROMEX_DUMPER_DONE;
return -1;
}
else
goto error;
}
+ else if (strcmp(key, "extra-counters") == 0) {
+ ctx->flags |= PROMEX_FL_EXTRA_COUNTERS;
+ }
else if (strcmp(key, "no-maint") == 0)
ctx->flags |= PROMEX_FL_NO_MAINT_SRV;
}