1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00

Better flushing of interfaces.

When device protocol goes down, interfaces should be flushed
asynchronously (in the same way like routes from protocols are flushed),
when protocol goes to DOWN/HUNGRY.

This fixes the problem with static routes staying in kernel routing
table after BIRD shutdown.
This commit is contained in:
Ondrej Zajicek
2010-02-27 16:00:07 +01:00
parent 3075824dbd
commit 53434e44a9
5 changed files with 23 additions and 14 deletions

View File

@@ -740,6 +740,8 @@ proto_notify_state(struct proto *p, unsigned ps)
}
}
extern struct protocol proto_unix_iface;
static void
proto_flush_all(void *unused UNUSED)
{
@@ -748,6 +750,11 @@ proto_flush_all(void *unused UNUSED)
rt_prune_all();
while ((p = HEAD(flush_proto_list))->n.next)
{
/* This will flush interfaces in the same manner
like rt_prune_all() flushes routes */
if (p->proto == &proto_unix_iface)
if_flush_ifaces(p);
DBG("Flushing protocol %s\n", p->name);
p->core_state = FS_HUNGRY;
proto_relink(p);