1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00

Channel: Refeeding by an auxiliary request if needed.

If the protocol supports route refresh on export, we keep the stop-start
method of route refeed. This applies for BGP with ERR or with export
table on, for OSPF, Babel, RIP or Pipe.

For BGP without ERR or for future selective ROA reloads, we're adding an
auxiliary export request, doing the refeed while the main export request
is running, somehow resembling the original method of BIRD 2 refeed.

There is also a refeed request queue to keep track of different refeed
requests.
This commit is contained in:
Maria Matejka
2023-09-29 16:24:50 +02:00
parent b58ebc4ef1
commit 8d1215dba6
16 changed files with 328 additions and 95 deletions

View File

@@ -217,7 +217,7 @@ perf_rt_notify(struct proto *P, struct channel *c UNUSED, const net_addr *net UN
}
static void
perf_feed_begin(struct channel *c, int initial UNUSED)
perf_feed_begin(struct channel *c)
{
struct perf_proto *p = (struct perf_proto *) c->proto;
@@ -232,6 +232,7 @@ static void
perf_feed_end(struct channel *c)
{
struct perf_proto *p = (struct perf_proto *) c->proto;
struct timespec ts_end;
clock_gettime(CLOCK_MONOTONIC, &ts_end);
@@ -243,7 +244,7 @@ perf_feed_end(struct channel *c)
p->feed_begin = NULL;
if (p->run < p->repeat)
channel_request_feeding(c);
channel_request_feeding_dynamic(c, CFRT_DIRECT);
else
PLOG("feed done");
}