summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sysdep/unix/krt.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sysdep/unix/krt.c b/sysdep/unix/krt.c
index 8a3db3f..096b9da 100644
--- a/sysdep/unix/krt.c
+++ b/sysdep/unix/krt.c
@@ -178,7 +178,14 @@ krt_got_route(struct krt_proto *p, rte *e)
if (old = net->routes)
{
if (!krt_capable(old))
- verdict = krt_capable(e) ? KRF_DELETE : KRF_SEEN;
+ {
+#ifdef CONFIG_AUTO_ROUTES
+ if (old->attrs->source == RTS_DEVICE)
+ verdict = KRF_SEEN;
+ else
+#endif
+ verdict = krt_capable(e) ? KRF_DELETE : KRF_SEEN;
+ }
else if (krt_uptodate(e, net->routes))
verdict = KRF_SEEN;
else