|
|
|
|
@ -198,7 +198,7 @@ found:;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INLINE void prom_metric(GQueue *ret, const char *name, const char *type) {
|
|
|
|
|
struct stats_metric *last = g_queue_peek_tail(ret);
|
|
|
|
|
stats_metric *last = g_queue_peek_tail(ret);
|
|
|
|
|
last->prom_name = name;
|
|
|
|
|
last->prom_type = type;
|
|
|
|
|
}
|
|
|
|
|
@ -207,15 +207,15 @@ static void prom_label(GQueue *ret, const char *fmt, ...) {
|
|
|
|
|
return;
|
|
|
|
|
va_list ap;
|
|
|
|
|
va_start(ap, fmt);
|
|
|
|
|
struct stats_metric *last = g_queue_peek_tail(ret);
|
|
|
|
|
stats_metric *last = g_queue_peek_tail(ret);
|
|
|
|
|
last->prom_label = g_strdup_vprintf(fmt, ap);
|
|
|
|
|
va_end(ap);
|
|
|
|
|
}
|
|
|
|
|
#define PROM(name, type) prom_metric(ret, name, type)
|
|
|
|
|
#define PROMLAB(fmt, ...) prom_label(ret, fmt, ##__VA_ARGS__)
|
|
|
|
|
|
|
|
|
|
INLINE void metric_push(GQueue *ret, struct stats_metric *m) {
|
|
|
|
|
struct stats_metric *last = NULL;
|
|
|
|
|
INLINE void metric_push(GQueue *ret, stats_metric *m) {
|
|
|
|
|
stats_metric *last = NULL;
|
|
|
|
|
for (GList *l_last = ret->tail; l_last; l_last = l_last->prev) {
|
|
|
|
|
last = l_last->data;
|
|
|
|
|
if (last->label)
|
|
|
|
|
@ -233,7 +233,7 @@ INLINE void metric_push(GQueue *ret, struct stats_metric *m) {
|
|
|
|
|
static void add_metric(GQueue *ret, const char *label, const char *desc, const char *fmt1, const char *fmt2, ...) {
|
|
|
|
|
va_list ap;
|
|
|
|
|
|
|
|
|
|
struct stats_metric *m = g_slice_alloc0(sizeof(*m));
|
|
|
|
|
stats_metric *m = g_slice_alloc0(sizeof(*m));
|
|
|
|
|
if (label)
|
|
|
|
|
m->label = g_strdup(label);
|
|
|
|
|
if (desc)
|
|
|
|
|
@ -276,7 +276,7 @@ static void add_metric(GQueue *ret, const char *label, const char *desc, const c
|
|
|
|
|
static void add_header(GQueue *ret, const char *fmt1, const char *fmt2, ...) {
|
|
|
|
|
va_list ap;
|
|
|
|
|
|
|
|
|
|
struct stats_metric *m = g_slice_alloc0(sizeof(*m));
|
|
|
|
|
stats_metric *m = g_slice_alloc0(sizeof(*m));
|
|
|
|
|
if (fmt1) {
|
|
|
|
|
va_start(ap, fmt2); // coverity[copy_paste_error : FALSE]
|
|
|
|
|
m->label = g_strdup_vprintf(fmt1, ap);
|
|
|
|
|
@ -915,7 +915,7 @@ GQueue *statistics_gather_metrics(struct interface_sampled_rate_stats *interface
|
|
|
|
|
#pragma GCC diagnostic warning "-Wformat-zero-length"
|
|
|
|
|
|
|
|
|
|
static void free_stats_metric(void *p) {
|
|
|
|
|
struct stats_metric *m = p;
|
|
|
|
|
stats_metric *m = p;
|
|
|
|
|
g_free(m->descr);
|
|
|
|
|
g_free(m->label);
|
|
|
|
|
g_free(m->value_long);
|
|
|
|
|
@ -960,7 +960,7 @@ const char *statistics_ng(bencode_item_t *input, bencode_item_t *output) {
|
|
|
|
|
bencode_buffer_t *buf = output->buffer;
|
|
|
|
|
|
|
|
|
|
for (GList *l = metrics->head; l; l = l->next) {
|
|
|
|
|
struct stats_metric *m = l->data;
|
|
|
|
|
stats_metric *m = l->data;
|
|
|
|
|
if (!m->label)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
|