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:
@@ -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);
|
||||
|
Reference in New Issue
Block a user