0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 17:51:53 +00:00
bird/proto/perf/config.Y
Maria Matějka 82b742533b Perf: Protocol to measure BIRD performance internally
This protocol is highly experimental and nobody should use it in
production. Anyway it may help you getting some insight into what eats
so much time in filter processing.
2018-12-18 15:08:31 +01:00

59 lines
1.3 KiB
Plaintext

/*
* BIRD -- Benchmarking Dummy Protocol Configuration
*
* (c) 2018 Maria Matejka <mq@jmq.cz>
*
* Can be freely distributed and used under the terms of the GNU GPL.
*/
CF_HDR
#include "filter/filter.h"
#include "proto/perf/perf.h"
CF_DEFINES
#define PERF_CFG ((struct perf_config *) this_proto)
CF_DECLS
CF_KEYWORDS(PERF, EXP, FROM, TO, REPEAT, THRESHOLD, MIN, MAX, KEEP, MODE, IMPORT, EXPORT)
CF_GRAMMAR
proto: perf_proto '}' ;
perf_proto_start: proto_start PERF
{
this_proto = proto_config_new(&proto_perf, $1);
PERF_CFG->from = 10;
PERF_CFG->to = 20;
PERF_CFG->repeat = 4;
PERF_CFG->threshold_max = 500 MS_;
PERF_CFG->threshold_min = 1 MS_;
PERF_CFG->keep = 0;
PERF_CFG->mode = PERF_MODE_IMPORT;
};
perf_proto:
perf_proto_start proto_name '{'
| perf_proto perf_proto_item ';'
;
perf_proto_item:
proto_channel { this_proto->net_type = $1->net_type; }
| EXP FROM NUM { PERF_CFG->from = $3; }
| EXP TO NUM { PERF_CFG->to = $3; }
| REPEAT NUM { PERF_CFG->repeat = $2; }
| THRESHOLD MIN expr_us { PERF_CFG->threshold_min = $3; }
| THRESHOLD MAX expr_us { PERF_CFG->threshold_max = $3; }
| KEEP bool { PERF_CFG->keep = $2; }
| MODE IMPORT { PERF_CFG->mode = PERF_MODE_IMPORT; }
| MODE EXPORT { PERF_CFG->mode = PERF_MODE_EXPORT; }
;
CF_CODE
CF_END