0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-23 18:21:54 +00:00
bird/proto/stats/stats.h
Vojtech Vilimek 727a8f32c4 Add new global counter for stats channel
New symbol is added for each stats protocol channel, the symbol is accessed by
same name as the underlying channel. Symbols evaluate to the sum of all routes
exported from connected table with generation less than max generation of
particular channel. Default max generation is 16.

Beware you shouldn't make cyclic references as the behavior of such
configuration is not defined!
2022-07-20 17:04:49 +02:00

48 lines
800 B
C

/*
* BIRD -- Statistics Protocol
*
* (c) 2022 Vojtech Vilimek <vojtech.vilimek@nic.cz>
* (c) 2022 CZ.NIC z.s.p.o.
*
* Can be freely distributed and used under the terms of the GNU GPL.
*/
#ifndef _BIRD_STATS_H_
#define _BIRD_STATS_H_
struct stats_channel;
struct stats_config {
struct proto_config c;
};
struct stats_proto {
struct proto p;
struct stats_channel *c;
struct tbf rl_gen;
};
struct stats_channel {
struct channel c;
pool *pool;
u8 max_generation;
u32 *counters;
u32 sum;
};
struct stats_channel_config {
struct channel_config c;
u8 max_generation;
};
static inline int
get_stats_sum(struct symbol *sym)
{
if (sym->ch_config->channel)
return (int) ((struct stats_channel *) sym->ch_config->channel)->sum;
else
return 0;
}
#endif