Fixes flushing of device routes.

This commit is contained in:
Ondrej Zajicek 2012-05-03 14:04:56 +02:00
parent ab188fb76d
commit e14bd38087

View file

@ -575,18 +575,13 @@ krt_flush_routes(struct krt_proto *p)
{ {
net *n = (net *) f; net *n = (net *) f;
rte *e = n->routes; rte *e = n->routes;
if (e) if (e && (n->n.flags & KRF_INSTALLED))
{
rta *a = e->attrs;
if ((n->n.flags & KRF_INSTALLED) &&
a->source != RTS_DEVICE && a->source != RTS_INHERIT)
{ {
/* FIXME: this does not work if gw is changed in export filter */ /* FIXME: this does not work if gw is changed in export filter */
krt_replace_rte(p, e->net, NULL, e, NULL); krt_replace_rte(p, e->net, NULL, e, NULL);
n->n.flags &= ~KRF_INSTALLED; n->n.flags &= ~KRF_INSTALLED;
} }
} }
}
FIB_WALK_END; FIB_WALK_END;
} }