Babel: Do not maintain feasibility distance for our own routes
We do not need to maintain feasibility distances for our own router ID (we ignore the updates anyway). Not doing so makes the routes be garbage collected sooner when export filters change. Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
This commit is contained in:
parent
0f67366601
commit
c6ed5a0f99
1 changed files with 14 additions and 9 deletions
|
@ -788,16 +788,21 @@ babel_send_update(struct babel_iface *ifa, bird_clock_t changed)
|
||||||
msg.update.prefix = e->n.prefix;
|
msg.update.prefix = e->n.prefix;
|
||||||
msg.update.router_id = r->router_id;
|
msg.update.router_id = r->router_id;
|
||||||
|
|
||||||
/* Update feasibility distance */
|
babel_enqueue(&msg, ifa);
|
||||||
|
|
||||||
|
/* Update feasibility distance for redistributed routes */
|
||||||
|
if (!OUR_ROUTE(r))
|
||||||
|
{
|
||||||
struct babel_source *s = babel_get_source(e, r->router_id);
|
struct babel_source *s = babel_get_source(e, r->router_id);
|
||||||
s->expires = now + BABEL_GARBAGE_INTERVAL;
|
s->expires = now + BABEL_GARBAGE_INTERVAL;
|
||||||
|
|
||||||
if ((msg.update.seqno > s->seqno) ||
|
if ((msg.update.seqno > s->seqno) ||
|
||||||
((msg.update.seqno == s->seqno) && (msg.update.metric < s->metric)))
|
((msg.update.seqno == s->seqno) && (msg.update.metric < s->metric)))
|
||||||
{
|
{
|
||||||
s->seqno = msg.update.seqno;
|
s->seqno = msg.update.seqno;
|
||||||
s->metric = msg.update.metric;
|
s->metric = msg.update.metric;
|
||||||
}
|
}
|
||||||
babel_enqueue(&msg, ifa);
|
}
|
||||||
}
|
}
|
||||||
FIB_WALK_END;
|
FIB_WALK_END;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue