diff options
author | Maria Matejka <mq@ucw.cz> | 2022-03-09 10:56:06 +0100 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2022-03-09 10:56:06 +0100 |
commit | 83d9920f90738e4df75b3cf57335b43c094051cd (patch) | |
tree | ef427685ad08c0ca468db1c0c2f462c3b79b3c14 /proto/pipe/pipe.c | |
parent | ff47cd80dd04bc11692248a40cbf52ee8d351064 (diff) | |
parent | 5cff1d5f022755df61af6fc21cc4f2e5d384404e (diff) |
Merge commit '5cff1d5f' into haugesund
Conflicts:
proto/bgp/attrs.c
proto/pipe/pipe.c
Diffstat (limited to 'proto/pipe/pipe.c')
-rw-r--r-- | proto/pipe/pipe.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/proto/pipe/pipe.c b/proto/pipe/pipe.c index cc4b5a07..636c3e58 100644 --- a/proto/pipe/pipe.c +++ b/proto/pipe/pipe.c @@ -65,34 +65,33 @@ pipe_rt_notify(struct proto *P, struct channel *src_ch, net *n, rte *new, rte *o if (new) { + src = new->src; + a = alloca(rta_size(new->attrs)); memcpy(a, new->attrs, rta_size(new->attrs)); - a->aflags = 0; + a->cached = 0; a->hostentry = NULL; - e = rte_get_temp(a); + e = rte_get_temp(a, src); e->pflags = 0; /* Copy protocol specific embedded attributes. */ memcpy(&(e->u), &(new->u), sizeof(e->u)); - e->pref = new->pref; e->pflags = new->pflags; #ifdef CONFIG_BGP /* Hack to cleanup cached value */ - if (e->attrs->src->proto->proto == &proto_bgp) + if (e->src->proto->proto == &proto_bgp) { e->u.bgp.stale = -1; e->u.bgp.base_table = NULL; } #endif - - src = a->src; } else { e = NULL; - src = old->attrs->src; + src = old->src; } src_ch->table->pipe_busy = 1; |