mirror of
https://gitlab.labs.nic.cz/labs/bird.git
synced 2024-05-11 16:54:54 +00:00
Merge commit '71b434a9' into HEAD
This commit is contained in:
@@ -314,6 +314,7 @@ krt_learn_scan(struct krt_proto *p, rte *e)
|
||||
ea_set_attr_u32(&e0.attrs, &ea_gen_preference, 0, p->p.main_channel->preference);
|
||||
|
||||
rte_update(p->p.main_channel, e->net, &e0, e0.src);
|
||||
rt_unlock_source(e0.src);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -322,9 +323,9 @@ krt_learn_async(struct krt_proto *p, rte *e, int new)
|
||||
if (new)
|
||||
return krt_learn_scan(p, e);
|
||||
|
||||
struct rte_src *src = rt_find_source(&p->p, krt_metric(e));
|
||||
if (src)
|
||||
rte_update(p->p.main_channel, e->net, NULL, src);
|
||||
struct rte_src *src = rt_get_source(&p->p, krt_metric(e));
|
||||
rte_update(p->p.main_channel, e->net, NULL, src);
|
||||
rt_unlock_source(src);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -683,7 +684,7 @@ krt_scan_timer_kick(struct krt_proto *p)
|
||||
static int
|
||||
krt_preexport(struct channel *C, rte *e)
|
||||
{
|
||||
if (e->src->proto == C->proto)
|
||||
if (e->src->owner == &C->proto->sources)
|
||||
return -1;
|
||||
|
||||
if (!krt_capable(e))
|
||||
@@ -811,6 +812,10 @@ krt_postconfig(struct proto_config *CF)
|
||||
krt_sys_postconfig(cf);
|
||||
}
|
||||
|
||||
struct rte_owner_class krt_rte_owner_class = {
|
||||
.rte_better = krt_rte_better,
|
||||
};
|
||||
|
||||
static struct proto *
|
||||
krt_init(struct proto_config *CF)
|
||||
{
|
||||
@@ -824,7 +829,8 @@ krt_init(struct proto_config *CF)
|
||||
p->p.if_notify = krt_if_notify;
|
||||
p->p.reload_routes = krt_reload_routes;
|
||||
p->p.feed_end = krt_feed_end;
|
||||
p->p.rte_better = krt_rte_better;
|
||||
|
||||
p->p.sources.class = &krt_rte_owner_class;
|
||||
|
||||
krt_sys_init(p);
|
||||
return &p->p;
|
||||
|
Reference in New Issue
Block a user