diff options
author | Maria Matejka <mq@ucw.cz> | 2022-03-09 13:13:05 +0100 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2022-03-09 13:13:05 +0100 |
commit | 92b832380d31fc9995d6e45b3db4ce496fcb7837 (patch) | |
tree | d76415a8847aef820bb9c935a3906d670cfa7aed /proto/static | |
parent | 9b6db9f9b8e561d215e1df01169b15a9dfaba1b9 (diff) | |
parent | 1b9189d5fdab672f91600b7e72a1deeab277eafc (diff) |
Merge commit '1b9189d5' into haugesund
Diffstat (limited to 'proto/static')
-rw-r--r-- | proto/static/static.c | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/proto/static/static.c b/proto/static/static.c index 6d3871cc..6e258f6f 100644 --- a/proto/static/static.c +++ b/proto/static/static.c @@ -103,24 +103,13 @@ static_announce_rte(struct static_proto *p, struct static_route *r) return; /* We skip rta_lookup() here */ - rte *e = rte_get_temp(a, src); - e->pflags = 0; + rte e0 = { .attrs = a, .src = src, .net = r->net, }, *e = &e0; + /* Evaluate the filter */ if (r->cmds) - { - /* Create a temporary table node */ - e->net = alloca(sizeof(net) + r->net->length); - memset(e->net, 0, sizeof(net) + r->net->length); - net_copy(e->net->n.addr, r->net); - - /* Evaluate the filter */ - f_eval_rte(r->cmds, &e, static_lp); - - /* Remove the temporary node */ - e->net = NULL; - } + f_eval_rte(r->cmds, e, static_lp); - rte_update2(p->p.main_channel, r->net, e, src); + rte_update(p->p.main_channel, r->net, e, src); r->state = SRS_CLEAN; if (r->cmds) @@ -132,7 +121,7 @@ withdraw: if (r->state == SRS_DOWN) return; - rte_update2(p->p.main_channel, r->net, NULL, src); + rte_update(p->p.main_channel, r->net, NULL, src); r->state = SRS_DOWN; } @@ -298,7 +287,7 @@ static void static_remove_rte(struct static_proto *p, struct static_route *r) { if (r->state) - rte_update2(p->p.main_channel, r->net, NULL, static_get_source(p, r->index)); + rte_update(p->p.main_channel, r->net, NULL, static_get_source(p, r->index)); static_reset_rte(p, r); } |