0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 09:41:54 +00:00

Route export: Packed all the export code before export table update to one function

This commit is contained in:
Maria Matejka 2020-05-08 23:08:07 +02:00 committed by Maria Matejka
parent d24a6ad4c7
commit b7c26c1030

View File

@ -707,8 +707,8 @@ rt_notify_merged(struct channel *c, struct rte_export_internal *e)
return RTE_EXPORT_IS_OK(ep);
}
static void
rte_export(struct channel *c, struct rte_export_internal *e)
static struct rte_export *
rte_export_obtain(struct channel *c, struct rte_export_internal *e)
{
uint ra_mode = c->ra_mode;
_Bool accepted = 0;
@ -741,12 +741,11 @@ rte_export(struct channel *c, struct rte_export_internal *e)
if (!accepted)
{
DBG("Idempotent export.\n");
goto cleanup;
return NULL;
}
struct rte_export *ep = &(e->pub);
struct proto *p = c->proto;
struct proto_stats *stats = &c->stats;
if (e->refeed && ep->new.attrs)
@ -763,10 +762,21 @@ rte_export(struct channel *c, struct rte_export_internal *e)
{
stats->exp_updates_rejected++;
rte_trace_out(D_FILTERS, c, &ep->new, "rejected [limit]");
goto cleanup;
return NULL;
}
}
return ep;
}
static void
rte_export(struct channel *c, struct rte_export_internal *e)
{
struct rte_export *ep = rte_export_obtain(c, e);
if (!ep)
goto cleanup;
struct rte_storage *old_stored = NULL;
/* Apply export table */
if (c->out_table)
@ -778,6 +788,9 @@ rte_export(struct channel *c, struct rte_export_internal *e)
/* We aren't sure about the old route attributes */
ep->old.attrs = NULL;
struct proto_stats *stats = &c->stats;
struct proto *p = c->proto;
if (ep->new.attrs)
stats->exp_updates_accepted++;
else